// 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 }