HoS_PRC8/_mod/_module/nss/wazoo_s0_astplcd.nss
Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

63 lines
4.1 KiB
Plaintext

// wazoo_s0_astplcd - Placeable for your body in the prime material plane was damaged
#include "X0_INC_HENAI"
#include "X2_INC_SUMMSCALE"
void main()
{
object oMe=GetLocalObject(OBJECT_SELF,"oOwner");
effect eDeath=EffectDeath();
object oBody;
object oUser=oMe;
object oAssoc;
int bHardcore=GetLocalInt(GetModule(),"bDifficultyHardcore");
int bKill=TRUE;
if (GetIsPC(oMe)==TRUE) SendMessageToPC(oMe,"Your body was killed in the prime material plane!");
if (GetLocalInt(oMe,"bWAZOOASTRAL")!=TRUE) bKill=FALSE;
DeleteLocalInt(oMe,"bWAZOOASTRAL");
if (bKill) ApplyEffectToObject(DURATION_TYPE_INSTANT,eDeath,oMe);
oBody=GetItemPossessedBy(oMe,"wazoo_it_astret");
if (oBody!=OBJECT_INVALID) DestroyObject(oBody);
if (GetIsPC(oMe)==TRUE&&bHardcore!=TRUE)
{
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);
}
else if (GetIsPC(oMe)==TRUE&&bHardcore==TRUE)
{ // make henchmen stay 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);
} // make henchmen stay behind
}