PRC8/nwn/nwnprc/trunk/smp/phs_s_repelvirm.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

76 lines
2.8 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Repel Vermin
//:: Spell FileName PHS_S_RepelVirm
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Abjuration
Level: Brd 4, Clr 4, Drd 4, Rgr 3
Components: V, S, DF
Casting Time: 1 standard action
Range: 3.33M. (10 ft.)
Area: 3.33-M.-radius (10 ft.) emanation, centered on you
Duration: 10 min./level (D)
Saving Throw: None or Will negates; see text
Spell Resistance: Yes
An invisible barrier holds back vermin. A vermin with Hit Dice of less than
one-third your level cannot penetrate the barrier.
A vermin with Hit Dice of one-third your level or more can penetrate the
barrier if it succeeds on a Will save. Even so, crossing the barrier deals
the vermin 2d6 points of damage, and pressing against the barrier causes
pain, which deters most vermin.
Any creature already inside the barrier at the time of casting can move
normally, as they have not passed through the edge of the barrier.
This spell may be used only defensively, not aggressively. If anything
enters while you are moving, the barrier collapses.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
As in Antilife Shell, this will repel vermin.
They do get a will save (but take damage) and the rules for forcing it
still apply.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell Hook Check.
if(!PHS_SpellHookCheck(PHS_SPELL_REPEL_VIRMIN)) return;
// Declare major variables
object oTarget = GetSpellTargetObject();// Should be OBJECT_SELF.
object oCaster = OBJECT_SELF;
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
// Make sure they are not immune to spells
if(PHS_TotalSpellImmunity(oTarget)) return;
// Duration in 10 minutes/level
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel * 10, nMetaMagic);
// Declare effects - only an enter script.
// - Use scripts defined in the 2da.
effect eMob = EffectAreaOfEffect(PHS_AOE_MOB_REPEL_VIRMIN);
// Remove previous effects
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_REPEL_VIRMIN, oTarget);
// Set local integer so that the first ones will not be affected, which
// is removed after 1.0 seconds.
string sLocal = PHS_MOVING_BARRIER_START + IntToString(PHS_SPELL_REPEL_VIRMIN);
SetLocalInt(oCaster, sLocal, TRUE);
DelayCommand(1.0, DeleteLocalInt(oCaster, sLocal));
// Apply effects
PHS_ApplyDuration(oTarget, eMob, fDuration);
}