include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "LibHNXH_h"
//--------------------------------------------------------------------------------------------------
// Library: NexusHunter
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHNXH_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
}
// Variable Initialization
bool libHNXH_InitVariables_completed = false;
void libHNXH_InitVariables () {
int init_i;
if (libHNXH_InitVariables_completed) {
return;
}
libHNXH_InitVariables_completed = true;
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHNXH_gv_NexusHunterEnemyHeroes[init_i] = UnitGroupEmpty();
}
}
// Functions
void libHNXH_gf_HeroNexusHunterIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHNXH_gv_heroNexusHunterTriggerRegistrationVariable += 1;
if ((libHNXH_gv_heroNexusHunterTriggerRegistrationVariable == 1)) {
}
}
void libHNXH_gf_HeroNexusHunterDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHNXH_gv_heroNexusHunterTriggerRegistrationVariable -= 1;
if ((libHNXH_gv_heroNexusHunterTriggerRegistrationVariable < 0)) {
libHNXH_gv_heroNexusHunterTriggerRegistrationVariable = 0;
}
if ((libHNXH_gv_heroNexusHunterTriggerRegistrationVariable == 0)) {
}
}
void libHNXH_gf_NexusHunterApplyEnemyTokenCounterForPlayer (int lp_playerNumber) {
// Variable Declarations
unit lv_NexusHunterUnit;
// Automatic Variable Declarations
playergroup auto4F63B540_g;
int auto4F63B540_var;
// Variable Initialization
lv_NexusHunterUnit = libGame_gv_players[lp_playerNumber].lv_heroUnit;
// Implementation
UnitGroupClear(libHNXH_gv_NexusHunterEnemyHeroes[lp_playerNumber]);
auto4F63B540_g = libGame_gv_teams[libGame_gf_EnemyTeamNumberOfPlayer(lp_playerNumber)].lv_teamPlayerGroup;
auto4F63B540_var = -1;
while (true) {
auto4F63B540_var = PlayerGroupNextPlayer(auto4F63B540_g, auto4F63B540_var);
if (auto4F63B540_var<0) { break; }
UnitBehaviorAdd(libGame_gv_players[auto4F63B540_var].lv_heroUnit, "NexusHunterHuntersVengeanceTargetTrackQuestToken", lv_NexusHunterUnit, 1);
UnitBehaviorAdd(libGame_gv_players[auto4F63B540_var].lv_heroUnit, "NexusHunterHuntersVengeanceOwnershipTargetBehavior", lv_NexusHunterUnit, 1);
UnitGroupAdd(libHNXH_gv_NexusHunterEnemyHeroes[lp_playerNumber], libGame_gv_players[auto4F63B540_var].lv_heroUnit);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: NexusHunter - Hunter's Vengeance - NexusHunter Spawn (Normal)
//--------------------------------------------------------------------------------------------------
bool libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnNormal_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_heroUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_HeroSpawnPlayer();
lv_heroUnit = libGame_gv_players[lv_player].lv_heroUnit;
// Conditions
if (testConds) {
if (!((UnitGetType(lv_heroUnit) == "HeroNexusHunter"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHNXH_gv_NexusHunterInitializeNexusHunterCount += 1;
libHNXH_gv_NexusHunterInitializedNexusHunter[libHNXH_gv_NexusHunterInitializeNexusHunterCount] = lv_player;
libHNXH_gf_NexusHunterApplyEnemyTokenCounterForPlayer(lv_player);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnNormal_Init () {
libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnNormal = TriggerCreate("libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnNormal_Func");
TriggerEnable(libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnNormal, false);
libGame_gf_HeroSpawn(libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnNormal);
}
//--------------------------------------------------------------------------------------------------
// Trigger: NexusHunter - Hunter's Vengeance - NexusHunter Spawn (Debug)
//--------------------------------------------------------------------------------------------------
bool libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnDebug_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_heroUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_DebugHeroSwappedPlayer();
lv_heroUnit = libGame_gv_players[lv_player].lv_heroUnit;
// Conditions
if (testConds) {
if (!((UnitGetType(lv_heroUnit) == "HeroNexusHunter"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHNXH_gv_NexusHunterInitializeNexusHunterCount += 1;
libHNXH_gv_NexusHunterInitializedNexusHunter[libHNXH_gv_NexusHunterInitializeNexusHunterCount] = lv_player;
libHNXH_gf_NexusHunterApplyEnemyTokenCounterForPlayer(lv_player);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnDebug_Init () {
libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnDebug = TriggerCreate("libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnDebug_Func");
TriggerEnable(libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnDebug, false);
libGame_gf_DebugHeroSwapped(libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnDebug);
}
//--------------------------------------------------------------------------------------------------
// Trigger: NexusHunter - Hunter's Vengeance - Add Targets on Game Start
//--------------------------------------------------------------------------------------------------
bool libHNXH_gt_NexusHunterHuntersVengeanceAddTargetsonGameStart_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
int autoB0A6C146_ae;
int autoB0A6C146_var;
// Actions
if (!runActions) {
return true;
}
autoB0A6C146_ae = libHNXH_gv_NexusHunterInitializeNexusHunterCount;
autoB0A6C146_var = 1;
for ( ; autoB0A6C146_var <= autoB0A6C146_ae; autoB0A6C146_var += 1 ) {
libHNXH_gf_NexusHunterApplyEnemyTokenCounterForPlayer(libHNXH_gv_NexusHunterInitializedNexusHunter[autoB0A6C146_var]);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHNXH_gt_NexusHunterHuntersVengeanceAddTargetsonGameStart_Init () {
libHNXH_gt_NexusHunterHuntersVengeanceAddTargetsonGameStart = TriggerCreate("libHNXH_gt_NexusHunterHuntersVengeanceAddTargetsonGameStart_Func");
TriggerEnable(libHNXH_gt_NexusHunterHuntersVengeanceAddTargetsonGameStart, false);
libGame_gf_HeroSpawn(libHNXH_gt_NexusHunterHuntersVengeanceAddTargetsonGameStart);
}
//--------------------------------------------------------------------------------------------------
// Trigger: NexusHunter - Hunter's Vengeance - Hero Takedown
//--------------------------------------------------------------------------------------------------
bool libHNXH_gt_NexusHunterHuntersVengeanceHeroTakedown_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_killingUnit;
unit lv_killedUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_killingUnit = libGame_gv_players[libGame_gf_HeroParticipatedInTakedownKillingPlayer()].lv_heroUnit;
lv_killedUnit = libGame_gv_players[libGame_gf_HeroParticipatedInTakedownKilledPlayer()].lv_heroUnit;
// Conditions
if (testConds) {
if (!((UnitGetType(lv_killingUnit) == "HeroNexusHunter"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_killingUnit, "NexusHunterHuntersVengeanceTargetTrackAddMaxToken", lv_killedUnit);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHNXH_gt_NexusHunterHuntersVengeanceHeroTakedown_Init () {
libHNXH_gt_NexusHunterHuntersVengeanceHeroTakedown = TriggerCreate("libHNXH_gt_NexusHunterHuntersVengeanceHeroTakedown_Func");
TriggerEnable(libHNXH_gt_NexusHunterHuntersVengeanceHeroTakedown, false);
libGame_gf_HeroParticipatedInTakedown(libHNXH_gt_NexusHunterHuntersVengeanceHeroTakedown);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - NexusHunter - Final Strike - Turn Triggers On
//--------------------------------------------------------------------------------------------------
bool libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOn_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_player = UnitGetOwner(EventUnit());
// Actions
if (!runActions) {
return true;
}
libHNXH_gv_heroNexusHunterIsPlayerCastingFinalStrike[lv_player] = true;
libHNXH_gv_heroNexusHunterActiveFinalStrikeCasters += 1;
TriggerEnable(libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked, true);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOn_Init () {
libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOn = TriggerCreate("libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOn_Func");
TriggerEnable(libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOn, false);
TriggerAddEventUnitBehaviorChange(libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOn, null, "NexusHunterFinalStrikeChanneling", c_unitBehaviorChangeCreate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - NexusHunter - Final Strike - Turn Triggers Off
//--------------------------------------------------------------------------------------------------
bool libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOff_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_player = UnitGetOwner(EventUnit());
// Actions
if (!runActions) {
return true;
}
libHNXH_gv_heroNexusHunterIsPlayerCastingFinalStrike[lv_player] = false;
libHNXH_gv_heroNexusHunterActiveFinalStrikeCasters -= 1;
libHNXH_gv_heroNexusHunterActiveFinalStrikeCasters = libNtve_gf_ArithmeticIntClamp(libHNXH_gv_heroNexusHunterActiveFinalStrikeCasters, 0, 10);
if ((libHNXH_gv_heroNexusHunterActiveFinalStrikeCasters == 0)) {
TriggerEnable(libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked, false);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOff_Init () {
libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOff = TriggerCreate("libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOff_Func");
TriggerEnable(libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOff, false);
TriggerAddEventUnitBehaviorChange(libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOff, null, "NexusHunterFinalStrikeChanneling", c_unitBehaviorChangeDestroy);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - NexusHunter - Final Strike - Caster Clicked
//--------------------------------------------------------------------------------------------------
bool libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_unit;
// Automatic Variable Declarations
// Variable Initialization
lv_player = EventPlayer();
lv_unit = libGame_gv_players[lv_player].lv_heroUnit;
// Conditions
if (testConds) {
if (!((libHNXH_gv_heroNexusHunterIsPlayerCastingFinalStrike[lv_player] == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
if ((PlayerHasTalent(lv_player, "NexusHunterFinalStrike") == true)) {
UnitIssueOrder(lv_unit, Order(AbilityCommand("AlarakDeadlyChargeExecute", 0)), c_orderQueueReplace);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked_Init () {
libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked = TriggerCreate("libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked_Func");
TriggerEnable(libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked, false);
}
void libHNXH_InitTriggers () {
libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnNormal_Init();
libHNXH_gt_NexusHunterHuntersVengeanceNexusHunterSpawnDebug_Init();
libHNXH_gt_NexusHunterHuntersVengeanceAddTargetsonGameStart_Init();
libHNXH_gt_NexusHunterHuntersVengeanceHeroTakedown_Init();
libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOn_Init();
libHNXH_gt_HeroNexusHunterFinalStrikeTurnTriggersOff_Init();
libHNXH_gt_HeroNexusHunterFinalStrikeCasterClicked_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHNXH_InitLib_completed = false;
void libHNXH_InitLib () {
if (libHNXH_InitLib_completed) {
return;
}
libHNXH_InitLib_completed = true;
libHNXH_InitLibraries();
libHNXH_InitVariables();
libHNXH_InitTriggers();
}