forked from Jaysyn/PRC8
62 lines
2.3 KiB
Plaintext
62 lines
2.3 KiB
Plaintext
|
/*:://////////////////////////////////////////////
|
||
|
//:: Spell Name Antilife Shell
|
||
|
//:: Spell FileName PHS_S_AntilifeS
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: In Game Spell desctiption
|
||
|
//:://////////////////////////////////////////////
|
||
|
3.2M.- Radius, 10 min/level. Sepll resistance: Yes.
|
||
|
|
||
|
Hedges out living creatures:
|
||
|
- The effect hedges out animals, aberrations, dragons, fey, giants, humanoids,
|
||
|
magical beasts, monstrous humanoids, oozes, plants, and vermin, but not
|
||
|
constructs, elementals, outsiders, or undead.
|
||
|
- Any creature already inside the Antilife Shell when cast can remain there.
|
||
|
This spell may be used only defensively, not aggressively. If anything enters
|
||
|
while moving, it breaks the spell.
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: Spell Effects Applied / Notes
|
||
|
//:://////////////////////////////////////////////
|
||
|
It is a mobile barrier, with a special AOE.
|
||
|
|
||
|
Basically, if the caster is doing an ACTION_TYPE_MOVE_TO_POINT and someone
|
||
|
activates the OnEnter script, that creature makes the barrier collapse.
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: Created By: Jasperre
|
||
|
//::////////////////////////////////////////////*/
|
||
|
|
||
|
#include "PHS_INC_SPELLS"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
// Spell Hook Check.
|
||
|
if(!PHS_SpellHookCheck()) 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_ANTILIFE_SHELL);
|
||
|
|
||
|
// Remove previous effects
|
||
|
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_ANTILIFE_SHELL, 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_ANTILIFE_SHELL);
|
||
|
SetLocalInt(oCaster, sLocal, TRUE);
|
||
|
DelayCommand(1.0, DeleteLocalInt(oCaster, sLocal));
|
||
|
|
||
|
// Apply effects
|
||
|
PHS_ApplyDuration(oTarget, eMob, fDuration);
|
||
|
}
|