63 lines
4.1 KiB
Plaintext
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
|
|
}
|