Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

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
}