HiddenTradition_PRC8/_module/nss/q2a_death_unit2.nss
2024-06-20 15:47:42 -04:00

102 lines
4.1 KiB
Plaintext

//:: q2a_death_unit2
/*
// Default On Death for attackers
//if the leader dies - elect a new leader
*/
//:://////////////////////////////////////////////////
//::
//:: Created By: Keith Warner
//:: Created On: August 28/03
//:://////////////////////////////////////////////////
#include "q2_inc_battle"
void main()
{
if (GetLocalInt(OBJECT_SELF, "nDieOnce") == 1)
return;
SetLocalInt(OBJECT_SELF, "nDieOnce", 1);
//count how many of this formation have died.
//after 3 - if this formation is attacking the gates - send in a new formation
int nFormation = GetLocalInt(OBJECT_SELF, "nFormation");
object oBattleMaster = GetObjectByTag("bat1_battlemaster");
SetLocalInt(oBattleMaster, "nFormDeathCount" + IntToString(nFormation), GetLocalInt(oBattleMaster, "nFormDeathCount" + IntToString(nFormation)) + 1);
//SendMessageToPC(GetFirstPC(), "Formation " + IntToString(nFormation) + " DEAD: " + IntToString(GetLocalInt(oBattleMaster, "nFormDeathCount" + IntToString(nFormation))));
SetLocalInt(oBattleMaster, "Battle1TotalDead", GetLocalInt(oBattleMaster, "Battle1TotalDead") + 1);
//SendMessageToPC(GetFirstPC(), "Total Dead : " + IntToString(GetLocalInt(oBattleMaster, "Battle1TotalDead")));
if (GetLocalInt(oBattleMaster, "Battle1TotalDead") == 8)
SignalEvent(oBattleMaster, EventUserDefined(BATTLEMASTER_RESPAWN_WAVE));
else if (GetLocalInt(oBattleMaster, "Battle1TotalDead") == 18)
SignalEvent(oBattleMaster, EventUserDefined(BATTLEMASTER_RESPAWN_WAVE));
else if (GetLocalInt(oBattleMaster, "Battle1TotalDead") > 30)
{
//SendMessageToPC(GetFirstPC(), "PC VICTORY IN BATTLE 1 - Signal Retreat");
SignalEvent(oBattleMaster, EventUserDefined(BATTLEMASTER_SIGNAL_RETREAT));
}
/*if(GetLocalInt(oBattleMaster, "nFormDeathCount" + IntToString(nFormation)) == 3)
{
object oGroupTarget = GetLocalObject(OBJECT_SELF, "oTarget");
if (GetTag(oGroupTarget) == "q2acitygate" || GetTag(oGroupTarget) == "q2ainnergate")
{
SignalEvent(oBattleMaster, EventUserDefined(BATTLEMASTER_FIND_NEW_GATE_ATTACKER));
}
}
*/
if (GetLocalInt(OBJECT_SELF, "nLeader") == 1)
{
//SendMessageToPC(GetFirstPC(), "Leader DEAD!!!!");
int nFound = FALSE;
int nCount;
object oNewLeader = OBJECT_INVALID;
object oProspect;
string szResRef = GetResRef(OBJECT_SELF);
for (nCount = 1; nCount < 6 && nFound == FALSE; nCount++)
{
oProspect = GetLocalObject(OBJECT_SELF, "oFormMember" + IntToString(nCount));
if (oProspect != OBJECT_SELF)
{
if (GetIsObjectValid(oProspect) == TRUE)
{
oNewLeader = oProspect;
nFound = TRUE;
}
}
}
if (nFound == TRUE)
{
SetLocalInt(oNewLeader, "nLeader", 1);
//Store a new pointer on the battlemaster for the new leader of this formation
SetLocalObject(oBattleMaster, "oFormationLeader" + IntToString(nFormation), oNewLeader);
//SendMessageToPC(GetFirstPC(), "NewLeader FOUND");
SignalEvent(oNewLeader, EventUserDefined(5000));
}
else
{
//Track the total number of formations killed for the retreat event
SetLocalInt(oBattleMaster, "nFormDeathCountTotal", GetLocalInt(oBattleMaster, "nFormDeathCountTotal") + 1);
//Track the fact that this formation has been totally wiped out.
SetLocalInt(oBattleMaster, "nDeadFormation" + IntToString(nFormation), 1);
//SendMessageToPC(GetFirstPC(), "NO New Leader");
//SendMessageToPC(GetFirstPC(), "Dead Formation Count: " + IntToString(GetLocalInt(oBattleMaster, "nFormDeathCountTotal")));
//If the number of formations killed is greater than the wave retreat number, signal a retreat.
if(GetLocalInt(oBattleMaster, "nFormDeathCountTotal") > BATTLE1_RETREAT_NUMBER)
{
SignalEvent(oBattleMaster, EventUserDefined(BATTLEMASTER_SIGNAL_RETREAT));
}
}
}
}