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));
|
||
|
}
|