include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/AILib"
include "TriggerLibs/UILib"
include "LibHFIR_h"
//--------------------------------------------------------------------------------------------------
// Library: Firebat
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHFIR_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libAIAI_InitVariables();
libUIUI_InitVariables();
}
// Variable Initialization
bool libHFIR_InitVariables_completed = false;
void libHFIR_InitVariables () {
int init_i;
if (libHFIR_InitVariables_completed) {
return;
}
libHFIR_InitVariables_completed = true;
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHFIR_gv_bunkerOverlayFX_Timer[init_i] = TimerCreate();
}
}
// Functions
void libHFIR_gf_HeroFirebatIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHFIR_gv_heroFirebatTriggerRegistrationVariable += 1;
if ((libHFIR_gv_heroFirebatTriggerRegistrationVariable == 1)) {
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayOn, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayOff, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, true);
TriggerEnable(libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker, true);
TriggerEnable(libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal, true);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn, true);
}
}
void libHFIR_gf_HeroFirebatDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHFIR_gv_heroFirebatTriggerRegistrationVariable -= 1;
if ((libHFIR_gv_heroFirebatTriggerRegistrationVariable < 0)) {
libHFIR_gv_heroFirebatTriggerRegistrationVariable = 0;
}
if ((libHFIR_gv_heroFirebatTriggerRegistrationVariable == 0)) {
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayOn, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayOff, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, false);
TriggerEnable(libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker, false);
TriggerEnable(libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal, false);
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn, false);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Fortified Bunker - Oil Spill Cast
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_firebatPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_firebatPlayer = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(libGame_gv_players[lv_firebatPlayer].lv_heroUnit, "FirebatOilSpillTrackerAddCaster", EventPlayerEffectUsedUnit(c_effectUnitTarget));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast_Init () {
libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast, false);
TriggerAddEventPlayerEffectUsed(libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast, c_playerAny, "FirebatOilSpillDummySpawnSet");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Flamethrower - Reveal
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_flamethrowerUnit;
unit lv_impactUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_flamethrowerUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_impactUnit = EventPlayerEffectUsedUnit(c_effectUnitTarget);
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectPoint(lv_impactUnit, "FirebatBunkerDropFlamethrowerCreatePersistentReveal", UnitGetPosition(lv_flamethrowerUnit));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal_Init () {
libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal, false);
TriggerAddEventPlayerEffectUsed(libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal, c_playerAny, "FirebatBunkerDropFlamethrowerImpactSet");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Turret - Unit Select
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_bunkerDropTurretUnit;
unit lv_bunkerDropPassengerUnit;
int lv_bunkerDropPassengerPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_bunkerDropTurretUnit = EventPlayerEffectUsedUnit(c_effectUnitTarget);
lv_bunkerDropPassengerUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_bunkerDropPassengerPlayer = UnitGetOwner(lv_bunkerDropTurretUnit);
// Actions
if (!runActions) {
return true;
}
UnitSetPosition(lv_bunkerDropPassengerUnit, UnitGetPosition(lv_bunkerDropTurretUnit), false);
UnitAbilityAddCooldown(lv_bunkerDropTurretUnit, "FirebatBunkerDropExitBunker", "Abil/FirebatBunkerDropExitBunker", 0.5);
libGame_gf_UnitSelectionEnterVehicle(lv_bunkerDropTurretUnit, lv_bunkerDropPassengerUnit, lv_bunkerDropPassengerPlayer);
libGame_gf_SendInstantEventPlayerEnteredVehicle(lv_bunkerDropPassengerPlayer, lv_bunkerDropPassengerUnit, lv_bunkerDropPassengerUnit, lv_bunkerDropTurretUnit);
if ((libAIAI_gf_HeroAIIsAIEnabledForPlayer(lv_bunkerDropPassengerPlayer) == true)) {
UnitCreateAIThinkTree(lv_bunkerDropTurretUnit);
}
UnitBehaviorAdd(lv_bunkerDropTurretUnit, "DisableAIGoalAssignment", lv_bunkerDropTurretUnit, 1);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect_Init () {
libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect, false);
TriggerAddEventPlayerEffectUsed(libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect, c_playerAny, "FirebatBunkerDropTurretApplyTimedLifeBehavior");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Enter Turn AI On
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_bunkerDropTurretUnit;
int lv_bunkerDropPassengerPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_bunkerDropTurretUnit = EventPlayerEffectUsedUnit(c_effectUnitTarget);
lv_bunkerDropPassengerPlayer = UnitGetOwner(lv_bunkerDropTurretUnit);
// Actions
if (!runActions) {
return true;
}
if ((libAIAI_gf_HeroAIIsAIEnabledForPlayer(lv_bunkerDropPassengerPlayer) == true)) {
UnitCreateAIThinkTree(lv_bunkerDropTurretUnit);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn_Init () {
libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn, false);
TriggerAddEventPlayerEffectUsed(libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn, c_playerAny, "FirebatBunkerDropTurretCreateUnitSpawnSet");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Turret - Unit Deselect
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_bunkerDropTurretUnit;
unit lv_bunkerDropPassengerUnit;
unit lv_bunkerDropNoUnit;
int lv_bunkerDropPassengerPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_bunkerDropTurretUnit = EventPlayerEffectUsedUnit(c_effectUnitTarget);
lv_bunkerDropPassengerUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_bunkerDropPassengerPlayer = UnitGetOwner(lv_bunkerDropPassengerUnit);
// Actions
if (!runActions) {
return true;
}
UnitSelect(lv_bunkerDropTurretUnit, lv_bunkerDropPassengerPlayer, false);
UnitSelect(lv_bunkerDropPassengerUnit, lv_bunkerDropPassengerPlayer, true);
UnitBehaviorRemove(lv_bunkerDropPassengerUnit, "HeroGenericTimeStopListener", 1);
if ((libGame_gv_players[lv_bunkerDropPassengerPlayer].lv_cameraPlayerUnitGroupToFocusOn == libNtve_gf_ConvertUnitToUnitGroup(lv_bunkerDropTurretUnit))) {
libGame_gv_players[lv_bunkerDropPassengerPlayer].lv_cameraPlayerUnitGroupToFocusOn = libNtve_gf_ConvertUnitToUnitGroup(lv_bunkerDropPassengerUnit);
libGame_gf_CameraUpdateCameraForPlayer(lv_bunkerDropPassengerPlayer);
}
if ((PlayerHero(lv_bunkerDropPassengerPlayer) == "LostVikings")) {
libGame_gf_ControlGroupsExitVehicleLostVikings(lv_bunkerDropTurretUnit, lv_bunkerDropPassengerUnit, lv_bunkerDropPassengerPlayer);
}
if ((PlayerHero(lv_bunkerDropPassengerPlayer) == "Samuro") && (PlayerHasTalent(lv_bunkerDropPassengerPlayer, "SamuroHeroicAbilityIllusionMaster") == true)) {
libGame_gf_ControlGroupsExitVehicleSamuro(lv_bunkerDropTurretUnit, lv_bunkerDropPassengerUnit, lv_bunkerDropPassengerPlayer);
}
libGame_gv_players[lv_bunkerDropPassengerPlayer].lv_cameraPlayerUnitGroupToFocusOn = libNtve_gf_ConvertUnitToUnitGroup(lv_bunkerDropPassengerUnit);
libGame_gf_CameraUpdateCameraForPlayer(lv_bunkerDropPassengerPlayer);
libGame_gf_SendInstantEventUnitStopsOccupyingVehicle(lv_bunkerDropPassengerPlayer, lv_bunkerDropPassengerUnit, lv_bunkerDropNoUnit);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect_Init () {
libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect, false);
TriggerAddEventPlayerEffectUsed(libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect, c_playerAny, "FirebatBunkerDropTurretDummyFinalModifyUnit");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Overlay On
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropOverlayOn_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_player = UnitGetOwner(lv_unit);
// Conditions
if (testConds) {
if (!((UnitTestState(lv_unit, c_unitStateHallucination) == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libUIUI_gf_UIDamageFlashStopLowHPSoundAndScreenEffects(lv_player);
libUIUI_gf_FullscreenOverlayStopandClearCutsceneQueueForPlayer(lv_player);
libNtve_gf_SetDialogItemCutscene(libUIUI_gv_cargoOverlay.lv_cargoOverlay_Cutscene[lv_player], "Cutscenes\\GameUI_FirebatBunkerOverlay.StormCutscene", PlayerGroupAll());
DialogControlSendAnimationEvent(libUIUI_gv_cargoOverlay.lv_cargoOverlay_Cutscene[lv_player], libCore_gv_playerGroupFromPlayer[lv_player], "Start");
DialogControlSetVisible(libUIUI_gv_cargoOverlay.lv_cargoOverlay_Cutscene[lv_player], PlayerGroupSingle(lv_player), true);
DialogControlSetVisible(libUIUI_gv_cargoOverlay.lv_cargoOverlay[lv_player], PlayerGroupSingle(lv_player), true);
while ((UnitHasBehavior2(lv_unit, "FirebatBunkerDropPassengerUnitInsideBunker") == true)) {
Wait(0.0625, c_timeGame);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropOverlayOn_Init () {
libHFIR_gt_HeroFirebatBunkerDropOverlayOn = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropOverlayOn_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayOn, false);
TriggerAddEventUnitBehaviorChange(libHFIR_gt_HeroFirebatBunkerDropOverlayOn, null, "FirebatBunkerDropPassengerUnitInsideBunker", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Overlay Off
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropOverlayOff_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_player = UnitGetOwner(lv_unit);
// Conditions
if (testConds) {
if (!((UnitTestState(EventUnit(), c_unitStateHallucination) == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
DialogControlSetVisible(libUIUI_gv_cargoOverlay.lv_cargoOverlay_Cutscene[lv_player], PlayerGroupSingle(lv_player), false);
DialogControlSendAnimationEvent(libUIUI_gv_cargoOverlay.lv_cargoOverlay_Cutscene[lv_player], libCore_gv_playerGroupFromPlayer[lv_player], "Stop");
if ((UnitGetType(libGame_gv_players[lv_player].lv_heroUnit) != "HeroLostVikingsController")) {
libGame_gf_CameraPanCameraForPlayerAndUpdateMapBoundsIfNecessary(lv_player, UnitGetPosition(lv_unit), 0.0, -1, 0.0, false);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropOverlayOff_Init () {
libHFIR_gt_HeroFirebatBunkerDropOverlayOff = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropOverlayOff_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayOff, false);
TriggerAddEventUnitBehaviorChange(libHFIR_gt_HeroFirebatBunkerDropOverlayOff, null, "FirebatBunkerDropPassengerUnitInsideBunker", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Overlay Flamethrower FX - Start
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_triggeringPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_triggeringPlayer = EventPlayer();
// Actions
if (!runActions) {
return true;
}
CutsceneSetFilter(CutsceneGetTriggerControl(libUIUI_gv_cargoOverlay.lv_cargoOverlay_Cutscene[lv_triggeringPlayer]), "Active");
TimerStart(libHFIR_gv_bunkerOverlayFX_Timer[lv_triggeringPlayer], 2.5, false, c_timeGame);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart_Init () {
libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart, false);
TriggerAddEventUnitAbility(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart, null, AbilityCommand("FirebatBunkerDropFlamethrower", 0), c_unitAbilStageAll, false);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Bunker Drop - Overlay Flamethrower FX - End
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
const int autoEA69F6C3_ae = libCore_gv_bALMaxPlayers;
int autoEA69F6C3_var;
// Actions
if (!runActions) {
return true;
}
autoEA69F6C3_var = 1;
for ( ; autoEA69F6C3_var <= autoEA69F6C3_ae; autoEA69F6C3_var += 1 ) {
if ((EventTimer() == libHFIR_gv_bunkerOverlayFX_Timer[autoEA69F6C3_var])) {
CutsceneClearFilters(CutsceneGetTriggerControl(libUIUI_gv_cargoOverlay.lv_cargoOverlay_Cutscene[autoEA69F6C3_var]));
return true;
}
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd_Init () {
libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd = TriggerCreate("libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd_Func");
TriggerEnable(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, false);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[1]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[2]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[3]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[4]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[5]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[6]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[7]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[8]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[9]);
TriggerAddEventTimer(libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd, libHFIR_gv_bunkerOverlayFX_Timer[10]);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Juggernaut Plating - Damage Tracker
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker_Func (bool testConds, bool runActions) {
// Variable Declarations
fixed lv_damageAmount;
unit lv_firebatUnit;
int lv_firebatPlayer;
// Automatic Variable Declarations
// Variable Initialization
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(EventUnit(), "FirebatJuggernautPlatingSpellShield") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_firebatUnit = EventUnit();
lv_firebatPlayer = UnitGetOwner(lv_firebatUnit);
if (((lv_firebatPlayer > libCore_gv_bALMaxPlayers) || (lv_firebatPlayer <= 0))) {
return true;
}
lv_damageAmount = (EventUnitDamageAmount() + EventUnitDamageBehaviorShield());
lv_damageAmount = (lv_damageAmount * libHFIR_gv_heroFirebatJuggernautPlatingBaseShieldMod);
libHFIR_gv_heroFirebatJuggernautPlatingCombinedShield[lv_firebatPlayer] += lv_damageAmount;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker_Init () {
libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker = TriggerCreate("libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker_Func");
TriggerEnable(libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker, false);
TriggerAddDamageEvent(libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker, null, "HeroFirebat", c_unitDamageTypeAbility, c_unitDamageEither, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Firebat - Juggernaut Plating - Apply Shield
//--------------------------------------------------------------------------------------------------
bool libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_firebatUnit;
int lv_firebatPlayer;
fixed lv_shieldAmount;
// Automatic Variable Declarations
// Variable Initialization
lv_firebatUnit = EventUnit();
lv_firebatPlayer = UnitGetOwner(lv_firebatUnit);
lv_shieldAmount = libHFIR_gv_heroFirebatJuggernautPlatingCombinedShield[lv_firebatPlayer];
// Conditions
if (testConds) {
if (!((lv_shieldAmount > 0.0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "FirebatJuggernautPlatingShieldBehavior", "DamageResponse.ModifyLimit", lv_firebatPlayer, lv_shieldAmount);
UnitCreateEffectUnit(lv_firebatUnit, "FirebatJuggernautPlatingShieldApplyBehavior", lv_firebatUnit);
libHFIR_gv_heroFirebatJuggernautPlatingCombinedShield[lv_firebatPlayer] = 0.0;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield_Init () {
libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield = TriggerCreate("libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield_Func");
TriggerEnable(libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield, false);
TriggerAddEventUnitBehaviorChange(libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield, null, "FirebatJuggernautPlatingSpellShield", c_unitBehaviorChangeDeactivate);
}
void libHFIR_InitTriggers () {
libHFIR_gt_HeroFirebatBunkerDropFortifiedBunkerOilSpillCast_Init();
libHFIR_gt_HeroFirebatBunkerDropFlamethrowerReveal_Init();
libHFIR_gt_HeroFirebatBunkerDropTurretUnitSelect_Init();
libHFIR_gt_HeroFirebatBunkerDropEnterTurnAIOn_Init();
libHFIR_gt_HeroFirebatBunkerDropTurretUnitDeselect_Init();
libHFIR_gt_HeroFirebatBunkerDropOverlayOn_Init();
libHFIR_gt_HeroFirebatBunkerDropOverlayOff_Init();
libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXStart_Init();
libHFIR_gt_HeroFirebatBunkerDropOverlayFlamethrowerFXEnd_Init();
libHFIR_gt_HeroFirebatJuggernautPlatingDamageTracker_Init();
libHFIR_gt_HeroFirebatJuggernautPlatingApplyShield_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHFIR_InitLib_completed = false;
void libHFIR_InitLib () {
if (libHFIR_InitLib_completed) {
return;
}
libHFIR_InitLib_completed = true;
libHFIR_InitLibraries();
libHFIR_InitVariables();
libHFIR_InitTriggers();
}