/**
 * @file
 * Spellscript for Wyrmbane Helm SLAs
 *
 */

#include "prc_inc_template"
#include "prc_inc_breath"

void main()
{
    object oPC = OBJECT_SELF;
    int nCasterLevel, nDC, nSpell, nUses;
    int nSLA = GetSpellId();
    effect eNone;
    
    object oWOL = GetItemPossessedBy(oPC, "WOL_Wyrmbane");
    
    // You get nothing if you aren't wielding the item
    if(oWOL != GetItemInSlot(INVENTORY_SLOT_HEAD, oPC)) return;    

    switch(nSLA){
        case WOL_WYRMBANE_FEAR:
        {
            nCasterLevel = 5;
            nSpell = SPELL_SCARE;
            nUses = 5;
            nDC = 11;            
            if (11 + GetAbilityModifier(ABILITY_CHARISMA, oPC) > nDC)
                nDC = 11 + GetAbilityModifier(ABILITY_CHARISMA, oPC);            
            break;
        } 
        case WOL_WYRMBANE_BOLT:
        {
            nCasterLevel = 7;
            nSpell = SPELL_LIGHTNING_BOLT;
            nUses = 1;
            nDC = 14;            
            if (13 + GetAbilityModifier(ABILITY_CHARISMA, oPC) > nDC)
                nDC = 13 + GetAbilityModifier(ABILITY_CHARISMA, oPC);            
            break;
        }  
        /*case WOL_WYRMBANE_BANE:
        {
    		effect eLink = EffectLinkEffects(VersusRacialTypeEffect(EffectDamageIncrease(DAMAGE_BONUS_2d6), RACIAL_TYPE_DRAGON), VersusRacialTypeEffect(EffectAttackIncrease(2), RACIAL_TYPE_DRAGON));
 			ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oPC, 9999.0);
            nUses = 999;
            break;
        } */          
        case WOL_WYRMBANE_EMP:
        {
            int nMeta = GetLocalInt(oPC, "SuddenMeta");
            nMeta |= METAMAGIC_EMPOWER;
            SetLocalInt(oPC, "SuddenMeta", nMeta);
            FloatingTextStringOnCreature("Sudden Empower Activated", oPC, FALSE);
            nUses = 3;
            break;
        }     
        case WOL_WYRMBANE_BREATH:
        {
			    // Check the dragon breath delay lock
    		if(GetLocalInt(oPC, "DragonBreathLock"))
    		{
    		    SendMessageToPC(oPC, "You cannot use your breath weapon again so soon");
    		    return;
    		}
            nDC = 25;            
            if (20 + GetAbilityModifier(ABILITY_CONSTITUTION, oPC) > nDC)
                nDC = 20 + GetAbilityModifier(ABILITY_CONSTITUTION, oPC);    		
    		struct breath ElecBreath = CreateBreath(oPC, TRUE, 100.0, DAMAGE_TYPE_ELECTRICAL, 8, 12, nDC, 0);
    
    		//Apply the breath
    		PRCPlayDragonBattleCry();
    		ApplyBreath(ElecBreath, PRCGetSpellTargetLocation());
    
    		//Apply the recharge lock
    		SetLocalInt(oPC, "DragonBreathLock", TRUE);
		
    		// Schedule opening the delay lock
    		float fDelay = RoundsToSeconds(1);
    		SendMessageToPC(oPC, "Your breath weapon will be ready again in " + IntToString(1) + " rounds.");
			
    		DelayCommand(fDelay, DeleteLocalInt(oPC, "DragonBreathLock"));
    		DelayCommand(fDelay, SendMessageToPC(oPC, "Your breath weapon is ready now"));
    		nUses = 3;
            break;
        }         
    }
    
    // Check uses per day
    if (GetLegacyUses(oPC, nSLA) >= nUses)
    {
        FloatingTextStringOnCreature("You have used " + GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nSLA))) + " the maximum amount of times today.", oPC, FALSE);
        return;
    }   
    SetLegacyUses(oPC, nSLA);
    FloatingTextStringOnCreature("You have "+IntToString(nUses - GetLegacyUses(oPC, nSLA))+ " uses of " + GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nSLA))) + " remaining today.", oPC, FALSE);    
    if (nSpell > 0) 
        DoRacialSLA(nSpell, nCasterLevel, nDC);     
}