78 lines
4.8 KiB
Plaintext
78 lines
4.8 KiB
Plaintext
|
// wazoo_s0_astret - Spells Out the Wazoo - Return from astral projection
|
||
|
// By Deva Bryson Winblood.
|
||
|
#include "X0_INC_HENAI"
|
||
|
#include "X2_INC_SUMMSCALE"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
object oMe=OBJECT_SELF;
|
||
|
object oBody=GetLocalObject(oMe,"oWazooBody");
|
||
|
object oUser=oMe;
|
||
|
object oAssoc;
|
||
|
int bHardcore=GetLocalInt(GetModule(),"bDifficultyHardcore");
|
||
|
effect eRes=EffectResurrection();
|
||
|
effect eEth=EffectEthereal();
|
||
|
effect eHeal=EffectHeal(GetMaxHitPoints(oMe));
|
||
|
location lLoc=GetLocation(oBody);
|
||
|
DeleteLocalInt(oMe,"bWAZOOASTRAL");
|
||
|
if (GetIsDead(oMe)==TRUE)
|
||
|
{
|
||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,eRes,oMe);
|
||
|
DelayCommand(0.2,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEth,oMe,4.0));
|
||
|
DelayCommand(0.1,ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,oMe));
|
||
|
}
|
||
|
DelayCommand(1.0,AssignCommand(oMe,JumpToLocation(lLoc)));
|
||
|
DestroyObject(oBody);
|
||
|
if (GetIsPC(oMe)==FALSE&&GetArea(oMe)!=GetArea(GetMaster(oMe)))
|
||
|
{ // NPC make sure cannot follow master
|
||
|
SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE);
|
||
|
} // NPC make sure cannot follow master
|
||
|
oBody=GetItemPossessedBy(oMe,"wazoo_it_astret");
|
||
|
if (oBody!=OBJECT_INVALID) DestroyObject(oBody);
|
||
|
if (GetIsPC(oMe)==TRUE)
|
||
|
{ // PC
|
||
|
if (bHardcore==FALSE)
|
||
|
{ // bring associates back also
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_DOMINATED,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_SUMMONED,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,1);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,2);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,3);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,4);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,5);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) ExecuteScript("wazoo_s0_astret",oAssoc);
|
||
|
} // bring associates back also
|
||
|
else
|
||
|
{ // leave associates behind
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_DOMINATED,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_SUMMONED,oUser);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,1);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,2);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,3);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,4);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
oAssoc=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oUser,5);
|
||
|
if (oAssoc!=OBJECT_INVALID&&GetLocalInt(oAssoc,"nWAZOOASTRAL")==TRUE) SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE,oAssoc);
|
||
|
} // leave associates behind
|
||
|
} // PC
|
||
|
}
|