include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/UILib"
include "LibHCHR_h"
//--------------------------------------------------------------------------------------------------
// Library: Chromie
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHCHR_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libUIUI_InitVariables();
}
// Variable Initialization
bool libHCHR_InitVariables_completed = false;
void libHCHR_InitVariables () {
int init_i;
if (libHCHR_InitVariables_completed) {
return;
}
libHCHR_InitVariables_completed = true;
libHCHR_gv_heroChromieBlessingoftheBronzeCDR = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "ChromieBlessingOfTheBronzeDummyCDRVariable", "XP", c_playerAny);
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHCHR_gv_timeTrapUnitGroup[init_i] = UnitGroupEmpty();
}
}
// Functions
void libHCHR_gf_HeroChromieIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHCHR_gv_heroChromieTriggerRegistrationVariable += 1;
if ((libHCHR_gv_heroChromieTriggerRegistrationVariable == 1)) {
TriggerEnable(libHCHR_gt_HeroChromieTimeOutOverlayOff, true);
TriggerEnable(libHCHR_gt_HeroChromieTimeOutOverlayOn, true);
TriggerEnable(libHCHR_gt_HeroChromieBlessingoftheBronzeCDR, true);
TriggerEnable(libHCHR_gt_HeroChromieTemporalLoopCameraSnap, true);
TriggerEnable(libHCHR_gt_HeroChromieTemporalLoopTeleportDetection, true);
TriggerEnable(libHCHR_gt_HeroChromieTimeTrapOverlayOff, true);
TriggerEnable(libHCHR_gt_HeroChromieTimeTrapOverlayOn, true);
}
}
void libHCHR_gf_HeroChromieDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHCHR_gv_heroChromieTriggerRegistrationVariable -= 1;
if ((libHCHR_gv_heroChromieTriggerRegistrationVariable < 0)) {
libHCHR_gv_heroChromieTriggerRegistrationVariable = 0;
}
if ((libHCHR_gv_heroChromieTriggerRegistrationVariable == 0)) {
TriggerEnable(libHCHR_gt_HeroChromieTimeOutOverlayOff, false);
TriggerEnable(libHCHR_gt_HeroChromieTimeOutOverlayOn, false);
TriggerEnable(libHCHR_gt_HeroChromieBlessingoftheBronzeCDR, false);
TriggerEnable(libHCHR_gt_HeroChromieTemporalLoopCameraSnap, false);
TriggerEnable(libHCHR_gt_HeroChromieTemporalLoopTeleportDetection, false);
TriggerEnable(libHCHR_gt_HeroChromieTimeTrapOverlayOff, false);
TriggerEnable(libHCHR_gt_HeroChromieTimeTrapOverlayOn, false);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Time Out Overlay On
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieTimeOutOverlayOn_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_player = UnitGetOwner(EventUnit());
// Actions
if (!runActions) {
return true;
}
if ((UnitIsAlive(lv_unit) == true) && (UnitTestState(lv_unit, c_unitStateHallucination) == false) && (UnitHasBehavior2(lv_unit, "HeroGenericIgnoreFullscreenOverlay") == false)) {
libUIUI_gf_FullscreenOverlayAddItemForPlayer(lv_player, libUIUI_ge_FullscreenOverlayPriorities_Stasis, "Cutscenes\\GameUI_StasisOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieTimeOutOverlayOn_Init () {
libHCHR_gt_HeroChromieTimeOutOverlayOn = TriggerCreate("libHCHR_gt_HeroChromieTimeOutOverlayOn_Func");
TriggerEnable(libHCHR_gt_HeroChromieTimeOutOverlayOn, false);
TriggerAddEventUnitBehaviorChange(libHCHR_gt_HeroChromieTimeOutOverlayOn, null, "ChromieTimeOutBehavior", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Time Out Overlay Off
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieTimeOutOverlayOff_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_player = UnitGetOwner(EventUnit());
// Actions
if (!runActions) {
return true;
}
if ((UnitHasBehavior2(lv_unit, "HeroGenericIgnoreFullscreenOverlay") == false)) {
libUIUI_gf_FullscreenOverlayRemoveItemFromQueueForPlayer(lv_player, "Cutscenes\\GameUI_StasisOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieTimeOutOverlayOff_Init () {
libHCHR_gt_HeroChromieTimeOutOverlayOff = TriggerCreate("libHCHR_gt_HeroChromieTimeOutOverlayOff_Func");
TriggerEnable(libHCHR_gt_HeroChromieTimeOutOverlayOff, false);
TriggerAddEventUnitBehaviorChange(libHCHR_gt_HeroChromieTimeOutOverlayOff, null, "ChromieTimeOutBehavior", c_unitBehaviorChangeDestroy);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Blessing of the Bronze - CDR
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieBlessingoftheBronzeCDR_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_hero;
// Automatic Variable Declarations
// Variable Initialization
lv_hero = EventPlayerEffectUsedUnit(c_effectUnitTarget);
// Actions
if (!runActions) {
return true;
}
libGame_gf_StormUniversalModifyCooldownonUnitCDRforAbilities(lv_hero, libHCHR_gv_heroChromieBlessingoftheBronzeCDR, false, false, false);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieBlessingoftheBronzeCDR_Init () {
libHCHR_gt_HeroChromieBlessingoftheBronzeCDR = TriggerCreate("libHCHR_gt_HeroChromieBlessingoftheBronzeCDR_Func");
TriggerEnable(libHCHR_gt_HeroChromieBlessingoftheBronzeCDR, false);
TriggerAddEventPlayerEffectUsed(libHCHR_gt_HeroChromieBlessingoftheBronzeCDR, c_playerAny, "ChromieBlessingOfTheBronzeDummyCDRTriggerEffect");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Sand Echo - Basic Attack Animation Begins
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieSandEchoBasicAttackAnimationBegins_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_targetUnit;
unit lv_targetUnit2;
int lv_triggeringPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_targetUnit = UnitGetLastAttackTargetUnit(EventUnit());
lv_targetUnit2 = EventUnit();
lv_triggeringPlayer = EventPlayer();
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_targetUnit2, "ChromieSandEchoBasicAttackEnumerateAnimation", lv_targetUnit);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieSandEchoBasicAttackAnimationBegins_Init () {
libHCHR_gt_HeroChromieSandEchoBasicAttackAnimationBegins = TriggerCreate("libHCHR_gt_HeroChromieSandEchoBasicAttackAnimationBegins_Func");
TriggerAddEventUnitStartedAttack2(libHCHR_gt_HeroChromieSandEchoBasicAttackAnimationBegins, null, "ChromieHeroWeapon");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Temporal Loop Camera Snap
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieTemporalLoopCameraSnap_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventPlayerEffectUsedUnit(c_effectUnitTarget);
lv_player = UnitGetOwner(lv_unit);
// Conditions
if (testConds) {
if (!(((libGame_gv_players[lv_player].lv_activeVehicle == lv_unit) || (libGame_gv_players[lv_player].lv_heroUnit == lv_unit)))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
CameraPan(lv_player, UnitGetPosition(lv_unit), 0.0, -1, 0.0, false);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieTemporalLoopCameraSnap_Init () {
libHCHR_gt_HeroChromieTemporalLoopCameraSnap = TriggerCreate("libHCHR_gt_HeroChromieTemporalLoopCameraSnap_Func");
TriggerEnable(libHCHR_gt_HeroChromieTemporalLoopCameraSnap, false);
TriggerAddEventPlayerEffectUsed(libHCHR_gt_HeroChromieTemporalLoopCameraSnap, c_playerAny, "ChromieTemporalLoopTeleportTargetCameraSnapDummy");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Temporal Loop Teleport Detection
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieTemporalLoopTeleportDetection_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(EventPlayerEffectUsedUnitLaunch(), "ChromieTemporalLoopTargetBehavior") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
ActorSend(ActorFromScope(ActorScopeFromUnit(EventPlayerEffectUsedUnitLaunch()), "ChromieTemporalLoopTargetTrailFX"), "AnimGroupApply Teleport {} {} Instant");
ActorCreate(ActorScopeFromUnit(EventPlayerEffectUsedUnitLaunch()), "ChromieTemporalLoopTargetTrailFX", null, null, null);
ActorSend(libNtve_gf_ActorLastCreated(), "AnimBracketStart BSD {} Stand Death");
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieTemporalLoopTeleportDetection_Init () {
libHCHR_gt_HeroChromieTemporalLoopTeleportDetection = TriggerCreate("libHCHR_gt_HeroChromieTemporalLoopTeleportDetection_Func");
TriggerEnable(libHCHR_gt_HeroChromieTemporalLoopTeleportDetection, false);
TriggerAddEventPlayerEffectUsedFromScope(libHCHR_gt_HeroChromieTemporalLoopTeleportDetection, c_playerAny, "CEffectTeleport");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Time Trap Overlay On
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieTimeTrapOverlayOn_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
// Actions
if (!runActions) {
return true;
}
if ((UnitIsAlive(lv_unit) == true) && (UnitTestState(lv_unit, c_unitStateHallucination) == false) && (UnitHasBehavior2(lv_unit, "HeroGenericIgnoreFullscreenOverlay") == false)) {
libUIUI_gf_FullscreenOverlayAddItemForPlayer(UnitGetOwner(lv_unit), libUIUI_ge_FullscreenOverlayPriorities_Stasis, "Cutscenes\\GameUI_StasisOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieTimeTrapOverlayOn_Init () {
libHCHR_gt_HeroChromieTimeTrapOverlayOn = TriggerCreate("libHCHR_gt_HeroChromieTimeTrapOverlayOn_Func");
TriggerEnable(libHCHR_gt_HeroChromieTimeTrapOverlayOn, false);
TriggerAddEventUnitBehaviorChange(libHCHR_gt_HeroChromieTimeTrapOverlayOn, null, "ChromieTimeTrapTargetBehavior", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Chromie - Time Trap Overlay Off
//--------------------------------------------------------------------------------------------------
bool libHCHR_gt_HeroChromieTimeTrapOverlayOff_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
// Actions
if (!runActions) {
return true;
}
if ((UnitHasBehavior2(lv_unit, "HeroGenericIgnoreFullscreenOverlay") == false)) {
libUIUI_gf_FullscreenOverlayRemoveItemFromQueueForPlayer(UnitGetOwner(lv_unit), "Cutscenes\\GameUI_StasisOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHCHR_gt_HeroChromieTimeTrapOverlayOff_Init () {
libHCHR_gt_HeroChromieTimeTrapOverlayOff = TriggerCreate("libHCHR_gt_HeroChromieTimeTrapOverlayOff_Func");
TriggerEnable(libHCHR_gt_HeroChromieTimeTrapOverlayOff, false);
TriggerAddEventUnitBehaviorChange(libHCHR_gt_HeroChromieTimeTrapOverlayOff, null, "ChromieTimeTrapTargetBehavior", c_unitBehaviorChangeDestroy);
}
void libHCHR_InitTriggers () {
libHCHR_gt_HeroChromieTimeOutOverlayOn_Init();
libHCHR_gt_HeroChromieTimeOutOverlayOff_Init();
libHCHR_gt_HeroChromieBlessingoftheBronzeCDR_Init();
libHCHR_gt_HeroChromieSandEchoBasicAttackAnimationBegins_Init();
libHCHR_gt_HeroChromieTemporalLoopCameraSnap_Init();
libHCHR_gt_HeroChromieTemporalLoopTeleportDetection_Init();
libHCHR_gt_HeroChromieTimeTrapOverlayOn_Init();
libHCHR_gt_HeroChromieTimeTrapOverlayOff_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHCHR_InitLib_completed = false;
void libHCHR_InitLib () {
if (libHCHR_InitLib_completed) {
return;
}
libHCHR_InitLib_completed = true;
libHCHR_InitLibraries();
libHCHR_InitVariables();
libHCHR_InitTriggers();
}