PRC8_fork/trunk/users/Tenjac/spells/prc_evnt_ssf.nss

71 lines
2.0 KiB
Plaintext
Raw Normal View History

//:://////////////////////////////////////////////
//:: Name Smite of Sacred Fire
//:: FileName sp_smitesacfire.nss
//:://////////////////////////////////////////////
/** @file Evocation [Good]
Level: Paladin 2,
Components: V, DF,
Casting Time: 1 swift action
Range: Personal
Target: You
Duration: 1 round/level; see text
You must cast this spell in the same round when you
attempt a smite attack. If the attack hits, you deal
an extra 2d6 points of damage to the target of the
smite. Whether or not you succeed on the smite attempt,
during each subsequent round of the spell?s duration,
you deal an extra 2d6 points of damage on any successful
melee attack against the target you attempted to smite.
The spell ends prematurely after any round when you do not
attempt a melee attack against the target you previously
attempted to smite, or if you fail to hit with any of
your attacks in a round.
*/
//:://////////////////////////////////////////////
//:: Created By: Tenjac
//:: Created On: 7/25/2022
//:://////////////////////////////////////////////
#include "prc_sp_func"
#include "prc_add_spell_dc"
void main()
{
object oSpellOrigin = OBJECT_SELF;
// find the weapon
object oWeapon = PRCGetSpellCastItem(oSpellOrigin);
// find the target of the spell
object oTarget = PRCGetSpellTargetObject(oSpellOrigin);
//Hit in the last round
if(GetHasSpellEffect(SPELL_SMITE_SACRED_FIRE_HIT))
{
//Target of the original smite
if(GetLocalInt(oTarget, "PRCSSFTarget"));
{
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(DAMAGE_TYPE_DIVINE, d6(2)), oTarget);
ActionCastSpellOnSelf(SPELL_SMITE_SACRED_FIRE_HIT);
}
}
else //We've missed; effect ends, make sure this doesn't trigger the first time
{
effect eToDispel = GetFirstEffect(oSpellOrigin);
while(GetIsEffectValid(eToDispel))
{
if(GetEffectSpellId(eToDispel) == SPELL_SMITE_OF_SACRED_FIRE)
{
RemoveEffect(oSpellOrigin, eToDispel);
}
eToDispel = GetNextEffect(oSpellOrigin);
}
}
}