Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
101 lines
3.6 KiB
Plaintext
101 lines
3.6 KiB
Plaintext
/**
|
|
* @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);
|
|
}
|
|
|