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.
74 lines
2.7 KiB
Plaintext
74 lines
2.7 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Spell: Dimensional Lock
|
|
//:: sp_dimens_lock
|
|
//::///////////////////////////////////////////////
|
|
/** @ file
|
|
Dimensional Lock
|
|
|
|
Abjuration
|
|
Level: Clr 8, Sor/Wiz 8
|
|
Components: V, S
|
|
Casting Time: 1 standard action
|
|
Range: Medium (100 ft. + 10 ft./level)
|
|
Area: 20-ft.-radius emanation centered on a point in space
|
|
Duration: One day/level
|
|
Saving Throw: None
|
|
Spell Resistance: Yes
|
|
|
|
You create a shimmering emerald barrier that completely blocks
|
|
extradimensional travel. Forms of movement barred include astral projection,
|
|
blink, dimension door, ethereal jaunt, etherealness, gate, maze,
|
|
plane shift, shadow walk, teleport, and similar spell-like or psionic
|
|
abilities. Once dimensional lock is in place, extradimensional travel into
|
|
or out of the area is not possible.
|
|
|
|
A dimensional lock does not interfere with the movement of creatures already
|
|
in ethereal or astral form when the spell is cast, nor does it block
|
|
extradimensional perception or attack forms. Also, the spell does not
|
|
prevent summoned creatures from disappearing at the end of a summoning
|
|
spell.
|
|
|
|
|
|
@author Ornedan
|
|
@date Created - 2005.10.22
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
#include "prc_inc_teleport"
|
|
|
|
void main()
|
|
{
|
|
PRCSetSchool(SPELL_SCHOOL_ABJURATION);
|
|
// Spellhook
|
|
if(!X2PreSpellCastCode()) return;
|
|
|
|
/* Main spellscript */
|
|
object oCaster = OBJECT_SELF;
|
|
location lTarget = PRCGetSpellTargetLocation();
|
|
int nCasterLvl = PRCGetCasterLevel();
|
|
int nSpellID = PRCGetSpellId();
|
|
effect eVis = EffectLinkEffects(EffectVisualEffect(VFX_IMP_BLINDDEAD_DN_GREEN), EffectVisualEffect(VFX_IMP_BLINDDEAD_DN_SOUNDFX));
|
|
float fDur = PRCGetMetaMagicDuration(HoursToSeconds(24 * nCasterLvl));
|
|
|
|
|
|
// Do VFX
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lTarget);
|
|
|
|
// Spawn invisible caster object
|
|
object oApplyObject = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lTarget);
|
|
|
|
// Store data on it
|
|
SetLocalObject(oApplyObject, "PRC_Spell_DimLock_Caster", oCaster);
|
|
SetLocalLocation(oApplyObject, "PRC_Spell_DimLock_Target", lTarget);
|
|
SetLocalInt(oApplyObject, "PRC_Spell_DimLock_SpellPenetr", nCasterLvl + SPGetPenetr());
|
|
SetLocalFloat(oApplyObject, "PRC_Spell_DimLock_Duration", fDur);
|
|
|
|
// Assign commands
|
|
AssignCommand(oApplyObject, ExecuteScript("sp_dimens_lock_x", oApplyObject));
|
|
AssignCommand(oApplyObject, DelayCommand(fDur, DestroyObject(oApplyObject))); // The AoE is likely to destroy it before this, but paranoia
|
|
|
|
// Cleanup
|
|
PRCSetSchool();
|
|
} |