//::////////////////////////////////////////////////// //:: X0_CH_HEN_DEATH //:: Copyright (c) 2002 Floodgate Entertainment //::////////////////////////////////////////////////// /* OnDeath handler for henchmen ONLY. Causes them to respawn at (in order of preference) the respawn point of their master or their own starting location. */ //::////////////////////////////////////////////////// //:: Created By: Naomi Novik //:: Created On: 10/09/2002 //::////////////////////////////////////////////////// #include "prc_alterations" #include "x0_i0_henchman" void main() { // Handle a bunch of stuff to keep us from running around, // dying again, etc. // PreRespawnSetup(); // Call for healing DelayCommand(0.5, VoiceHealMe(TRUE)); // Get our last master object oPC = GetLastMaster(); object oSelf = OBJECT_SELF; // Clear dialogue events ClearAllDialogue(oPC, OBJECT_SELF); ClearAllActions(); string sAreaTag = GetTag(GetArea(OBJECT_SELF)); // * in final battle area henchmen death is now permanent if (sAreaTag == "Winds_04") { SetPlotFlag(OBJECT_SELF,FALSE); SetImmortal(OBJECT_SELF, FALSE); SetIsDestroyable(TRUE, FALSE, FALSE); DestroyObject(OBJECT_SELF, 0.2); return; } if ((GetTag(GetModule()) == "x0_module2" || GetTag(GetModule()) == "x0_module3") && GetIsObjectValid(oPC) == FALSE) { // SpawnScriptDebugger(); // * if you kill a henchmen who has never had a master // * then permanently kill them to prevent // * faction issues. SetPlotFlag(OBJECT_SELF,FALSE); SetImmortal(OBJECT_SELF, FALSE); SetIsDestroyable(TRUE, FALSE, FALSE); DestroyObject(OBJECT_SELF, 0.2); return; } // If we don't have a master OR he has died, respawn immediately // April 2003, in some areas the henchmen has to respawn immediately // back for pathfinding reasons (i.e., if they die in front of the dragon // the dragon will act stupid if (!GetIsObjectValid(oPC) || GetIsDead(oPC) == TRUE && GetTag(GetModule()) == "x0_module1" || sAreaTag =="Q5_DragonCaves" || sAreaTag == "Q3C_AncientTemple") { DelayCommand(1.0, RespawnHenchman()); DelayCommand(1.5, PostRespawnCleanup()); } else { // BK Feb 2003: Make the henchman rejoin you so that you can use potions on them // DelayCommand(0.1, AddHenchman(oPC, oSelf)); // Start the respawn checking // RaiseForRespawn(oPC); // * henchmen will always stay where they die unless you leave them // RespawnCheck(oPC); } }