//::///////////////////////////////////////////////
//:: Shou Disciple
//:: prc_shou.nss
//:://////////////////////////////////////////////
//:: Check to see which Shou Disciple feats a PC
//:: has and apply the appropriate bonuses.
//:://////////////////////////////////////////////
//:: Created By: Stratovarius
//:: Created On: June 28, 2004
//:://////////////////////////////////////////////

#include "prc_alterations"
#include "prc_inc_unarmed"


/*
it_crewpb006 - 1d6
it_crewpb011 - 1d8
it_crewpb015 - 1d10
it_crewpb016 - 2d6
*/


void DodgeBonus(object oPC, object oSkin)
{

    //SendMessageToPC(OBJECT_SELF, "DodgeBonus is called");

    int ACBonus = 0;
    int iShou = GetLevelByClass(CLASS_TYPE_SHOU, oPC);

    //SendMessageToPC(OBJECT_SELF, "Shou Class Level: " + IntToString(iShou));

    if(iShou > 0 && iShou < 2)
    {
        ACBonus = 1;
    }
    else if(iShou >= 2 && iShou < 4)
    {
        ACBonus = 2;
    }
    else if(iShou >= 4)
    {
        ACBonus = 3;
    }

    //SendMessageToPC(OBJECT_SELF, "Dodge Bonus to AC: " + IntToString(ACBonus));

    SetCompositeBonus(oSkin, "ShouDodge", ACBonus, ITEM_PROPERTY_AC_BONUS);
    SetLocalInt(oPC, "HasShouDodge", 2);
}


void RemoveDodge(object oPC, object oSkin)
{
    SetCompositeBonus(oSkin, "ShouDodge", 0, ITEM_PROPERTY_AC_BONUS);
    SetLocalInt(oPC, "HasShouDodge", 1);
}

void main()
{
    //Declare main variables.
    object oPC = OBJECT_SELF;
    object oSkin = GetPCSkin(oPC);
    object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);

    object oWeapRL = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
    object oWeapLL = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);

    int iBaseL = GetBaseItemType(oWeapLL);
    int iBaseR = GetBaseItemType(oWeapRL);
    int iEquip = GetLocalInt(oPC,"ONEQUIP");
    string nMes = "";

    //SendMessageToPC(OBJECT_SELF, "prc_shou is called");

    if( GetBaseAC(oArmor) > 3 )
    {
        RemoveDodge(oPC, oSkin);

        if(GetHasSpellEffect(SPELL_MARTIAL_FLURRY_LIGHT, oPC) || GetHasSpellEffect(SPELL_MARTIAL_FLURRY_ALL, oPC))
        {
          PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
          PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_ALL);
        }

        FloatingTextStringOnCreature("*Shou Disciple Abilities Disabled Due To Equipped Armour*", oPC);
    }
    else if(iBaseL == BASE_ITEM_SMALLSHIELD || iBaseL == BASE_ITEM_LARGESHIELD || iBaseL == BASE_ITEM_TOWERSHIELD)
    {
        RemoveDodge(oPC, oSkin);

        if(GetHasSpellEffect(SPELL_MARTIAL_FLURRY_LIGHT, oPC) || GetHasSpellEffect(SPELL_MARTIAL_FLURRY_ALL, oPC))
        {
          PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
          PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_ALL);
        }

        FloatingTextStringOnCreature("*Shou Disciple Abilities Disabled Due To Equipped Shield*", oPC);
    }
    // This checks to make sure he doesnt have a non-light weapon equipped for Martial Flurry Light
    else if(StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseL)) > 2 || StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseR)) > 2)
    {
        PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
        FloatingTextStringOnCreature("*Martial Flurry Light Disabled Due to Equipped Weapons*", oPC);
    }
    else
    {
        if(GetLevelByClass(CLASS_TYPE_SHOU, oPC) > 1 )
        {
            RemoveDodge(oPC, oSkin);
            DodgeBonus(oPC, oSkin);
        }
    }

    //Evaluate The Unarmed Strike Feats
    //UnarmedFeats(oPC);
    SetLocalInt(OBJECT_SELF, CALL_UNARMED_FEATS, TRUE);

    //Evaluate Fists
    //UnarmedFists(oPC);
    SetLocalInt(OBJECT_SELF, CALL_UNARMED_FISTS, TRUE);
}