include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/UILib"
include "TriggerLibs/SoundLib"
include "LibHZAR_h"
//--------------------------------------------------------------------------------------------------
// Library: Zarya
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHZAR_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libUIUI_InitVariables();
libSond_InitVariables();
}
// Variable Initialization
bool libHZAR_InitVariables_completed = false;
void libHZAR_InitVariables () {
int init_i;
if (libHZAR_InitVariables_completed) {
return;
}
libHZAR_InitVariables_completed = true;
libHZAR_gv_zaryaUI.lv_mainPanel = c_invalidDialogControlId;
libHZAR_gv_zaryaUI.lv_traitLabel = c_invalidDialogControlId;
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHZAR_gv_heroZaryaGravitonSurgeCameraTarget[init_i] = UnitGroupEmpty();
}
libHZAR_gv_heroZaryaTintStage1EnergyMax = 40.0;
libHZAR_gv_heroZaryaTintStage2EnergyMax = 75.0;
libHZAR_gv_heroZaryaTintStage3EnergyMax = 100.0;
libHZAR_gv_heroZaryaTintStage4EnergyMax = 120.0;
libHZAR_gv_heroZaryaUnscaledDamagetoEnergyConversionRate = 9.36;
libHZAR_gv_heroZaryaTogetherWeAreStrongUnscaledDamagetoEnergyConversionRate = 1.75;
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHZAR_gv_heroZaryaCurrentDamagetoEnergyConversionRate[init_i] = libHZAR_gv_heroZaryaUnscaledDamagetoEnergyConversionRate;
}
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining[init_i] = libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionCap;
}
libHZAR_gv_heroZaryaBaseAttackPeriod = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "ZaryaWeaponCreatePersistent", "PeriodicPeriodArray[" + IntToString(0) + "]", c_playerAny);
}
// Functions
void libHZAR_gf_HeroZaryaHeroSpecificStatusFrameUpdate (int lp_player, fixed lp_damageBoost) {
// Automatic Variable Declarations
// Implementation
TextExpressionSetToken("Param/Expression/lib_HZAR_F71512F5", "A", FixedToText((lp_damageBoost * 100.0), 0));
libNtve_gf_SetDialogItemText(libHZAR_gv_zaryaUI.lv_traitLabel, TextExpressionAssemble("Param/Expression/lib_HZAR_F71512F5"), libCore_gv_playerGroupFromPlayer[lp_player]);
CatalogFieldValueSetFixed(c_gameCatalogEffect, "ZaryaUIDamageBoostIndicationDamage", "Amount", lp_player, (lp_damageBoost * 100.0));
}
void libHZAR_gf_HeroZaryaIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHZAR_gv_heroZaryaTriggerRegistrationVariable += 1;
if ((libHZAR_gv_heroZaryaTriggerRegistrationVariable == 1)) {
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyGain, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyDecay, true);
TriggerEnable(libHZAR_gt_HeroZaryaShieldingFCT, true);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease, true);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeTargetCache, true);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeCameraPan, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease, true);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition, true);
TriggerEnable(libHZAR_gt_HeroZaryaCustomKillVO, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT, true);
TriggerEnable(libHZAR_gt_HeroZaryaPainIsTemporary, true);
TriggerEnable(libHZAR_gt_HeroZaryaRefreshConversionRates, true);
TriggerEnable(libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT, true);
TriggerEnable(libHZAR_gt_HeroZaryaRespawnUIShow, true);
TriggerEnable(libHZAR_gt_HeroZaryaDeathUIHide, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy, true);
TriggerEnable(libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff, true);
TriggerEnable(libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay, true);
TriggerEnable(libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain, true);
libHZAR_gv_heroZaryaExpulsionZoneClearOutAmountPerStack = CatalogFieldValueGetAsFixed(c_gameCatalogBehavior, "ZaryaExpulsionZoneClearOut", "Modification.VitalMaxArray[" + IntToString(c_unitVitalEnergy) + "]", 0);
libHZAR_gv_heroZaryaUnscaledDamagetoEnergyConversionRate = CatalogFieldValueGetAsFixed(c_gameCatalogBehavior, "ZaryaEnergyBoostDecay", "Period", 0);
}
}
void libHZAR_gf_HeroZaryaDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHZAR_gv_heroZaryaTriggerRegistrationVariable -= 1;
if ((libHZAR_gv_heroZaryaTriggerRegistrationVariable < 0)) {
libHZAR_gv_heroZaryaTriggerRegistrationVariable = 0;
}
if ((libHZAR_gv_heroZaryaTriggerRegistrationVariable == 0)) {
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager, false);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyGain, false);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyDecay, false);
TriggerEnable(libHZAR_gt_HeroZaryaShieldingFCT, false);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease, false);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeTargetCache, false);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeCameraPan, false);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain, false);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease, false);
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition, false);
TriggerEnable(libHZAR_gt_HeroZaryaCustomKillVO, true);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT, false);
TriggerEnable(libHZAR_gt_HeroZaryaPainIsTemporary, false);
TriggerEnable(libHZAR_gt_HeroZaryaRefreshConversionRates, false);
TriggerEnable(libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT, false);
TriggerEnable(libHZAR_gt_HeroZaryaRespawnUIShow, false);
TriggerEnable(libHZAR_gt_HeroZaryaDeathUIHide, false);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate, false);
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy, false);
TriggerEnable(libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff, false);
TriggerEnable(libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay, false);
TriggerEnable(libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain, false);
}
}
void libHZAR_gf_HeroZaryaCustomFCT (unit lp_unit, int lp_player, fixed lp_amount, bool lp_isShield, bool lp_deepBurnOverride) {
// Automatic Variable Declarations
// Implementation
if ((lp_isShield == false) && (lp_amount > 1)) {
FloatingCombatElementCreateNumberTextAtUnit(PlayerGroupSingle(lp_player), "Zarya/ZaryaEnergyReceived", "", lp_unit, FixedToInt(lp_amount), StringExternal("Param/Value/lib_HZAR_9DF87DB3"), libNtve_gv_FloatingCombatTextAutoRandomSeed);
}
if ((lp_isShield == true) && (lp_amount > 1)) {
FloatingCombatElementCreateNumberTextAtUnit(PlayerGroupSingle(lp_player), "FloatingCombatElements/FloatingCombatNormalAmountReceived", "ShieldState", lp_unit, FixedToInt(lp_amount), StringExternal("Param/Value/lib_HZAR_4C295DD1"), libNtve_gv_FloatingCombatTextAutoRandomSeed);
}
if ((lp_deepBurnOverride == true) && (lp_amount > 1.0)) {
FloatingCombatElementCreateNumberTextAtUnit(PlayerGroupSingle(lp_player), "Zarya/ZaryaEnergyReceived", "", lp_unit, FixedToInt(lp_amount), StringExternal("Param/Value/lib_HZAR_1E1E8279"), libNtve_gv_FloatingCombatTextAutoRandomSeed);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Pain Is Temporary
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaPainIsTemporary_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_localPlayer;
unit lv_zaryaUnit;
fixed lv_newShieldAmount;
fixed lv_conversionRate;
// Automatic Variable Declarations
// Variable Initialization
// Actions
if (!runActions) {
return true;
}
lv_zaryaUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_localPlayer = EventPlayer();
lv_newShieldAmount = UnitGetPropertyFixed(lv_zaryaUnit, c_unitPropEnergy, c_unitPropCurrent);
lv_newShieldAmount += 0.5;
lv_newShieldAmount = Floor(lv_newShieldAmount);
lv_conversionRate = CatalogFieldValueGetAsFixed(c_gameCatalogBehavior, "ZaryaPainIsTemporary", "DamageResponse.ModifyLimit", lv_localPlayer);
lv_newShieldAmount *= lv_conversionRate;
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "ZaryaPainIsTemporary", "DamageResponse.ModifyLimit", lv_localPlayer, lv_newShieldAmount);
if ((UnitIsValid(lv_zaryaUnit) == true)) {
UnitCreateEffectUnit(lv_zaryaUnit, "ZaryaPainIsTemporaryApplyBehavior", lv_zaryaUnit);
UnitSetPropertyFixed(lv_zaryaUnit, c_unitPropEnergy, 0.0);
}
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "ZaryaPainIsTemporary", "DamageResponse.ModifyLimit", lv_localPlayer, lv_conversionRate);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaPainIsTemporary_Init () {
libHZAR_gt_HeroZaryaPainIsTemporary = TriggerCreate("libHZAR_gt_HeroZaryaPainIsTemporary_Func");
TriggerEnable(libHZAR_gt_HeroZaryaPainIsTemporary, false);
TriggerAddEventPlayerEffectUsed(libHZAR_gt_HeroZaryaPainIsTemporary, c_playerAny, "ZaryaPainIsTemporaryModifyUnit");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Custom Kill VO
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaCustomKillVO_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_killingPlayer;
int lv_deadPlayer;
int lv_speakingPlayer;
string lv_killLine;
// Automatic Variable Declarations
// Variable Initialization
lv_killingPlayer = libGame_gf_CustomKillVOKillingPlayer();
lv_deadPlayer = libGame_gf_CustomKillVODeadPlayer();
lv_speakingPlayer = libGame_gf_CustomKillVOSpeakingPlayer();
lv_killLine = libGame_gf_CustomKillVOKillLine();
// Actions
if (!runActions) {
return true;
}
if ((libHZAR_gv_heroZaryaGravitonSurgeCaster[lv_deadPlayer] != 0)) {
lv_speakingPlayer = libHZAR_gv_heroZaryaGravitonSurgeCaster[lv_deadPlayer];
libSond_gf_HeroVOPlayKillLine("ZaryaBase_UltimateKill", lv_speakingPlayer, lv_killingPlayer);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaCustomKillVO_Init () {
libHZAR_gt_HeroZaryaCustomKillVO = TriggerCreate("libHZAR_gt_HeroZaryaCustomKillVO_Func");
TriggerEnable(libHZAR_gt_HeroZaryaCustomKillVO, false);
libGame_gf_CustomKillVO(libHZAR_gt_HeroZaryaCustomKillVO);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - UI Initialize
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaUIInitialize_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_panel;
int lv_currentPanelLayer;
// Automatic Variable Declarations
// Variable Initialization
lv_panel = c_invalidDialogControlId;
// Actions
if (!runActions) {
return true;
}
DialogControlCreateInPanelFromTemplate(libUIUI_gv_heroSpecificStatusContainer, c_triggerControlTypePanel, "Zarya/ZaryaTraitFrame");
DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);
lv_currentPanelLayer += 1;
lv_panel = DialogControlLastCreated();
libHZAR_gv_zaryaUI.lv_mainPanel = DialogControlLastCreated();
DialogControlHookup(lv_panel, c_triggerControlTypeLabel, "UnitStatusFrame0/ZaryaTraitLabel");
libHZAR_gv_zaryaUI.lv_traitLabel = DialogControlLastCreated();
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaUIInitialize_Init () {
libHZAR_gt_HeroZaryaUIInitialize = TriggerCreate("libHZAR_gt_HeroZaryaUIInitialize_Func");
libCore_gf_IncludeModInitialization(libHZAR_gt_HeroZaryaUIInitialize);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - UI Activate
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaUIActivate_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_localZaryaUnit;
playergroup lv_localZaryaPlayerGroup;
// Automatic Variable Declarations
// Variable Initialization
lv_localZaryaPlayerGroup = PlayerGroupEmpty();
// Actions
if (!runActions) {
return true;
}
Wait(0.0625, c_timeGame);
lv_localZaryaUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_localZaryaPlayerGroup = libCore_gv_playerGroupFromPlayer[UnitGetOwner(lv_localZaryaUnit)];
DialogControlSetVisible(libHZAR_gv_zaryaUI.lv_mainPanel, lv_localZaryaPlayerGroup, true);
DialogControlSetVisible(libUIUI_gv_uIHeroConsole.lv_heroStatsEnergyStatFrame, lv_localZaryaPlayerGroup, true);
libNtve_gf_SetDialogItemUnit(libUIUI_gv_uIHeroConsole.lv_heroStatsEnergyStatFrame, lv_localZaryaUnit, lv_localZaryaPlayerGroup);
DialogControlHookup(libUIUI_gv_uIHeroConsole.lv_heroStatsEnergyStatFrame, c_triggerControlTypeUnitStatusBar, "HealthBar");
libNtve_gf_SetDialogItemTooltip(DialogControlLastCreated(), StringExternal("Param/Value/lib_HZAR_4E3EF24D"), lv_localZaryaPlayerGroup);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaUIActivate_Init () {
libHZAR_gt_HeroZaryaUIActivate = TriggerCreate("libHZAR_gt_HeroZaryaUIActivate_Func");
TriggerAddEventPlayerEffectUsed(libHZAR_gt_HeroZaryaUIActivate, c_playerAny, "ZaryaUIActivatorModifyUnit");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Respawn UI Show
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaRespawnUIShow_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_HeroRespawnPlayer();
// Conditions
if (testConds) {
if (!((libGame_gv_players[lv_player].lv_heroData.lv_heroCatalogLink == "Zarya"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
DialogControlSetVisible(libUIUI_gv_uIHeroConsole.lv_heroStatsEnergyStatFrame, libCore_gv_playerGroupFromPlayer[lv_player], true);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaRespawnUIShow_Init () {
libHZAR_gt_HeroZaryaRespawnUIShow = TriggerCreate("libHZAR_gt_HeroZaryaRespawnUIShow_Func");
libGame_gf_HeroRespawn(libHZAR_gt_HeroZaryaRespawnUIShow);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Death UI Hide
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaDeathUIHide_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_HeroKilledPlayer();
// Conditions
if (testConds) {
if (!((libGame_gv_players[lv_player].lv_heroData.lv_heroCatalogLink == "Zarya"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
DialogControlSetVisible(libUIUI_gv_uIHeroConsole.lv_heroStatsEnergyStatFrame, libCore_gv_playerGroupFromPlayer[lv_player], false);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaDeathUIHide_Init () {
libHZAR_gt_HeroZaryaDeathUIHide = TriggerCreate("libHZAR_gt_HeroZaryaDeathUIHide_Func");
libGame_gf_HeroKilled(libHZAR_gt_HeroZaryaDeathUIHide);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Shielding FCT
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaShieldingFCT_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_ownerofShielded;
unit lv_caster;
unit lv_shieldedUnit;
// Automatic Variable Declarations
// Variable Initialization
// Conditions
if (testConds) {
if (!((UnitGetOwner(EventUnit()) <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((UnitFilterMatch(EventUnit(), UnitGetOwner(EventUnit()), libCore_gv_filtersHeroic) == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_shieldedUnit = EventUnit();
if ((EventUnitBehaviorChange() == c_unitBehaviorChangeActivate)) {
lv_caster = UnitBehaviorEffectUnit(lv_shieldedUnit, EventUnitBehavior(), c_effectUnitCaster, 0);
libHZAR_gv_heroZaryaShieldCasterOwner[UnitGetOwner(lv_shieldedUnit)] = UnitGetOwner(lv_caster);
}
else if ((EventUnitBehaviorChange() == c_unitBehaviorChangeRefresh)) {
lv_caster = UnitBehaviorEffectUnit(lv_shieldedUnit, EventUnitBehavior(), c_effectUnitCaster, 0);
lv_ownerofShielded = UnitGetOwner(lv_shieldedUnit);
libHZAR_gv_heroZaryaShieldCasterOwner[lv_ownerofShielded] = UnitGetOwner(lv_caster);
libHZAR_gv_heroZaryaShieldNumbers[lv_ownerofShielded] = 0.0;
}
else if ((EventUnitBehaviorChange() == c_unitBehaviorChangeDeactivate)) {
lv_ownerofShielded = UnitGetOwner(lv_shieldedUnit);
libHZAR_gv_heroZaryaShieldNumbers[lv_ownerofShielded] = 0.0;
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaShieldingFCT_Init () {
libHZAR_gt_HeroZaryaShieldingFCT = TriggerCreate("libHZAR_gt_HeroZaryaShieldingFCT_Func");
TriggerEnable(libHZAR_gt_HeroZaryaShieldingFCT, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaShieldingFCT, null, "ZaryaPersonalBarrier", c_unitBehaviorChangeActivate);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaShieldingFCT, null, "ZaryaPersonalBarrier", c_unitBehaviorChangeRefresh);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaShieldingFCT, null, "ZaryaPersonalBarrier", c_unitBehaviorChangeDeactivate);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaShieldingFCT, null, "ZaryaShieldAlly", c_unitBehaviorChangeActivate);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaShieldingFCT, null, "ZaryaShieldAlly", c_unitBehaviorChangeRefresh);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaShieldingFCT, null, "ZaryaShieldAlly", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Expulsion Zone - Clear Out FCT
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_zaryaPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_zaryaPlayer = EventPlayer();
// Actions
if (!runActions) {
return true;
}
libHZAR_gv_heroZaryaExpulsionZoneClearOutNumbers[lv_zaryaPlayer] += libHZAR_gv_heroZaryaExpulsionZoneClearOutAmountPerStack;
Wait(0.125, c_timeGame);
libHZAR_gv_heroZaryaExpulsionZoneClearOutNumbers[lv_zaryaPlayer] = 0.0;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT_Init () {
libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT = TriggerCreate("libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT_Func");
TriggerEnable(libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT, null, "ZaryaExpulsionZoneClearOut", c_unitBehaviorChangeCreate);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT, null, "ZaryaExpulsionZoneClearOut", c_unitBehaviorChangeIncrease);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Graviton Surge Camera Target Acquisition
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
if ((UnitGetOwner(EventUnit()) > 0) && (UnitGetOwner(EventUnit()) <= libCore_gv_bALMaxPlayers)) {
libHZAR_gv_heroZaryaGravitonSurgeCameraTarget[EventPlayer()] = libNtve_gf_ConvertUnitToUnitGroup(EventUnitCreatedUnit());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition_Init () {
libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition = TriggerCreate("libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition_Func");
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition, false);
TriggerAddEventUnitCreated(libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition, null, "ZaryaGravitonSurge", null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Graviton Surge Stun Display Manager
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_stunnedUnit;
fixed lv_duration;
fixed lv_durationRemaining;
// Automatic Variable Declarations
// Variable Initialization
lv_stunnedUnit = EventUnit();
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(EventUnit(), "ZaryaGravitonSurgeTargetDuration") == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_duration = UnitBehaviorDurationTotal(UnitBehaviorEffectUnit(lv_stunnedUnit, "ZaryaGravitonSurgePull", c_effectUnitCaster, 0), "ZaryaGravitonSurgeCasterDuration");
lv_durationRemaining = UnitBehaviorDuration(UnitBehaviorEffectUnit(lv_stunnedUnit, "ZaryaGravitonSurgePull", c_effectUnitCaster, 0), "ZaryaGravitonSurgeCasterDuration");
if ((lv_durationRemaining <= 0.0)) {
return true;
}
UnitBehaviorAdd(lv_stunnedUnit, "ZaryaGravitonSurgeTargetDuration", lv_stunnedUnit, 1);
UnitBehaviorSetDuration(lv_stunnedUnit, "ZaryaGravitonSurgeTargetDuration", lv_duration);
UnitBehaviorSetDurationRemaining(lv_stunnedUnit, "ZaryaGravitonSurgeTargetDuration", lv_durationRemaining);
UnitBehaviorSetDuration(lv_stunnedUnit, "ZaryaGravitonSurgePull", lv_duration);
UnitBehaviorSetDurationRemaining(lv_stunnedUnit, "ZaryaGravitonSurgePull", lv_durationRemaining);
UnitBehaviorSetDuration(lv_stunnedUnit, "ZaryaGravitonSurgePullInitial", lv_duration);
UnitBehaviorSetDurationRemaining(lv_stunnedUnit, "ZaryaGravitonSurgePullInitial", lv_durationRemaining);
UnitBehaviorSetDuration(lv_stunnedUnit, "ZaryaGravitonSurgeGravityKillsTalentSilence", lv_duration);
UnitBehaviorSetDurationRemaining(lv_stunnedUnit, "ZaryaGravitonSurgeGravityKillsTalentSilence", lv_durationRemaining);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager_Init () {
libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager = TriggerCreate("libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager_Func");
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager, null, "ZaryaGravitonSurgePull", c_unitBehaviorChangeCreate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Gravity Kills Talent Silence Display
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_stunnedUnit;
fixed lv_duration;
fixed lv_durationRemaining;
// Automatic Variable Declarations
// Variable Initialization
lv_stunnedUnit = EventUnit();
// Actions
if (!runActions) {
return true;
}
lv_duration = UnitBehaviorDurationTotal(UnitBehaviorEffectUnit(lv_stunnedUnit, "ZaryaGravitonSurgePull", c_effectUnitCaster, 0), "ZaryaGravitonSurgeCasterDuration");
lv_durationRemaining = UnitBehaviorDuration(UnitBehaviorEffectUnit(lv_stunnedUnit, "ZaryaGravitonSurgePull", c_effectUnitCaster, 0), "ZaryaGravitonSurgeCasterDuration");
if ((lv_durationRemaining <= 0.0)) {
return true;
}
UnitBehaviorSetDuration(lv_stunnedUnit, "ZaryaGravitonSurgeGravityKillsTalentSilence", lv_duration);
UnitBehaviorSetDurationRemaining(lv_stunnedUnit, "ZaryaGravitonSurgeGravityKillsTalentSilence", lv_durationRemaining);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay_Init () {
libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay = TriggerCreate("libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay_Func");
TriggerEnable(libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay, null, "ZaryaGravitonSurgeGravityKillsTalentSilence", c_unitBehaviorChangeCreate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Graviton Surge Camera Pan
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaGravitonSurgeCameraPan_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_localTriggeringUnit;
int lv_localTriggeringPlayer;
int lv_zaryaPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_localTriggeringUnit = EventUnit();
lv_localTriggeringPlayer = UnitGetOwner(lv_localTriggeringUnit);
lv_zaryaPlayer = UnitGetOwner(UnitBehaviorEffectUnit(lv_localTriggeringUnit, "ZaryaGravitonSurgePull", c_effectUnitCaster, 0));
// Conditions
if (testConds) {
if (!((lv_localTriggeringPlayer >= 1))) {
return false;
}
if (!((lv_localTriggeringPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_zaryaPlayer >= 1))) {
return false;
}
if (!((lv_zaryaPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
if (((lv_localTriggeringUnit == libGame_gv_players[lv_localTriggeringPlayer].lv_heroUnit) || (lv_localTriggeringUnit == libGame_gv_players[lv_localTriggeringPlayer].lv_activeVehicle))) {
libGame_gf_PlayerHeroDisplacementCameraLock(lv_localTriggeringUnit, EventUnitBehavior());
libUIUI_gf_FullscreenOverlayAddItemForPlayer(lv_localTriggeringPlayer, libUIUI_ge_FullscreenOverlayPriorities_Stasis, "Cutscenes\\GameUI_StasisOverlay.StormCutscene", "ZaryaGravitonSurgePull");
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaGravitonSurgeCameraPan_Init () {
libHZAR_gt_HeroZaryaGravitonSurgeCameraPan = TriggerCreate("libHZAR_gt_HeroZaryaGravitonSurgeCameraPan_Func");
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeCameraPan, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaGravitonSurgeCameraPan, null, "ZaryaGravitonSurgePull", c_unitBehaviorChangeCreate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Graviton Surge Target Cache
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaGravitonSurgeTargetCache_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_localOwnerofTriggeringUnit;
int lv_gravitonSurgeTargetCount;
// Automatic Variable Declarations
// Variable Initialization
lv_localOwnerofTriggeringUnit = UnitGetOwner(EventUnit());
// Conditions
if (testConds) {
if (!((lv_localOwnerofTriggeringUnit >= 1))) {
return false;
}
if (!((lv_localOwnerofTriggeringUnit <= libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHZAR_gv_heroZaryaGravitonSurgeCaster[lv_localOwnerofTriggeringUnit] = UnitBehaviorEffectPlayer(EventUnit(), "ZaryaGravitonSurgePull", c_effectPlayerCaster, 0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaGravitonSurgeTargetCache_Init () {
libHZAR_gt_HeroZaryaGravitonSurgeTargetCache = TriggerCreate("libHZAR_gt_HeroZaryaGravitonSurgeTargetCache_Func");
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeTargetCache, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaGravitonSurgeTargetCache, null, "ZaryaGravitonSurgePull", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Graviton Surge Target Release
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_localOwnerofTargetUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_localOwnerofTargetUnit = UnitGetOwner(EventUnit());
// Conditions
if (testConds) {
if (!(((lv_localOwnerofTargetUnit >= 1) && (lv_localOwnerofTargetUnit <= libCore_gv_bALMaxPlayers)))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libUIUI_gf_FullscreenOverlayRemoveItemFromQueueForPlayer(lv_localOwnerofTargetUnit, "Cutscenes\\GameUI_StasisOverlay.StormCutscene", "ZaryaGravitonSurgePull");
Wait(1.0, c_timeGame);
libHZAR_gv_heroZaryaGravitonSurgeCaster[lv_localOwnerofTargetUnit] = 0;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease_Init () {
libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease = TriggerCreate("libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease_Func");
TriggerEnable(libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease, null, "ZaryaGravitonSurgePull", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Energy - Together We Are Strong Trigger Create
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_localShieldedUnit;
int lv_localShieldedPlayer;
int lv_zaryaPlayer;
trigger lv_localTrigger;
// Automatic Variable Declarations
// Variable Initialization
lv_localShieldedUnit = EventUnit();
lv_localShieldedPlayer = UnitGetOwner(lv_localShieldedUnit);
lv_zaryaPlayer = UnitGetOwner(UnitBehaviorEffectUnit(lv_localShieldedUnit, EventUnitBehavior(), c_effectUnitCaster, 0));
// Conditions
if (testConds) {
if (!((lv_zaryaPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_zaryaPlayer != 0))) {
return false;
}
if (!((lv_localShieldedPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_localShieldedPlayer != 0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
if ((libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyTrigger[lv_localShieldedPlayer] == null)) {
lv_localTrigger = TriggerCreate("libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain_Func");
TriggerAddEventUnitDealsDamage(lv_localTrigger, UnitRefFromVariable("lv_localShieldedUnit"), c_unitDamageTypeAny, c_unitDamageEither, null);
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyTrigger[lv_localShieldedPlayer] = lv_localTrigger;
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyUnitCount[lv_localShieldedPlayer] += 1;
}
else {
TriggerAddEventUnitDealsDamage(libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyTrigger[lv_localShieldedPlayer], UnitRefFromVariable("lv_localShieldedUnit"), c_unitDamageTypeAny, c_unitDamageEither, null);
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyUnitCount[lv_localShieldedPlayer] += 1;
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate_Init () {
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate = TriggerCreate("libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate_Func");
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate, null, "ZaryaShieldAllyTogetherWeAreStrongTalentBuff", c_unitBehaviorChangeCreate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Energy - Together We Are Strong Trigger Destroy
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_localShieldedUnit;
int lv_localShieldedPlayer;
trigger lv_localTrigger;
// Automatic Variable Declarations
// Variable Initialization
lv_localShieldedUnit = EventUnit();
lv_localShieldedPlayer = UnitGetOwner(lv_localShieldedUnit);
// Conditions
if (testConds) {
if (!((lv_localShieldedPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_localShieldedPlayer != 0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyUnitCount[lv_localShieldedPlayer] -= 1;
if ((libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyUnitCount[lv_localShieldedPlayer] <= 0)) {
TriggerDestroy(libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyTrigger[lv_localShieldedPlayer]);
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyTrigger[lv_localShieldedPlayer] = null;
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy_Init () {
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy = TriggerCreate("libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy_Func");
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy, null, "ZaryaShieldAllyTogetherWeAreStrongTalentBuff", c_unitBehaviorChangeDestroy);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Energy - Together We Are Strong Gain
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_allyUnit;
int lv_allyOwner;
fixed lv_damageAmount;
fixed lv_shieldAmount;
fixed lv_incomingBoost;
unit lv_zaryaUnit;
int lv_zaryaOwner;
fixed lv_currentBoost;
// Automatic Variable Declarations
// Variable Initialization
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(EventUnitDamageSourceUnit(), "ZaryaShieldAllyTogetherWeAreStrongTalentBuff") == true))) {
return false;
}
if (!((UnitGetOwner(EventUnitDamageSourceUnit()) != UnitGetOwner(EventUnit())))) {
return false;
}
if (!((PlayerHasTalent(UnitGetOwner(UnitBehaviorEffectUnit(EventUnitDamageSourceUnit(), "ZaryaShieldAllyTogetherWeAreStrongTalentBuff", c_effectUnitCaster, 0)), "ZaryaShieldAllyTogetherWeAreStrong") == true))) {
return false;
}
if (!((EventUnitDamageEffect() != "BribeKillEffect"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_allyUnit = EventUnitDamageSourceUnit();
lv_allyOwner = UnitGetOwner(lv_allyUnit);
if (((lv_allyOwner <= libCore_gv_bALMaxPlayers) && (lv_allyOwner >= 1) && (libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining[lv_allyOwner] <= 0.0))) {
}
else {
lv_zaryaUnit = UnitBehaviorEffectUnit(lv_allyUnit, "ZaryaShieldAllyTogetherWeAreStrongTalentBuff", c_effectUnitCaster, 0);
lv_zaryaOwner = UnitGetOwner(lv_zaryaUnit);
lv_damageAmount = (EventUnitDamageAmount() + EventUnitDamageBehaviorShield());
lv_currentBoost = UnitGetPropertyFixed(lv_zaryaUnit, c_unitPropEnergy, c_unitPropCurrent);
lv_incomingBoost = (lv_damageAmount / (CatalogFieldValueGetAsFixed(c_gameCatalogBehavior, "ZaryaEnergyBoostDecay", "Period", lv_zaryaOwner) / libHZAR_gv_heroZaryaTogetherWeAreStrongUnscaledDamagetoEnergyConversionRate));
if ((lv_incomingBoost >= libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining[lv_allyOwner])) {
lv_incomingBoost = libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining[lv_allyOwner];
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining[lv_allyOwner] = 0.0;
}
else {
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining[lv_allyOwner] -= lv_incomingBoost;
}
if ((lv_incomingBoost > 1)) {
FloatingCombatElementCreateNumberTextAtUnit(PlayerGroupSingle(lv_zaryaOwner), "Zarya/ZaryaEnergyReceived", "", lv_zaryaUnit, FixedToInt(lv_incomingBoost), StringExternal("Param/Value/lib_HZAR_DDA5378D"), libNtve_gv_FloatingCombatTextAutoRandomSeed);
}
lv_incomingBoost += lv_currentBoost;
if ((UnitIsValid(lv_zaryaUnit) == true)) {
UnitSetPropertyFixed(lv_zaryaUnit, c_unitPropEnergy, lv_incomingBoost);
UnitBehaviorAdd(lv_zaryaUnit, "ZaryaEnergyDecayCountdown", lv_zaryaUnit, 1);
}
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain_Init () {
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain = TriggerCreate("libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain_Func");
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain, false);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Energy - Together We Are Strong Release
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_ownerofTarget;
// Automatic Variable Declarations
// Variable Initialization
lv_ownerofTarget = UnitGetOwner(EventUnit());
// Conditions
if (testConds) {
if (!((lv_ownerofTarget > 0))) {
return false;
}
if (!((lv_ownerofTarget <= libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining[lv_ownerofTarget] = libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionCap;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease_Init () {
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease = TriggerCreate("libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease_Func");
TriggerEnable(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease, null, "ZaryaShieldAllyTogetherWeAreStrongTalentBuff", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Energy - Maximum Charge FCT
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT_Func (bool testConds, bool runActions) {
// Variable Declarations
fixed lv_localTriggeringHealAmount;
// Automatic Variable Declarations
// Variable Initialization
// Actions
if (!runActions) {
return true;
}
lv_localTriggeringHealAmount = EventUnitHealAmount();
if ((lv_localTriggeringHealAmount >= 1)) {
FloatingCombatElementCreateNumberTextAtUnit(PlayerGroupSingle(UnitGetOwner(EventUnit())), "Zarya/ZaryaEnergyReceived", "", EventUnit(), FixedToInt(EventUnitHealAmount()), StringExternal("Param/Value/lib_HZAR_D91F88FC"), libNtve_gv_FloatingCombatTextAutoRandomSeed);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT_Init () {
libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT = TriggerCreate("libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT_Func");
TriggerEnable(libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT, false);
TriggerAddEventUnitHealed(libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT, null, c_unitVitalEnergy, "ZaryaEnergyMaximumChargeCreateHealer");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Energy Decay
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaEnergyDecay_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_zarya;
int lv_zaryaPlayer;
actor lv_zaryaActor;
fixed lv_newBoostAmount;
fixed lv_previousBoostAmount;
// Automatic Variable Declarations
// Variable Initialization
lv_zarya = EventUnit();
lv_zaryaPlayer = UnitGetOwner(EventUnit());
lv_zaryaActor = libNtve_gf_MainActorofUnit(lv_zarya);
// Conditions
if (testConds) {
if (!((UnitGetType(lv_zarya) == "HeroZarya"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
while ((UnitIsAlive(lv_zarya) == true)) {
lv_newBoostAmount = UnitGetPropertyFixed(EventUnit(), c_unitPropEnergy, c_unitPropCurrent);
lv_newBoostAmount = Ceiling(lv_newBoostAmount);
if (((lv_newBoostAmount < libHZAR_gv_heroZaryaTintStage1EnergyMax) && (libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] != 1))) {
ActorSend(lv_zaryaActor, "Signal EnergyStageA");
ActorSend(lv_zaryaActor, "Signal GE75Off");
libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] = 1;
}
if (((lv_newBoostAmount >= libHZAR_gv_heroZaryaTintStage1EnergyMax) && (lv_newBoostAmount < libHZAR_gv_heroZaryaTintStage2EnergyMax) && (libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] != 2))) {
ActorSend(lv_zaryaActor, "Signal EnergyStageB");
ActorSend(lv_zaryaActor, "Signal GE75Off");
if ((PlayerHasTalent(lv_zaryaPlayer, "ZaryaWeaponToTheLimit") == true)) {
ActorSend(lv_zaryaActor, "Signal ToTheLimitOn");
}
libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] = 2;
}
if (((lv_newBoostAmount >= libHZAR_gv_heroZaryaTintStage2EnergyMax) && (lv_newBoostAmount < libHZAR_gv_heroZaryaTintStage3EnergyMax) && (libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] != 3))) {
ActorSend(lv_zaryaActor, "Signal EnergyStageC");
ActorSend(lv_zaryaActor, "Signal GE75On");
if ((PlayerHasTalent(lv_zaryaPlayer, "ZaryaWeaponToTheLimit") == true)) {
ActorSend(lv_zaryaActor, "Signal ToTheLimitOn");
}
libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] = 3;
}
if (((lv_newBoostAmount >= libHZAR_gv_heroZaryaTintStage3EnergyMax) && (lv_newBoostAmount <= libHZAR_gv_heroZaryaTintStage4EnergyMax) && (libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] != 4))) {
ActorSend(lv_zaryaActor, "Signal EnergyStageD");
ActorSend(lv_zaryaActor, "Signal GE75On");
UnitCreateEffectUnit(lv_zarya, "ZaryaEnergyStageDOnModifyUnit", lv_zarya);
if ((PlayerHasTalent(lv_zaryaPlayer, "ZaryaWeaponToTheLimit") == true)) {
ActorSend(lv_zaryaActor, "Signal ToTheLimitOn");
}
libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] = 4;
}
lv_newBoostAmount /= 100.0;
lv_newBoostAmount *= libHZAR_gv_heroZaryaEnergyEnergytoDamageConversionRate;
libHZAR_gf_HeroZaryaHeroSpecificStatusFrameUpdate(lv_zaryaPlayer, lv_newBoostAmount);
if ((lv_previousBoostAmount != lv_newBoostAmount)) {
lv_previousBoostAmount = lv_newBoostAmount;
}
Wait(0.125, c_timeGame);
}
libHZAR_gf_HeroZaryaHeroSpecificStatusFrameUpdate(lv_zaryaPlayer, 0.0);
lv_previousBoostAmount = 0.0;
ActorSend(lv_zaryaActor, "Signal EnergyStageA");
ActorSend(lv_zaryaActor, "Signal GE75Off");
libHZAR_gv_heroZaryaCurrentTintStage[lv_zaryaPlayer] = 0;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaEnergyDecay_Init () {
libHZAR_gt_HeroZaryaEnergyDecay = TriggerCreate("libHZAR_gt_HeroZaryaEnergyDecay_Func");
TriggerEnable(libHZAR_gt_HeroZaryaEnergyDecay, false);
TriggerAddEventUnitBehaviorChange(libHZAR_gt_HeroZaryaEnergyDecay, null, "ZaryaEnergyBoostDecay", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Energy Gain
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaEnergyGain_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_zaryaUnit;
int lv_zaryaPlayer;
fixed lv_damageAbsorbed;
fixed lv_currentBoost;
fixed lv_damageToEnergyConversionRate;
fixed lv_incomingBoost;
// Automatic Variable Declarations
// Variable Initialization
lv_zaryaUnit = EventUnitBehaviorCasterUnit();
lv_zaryaPlayer = UnitGetOwner(lv_zaryaUnit);
lv_damageAbsorbed = EventUnitDamageAbsorbed();
lv_incomingBoost = lv_damageAbsorbed;
// Conditions
if (testConds) {
if (!((lv_zaryaPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_zaryaPlayer != 0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
if (((UnitGetType(lv_zaryaUnit) != "HeroZarya") && (UnitGetType(libGame_gv_players[lv_zaryaPlayer].lv_activeVehicle) == "HeroZarya"))) {
lv_zaryaUnit = libGame_gv_players[lv_zaryaPlayer].lv_activeVehicle;
}
libHZAR_gv_heroZaryaShieldNumbers[lv_zaryaPlayer] += lv_damageAbsorbed;
lv_incomingBoost /= libHZAR_gv_heroZaryaCurrentDamagetoEnergyConversionRate[lv_zaryaPlayer];
if ((PlayerHasTalent(lv_zaryaPlayer, "ZaryaPersonalBarrierIAmTheStrongest") == true)) {
lv_incomingBoost *= libHZAR_gv_heroZaryaEnergyHitMeModifier;
}
libHZAR_gf_HeroZaryaCustomFCT(lv_zaryaUnit, lv_zaryaPlayer, lv_incomingBoost, false, false);
lv_currentBoost = UnitGetPropertyFixed(lv_zaryaUnit, c_unitPropEnergy, c_unitPropCurrent);
lv_incomingBoost += lv_currentBoost;
if ((UnitIsValid(lv_zaryaUnit) == true)) {
UnitSetPropertyFixed(lv_zaryaUnit, c_unitPropEnergy, lv_incomingBoost);
UnitBehaviorAdd(lv_zaryaUnit, "ZaryaEnergyDecayCountdown", lv_zaryaUnit, 1);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaEnergyGain_Init () {
libHZAR_gt_HeroZaryaEnergyGain = TriggerCreate("libHZAR_gt_HeroZaryaEnergyGain_Func");
TriggerEnable(libHZAR_gt_HeroZaryaEnergyGain, false);
TriggerAddEventUnitDamageAbsorbed(libHZAR_gt_HeroZaryaEnergyGain, null, "ZaryaPersonalBarrier");
TriggerAddEventUnitDamageAbsorbed(libHZAR_gt_HeroZaryaEnergyGain, null, "ZaryaShieldAlly");
TriggerAddEventUnitDamageAbsorbed(libHZAR_gt_HeroZaryaEnergyGain, null, "ZaryaPersonalBarrierIAmTheStrongest");
TriggerAddEventUnitDamageAbsorbed(libHZAR_gt_HeroZaryaEnergyGain, null, "ZaryaPainIsTemporary");
TriggerAddEventUnitDamageAbsorbed(libHZAR_gt_HeroZaryaEnergyGain, null, "ZaryaShieldAllyGainTrain");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Deep Burn Talent Energy Gain
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_zaryaUnit;
int lv_zaryaPlayer;
fixed lv_energyGain;
// Automatic Variable Declarations
// Variable Initialization
lv_zaryaUnit = EventUnitHealLaunchUnit();
lv_zaryaPlayer = EventUnitHealLaunchPlayer();
lv_energyGain = EventUnitHealAmount();
// Conditions
if (testConds) {
if (!((lv_zaryaPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_zaryaPlayer != 0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHZAR_gf_HeroZaryaCustomFCT(lv_zaryaUnit, lv_zaryaPlayer, lv_energyGain, false, true);
if ((UnitIsValid(lv_zaryaUnit) == true)) {
UnitBehaviorAdd(lv_zaryaUnit, "ZaryaEnergyDecayCountdown", lv_zaryaUnit, 1);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain_Init () {
libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain = TriggerCreate("libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain_Func");
TriggerEnable(libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain, false);
TriggerAddEventUnitHealed(libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain, null, c_unitVitalEnergy, "ZaryaDeepBurnEnergyRestoration");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Refresh Conversion Rates
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaRefreshConversionRates_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_localTriggeringPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_localTriggeringPlayer = UnitGetOwner(EventUnit());
// Conditions
if (testConds) {
if (!((lv_localTriggeringPlayer > 0))) {
return false;
}
if (!((lv_localTriggeringPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
if ((libHZAR_gv_heroZaryaCurrentDamagetoEnergyConversionRate[lv_localTriggeringPlayer] != (libHZAR_gv_heroZaryaUnscaledDamagetoEnergyConversionRate * Pow(1.04, UnitXPGetCurrentLevel(EventUnit(), null))))) {
libHZAR_gv_heroZaryaCurrentDamagetoEnergyConversionRate[lv_localTriggeringPlayer] = (libHZAR_gv_heroZaryaUnscaledDamagetoEnergyConversionRate * Pow(1.04, UnitXPGetCurrentLevel(EventUnit(), null)));
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaRefreshConversionRates_Init () {
libHZAR_gt_HeroZaryaRefreshConversionRates = TriggerCreate("libHZAR_gt_HeroZaryaRefreshConversionRates_Func");
TriggerEnable(libHZAR_gt_HeroZaryaRefreshConversionRates, false);
TriggerAddEventUnitGainLevel(libHZAR_gt_HeroZaryaRefreshConversionRates, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Zarya - Hero Gains Attack Speed Buff
//--------------------------------------------------------------------------------------------------
bool libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_zaryaUnit;
fixed lv_attackSpeedModifier;
fixed lv_newAttackPeriod;
// Automatic Variable Declarations
// Variable Initialization
lv_zaryaUnit = EventUnit();
// Conditions
if (testConds) {
if (!((UnitGetType(EventUnit()) == "HeroZarya"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_attackSpeedModifier = libCore_gf_GetWeaponAttackSpeedForUnit(lv_zaryaUnit);
lv_newAttackPeriod = (libHZAR_gv_heroZaryaBaseAttackPeriod * lv_attackSpeedModifier);
if ((lv_newAttackPeriod != 0.0)) {
CatalogFieldValueSetFixed(c_gameCatalogEffect, "ZaryaWeaponCreatePersistent", "PeriodicPeriodArray[" + IntToString(0) + "]", EventPlayer(), lv_newAttackPeriod);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff_Init () {
libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff = TriggerCreate("libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff_Func");
TriggerEnable(libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff, false);
TriggerAddEventUnitBehaviorChangeFromCategory(libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff, null, c_behaviorCategoryBuffAutoattackDPS, c_unitBehaviorChangeAny);
TriggerAddEventUnitBehaviorChangeFromCategory(libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff, null, c_behaviorCategoryDebuffAutoattackDPS, c_unitBehaviorChangeAny);
}
void libHZAR_InitTriggers () {
libHZAR_gt_HeroZaryaPainIsTemporary_Init();
libHZAR_gt_HeroZaryaCustomKillVO_Init();
libHZAR_gt_HeroZaryaUIInitialize_Init();
libHZAR_gt_HeroZaryaUIActivate_Init();
libHZAR_gt_HeroZaryaRespawnUIShow_Init();
libHZAR_gt_HeroZaryaDeathUIHide_Init();
libHZAR_gt_HeroZaryaShieldingFCT_Init();
libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT_Init();
libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition_Init();
libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager_Init();
libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay_Init();
libHZAR_gt_HeroZaryaGravitonSurgeCameraPan_Init();
libHZAR_gt_HeroZaryaGravitonSurgeTargetCache_Init();
libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease_Init();
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate_Init();
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy_Init();
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain_Init();
libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease_Init();
libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT_Init();
libHZAR_gt_HeroZaryaEnergyDecay_Init();
libHZAR_gt_HeroZaryaEnergyGain_Init();
libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain_Init();
libHZAR_gt_HeroZaryaRefreshConversionRates_Init();
libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHZAR_InitLib_completed = false;
void libHZAR_InitLib () {
if (libHZAR_InitLib_completed) {
return;
}
libHZAR_InitLib_completed = true;
libHZAR_InitLibraries();
libHZAR_InitVariables();
libHZAR_InitTriggers();
}