83 lines
2.4 KiB
Plaintext
83 lines
2.4 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////////
|
|
// Spells out the Wazoo - SPELL PLANE SHIFT
|
|
// By Deva Bryson Winblood. 12/18/2003
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/* SETUP REQUIREMENTS FOR THIS SPELL TO BE EFFECTIVE
|
|
It will look for waypoints with the tag PLANESHIFT_<plane> and will ask in a
|
|
conversation which the player wishes the shift to be done to. If put on
|
|
another target besides the caster it will shift that target. If put on the
|
|
caster then it will ask them if they wish to shift additional friendly units
|
|
nearby with them. Planes supported are as follows:
|
|
ASTRAL
|
|
ETHEREAL
|
|
SHADOW
|
|
FIRE
|
|
EARTH
|
|
WATER
|
|
AIR
|
|
POSITIVE
|
|
NEGATIVE
|
|
PRIME - Prime Material Plane
|
|
CELESTIA
|
|
BYTOPIA
|
|
ELYSIUM
|
|
BEAST - The Beastlands
|
|
ARBOREA
|
|
YSGARD
|
|
LIMBO
|
|
PANDEMONIUM
|
|
ABYSS# [ # 1-3 supporting 3 Abyssal areas ]
|
|
CARCERI
|
|
GRAY - The Gray Waste
|
|
GEHENNA
|
|
HELL [ First plane of the nine hells Avernus ]
|
|
ACHERON
|
|
MECHANUS
|
|
ARCADIA
|
|
OUTLANDS
|
|
DREAMS */
|
|
|
|
#include "x2_inc_spellhook"
|
|
#include "prc_inc_spells"
|
|
|
|
void fnFindSpellCaster()
|
|
{
|
|
object oPC=GetLastSpellCaster();
|
|
SetLocalObject(OBJECT_SELF,"oCaster",oPC);
|
|
}
|
|
|
|
void fnSubMain(object oTarget)
|
|
{ // finish casting spell
|
|
//object oPC=GetLocalObject(oTarget,"oCaster");
|
|
object oPC=OBJECT_SELF;
|
|
DeleteLocalObject(oTarget,"oCaster");
|
|
SendMessageToPC(oPC,"You cast plane shift at "+GetName(oTarget));
|
|
if (oTarget!=OBJECT_INVALID)
|
|
{
|
|
SetLocalObject(oPC,"oSpellTarget",oTarget);
|
|
AssignCommand(oPC,ClearAllActions(TRUE));
|
|
AssignCommand(oPC,ActionStartConversation(oPC,"wazoo_cv_pshift",TRUE,FALSE));
|
|
}
|
|
else
|
|
{
|
|
SendMessageToPC(oPC,"Not a valid target for plane shift.");
|
|
}
|
|
} // finish casting spell
|
|
|
|
void main()
|
|
{
|
|
// Georg Zoeller's SpellHook test
|
|
if (!X2PreSpellCastCode())
|
|
{
|
|
SendMessageToPC(GetLastSpellCaster(),"You could not cast that spell for some reason.");
|
|
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
// Declare major variables
|
|
int nSpellID = PRCGetSpellId();
|
|
object oTarget=PRCGetSpellTargetObject();
|
|
if (GetPlotFlag(oTarget)==TRUE) return; // do not use plane shift on plot characters
|
|
AssignCommand(oTarget,fnFindSpellCaster());
|
|
DelayCommand(1.0,fnSubMain(oTarget));
|
|
}
|