Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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");
|
|
}
|