include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/AILib"
include "TriggerLibs/UILib"
include "LibHDEH_h"
//--------------------------------------------------------------------------------------------------
// Library: Dehaka
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHDEH_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libAIAI_InitVariables();
libUIUI_InitVariables();
}
// Variable Initialization
bool libHDEH_InitVariables_completed = false;
void libHDEH_InitVariables () {
int init_i;
if (libHDEH_InitVariables_completed) {
return;
}
libHDEH_InitVariables_completed = true;
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHDEH_gv_brushStalkerPingTextLockoutTimer[init_i] = TimerCreate();
}
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHDEH_gv_brushStalkerPings[init_i] = c_invalidPingId;
}
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[init_i] = 50;
}
for (init_i = 0; init_i <= libCore_gv_bALMaxPlayers; init_i += 1) {
libHDEH_gv_heroDehakaIsolationBackupVisionGroups[init_i] = UnitGroupEmpty();
}
libHDEH_gv_heroDehakaTalentEnhancedAgilityMaxTokenStackCount = CatalogFieldValueGetAsInt(c_gameCatalogBehavior, "DehakaEssenceCollectionEnhancedAgilityQuestToken", "Max", 0);
libHDEH_gv_heroDehakaTalentTissueRegenerationMaxTokenStackCount = CatalogFieldValueGetAsInt(c_gameCatalogBehavior, "DehakaEssenceCollectionTissueRegenerationQuestToken", "Max", 0);
libHDEH_gv_heroDehakaTalentEssenceDevourerMaxTokenCount = CatalogFieldValueGetAsInt(c_gameCatalogBehavior, "DehakaEssenceCollectionEssenceDevourerQuestToken", "Max", 0);
}
// Functions
void libHDEH_gf_HeroDehakaIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHDEH_gv_heroDehakaTriggerRegistrationVariable += 1;
if ((libHDEH_gv_heroDehakaTriggerRegistrationVariable == 1)) {
TriggerEnable(libHDEH_gt_HeroDehakaBurrowOverlayOn, true);
TriggerEnable(libHDEH_gt_HeroDehakaBurrowOverlayOff, true);
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerStart, true);
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerEnd, true);
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerPing, true);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationDamageTracker, true);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHeal, true);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker, true);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog, true);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionHeal, true);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown, true);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionNPCKill, true);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc, true);
TriggerEnable(libHDEH_gt_HeroDehakaTalentResetClearStacks, true);
TriggerEnable(libHDEH_gt_HeroDehakaMultiHeroIsolationController, true);
TriggerEnable(libHDEH_gt_HeroDehakaApplyAllyVisionSuppression, true);
TriggerEnable(libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression, true);
TriggerEnable(libHDEH_gt_HeroDehakaApplyDragCameraLock, true);
TriggerEnable(libHDEH_gt_HeroDehakaDragMovespeedUpdate, true);
TriggerEnable(libHDEH_gt_HeroDehakaTalentEssenceDevourer, true);
TriggerEnable(libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc, true);
}
}
void libHDEH_gf_HeroDehakaDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHDEH_gv_heroDehakaTriggerRegistrationVariable -= 1;
if ((libHDEH_gv_heroDehakaTriggerRegistrationVariable < 0)) {
libHDEH_gv_heroDehakaTriggerRegistrationVariable = 0;
}
if ((libHDEH_gv_heroDehakaTriggerRegistrationVariable == 0)) {
TriggerEnable(libHDEH_gt_HeroDehakaBurrowOverlayOn, false);
TriggerEnable(libHDEH_gt_HeroDehakaBurrowOverlayOff, false);
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerStart, false);
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerEnd, false);
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerPing, false);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationDamageTracker, false);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHeal, false);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker, false);
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog, false);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionHeal, false);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown, false);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionNPCKill, false);
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc, false);
TriggerEnable(libHDEH_gt_HeroDehakaTalentResetClearStacks, false);
TriggerEnable(libHDEH_gt_HeroDehakaMultiHeroIsolationController, false);
TriggerEnable(libHDEH_gt_HeroDehakaApplyAllyVisionSuppression, false);
TriggerEnable(libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression, false);
TriggerEnable(libHDEH_gt_HeroDehakaApplyDragCameraLock, false);
TriggerEnable(libHDEH_gt_HeroDehakaDragMovespeedUpdate, false);
TriggerEnable(libHDEH_gt_HeroDehakaTalentEssenceDevourer, false);
TriggerEnable(libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc, false);
}
}
void libHDEH_gf_HeroDehakaTalentEnhancedAgilityAddEssenceForPlayer (int lp_playerNumber, int lp_essenceCollectedAmount) {
// Variable Declarations
unit lv_dehakaUnit;
int lv_currentScoreValue;
int lv_newScoreValue;
int lv_questStackstoAdd;
int lv_remainderEssence;
// Automatic Variable Declarations
int autoF8A4A058_n;
int autoF8A4A058_i;
// Variable Initialization
lv_dehakaUnit = libGame_gv_players[lp_playerNumber].lv_heroUnit;
lv_currentScoreValue = PlayerScoreValueGetAsInt(lp_playerNumber, "DehakaEssenceCollectionMuscularAugementationCount");
lv_newScoreValue = (lv_currentScoreValue + lp_essenceCollectedAmount);
lv_questStackstoAdd = (lv_newScoreValue / libHDEH_gv_heroDehakaTalentEnhancedAgilityEssencePerStack);
lv_remainderEssence = ModI(lv_newScoreValue, libHDEH_gv_heroDehakaTalentEnhancedAgilityEssencePerStack);
// Implementation
if ((((PlayerHasTalent(lp_playerNumber, "DehakaEssenceCollectionTalentEnhancedAgility") == true) && (UnitBehaviorCount(lv_dehakaUnit, "DehakaEssenceCollectionEnhancedAgilityQuestToken") == libHDEH_gv_heroDehakaTalentEnhancedAgilityMaxTokenStackCount)) || (PlayerHasTalent(lp_playerNumber, "DehakaEssenceCollectionTalentEnhancedAgility") == false))) {
return ;
}
if ((lv_questStackstoAdd > 0)) {
autoF8A4A058_n = lv_questStackstoAdd;
for (autoF8A4A058_i = 1; autoF8A4A058_i <= autoF8A4A058_n; autoF8A4A058_i += 1) {
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionEnhancedAgilityTalentQuestProgressModifyTokenCount", lv_dehakaUnit);
}
if ((UnitBehaviorCount(lv_dehakaUnit, "DehakaEssenceCollectionEnhancedAgilityQuestToken") == libHDEH_gv_heroDehakaTalentEnhancedAgilityMaxTokenStackCount)) {
libGame_gf_ScoreValuesReportIntegerValueAndLog(lp_playerNumber, "DehakaEssenceCollectionMuscularAugementationCount", 0);
return ;
}
}
libGame_gf_ScoreValuesReportIntegerValueAndLog(lp_playerNumber, "DehakaEssenceCollectionMuscularAugementationCount", lv_remainderEssence);
}
void libHDEH_gf_HeroDehakaTalentTissueRegenerationAddEssenceForPlayer (int lp_playerNumber, int lp_essenceCollectedAmount) {
// Variable Declarations
unit lv_dehakaUnit;
int lv_currentScoreValue;
int lv_newScoreValue;
int lv_questStackstoAdd;
int lv_remainderEssence;
// Automatic Variable Declarations
int autoD706C9E8_n;
int autoD706C9E8_i;
// Variable Initialization
lv_dehakaUnit = libGame_gv_players[lp_playerNumber].lv_heroUnit;
lv_currentScoreValue = PlayerScoreValueGetAsInt(lp_playerNumber, "DehakaEssenceCollectionTissueRegenerationCount");
lv_newScoreValue = (lv_currentScoreValue + lp_essenceCollectedAmount);
lv_questStackstoAdd = (lv_newScoreValue / libHDEH_gv_heroDehakaTalentTissueRegenerationEssencePerStack);
lv_remainderEssence = ModI(lv_newScoreValue, libHDEH_gv_heroDehakaTalentTissueRegenerationEssencePerStack);
// Implementation
if ((((PlayerHasTalent(lp_playerNumber, "DehakaEssenceCollectionTalentTissueRegeneration") == true) && (UnitBehaviorCount(lv_dehakaUnit, "DehakaEssenceCollectionTissueRegenerationQuestToken") == libHDEH_gv_heroDehakaTalentTissueRegenerationMaxTokenStackCount)) || (PlayerHasTalent(lp_playerNumber, "DehakaEssenceCollectionTalentTissueRegeneration") == false))) {
return ;
}
if ((lv_questStackstoAdd > 0)) {
autoD706C9E8_n = lv_questStackstoAdd;
for (autoD706C9E8_i = 1; autoD706C9E8_i <= autoD706C9E8_n; autoD706C9E8_i += 1) {
UnitCreateEffectUnit(lv_dehakaUnit, "TalentEssenceCollectionTissueRegenerationTalentQuestProgressModifyTokenCount", lv_dehakaUnit);
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionEssenceDevourerQuestIncrementToken", lv_dehakaUnit);
libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[lp_playerNumber] += 1;
}
if ((UnitBehaviorCount(lv_dehakaUnit, "DehakaEssenceCollectionTissueRegenerationQuestToken") == libHDEH_gv_heroDehakaTalentTissueRegenerationMaxTokenStackCount)) {
libGame_gf_ScoreValuesReportIntegerValueAndLog(lp_playerNumber, "DehakaEssenceCollectionTissueRegenerationCount", 0);
return ;
}
}
libGame_gf_ScoreValuesReportIntegerValueAndLog(lp_playerNumber, "DehakaEssenceCollectionTissueRegenerationCount", lv_remainderEssence);
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Burrow Overlay On
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaBurrowOverlayOn_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_DehakaBurrowOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaBurrowOverlayOn_Init () {
libHDEH_gt_HeroDehakaBurrowOverlayOn = TriggerCreate("libHDEH_gt_HeroDehakaBurrowOverlayOn_Func");
TriggerEnable(libHDEH_gt_HeroDehakaBurrowOverlayOn, false);
TriggerAddEventUnitBehaviorChange(libHDEH_gt_HeroDehakaBurrowOverlayOn, null, "DehakaBurrowChannel", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Burrow Overlay Off
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaBurrowOverlayOff_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_DehakaBurrowOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaBurrowOverlayOff_Init () {
libHDEH_gt_HeroDehakaBurrowOverlayOff = TriggerCreate("libHDEH_gt_HeroDehakaBurrowOverlayOff_Func");
TriggerEnable(libHDEH_gt_HeroDehakaBurrowOverlayOff, false);
TriggerAddEventUnitBehaviorChange(libHDEH_gt_HeroDehakaBurrowOverlayOff, null, "DehakaBurrowChannel", c_unitBehaviorChangeDestroy);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Brush Stalker Start
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaBrushStalkerStart_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
PlayerAddLabel(EventPlayer(), "Brushstalker");
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaBrushStalkerStart_Init () {
libHDEH_gt_HeroDehakaBrushStalkerStart = TriggerCreate("libHDEH_gt_HeroDehakaBrushStalkerStart_Func");
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerStart, false);
TriggerAddEventTargetModeUpdate(libHDEH_gt_HeroDehakaBrushStalkerStart, c_playerAny, AbilityCommand("DehakaBrushstalker", 0), c_targetModeStateOn);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Brush Stalker End
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaBrushStalkerEnd_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
PlayerRemoveLabel(EventPlayer(), "Brushstalker");
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaBrushStalkerEnd_Init () {
libHDEH_gt_HeroDehakaBrushStalkerEnd = TriggerCreate("libHDEH_gt_HeroDehakaBrushStalkerEnd_Func");
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerEnd, false);
TriggerAddEventTargetModeUpdate(libHDEH_gt_HeroDehakaBrushStalkerEnd, c_playerAny, AbilityCommand("DehakaBrushstalker", 0), c_targetModeStateOff);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Brush Stalker Ping
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaBrushStalkerPing_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_dehakaPlayer;
playergroup lv_alliedPlayers;
point lv_location;
// Automatic Variable Declarations
// Variable Initialization
lv_dehakaPlayer = EventPlayer();
lv_alliedPlayers = PlayerGroupEmpty();
lv_location = EventUnitTargetPoint();
// Actions
if (!runActions) {
return true;
}
if ((TimerGetRemaining(libUIUI_gv_pingInputSuppressionTimer[lv_dehakaPlayer]) > 0.0)) {
return true;
}
if ((TimerGetRemaining(libUIUI_gv_pingLockoutTimer[lv_dehakaPlayer]) > 0.0)) {
return true;
}
libUIUI_gf_PingIncrementPingCountAndManageTimersForPlayer(lv_dehakaPlayer);
lv_alliedPlayers = libGame_gf_PlayersOnTeamHeroes(libGame_gf_TeamNumberOfPlayer(lv_dehakaPlayer), false);
libNtve_gf_CreatePingFacingAngleWithType(lv_alliedPlayers, "DehakaBrushStalkerShrubClusterModelMiniMap", lv_location, Color(0.00, 5.49, 73.33), 3.0, 270.0, -1, -1);
if ((libGame_gv_players[lv_dehakaPlayer].lv_activeVehicle != null)) {
UnitCreateEffectPoint(libGame_gv_players[lv_dehakaPlayer].lv_activeVehicle, "DehakaBrushstalkerDummyPing", lv_location);
}
else {
UnitCreateEffectPoint(libGame_gv_players[lv_dehakaPlayer].lv_heroUnit, "DehakaBrushstalkerDummyPing", lv_location);
}
TextExpressionSetToken("Param/Expression/lib_HDEH_5664274E", "A", UnitTypeGetName(UnitGetType(libGame_gv_players[lv_dehakaPlayer].lv_heroUnit)));
TextTagCreate(TextExpressionAssemble("Param/Expression/lib_HDEH_5664274E"), 24, lv_location, 2.0, true, false, libGame_gf_PlayersOnTeamHeroes(libGame_gf_TeamNumberOfPlayer(lv_dehakaPlayer), false));
TextTagSetTime(TextTagLastCreated(), c_textTagTimeDuration, 3.5);
libHDEH_gv_brushStalkerPings[lv_dehakaPlayer] = PingLastCreated();
PingSetScale(PingLastCreated(), 0.2);
if ((TimerGetRemaining(libHDEH_gv_brushStalkerPingTextLockoutTimer[lv_dehakaPlayer]) > 0.0)) {
}
else {
TextExpressionSetToken("Param/Expression/lib_HDEH_3B30129B", "A", StringExternal("Param/Value/lib_HDEH_B0846FDD"));
UIDisplayMessage(lv_alliedPlayers, c_messageAreaChat, TextExpressionAssemble("Param/Expression/lib_HDEH_3B30129B"));
TimerStart(libHDEH_gv_brushStalkerPingTextLockoutTimer[lv_dehakaPlayer], 10.0, false, c_timeGame);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaBrushStalkerPing_Init () {
libHDEH_gt_HeroDehakaBrushStalkerPing = TriggerCreate("libHDEH_gt_HeroDehakaBrushStalkerPing_Func");
TriggerEnable(libHDEH_gt_HeroDehakaBrushStalkerPing, false);
TriggerAddEventUnitAbility(libHDEH_gt_HeroDehakaBrushStalkerPing, null, AbilityCommand("DehakaBrushstalker", 0), c_abilEffectStageCast, false);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Adaptation Damage Tracker
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaAdaptationDamageTracker_Func (bool testConds, bool runActions) {
// Variable Declarations
fixed lv_damageAmount;
unit lv_dehakaUnit;
int lv_dehakaPlayer;
// Automatic Variable Declarations
// Variable Initialization
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(EventUnit(), "DehakaAdaptationDamageTrackerBehavior") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_dehakaUnit = EventUnit();
lv_dehakaPlayer = UnitGetOwner(lv_dehakaUnit);
if (((lv_dehakaPlayer > libCore_gv_bALMaxPlayers) || (lv_dehakaPlayer <= 0))) {
return true;
}
lv_damageAmount = (EventUnitDamageAmount() + EventUnitDamageBehaviorShield());
if ((PlayerHasTalent(lv_dehakaPlayer, "DehakaAdaptationChangeIsSurvivalTalent") != true)) {
lv_damageAmount = (lv_damageAmount * libHDEH_gv_heroDehakaAdaptationBaseHealMod);
}
else {
lv_damageAmount = (lv_damageAmount * libHDEH_gv_heroDehakaAdaptationTalentedHealMod);
}
libHDEH_gv_heroDehakaAdaptationCombinedHeal[lv_dehakaPlayer] += lv_damageAmount;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaAdaptationDamageTracker_Init () {
libHDEH_gt_HeroDehakaAdaptationDamageTracker = TriggerCreate("libHDEH_gt_HeroDehakaAdaptationDamageTracker_Func");
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationDamageTracker, false);
TriggerAddDamageEvent(libHDEH_gt_HeroDehakaAdaptationDamageTracker, null, "HeroDehaka", c_unitDamageTypeAny, c_unitDamageEither, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Adaptation Heal
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaAdaptationHeal_Func (bool testConds, bool runActions) {
// Variable Declarations
fixed lv_healAmount;
unit lv_dehakaUnit;
int lv_dehakaPlayer;
// Automatic Variable Declarations
// Variable Initialization
// Actions
if (!runActions) {
return true;
}
lv_dehakaUnit = EventUnit();
lv_dehakaPlayer = UnitGetOwner(lv_dehakaUnit);
lv_healAmount = libHDEH_gv_heroDehakaAdaptationCombinedHeal[lv_dehakaPlayer];
CatalogFieldValueSetFixed(c_gameCatalogEffect, "DehakaAdaptationCreateHealer", "RechargeVitalRate", lv_dehakaPlayer, lv_healAmount);
CatalogFieldValueSet(c_gameCatalogEffect, "DehakaAdaptationDummyTrackerCreateHealer", "RechargeVitalRate", lv_dehakaPlayer, "0");
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaAdaptationApplyHealTrackerBehavior", lv_dehakaUnit);
libHDEH_gv_heroDehakaAdaptationCombinedHeal[lv_dehakaPlayer] = 0.0;
libHDEH_gv_heroDehakaAdaptationHealPreviewCombinedDamage[lv_dehakaPlayer] = 0.0;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaAdaptationHeal_Init () {
libHDEH_gt_HeroDehakaAdaptationHeal = TriggerCreate("libHDEH_gt_HeroDehakaAdaptationHeal_Func");
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHeal, false);
TriggerAddEventUnitBehaviorChange(libHDEH_gt_HeroDehakaAdaptationHeal, null, "DehakaAdaptationDamageTrackerBehavior", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Adaptation Heal Preview Damage Tracker
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_dehakaUnit;
int lv_dehakaPlayer;
unit lv_damagingUnit;
fixed lv_incomingDamage;
// Automatic Variable Declarations
// Variable Initialization
lv_dehakaUnit = EventUnit();
lv_dehakaPlayer = UnitGetOwner(lv_dehakaUnit);
lv_damagingUnit = EventUnitDamageSourceUnit();
// Conditions
if (testConds) {
if (!((lv_dehakaPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((UnitHasBehavior2(lv_dehakaUnit, "DehakaAdaptationDamageTrackerBehavior") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_incomingDamage = (EventUnitDamageAmount() + EventUnitDamageBehaviorShield());
if ((PlayerHasTalent(lv_dehakaPlayer, "DehakaAdaptationChangeIsSurvivalTalent") != true)) {
lv_incomingDamage = (lv_incomingDamage * libHDEH_gv_heroDehakaAdaptationBaseHealMod);
}
else {
lv_incomingDamage = (lv_incomingDamage * libHDEH_gv_heroDehakaAdaptationTalentedHealMod);
}
libHDEH_gv_heroDehakaAdaptationHealPreviewCombinedDamage[lv_dehakaPlayer] += lv_incomingDamage;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker_Init () {
libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker = TriggerCreate("libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker_Func");
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker, false);
TriggerAddDamageEvent(libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker, null, "HeroDehaka", c_unitDamageTypeAny, c_unitDamageEither, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Adaptation Heal Preview Catalog
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_dehakaUnit;
int lv_dehakaPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_dehakaUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_dehakaPlayer = UnitGetOwner(lv_dehakaUnit);
// Conditions
if (testConds) {
if (!((UnitGetType(lv_dehakaUnit) == "HeroDehaka"))) {
return false;
}
if (!((UnitHasBehavior2(lv_dehakaUnit, "DehakaAdaptationDamageTrackerBehavior") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
CatalogFieldValueSetFixed(c_gameCatalogEffect, "DehakaAdaptationDummyTrackerCreateHealer", "RechargeVitalRate", lv_dehakaPlayer, libHDEH_gv_heroDehakaAdaptationHealPreviewCombinedDamage[lv_dehakaPlayer]);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog_Init () {
libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog = TriggerCreate("libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog_Func");
TriggerEnable(libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog, false);
TriggerAddEventPlayerEffectUsed(libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog, c_playerAny, "DehakaAdaptationDummySet");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Essence Collection - Heal
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaEssenceCollectionHeal_Func (bool testConds, bool runActions) {
// Variable Declarations
fixed lv_healAmount;
unit lv_dehakaUnit;
int lv_dehakaPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_dehakaUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
// Conditions
if (testConds) {
if (!((UnitIsAlive(lv_dehakaUnit) == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_dehakaPlayer = UnitGetOwner(lv_dehakaUnit);
lv_healAmount = (((libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[lv_dehakaPlayer] - UnitGetChargeUsed(lv_dehakaUnit, "Abil/DehakaEssenceCollection")) * CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DehakaEssenceCollectionCreateHealer", "RechargeVitalRate", lv_dehakaPlayer)) / CatalogFieldValueGetAsFixed(c_gameCatalogBehavior, "DehakaEssenceCollectionHealBehavior", "PeriodCount", lv_dehakaPlayer));
libGame_gf_ScoreValuesReportRealValueAndLog(lv_dehakaPlayer, "DehakaEssenceCollectionHealing", 0.0);
CatalogFieldValueSetFixed(c_gameCatalogEffect, "DehakaEssenceCollectionCatalogCreateHealer", "RechargeVitalRate", lv_dehakaPlayer, lv_healAmount);
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionRemoveChargeCountPersistent", lv_dehakaUnit);
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionPrimalRageTalentResetToken", lv_dehakaUnit);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaEssenceCollectionHeal_Init () {
libHDEH_gt_HeroDehakaEssenceCollectionHeal = TriggerCreate("libHDEH_gt_HeroDehakaEssenceCollectionHeal_Func");
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionHeal, false);
TriggerAddEventPlayerEffectUsed(libHDEH_gt_HeroDehakaEssenceCollectionHeal, c_playerAny, "DehakaEssenceCollectionInitialAmountSwitch");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Essence Collection - Hero Takedown
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_dehakaUnit;
bool lv_hasStalkerTalent;
int lv_currentTalentScoreValue;
int lv_stacksToAdd;
int lv_leftOverStacks;
fixed lv_healAmount;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_HeroParticipatedInTakedownKillingPlayer();
// Conditions
if (testConds) {
if (!((libGame_gv_players[lv_player].lv_isDead == false))) {
return false;
}
if (!(((UnitHasBehavior2(libGame_gv_players[lv_player].lv_heroUnit, "DehakaEssenceCollectionCarryBehavior") == true) || (UnitHasBehavior2(libGame_gv_players[lv_player].lv_activeVehicle, "DehakaEssenceCollectionCarryBehavior") == true)))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
if ((UnitGetType(libGame_gv_players[lv_player].lv_heroUnit) == "HeroDehaka")) {
lv_dehakaUnit = libGame_gv_players[lv_player].lv_heroUnit;
}
else {
lv_dehakaUnit = libGame_gv_players[lv_player].lv_activeVehicle;
}
lv_hasStalkerTalent = PlayerHasTalent(lv_player, "DehakaEssenceCollectionTalentHeroStalker");
if ((lv_hasStalkerTalent == true)) {
lv_stacksToAdd = libHDEH_gv_heroDehakaEssenceCollectionHeroTakedownCountHeroStalker;
}
else {
lv_stacksToAdd = libHDEH_gv_heroDehakaEssenceCollectionHeroTakedownCount;
}
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionPCKillAddChargeCountModifyUnit", lv_dehakaUnit);
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionPCKillPrimalRageTalentModifyToken", lv_dehakaUnit);
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionHeroTargetLaunchMissile", libGame_gf_HeroParticipatedInTakedownKilledHero());
libHDEH_gf_HeroDehakaTalentEnhancedAgilityAddEssenceForPlayer(lv_player, lv_stacksToAdd);
libHDEH_gf_HeroDehakaTalentTissueRegenerationAddEssenceForPlayer(lv_player, lv_stacksToAdd);
libGame_gf_ScoreValuesReportRealValueAndLog(lv_player, "DehakaEssenceCollectionHealing", ((libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[lv_player] - UnitGetChargeUsed(lv_dehakaUnit, "Abil/DehakaEssenceCollection")) * CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DehakaEssenceCollectionCreateHealer", "RechargeVitalRate", lv_player)));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown_Init () {
libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown = TriggerCreate("libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown_Func");
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown, false);
libGame_gf_HeroParticipatedInTakedown(libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Essence Collection - NPC Kill
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaEssenceCollectionNPCKill_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_nPC;
string lv_nPCType;
unit lv_dehakaUnit;
int lv_currentTalentScoreValue;
int lv_stacksToAdd;
int lv_leftOverStacks;
fixed lv_healAmount;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_HeroParticipatedInNPCTakedownKillingPlayer();
lv_nPC = libGame_gf_HeroParticipatedInNPCTakedownMinion();
// Conditions
if (testConds) {
if (!((libGame_gv_players[lv_player].lv_isDead == false))) {
return false;
}
if (!(((UnitHasBehavior2(libGame_gv_players[lv_player].lv_heroUnit, "DehakaEssenceCollectionCarryBehavior") == true) || (UnitHasBehavior2(libGame_gv_players[lv_player].lv_activeVehicle, "DehakaEssenceCollectionCarryBehavior") == true)))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_nPCType = UnitGetType(lv_nPC);
if (((UnitTypeTestAttribute(lv_nPCType, c_unitAttributeStructure) == true) || (UnitTypeTestAttribute(lv_nPCType, c_unitAttributeMerc) == true) || (UnitTypeTestAttribute(lv_nPCType, c_unitAttributeCreep) == true) || (UnitTypeTestAttribute(lv_nPCType, c_unitAttributeSummoned) == true))) {
return true;
}
if ((UnitGetType(libGame_gv_players[lv_player].lv_heroUnit) == "HeroDehaka")) {
lv_dehakaUnit = libGame_gv_players[lv_player].lv_heroUnit;
}
else {
lv_dehakaUnit = libGame_gv_players[lv_player].lv_activeVehicle;
}
if ((PlayerHasTalent(UnitGetOwner(lv_dehakaUnit), "DehakaEssenceCollectionOneWhoCollectsTalent") == true)) {
lv_stacksToAdd = libHDEH_gv_heroDehakaEssenceCollectionNPCTakedownCountOneWhoCollects;
}
else {
lv_stacksToAdd = libHDEH_gv_heroDehakaEssenceCollectionNPCTakedownCount;
}
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionNPCKillAddChargeCountModifyUnit", lv_dehakaUnit);
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionNPCKillPrimalRageTalentModifyToken", lv_dehakaUnit);
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionNonHeroTargetLaunchMissile", lv_nPC);
libHDEH_gf_HeroDehakaTalentEnhancedAgilityAddEssenceForPlayer(lv_player, lv_stacksToAdd);
libHDEH_gf_HeroDehakaTalentTissueRegenerationAddEssenceForPlayer(lv_player, lv_stacksToAdd);
libGame_gf_ScoreValuesReportRealValueAndLog(lv_player, "DehakaEssenceCollectionHealing", ((libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[lv_player] - UnitGetChargeUsed(lv_dehakaUnit, "Abil/DehakaEssenceCollection")) * CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DehakaEssenceCollectionCreateHealer", "RechargeVitalRate", lv_player)));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaEssenceCollectionNPCKill_Init () {
libHDEH_gt_HeroDehakaEssenceCollectionNPCKill = TriggerCreate("libHDEH_gt_HeroDehakaEssenceCollectionNPCKill_Func");
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionNPCKill, false);
libGame_gf_HeroParticipatedInNPCTakedown(libHDEH_gt_HeroDehakaEssenceCollectionNPCKill);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Essence Collection - Essence Claws Proc
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_target;
unit lv_caster;
int lv_player;
int lv_currentTalentScoreValue;
int lv_stacksToAdd;
int lv_leftOverStacks;
fixed lv_healAmount;
// Automatic Variable Declarations
// Variable Initialization
lv_target = EventPlayerEffectUsedUnit(c_effectUnitTarget);
lv_caster = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_player = UnitGetOwner(lv_caster);
lv_stacksToAdd = (CatalogFieldValueGetAsInt(c_gameCatalogEffect, "DehakaEssenceCollectionEssenceClawsTalentModifyChargeCount", "Cost[" + IntToString(0) + "].ChargeCountUse", 0) * -1);
// Conditions
if (testConds) {
if (!((libGame_gv_players[lv_player].lv_isDead == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_caster, "DehakaEssenceCollectionEssenceClawsTalentModifyChargeCount", lv_caster);
UnitCreateEffectUnit(lv_caster, "DehakaEssenceCollectionEssenceClawsPrimalRageTalentModifyToken", lv_caster);
UnitCreateEffectUnit(lv_caster, "DehakaEssenceCollectionHeroTargetLaunchMissile", lv_target);
libHDEH_gf_HeroDehakaTalentEnhancedAgilityAddEssenceForPlayer(lv_player, lv_stacksToAdd);
libHDEH_gf_HeroDehakaTalentTissueRegenerationAddEssenceForPlayer(lv_player, lv_stacksToAdd);
libGame_gf_ScoreValuesReportRealValueAndLog(lv_player, "DehakaEssenceCollectionHealing", ((libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[lv_player] - UnitGetChargeUsed(lv_caster, "Abil/DehakaEssenceCollection")) * CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DehakaEssenceCollectionCreateHealer", "RechargeVitalRate", lv_player)));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc_Init () {
libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc = TriggerCreate("libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc_Func");
TriggerEnable(libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc, false);
TriggerAddEventPlayerEffectUsed(libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc, c_playerAny, "DehakaEssenceCollectionEssenceClawsTalentDummy");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka Multi-Hero Isolation Controller
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaMultiHeroIsolationController_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_dehakaPlayer;
int lv_isolatedPlayer;
unitgroup lv_isolatedPlayerVisionGroup;
unit lv_targethero;
int lv_targetplayer;
playergroup lv_AllyPlayerGroup;
int lv_p;
// Automatic Variable Declarations
playergroup auto5022FEEB_g;
// Variable Initialization
lv_isolatedPlayer = UnitGetOwner(EventUnit());
lv_isolatedPlayerVisionGroup = UnitGroupEmpty();
lv_targethero = EventUnit();
lv_targetplayer = UnitGetOwner(EventUnit());
lv_AllyPlayerGroup = PlayerGroupEmpty();
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(EventUnit(), "DehakaIsolationVisionSource") == true))) {
return false;
}
if (!((lv_isolatedPlayer > 0))) {
return false;
}
if (!((lv_isolatedPlayer < libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_dehakaPlayer = UnitBehaviorEffectPlayer(EventUnit(), "DehakaIsolationVisionSource", c_effectPlayerCaster, 0);
UnitGroupRemove(libHDEH_gv_heroDehakaIsolationBackupVisionGroups[lv_targetplayer], EventUnit());
if ((UnitGroupCount(libHDEH_gv_heroDehakaIsolationBackupVisionGroups[lv_targetplayer], c_unitCountAlive) == 0)) {
libGame_gf_ShareUnshareVisionOfAlliesForPlayer(false, lv_targetplayer);
lv_AllyPlayerGroup = libGame_gf_AlliedPlayerGroupOfPlayer(lv_targetplayer);
auto5022FEEB_g = lv_AllyPlayerGroup;
lv_p = -1;
while (true) {
lv_p = PlayerGroupNextPlayer(auto5022FEEB_g, lv_p);
if (lv_p<0) { break; }
PlayerSetAlliance(lv_p, c_allianceIdSeekHelp, lv_targetplayer, false);
PlayerSetAlliance(lv_p, c_allianceIdGiveHelp, lv_targetplayer, false);
}
VisRevealerEnable(libGame_gv_baseRevealers[lv_targetplayer], false);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaMultiHeroIsolationController_Init () {
libHDEH_gt_HeroDehakaMultiHeroIsolationController = TriggerCreate("libHDEH_gt_HeroDehakaMultiHeroIsolationController_Func");
TriggerEnable(libHDEH_gt_HeroDehakaMultiHeroIsolationController, false);
TriggerAddEventUnitDied(libHDEH_gt_HeroDehakaMultiHeroIsolationController, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka Apply Ally Vision Suppression
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaApplyAllyVisionSuppression_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_dehakaPlayer;
unit lv_targethero;
int lv_targetplayer;
unitgroup lv_targetPlayerVisionGroup;
playergroup lv_AllyPlayerGroup;
int lv_p;
// Automatic Variable Declarations
unitgroup auto2ADD902E_g;
int auto2ADD902E_u;
unit auto2ADD902E_var;
playergroup autoE8915A40_g;
// Variable Initialization
lv_dehakaPlayer = UnitBehaviorEffectPlayer(EventUnit(), "DehakaIsolationVisionReduction", c_effectPlayerSource, 0);
lv_targethero = EventUnit();
lv_targetplayer = UnitGetOwner(lv_targethero);
lv_targetPlayerVisionGroup = UnitGroupEmpty();
lv_AllyPlayerGroup = PlayerGroupEmpty();
// Conditions
if (testConds) {
if (!((lv_targetplayer > 0))) {
return false;
}
if (!((lv_targetplayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_dehakaPlayer > 0))) {
return false;
}
if (!((lv_dehakaPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((UnitTypeTestAttribute(UnitGetType(lv_targethero), c_unitAttributeHeroic) == true))) {
return false;
}
if (!(((lv_targethero == libGame_gv_players[lv_targetplayer].lv_heroUnit) || (lv_targethero == libAIAI_gv_aIHeroes[lv_targetplayer].lv_currentHeroUnit) || (UnitGetType(lv_targethero) == "HeroBaleog") || (UnitGetType(lv_targethero) == "HeroErik") || (UnitGetType(lv_targethero) == "HeroOlaf") || (UnitGetType(lv_targethero) == "HeroChenEarth") || (UnitGetType(lv_targethero) == "HeroChenFire") || (UnitGetType(lv_targethero) == "HeroChenStorm")))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHDEH_gv_heroDehakaIsolationBackupVisionGroups[lv_targetplayer] = UnitGroupEmpty();
libHDEH_gv_heroDehakaActiveIsolationTargets += 1;
auto2ADD902E_g = UnitGroup(null, lv_targetplayer, RegionEntireMap(), UnitFilter((1 << c_targetFilterHeroic), 0, (1 << c_targetFilterAlly) | (1 << c_targetFilterNeutral) | (1 << c_targetFilterEnemy) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterInvulnerable - 32))), 0);
auto2ADD902E_u = UnitGroupCount(auto2ADD902E_g, c_unitCountAll);
for (;; auto2ADD902E_u -= 1) {
auto2ADD902E_var = UnitGroupUnitFromEnd(auto2ADD902E_g, auto2ADD902E_u);
if (auto2ADD902E_var == null) { break; }
if ((UnitHasBehavior2(auto2ADD902E_var, "DehakaIsolationVisionReduction") == false) && (UnitGetType(auto2ADD902E_var) != "NovaHoloCloneCloaked") && (UnitGetType(auto2ADD902E_var) != "NovaHoloClone") && (UnitGetType(auto2ADD902E_var) != "RexxarMisha")) {
UnitGroupAdd(libHDEH_gv_heroDehakaIsolationBackupVisionGroups[lv_targetplayer], auto2ADD902E_var);
UnitBehaviorAdd(auto2ADD902E_var, "DehakaIsolationVisionSource", libGame_gv_players[lv_dehakaPlayer].lv_heroUnit, 1);
}
}
if ((UnitGroupCount(libHDEH_gv_heroDehakaIsolationBackupVisionGroups[lv_targetplayer], c_unitCountAlive) == 0)) {
libGame_gf_ShareUnshareVisionOfAlliesForPlayer(false, lv_targetplayer);
lv_AllyPlayerGroup = libGame_gf_AlliedPlayerGroupOfPlayer(lv_targetplayer);
autoE8915A40_g = lv_AllyPlayerGroup;
lv_p = -1;
while (true) {
lv_p = PlayerGroupNextPlayer(autoE8915A40_g, lv_p);
if (lv_p<0) { break; }
PlayerSetAlliance(lv_p, c_allianceIdSeekHelp, lv_targetplayer, false);
PlayerSetAlliance(lv_p, c_allianceIdGiveHelp, lv_targetplayer, false);
}
VisRevealerEnable(libGame_gv_baseRevealers[lv_targetplayer], false);
}
if ((libHDEH_gv_heroDehakaActiveIsolationTargets > 0) && (UnitGroupCount(libHDEH_gv_heroDehakaIsolationBackupVisionGroups[lv_targetplayer], c_unitCountAlive) > 0)) {
TriggerEnable(libHDEH_gt_HeroDehakaMultiHeroIsolationController, true);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaApplyAllyVisionSuppression_Init () {
libHDEH_gt_HeroDehakaApplyAllyVisionSuppression = TriggerCreate("libHDEH_gt_HeroDehakaApplyAllyVisionSuppression_Func");
TriggerEnable(libHDEH_gt_HeroDehakaApplyAllyVisionSuppression, false);
TriggerAddEventUnitBehaviorChange(libHDEH_gt_HeroDehakaApplyAllyVisionSuppression, null, "DehakaIsolationVisionReduction", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka Remove Ally Vision Suppression
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_targetHero;
int lv_targetPlayer;
playergroup lv_allyPlayerGroup;
int lv_p;
// Automatic Variable Declarations
unitgroup auto3A703366_g;
int auto3A703366_u;
unit auto3A703366_var;
playergroup auto2433D77C_g;
// Variable Initialization
lv_targetHero = EventUnit();
lv_targetPlayer = UnitGetOwner(EventUnit());
lv_allyPlayerGroup = PlayerGroupEmpty();
// Conditions
if (testConds) {
if (!((UnitTypeTestAttribute(UnitGetType(EventUnit()), c_unitAttributeHeroic) == true))) {
return false;
}
if (!((lv_targetPlayer > 0))) {
return false;
}
if (!((lv_targetPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
auto3A703366_g = libHDEH_gv_heroDehakaIsolationBackupVisionGroups[lv_targetPlayer];
auto3A703366_u = UnitGroupCount(auto3A703366_g, c_unitCountAll);
for (;; auto3A703366_u -= 1) {
auto3A703366_var = UnitGroupUnitFromEnd(auto3A703366_g, auto3A703366_u);
if (auto3A703366_var == null) { break; }
UnitBehaviorRemove(auto3A703366_var, "DehakaIsolationVisionSource", 1);
}
if ((UnitHasBehaviorWithCategoryFlag(lv_targetHero, c_behaviorCategoryVisionRemoval) == false)) {
libGame_gf_ShareUnshareVisionOfAlliesForPlayer(true, lv_targetPlayer);
lv_allyPlayerGroup = libGame_gf_AlliedPlayerGroupOfPlayer(lv_targetPlayer);
auto2433D77C_g = lv_allyPlayerGroup;
lv_p = -1;
while (true) {
lv_p = PlayerGroupNextPlayer(auto2433D77C_g, lv_p);
if (lv_p<0) { break; }
PlayerSetAlliance(lv_p, c_allianceIdSeekHelp, lv_targetPlayer, true);
PlayerSetAlliance(lv_p, c_allianceIdGiveHelp, lv_targetPlayer, true);
}
VisRevealerEnable(libGame_gv_baseRevealers[lv_targetPlayer], true);
libHDEH_gv_heroDehakaActiveIsolationTargets -= 1;
}
if ((libHDEH_gv_heroDehakaActiveIsolationTargets == 0)) {
TriggerEnable(libHDEH_gt_HeroDehakaMultiHeroIsolationController, false);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression_Init () {
libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression = TriggerCreate("libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression_Func");
TriggerEnable(libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression, false);
TriggerAddEventUnitBehaviorChange(libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression, null, "DehakaIsolationVisionReduction", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Apply Drag - Camera Lock
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaApplyDragCameraLock_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_targetPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_targetPlayer = UnitGetOwner(EventUnit());
// Conditions
if (testConds) {
if (!(((UnitGetOwner(EventUnit()) >= 1) && (UnitGetOwner(EventUnit()) <= 10) && (EventUnit() == libGame_gv_players[lv_targetPlayer].lv_heroUnit) && (UnitIsAlive(EventUnit()) == true)))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libGame_gf_PlayerHeroDisplacementCameraLock(EventUnit(), EventUnitBehavior());
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaApplyDragCameraLock_Init () {
libHDEH_gt_HeroDehakaApplyDragCameraLock = TriggerCreate("libHDEH_gt_HeroDehakaApplyDragCameraLock_Func");
TriggerEnable(libHDEH_gt_HeroDehakaApplyDragCameraLock, false);
TriggerAddEventUnitBehaviorChange(libHDEH_gt_HeroDehakaApplyDragCameraLock, null, "DehakaDragStun", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Drag - Movespeed Update
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaDragMovespeedUpdate_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_draggedUnit;
unit lv_dehakaUnit;
int lv_dehakaPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_draggedUnit = EventUnit();
lv_dehakaUnit = UnitBehaviorEffectUnit(lv_draggedUnit, EventUnitBehavior(), c_effectUnitCaster, 0);
lv_dehakaPlayer = UnitGetOwner(lv_dehakaUnit);
// Actions
if (!runActions) {
return true;
}
while ((UnitHasBehavior2(lv_draggedUnit, EventUnitBehavior()) == true)) {
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "DehakaDragStun", "Modification.MoveSpeedMinimum", lv_dehakaPlayer, UnitGetPropertyFixed(lv_dehakaUnit, c_unitPropMovementSpeed, c_unitPropCurrent));
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "DehakaDragStun", "Modification.MoveSpeedMaximum", lv_dehakaPlayer, UnitGetPropertyFixed(lv_dehakaUnit, c_unitPropMovementSpeed, c_unitPropCurrent));
Wait(0.0625, c_timeGame);
}
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "DehakaDragStun", "Modification.MoveSpeedMinimum", lv_dehakaPlayer, CatalogFieldValueGetAsFixed(c_gameCatalogUnit, "HeroDehaka", "Speed", c_playerAny));
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "DehakaDragStun", "Modification.MoveSpeedMaximum", lv_dehakaPlayer, CatalogFieldValueGetAsFixed(c_gameCatalogUnit, "HeroDehaka", "Speed", c_playerAny));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaDragMovespeedUpdate_Init () {
libHDEH_gt_HeroDehakaDragMovespeedUpdate = TriggerCreate("libHDEH_gt_HeroDehakaDragMovespeedUpdate_Func");
TriggerEnable(libHDEH_gt_HeroDehakaDragMovespeedUpdate, false);
TriggerAddEventUnitBehaviorChange(libHDEH_gt_HeroDehakaDragMovespeedUpdate, null, "DehakaDragStun", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Talent Reset Clear Stacks
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaTalentResetClearStacks_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_dehakaUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_HeroRespecsTalentsPlayer();
// Actions
if (!runActions) {
return true;
}
if ((UnitGetType(libGame_gv_players[lv_player].lv_heroUnit) == "HeroDehaka")) {
lv_dehakaUnit = libGame_gv_players[lv_player].lv_heroUnit;
}
else {
lv_dehakaUnit = libGame_gv_players[lv_player].lv_activeVehicle;
}
libGame_gf_ScoreValuesReportIntegerValueAndLog(lv_player, "DehakaEssenceCollectionMuscularAugementationCount", 0);
libGame_gf_ScoreValuesReportIntegerValueAndLog(lv_player, "DehakaEssenceCollectionTissueRegenerationCount", 0);
libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[libGame_gf_HeroRespecsTalentsPlayer()] = 50;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaTalentResetClearStacks_Init () {
libHDEH_gt_HeroDehakaTalentResetClearStacks = TriggerCreate("libHDEH_gt_HeroDehakaTalentResetClearStacks_Func");
TriggerEnable(libHDEH_gt_HeroDehakaTalentResetClearStacks, false);
libGame_gf_HeroRespecsTalents(libHDEH_gt_HeroDehakaTalentResetClearStacks);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Talent - Essence Devourer
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaTalentEssenceDevourer_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_dehakaUnit;
int lv_currentTalentScoreValue;
int lv_leftOverStacks;
int lv_essenceStacksfromGlobes;
// Automatic Variable Declarations
// Variable Initialization
// Conditions
if (testConds) {
if (!((UnitGetType(libGame_gv_players[EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster)].lv_heroUnit) == "HeroDehaka"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_player = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);
lv_dehakaUnit = libGame_gv_players[lv_player].lv_heroUnit;
if ((UnitIsAlive(libGame_gv_players[lv_player].lv_heroUnit) == true) && (UnitHasBehavior2(libGame_gv_players[lv_player].lv_heroUnit, "DehakaEssenceCollectionEssenceDevourerQuestToken") == true)) {
lv_essenceStacksfromGlobes = AbsI(CatalogFieldValueGetAsInt(c_gameCatalogEffect, "DehakaEssenceCollectionEssenceDevourerTalentModifyChargeCount", "Cost[" + IntToString(0) + "].ChargeCountUse", lv_player));
UnitCreateEffectUnit(lv_dehakaUnit, "DehakaEssenceCollectionTissueRegenerationProcSet", lv_dehakaUnit);
libHDEH_gf_HeroDehakaTalentEnhancedAgilityAddEssenceForPlayer(lv_player, lv_essenceStacksfromGlobes);
libHDEH_gf_HeroDehakaTalentTissueRegenerationAddEssenceForPlayer(lv_player, lv_essenceStacksfromGlobes);
}
libGame_gf_ScoreValuesReportRealValueAndLog(lv_player, "DehakaEssenceCollectionHealing", ((libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[lv_player] - UnitGetChargeUsed(lv_dehakaUnit, "Abil/DehakaEssenceCollection")) * CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DehakaEssenceCollectionCreateHealer", "RechargeVitalRate", lv_player)));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaTalentEssenceDevourer_Init () {
libHDEH_gt_HeroDehakaTalentEssenceDevourer = TriggerCreate("libHDEH_gt_HeroDehakaTalentEssenceDevourer_Func");
TriggerEnable(libHDEH_gt_HeroDehakaTalentEssenceDevourer, false);
TriggerAddEventPlayerEffectUsed(libHDEH_gt_HeroDehakaTalentEssenceDevourer, c_playerAny, "RegenGlobeImpactSet");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Dehaka - Hero Stalker Talent Dark Swarm Proc
//--------------------------------------------------------------------------------------------------
bool libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_derhaka;
int lv_essenceCollectedAmount;
// Automatic Variable Declarations
// Variable Initialization
lv_player = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);
lv_derhaka = libGame_gv_players[lv_player].lv_heroUnit;
lv_essenceCollectedAmount = 1;
// Conditions
if (testConds) {
if (!((lv_player > 0))) {
return false;
}
if (!((lv_player <= libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_derhaka, "DehakaEssenceCollectionHeroStalkerAddChargeCountModifyUnit", lv_derhaka);
UnitCreateEffectUnit(lv_derhaka, "DehakaEssenceCollectionDarkSwarmHeroStalkerPrimalRageTalentModifyToken", lv_derhaka);
libHDEH_gf_HeroDehakaTalentEnhancedAgilityAddEssenceForPlayer(lv_player, lv_essenceCollectedAmount);
libHDEH_gf_HeroDehakaTalentTissueRegenerationAddEssenceForPlayer(lv_player, lv_essenceCollectedAmount);
libGame_gf_ScoreValuesReportRealValueAndLog(lv_player, "DehakaEssenceCollectionHealing", ((libHDEH_gv_heroDehakaEssenceCollectionMaxStackCount[lv_player] - UnitGetChargeUsed(lv_derhaka, "Abil/DehakaEssenceCollection")) * CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DehakaEssenceCollectionCreateHealer", "RechargeVitalRate", lv_player)));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc_Init () {
libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc = TriggerCreate("libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc_Func");
TriggerEnable(libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc, false);
TriggerAddEventPlayerEffectUsed(libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc, c_playerAny, "DehakaEssenceCollectionHeroStalkerAddChargeCountDummy");
}
void libHDEH_InitTriggers () {
libHDEH_gt_HeroDehakaBurrowOverlayOn_Init();
libHDEH_gt_HeroDehakaBurrowOverlayOff_Init();
libHDEH_gt_HeroDehakaBrushStalkerStart_Init();
libHDEH_gt_HeroDehakaBrushStalkerEnd_Init();
libHDEH_gt_HeroDehakaBrushStalkerPing_Init();
libHDEH_gt_HeroDehakaAdaptationDamageTracker_Init();
libHDEH_gt_HeroDehakaAdaptationHeal_Init();
libHDEH_gt_HeroDehakaAdaptationHealPreviewDamageTracker_Init();
libHDEH_gt_HeroDehakaAdaptationHealPreviewCatalog_Init();
libHDEH_gt_HeroDehakaEssenceCollectionHeal_Init();
libHDEH_gt_HeroDehakaEssenceCollectionHeroTakedown_Init();
libHDEH_gt_HeroDehakaEssenceCollectionNPCKill_Init();
libHDEH_gt_HeroDehakaEssenceCollectionEssenceClawsProc_Init();
libHDEH_gt_HeroDehakaMultiHeroIsolationController_Init();
libHDEH_gt_HeroDehakaApplyAllyVisionSuppression_Init();
libHDEH_gt_HeroDehakaRemoveAllyVisionSuppression_Init();
libHDEH_gt_HeroDehakaApplyDragCameraLock_Init();
libHDEH_gt_HeroDehakaDragMovespeedUpdate_Init();
libHDEH_gt_HeroDehakaTalentResetClearStacks_Init();
libHDEH_gt_HeroDehakaTalentEssenceDevourer_Init();
libHDEH_gt_HeroDehakaHeroStalkerTalentDarkSwarmProc_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHDEH_InitLib_completed = false;
void libHDEH_InitLib () {
if (libHDEH_InitLib_completed) {
return;
}
libHDEH_InitLib_completed = true;
libHDEH_InitLibraries();
libHDEH_InitVariables();
libHDEH_InitTriggers();
}