forked from Jaysyn/PRC8
71 lines
2.0 KiB
Plaintext
71 lines
2.0 KiB
Plaintext
|
//:://////////////////////////////////////////////
|
||
|
//:: 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);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|