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.
80 lines
3.5 KiB
Plaintext
80 lines
3.5 KiB
Plaintext
//:://////////////////////////////////////////////
|
|
//:: FileName: "ss_ep_planarcell"
|
|
/* Purpose: Planar Cell - You must cast this spell on the ground somewhere to
|
|
assign a "Cell" location. Then you can cast it on creatures to teleport
|
|
them to the cell, even across the planes.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Boneshank
|
|
//:: Last Updated On:
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_alterations"
|
|
|
|
#include "inc_epicspells"
|
|
void main()
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION);
|
|
|
|
if (!X2PreSpellCastCode())
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
return;
|
|
}
|
|
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_PLANCEL))
|
|
{
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
location lTarget = PRCGetSpellTargetLocation();
|
|
location lCell;
|
|
effect eVis1 = EffectVisualEffect(VFX_FNF_IMPLOSION);
|
|
effect eVis2 = EffectVisualEffect(VFX_FNF_SUMMON_GATE);
|
|
// If there is a cell location, and the target is a valid creature.
|
|
if (GetLocalInt(OBJECT_SELF, "nHasPlanarCell") == TRUE &&
|
|
oTarget != OBJECT_INVALID &&
|
|
oTarget != OBJECT_SELF &&
|
|
!GetIsDM(oTarget))
|
|
{
|
|
lCell = GetLocalLocation(OBJECT_SELF, "lPlanarCell");
|
|
if (!PRCDoResistSpell(OBJECT_SELF, oTarget, GetTotalCastingLevel(OBJECT_SELF)+SPGetPenetr(OBJECT_SELF)))
|
|
{
|
|
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetEpicSpellSaveDC(OBJECT_SELF, oTarget)))
|
|
{
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis1, lTarget);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis2, lTarget);
|
|
DelayCommand(1.0,
|
|
AssignCommand(oTarget, JumpToLocation(lCell)));
|
|
DelayCommand(1.0,
|
|
AssignCommand(oTarget, ActionDoCommand(ClearAllActions(TRUE))));
|
|
DelayCommand(1.0,
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis1, lCell));
|
|
DelayCommand(1.0,
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis2, lCell));
|
|
}
|
|
}
|
|
}
|
|
// If no cell location known, or the target is not a creature,
|
|
// assign the target location as the cell.
|
|
if (GetLocalInt(OBJECT_SELF, "nHasPlanarCell") != TRUE &&
|
|
oTarget == OBJECT_INVALID)
|
|
{
|
|
SetLocalInt(OBJECT_SELF, "nHasPlanarCell", TRUE);
|
|
SetLocalLocation(OBJECT_SELF, "lPlanarCell", lTarget);
|
|
SendMessageToPC(OBJECT_SELF, "The planar cell is prepared.");
|
|
SendMessageToPC(OBJECT_SELF,
|
|
"You can now teleport creatures to the cell's location.");
|
|
}
|
|
// If the target is yourself, delete the planar cell's location.
|
|
if (GetLocalInt(OBJECT_SELF, "nHasPlanarCell") == TRUE &&
|
|
oTarget == OBJECT_SELF)
|
|
{
|
|
SetLocalInt(OBJECT_SELF, "nHasPlanarCell", FALSE);
|
|
DeleteLocalLocation(OBJECT_SELF, "lPlanarCell");
|
|
SendMessageToPC(OBJECT_SELF,
|
|
"The planar cell's location is lost.");
|
|
SendMessageToPC(OBJECT_SELF,
|
|
"You must prepare a new cell to teleport creatures to.");
|
|
}
|
|
}
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
}
|