include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/GameDataHelperLib"
include "LibHMTH_h"
//--------------------------------------------------------------------------------------------------
// Library: Malthael
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHMTH_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libGDHL_InitVariables();
}
// Variable Initialization
bool libHMTH_InitVariables_completed = false;
void libHMTH_InitVariables () {
if (libHMTH_InitVariables_completed) {
return;
}
libHMTH_InitVariables_completed = true;
libHMTH_gv_heroMalthaelTouchOfDeathHealingPreventScale = CatalogFieldValueGetAsFixed(c_gameCatalogBehavior, "MalthaelReapersMarkTouchOfDeathDebuff", "Modification.HealTakenAdditiveMultiplier[" + IntToString(0) + "]", c_playerAny);
libHMTH_gv_heroMalthaelNoOneCanStopDeathDeathTimerExtendScale = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "MalthaelNoOneCanStopDeathDummyRespawnTimeScale", "XP", 0);
}
// Functions
void libHMTH_gf_HeroMalthaelIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHMTH_gv_heroMalthaelTriggerRegistrationVariable += 1;
if ((libHMTH_gv_heroMalthaelTriggerRegistrationVariable == 1)) {
TriggerEnable(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd, true);
TriggerEnable(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove, true);
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart, true);
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn, true);
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff, true);
TriggerEnable(libHMTH_gt_HeroMalthaelReaperOfSoulsProc, true);
TriggerEnable(libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked, true);
TriggerEnable(libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast, true);
TriggerEnable(libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates, true);
}
}
void libHMTH_gf_HeroMalthaelDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHMTH_gv_heroMalthaelTriggerRegistrationVariable -= 1;
if ((libHMTH_gv_heroMalthaelTriggerRegistrationVariable < 0)) {
libHMTH_gv_heroMalthaelTriggerRegistrationVariable = 0;
}
if ((libHMTH_gv_heroMalthaelTriggerRegistrationVariable == 0)) {
TriggerEnable(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd, false);
TriggerEnable(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove, false);
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart, false);
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn, false);
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained, false);
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff, false);
TriggerEnable(libHMTH_gt_HeroMalthaelReaperOfSoulsProc, false);
TriggerEnable(libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked, false);
TriggerEnable(libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast, false);
TriggerEnable(libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates, false);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Reaper's Mark - Special Case - Abathur Ultimate Evolution - Label Add
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_abathurPlayer;
int lv_malthaelPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_abathurPlayer = libGDHL_gf_AbathurUltimateEvolutionHeroCopiedAbathurOwner();
lv_malthaelPlayer = libGDHL_gf_AbathurUltimateEvolutionHeroCopiedTargetOwner();
// Conditions
if (testConds) {
if (!((UnitGetType(libGame_gv_players[lv_malthaelPlayer].lv_heroUnit) == "HeroMalthael"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
PlayerAddLabel(lv_abathurPlayer, "HeroMalthael");
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd_Init () {
libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd = TriggerCreate("libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd, false);
libGDHL_gf_AbathurUltimateEvolutionHeroCopied(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Reaper's Mark - Special Case - Abathur Ultimate Evolution - Label Remove
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_abathurPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_abathurPlayer = libGDHL_gf_AbathurUltimateEvolutionEndedAbathurPlayer();
// Actions
if (!runActions) {
return true;
}
PlayerRemoveLabel(lv_abathurPlayer, "HeroMalthael");
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove_Init () {
libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove = TriggerCreate("libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove, false);
libGDHL_gf_AbathurUltimateEvolutionEnded(libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Touch Of Death - Healing Absorbed Start
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_casterPlayer;
int lv_targetPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_casterPlayer = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);
lv_targetPlayer = EventPlayerEffectUsedUnitOwner(c_effectPlayerTarget);
// Actions
if (!runActions) {
return true;
}
libHMTH_gv_heroMalthaelTouchOfDeathCaster[lv_targetPlayer] = lv_casterPlayer;
libHMTH_gv_heroMalthaelTouchOfDeathHealingAbsorbedAmount[lv_casterPlayer] = 0.0;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart_Init () {
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart = TriggerCreate("libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart, false);
TriggerAddEventPlayerEffectUsed(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart, c_playerAny, "MalthaelReapersMarkTouchOfDeathApplyBehavior");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Touch Of Death - Healing Absorbed Tracker On
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
libHMTH_gv_heroMalthaelTouchOfDeathRegistrationVariable += 1;
if ((libHMTH_gv_heroMalthaelTouchOfDeathRegistrationVariable == 1)) {
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained, true);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn_Init () {
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn = TriggerCreate("libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn, false);
TriggerAddEventUnitBehaviorChange(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn, null, "MalthaelReapersMarkTouchOfDeathDebuff", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Touch Of Death - Healing Absorbed Tracker Life Gained
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_targetUnit;
int lv_targetPlayer;
int lv_casterPlayer;
string lv_healingEffect;
int lv_touchOfDeathCaster;
// Automatic Variable Declarations
// Variable Initialization
lv_targetUnit = EventUnit();
lv_targetPlayer = UnitGetOwner(lv_targetUnit);
lv_casterPlayer = UnitGetOwner(EventUnitHealLaunchUnit());
lv_healingEffect = EventUnitHealEffect();
lv_touchOfDeathCaster = libHMTH_gv_heroMalthaelTouchOfDeathCaster[lv_targetPlayer];
// Conditions
if (testConds) {
if (!((UnitBehaviorEnabled(lv_targetUnit, "MalthaelReapersMarkTouchOfDeathDebuff") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHMTH_gv_heroMalthaelTouchOfDeathHealingAbsorbedAmount[lv_touchOfDeathCaster] += (CatalogFieldValueGetAsFixed(c_gameCatalogEffect, lv_healingEffect, "RechargeVitalRate", lv_casterPlayer) * AbsF(libHMTH_gv_heroMalthaelTouchOfDeathHealingPreventScale));
libHMTH_gv_heroMalthaelTouchOfDeathHealingAbsorbedAmount[lv_touchOfDeathCaster] += ((CatalogFieldValueGetAsFixed(c_gameCatalogEffect, lv_healingEffect, "RechargeVitalFraction", lv_casterPlayer) * CatalogFieldValueGetAsFixed(c_gameCatalogUnit, UnitGetType(lv_targetUnit), "LifeMax", lv_targetPlayer)) * AbsF(libHMTH_gv_heroMalthaelTouchOfDeathHealingPreventScale));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained_Init () {
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained = TriggerCreate("libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained, false);
TriggerAddEventUnitHealed(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained, null, c_unitVitalLife, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Touch Of Death - Healing Absorbed Tracker Off
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_malthaelUnit;
int lv_malthaelPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_malthaelUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_malthaelPlayer = UnitGetOwner(lv_malthaelUnit);
// Actions
if (!runActions) {
return true;
}
libHMTH_gv_heroMalthaelTouchOfDeathRegistrationVariable -= 1;
if ((libHMTH_gv_heroMalthaelTouchOfDeathRegistrationVariable < 0)) {
libHMTH_gv_heroMalthaelTouchOfDeathRegistrationVariable = 0;
}
if ((libHMTH_gv_heroMalthaelTouchOfDeathRegistrationVariable == 0)) {
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained, false);
FloatingCombatElementCreateNumberTextAtUnit(PlayerGroupSingle(lv_malthaelPlayer), "FloatingCombatElements/FloatingCombatAmountReadable", "", lv_malthaelUnit, FixedToInt(libHMTH_gv_heroMalthaelTouchOfDeathHealingAbsorbedAmount[lv_malthaelPlayer]), StringExternal("Param/Value/lib_HMTH_D2D24E65"), libNtve_gv_FloatingCombatTextAutoRandomSeed);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff_Init () {
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff = TriggerCreate("libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff, false);
TriggerAddEventPlayerEffectUsed(libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff, c_playerAny, "MalthaelReapersMarkTouchOfDeathDummyRemove");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Reaper Of Souls - Proc
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelReaperOfSoulsProc_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
unit lv_zeratul;
// Automatic Variable Declarations
// Variable Initialization
lv_player = libGame_gf_HeroParticipatedInTakedownKillingPlayer();
lv_zeratul = libGame_gv_players[lv_player].lv_heroUnit;
// Conditions
if (testConds) {
if (!((lv_player >= 1))) {
return false;
}
if (!((lv_player <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((PlayerHasTalent(lv_player, "MalthaelReaperOfSouls") == true))) {
return false;
}
if (!((UnitBehaviorDurationTotal(lv_zeratul, "MalthaelTormentedSoulsBuff") > 0.0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_zeratul, "MalthaelTormentedSoulsReaperOfSoulsDummyApplyBuffBehavior", lv_zeratul);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelReaperOfSoulsProc_Init () {
libHMTH_gt_HeroMalthaelReaperOfSoulsProc = TriggerCreate("libHMTH_gt_HeroMalthaelReaperOfSoulsProc_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelReaperOfSoulsProc, false);
libGame_gf_HeroParticipatedInTakedown(libHMTH_gt_HeroMalthaelReaperOfSoulsProc);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - Angel Of Death - Talent Picked
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_malthaelPlayer;
unit lv_malthaelUnit;
int lv_lastRitesCurrentTokenCount;
int lv_lastRitesOldMaxCount;
int lv_lastRitesNewMaxCount;
fixed lv_lastRitesCooldownReductionScale;
int lv_lastRitesBaseCooldown;
int lv_lastRitesNewCooldown;
// Automatic Variable Declarations
// Variable Initialization
lv_malthaelPlayer = libGame_gf_HeroGainTalentPlayer();
lv_malthaelUnit = libGame_gv_players[lv_malthaelPlayer].lv_heroUnit;
// Conditions
if (testConds) {
if (!((libGame_gf_HeroGainTalentGainedTalent() == "MalthaelAngelOfDeath"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_lastRitesCurrentTokenCount = UnitBehaviorCount(lv_malthaelUnit, "MalthaelLastRitesQuestCooldownToken");
lv_lastRitesOldMaxCount = CatalogFieldValueGetAsInt(c_gameCatalogBehavior, "MalthaelLastRitesQuestCooldownToken", "Max", 0);
lv_lastRitesNewMaxCount = (lv_lastRitesOldMaxCount / libHMTH_gv_heroMalthaelAngelOfDeathStackCountScale);
lv_lastRitesCooldownReductionScale = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "MalthaelLastRitesAngelOfDeathQuestModifyPlayerCooldown", "EffectArray[" + IntToString(0) + "].Value", 0);
lv_lastRitesBaseCooldown = CatalogFieldValueGetAsInt(c_gameCatalogAbil, "MalthaelLastRites", "Cost.Cooldown.TimeUse", 0);
lv_lastRitesNewCooldown = (lv_lastRitesBaseCooldown - (lv_lastRitesCurrentTokenCount * FixedToInt(lv_lastRitesCooldownReductionScale)));
if ((lv_lastRitesCurrentTokenCount < lv_lastRitesNewMaxCount) && (lv_lastRitesNewCooldown > 0)) {
CatalogFieldValueModifyInt(c_gameCatalogAbil, "MalthaelLastRites", "Cost.Cooldown.TimeUse", lv_malthaelPlayer, lv_lastRitesNewCooldown, c_upgradeOperationSet);
}
if ((lv_lastRitesCurrentTokenCount >= lv_lastRitesNewMaxCount)) {
UnitSetTokenCount(lv_malthaelUnit, CatalogFieldValueGet(c_gameCatalogBehavior, "MalthaelLastRitesQuestCooldownToken", "TokenId", lv_malthaelPlayer), lv_lastRitesNewMaxCount, lv_malthaelUnit);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked_Init () {
libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked = TriggerCreate("libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked, false);
libGame_gf_HeroGainTalent(libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - No One Can Stop Death - Ability Cast
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
int lv_alliedTeam;
int lv_enemyTeam;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_player = UnitGetOwner(lv_unit);
lv_alliedTeam = libGame_gf_TeamNumberOfPlayer(lv_player);
lv_enemyTeam = libGame_gf_EnemyTeam(lv_alliedTeam);
// Conditions
if (testConds) {
if (!((UnitIsAlive(lv_unit) == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libGame_gv_players[lv_player].lv_suppressReviveVOSound = true;
UnitBehaviorAdd(lv_unit, "MalthaelNoOneCanStopDeathActivated", lv_unit, 1);
libGame_gf_HeroDeathUpdateRespawnTimer(lv_player, 0.0);
UIDisplayMessage(libGame_gf_PlayersOnTeamHeroes(lv_alliedTeam, false), c_messageAreaChat, StringExternal("Param/Value/lib_HMTH_73C97CC1"));
UIDisplayMessage(libGame_gf_PlayersOnTeamHeroes(lv_enemyTeam, false), c_messageAreaChat, StringExternal("Param/Value/lib_HMTH_778921EE"));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast_Init () {
libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast = TriggerCreate("libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast, false);
TriggerAddEventPlayerEffectUsed(libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast, c_playerAny, "MalthaelNoOneCanStopDeathInitialSet");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Malthael - No One Can Stop Death - Malthael Dies And Next Respawn Timer Updates
//--------------------------------------------------------------------------------------------------
bool libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
fixed lv_malthaelRespawnTimer;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_player = UnitGetOwner(lv_unit);
lv_malthaelRespawnTimer = (libHMTH_gv_heroMalthaelNoOneCanStopDeathDeathTimerExtendScale + 1.0);
// Conditions
if (testConds) {
if (!((UnitIsAlive(lv_unit) == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libGame_gv_players[lv_player].lv_suppressReviveVOSound = false;
UnitBehaviorRemove(lv_unit, "MalthaelNoOneCanStopDeathActivated", 1);
UnitBehaviorAdd(lv_unit, "MalthaelNoOneCanStopDeathTracker", lv_unit, 1);
libGame_gf_HeroDeathUpdateRespawnTimer(lv_player, (lv_malthaelRespawnTimer * libCore_gf_HeroDeathTime(lv_player, UnitLevel(libGame_gv_players[lv_player].lv_heroUnit))));
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates_Init () {
libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates = TriggerCreate("libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates_Func");
TriggerEnable(libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates, false);
TriggerAddEventPlayerEffectUsed(libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates, c_playerAny, "MalthaelNoOneCanStopDeathDummyExtendRespawn");
}
void libHMTH_InitTriggers () {
libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelAdd_Init();
libHMTH_gt_HeroMalthaelReapersMarkSpecialCaseAbathurUltimateEvolutionLabelRemove_Init();
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedStart_Init();
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOn_Init();
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerLifeGained_Init();
libHMTH_gt_HeroMalthaelTouchOfDeathHealingAbsorbedTrackerOff_Init();
libHMTH_gt_HeroMalthaelReaperOfSoulsProc_Init();
libHMTH_gt_HeroMalthaelAngelOfDeathTalentPicked_Init();
libHMTH_gt_HeroMalthaelNoOneCanStopDeathAbilityCast_Init();
libHMTH_gt_HeroMalthaelNoOneCanStopDeathMalthaelDiesAndNextRespawnTimerUpdates_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHMTH_InitLib_completed = false;
void libHMTH_InitLib () {
if (libHMTH_InitLib_completed) {
return;
}
libHMTH_InitLib_completed = true;
libHMTH_InitLibraries();
libHMTH_InitVariables();
libHMTH_InitTriggers();
}