AOC_PRC8/_module/nss/holy_war_war.nss
Jaysyn904 5e558169a0 Initial Commit
Initial Commit
2025-04-03 11:24:16 -04:00

301 lines
9.0 KiB
Plaintext

#include "nw_i0_generic"
#include "spawner"
void main()
{
// Initialise variables & objects
object oPC = GetPCSpeaker();
object oMod = GetModule();
object oPC2;
object oTarget;
object oTarget2;
object oSpawn;
location lTarget;
location bTarget;
string sHench;
int nInt;
string sPRes;
string sPRes2;
int iBetConfirm = GetLocalInt(oPC, "bet_confirmed");
if (iBetConfirm!=1)
{
SetLocalInt(oPC, "wager", 0);
SetLocalInt(oPC, "team_bet", 0);
//SetLocalInt(oPC, "winnings",0);
}
// Set Holy War mode ON
SetLocalInt(oMod, "hwar_on", 1);
SetLocalInt(oMod, "war_won", 0);
SetLocalInt(oPC, "champ_won", 0);
SetLocalInt(oMod, "iFireFlag", 0);
SetLocalInt(oMod, "turn_flag", 0);
SetLocalInt(oMod, "iDfire", 1);
// Flag all monsters as being in the arena
SetLocalInt(oMod, "sw_hw", 1);
SetLocalInt(oMod, "sw_dr", 1);
SetLocalInt(oMod, "sw_bl", 1);
SetLocalInt(oMod, "sw_pf", 1);
SetLocalInt(oMod, "sw_df", 1);
SetLocalInt(oMod, "sw_pm", 1);
SetLocalInt(oMod, "sw_bm", 1);
SetLocalInt(oMod, "sw_lm", 1);
SetLocalInt(oMod, "sw_ll", 1);
SetLocalInt(oMod, "sw_xx", 1);
// Reset scoreboard death status
SetLocalString(oMod, "notime4_x", "");
SetLocalString(oMod, "death_x", "");
SetLocalString(oMod, "notime3_x", "");
SetLocalString(oMod, "mistress2_x", "");
SetLocalString(oMod, "zep_marilithb001_x", "");
SetLocalString(oMod, "bard2_x", "");
SetLocalString(oMod, "zep_halfdrafn001_x", "");
SetLocalString(oMod, "zep_pitfiend001_x", "");
SetLocalString(oMod, "dopple_x", "");
SetLocalString(oMod, "zep_balrog001_x", "");
SetLocalString(oMod, "dragon1_x", "");
SetLocalString(oMod, "darcher_x", "");
SetLocalString(oMod, "notime2_x", "");
SetLocalString(oMod, "notime1_x", "");
SetLocalString(oMod, "boss002_x", "");
SetLocalString(oMod, "beli2_x", "");
SetLocalString(oMod, "pwar3_x", "");
SetLocalString(oMod, "hdrag2_x", "");
SetLocalString(oMod, "pfiend2_x", "");
SetLocalString(oMod, "horod2_x", "");
SetLocalString(oMod, "div2_x", "");
SetLocalString(oMod, "dragon2_x", "");
// Reset match champion flag and kill comparative
SetLocalInt(oMod, "notime4_ch", 0);
SetLocalInt(oMod, "death_ch", 0);
SetLocalInt(oMod, "notime3_ch", 0);
SetLocalInt(oMod, "mistress2_ch", 0);
SetLocalInt(oMod, "zep_marilithb001_ch", 0);
SetLocalInt(oMod, "bard2_ch", 0);
SetLocalInt(oMod, "zep_halfdrafn001_ch", 0);
SetLocalInt(oMod, "zep_pitfiend001_ch", 0);
SetLocalInt(oMod, "dopple_ch", 0);
SetLocalInt(oMod, "zep_balrog001_ch", 0);
SetLocalInt(oMod, "dragon1_ch", 0);
SetLocalInt(oMod, "darcher_ch", 0);
SetLocalInt(oMod, "notime2_ch", 0);
SetLocalInt(oMod, "notime1_ch", 0);
SetLocalInt(oMod, "boss002_ch", 0);
SetLocalInt(oMod, "beli2_ch", 0);
SetLocalInt(oMod, "pwar3_ch", 0);
SetLocalInt(oMod, "hdrag2_ch", 0);
SetLocalInt(oMod, "pfiend2_ch", 0);
SetLocalInt(oMod, "horod2_ch", 0);
SetLocalInt(oMod, "div2_ch", 0);
SetLocalInt(oMod, "dragon2_ch", 0);
SetLocalInt(oMod, "notime4_HWk", 0);
SetLocalInt(oMod, "death_HWk", 0);
SetLocalInt(oMod, "notime3_HWk", 0);
SetLocalInt(oMod, "mistress2_HWk", 0);
SetLocalInt(oMod, "zep_marilithb001_HWk", 0);
SetLocalInt(oMod, "bard2_HWk", 0);
SetLocalInt(oMod, "zep_halfdrafn001_HWk", 0);
SetLocalInt(oMod, "zep_pitfiend001_HWk", 0);
SetLocalInt(oMod, "dopple_HWk", 0);
SetLocalInt(oMod, "zep_balrog001_HWk", 0);
SetLocalInt(oMod, "dragon1_HWk", 0);
SetLocalInt(oMod, "darcher_HWk", 0);
SetLocalInt(oMod, "notime2_HWk", 0);
SetLocalInt(oMod, "notime1_HWk", 0);
SetLocalInt(oMod, "boss002_HWk", 0);
SetLocalInt(oMod, "beli2_HWk", 0);
SetLocalInt(oMod, "pwar3_HWk", 0);
SetLocalInt(oMod, "hdrag2_HWk", 0);
SetLocalInt(oMod, "pfiend2_HWk", 0);
SetLocalInt(oMod, "horod2_HWk", 0);
SetLocalInt(oMod, "div2_HWk", 0);
SetLocalInt(oMod, "dragon2_HWk", 0);
// Reset Match Champ stats
SetLocalString(oMod, "sChamp", "");
SetLocalInt(oMod, "champ_count", 0);
SetLocalInt(oMod, "MostKills", 0);
SetLocalInt(oPC, "iHappy", 0);
// Reset team casualties
SetLocalInt(oMod, "hell_cas", 0);
SetLocalInt(oMod, "heav_cas", 0);
// Reset exploit flag
SetLocalInt(oMod, "xcheck", 0);
SetLocalInt(oMod, "iDfire", 0);
// Reset disabled options in spawner convo
SetLocalInt(oMod, "scre_state", 0);
SetLocalInt(oMod, "scre2_state", 0);
SetLocalInt(oMod, "scre_state3", 0);
SetLocalInt(oMod, "scre_state4", 0);
SetLocalInt(oMod, "scre_state5", 0);
// reset the player allegiance flags
SetLocalInt(oMod, "turn_flag", 0);
oPC2 = GetFirstPC();
while (GetIsObjectValid(oPC2))
{
sPRes2 = GetResRef(oPC);
sPRes2+="_HWd";
sPRes = GetResRef(oPC);
sPRes+="_HWk";
SetLocalInt(oMod, sPRes, 0);
SetLocalInt(oMod, sPRes2, 0);
SetLocalInt(oPC2, "pc_HWdam", 0);
SetLocalInt(oPC2, "pc_HWhit", 0);
SetLocalInt(oPC2, "pc_side", 0);
SetLocalInt(oPC2, "join_switch", 0);
SetLocalInt(oPC2, "champ_won", 0);
RemoveJournalQuestEntry("war_hell", oPC2, TRUE, TRUE);
RemoveJournalQuestEntry("war_heav", oPC2, TRUE, TRUE);
SetLocalInt(oPC2, "pc_HWswing", 0);
oPC2 = GetNextPC();
}
// Reset war victory journal entry
RemoveJournalQuestEntry("war_hell", oPC, TRUE, TRUE);
RemoveJournalQuestEntry("war_heav", oPC, TRUE, TRUE);
// Lock arena gate
oTarget = GetObjectByTag("arena_gate");
SetLocked(oTarget, TRUE);
// Move PC out of the battle
oTarget = GetWaypointByTag("safe_wp");
lTarget = GetLocation(oTarget);
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionJumpToLocation(lTarget));
CastPC(0.2, SPELL_ETHEREALNESS, oPC);
// Set up spawnpoints
oTarget2 = GetWaypointByTag("big_wp");
lTarget = GetLocation(oTarget);
bTarget = GetLocation(oTarget2);
oTarget = GetWaypointByTag("monster_wp");
lTarget = GetLocation(oTarget);
// Spawn Dark team
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "dragon1", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "zep_halfdrafn001", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "zep_marilithb001", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "bard2", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "zep_pitfiend001", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "zep_balrog001", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "dopple", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "mistress2", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "notime3", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "notime4", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "darcher", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "death", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
// Set up spawnpoints
oTarget2 = GetWaypointByTag("big_wp2");
lTarget = GetLocation(oTarget);
bTarget = GetLocation(oTarget2);
oTarget = GetWaypointByTag("monster_wp2");
lTarget = GetLocation(oTarget);
// spawn light team
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "notime2", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "div2", lTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "horod2", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "pfiend2", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "hdrag2", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "pwar3", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "beli2", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "boss002", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "notime1", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "dragon2", bTarget);
/*SetIsTemporaryEnemy(oPC, oSpawn);*/
// experimental 'Death' and henchman concepts
//oTarget = GetWaypointByTag("death_wp");
//lTarget = GetLocation(oTarget);
//oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "death2", lTarget);
/*
int oMode = GetLocalInt(oMod, "gamemode");
if (oMode==1)
{
sHench = "diablo";
}
else
{
sHench = "starfall2";
}
oTarget = GetWaypointByTag("star_friend");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, sHench, lTarget);
oTarget = oSpawn;
AddHenchman(oPC, oTarget);
DelayCommand(1.0, AssignCommand(oTarget, ClearAllActions()));
DelayCommand(1.5, AssignCommand(oTarget, ActionSit(GetObjectByTag("SF_BENCH"))));
*/
// Spawn Effect
DelayCommand(6.0, JoinBackedTeam(oPC));
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_PWKILL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_PWKILL), GetLocation(oTarget)));
}