include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/UILib"
include "LibHDEA_h"
//--------------------------------------------------------------------------------------------------
// Library: Deathwing
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHDEA_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libUIUI_InitVariables();
}
// Variable Initialization
bool libHDEA_InitVariables_completed = false;
void libHDEA_InitVariables () {
if (libHDEA_InitVariables_completed) {
return;
}
libHDEA_InitVariables_completed = true;
}
// Functions
void libHDEA_gf_HeroDeathwingIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHDEA_gv_heroDeathwingTriggerRegistrationVariable += 1;
if ((libHDEA_gv_heroDeathwingTriggerRegistrationVariable == 1)) {
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightModifyFacing, true);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightOverlayOn, true);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightOverlayOff, true);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt, true);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightCameraLockResume, true);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar, true);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier, true);
TriggerEnable(libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength, true);
TriggerEnable(libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies, true);
TriggerEnable(libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage, true);
TriggerEnable(libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage, true);
TriggerEnable(libHDEA_gt_HeroDeathwingFirestormDeathwingLanded, true);
TriggerEnable(libHDEA_gt_HeroDeathwingBellowingRoarCameraLock, true);
}
}
void libHDEA_gf_HeroDeathwingDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHDEA_gv_heroDeathwingTriggerRegistrationVariable -= 1;
if ((libHDEA_gv_heroDeathwingTriggerRegistrationVariable < 0)) {
libHDEA_gv_heroDeathwingTriggerRegistrationVariable = 0;
}
if ((libHDEA_gv_heroDeathwingTriggerRegistrationVariable == 0)) {
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightModifyFacing, false);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightOverlayOn, false);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightOverlayOff, false);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt, false);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightCameraLockResume, false);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar, false);
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier, false);
TriggerEnable(libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength, false);
TriggerEnable(libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies, false);
TriggerEnable(libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage, false);
TriggerEnable(libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage, false);
TriggerEnable(libHDEA_gt_HeroDeathwingFirestormDeathwingLanded, false);
TriggerEnable(libHDEA_gt_HeroDeathwingBellowingRoarCameraLock, false);
}
}
void libHDEA_gf_HeroDeathwingFirestormGenerateFirestormatLocation (point lp_point, int lp_owner, unit lp_caster) {
// Variable Declarations
int lv_meteorIter;
unit lv_targetUnit;
unitgroup lv_meteorGroup;
int lv_meteorCount;
point lv_currentRandomPoint;
point lv_lastRandomPoint;
point lv_secondtoLastRandomPoint;
region lv_targetRegion;
bool lv_firstRandomMeteor;
int lv_randomPointAttemptsRemaining;
// Automatic Variable Declarations
unitgroup auto5400686E_g;
int auto5400686E_u;
unit auto5400686E_var;
unitgroup autoB05DA75F_g;
int autoB05DA75F_u;
int auto12BFBDAB_ae;
const int auto12BFBDAB_ai = 1;
// Variable Initialization
lv_meteorGroup = UnitGroupEmpty();
lv_meteorCount = 7;
lv_targetRegion = RegionCircle(lp_point, 8.0);
lv_firstRandomMeteor = true;
lv_randomPointAttemptsRemaining = 10;
// Implementation
auto5400686E_g = UnitGroupAlliance(lp_owner, c_unitAllianceEnemy, lv_targetRegion, UnitFilter((1 << c_targetFilterHeroic) | (1 << c_targetFilterVisible), 0, (1 << c_targetFilterMinion) | (1 << c_targetFilterMerc) | (1 << c_targetFilterImmuneToAOE) | (1 << c_targetFilterUser1) | (1 << c_targetFilterMissile) | (1 << c_targetFilterItem), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterInvulnerable - 32)) | (1 << (c_targetFilterSummoned - 32)) | (1 << (c_targetFilterMapBoss - 32))), 0);
auto5400686E_u = UnitGroupCount(auto5400686E_g, c_unitCountAll);
for (;; auto5400686E_u -= 1) {
auto5400686E_var = UnitGroupUnitFromEnd(auto5400686E_g, auto5400686E_u);
if (auto5400686E_var == null) { break; }
UnitGroupAdd(lv_meteorGroup, auto5400686E_var);
}
autoB05DA75F_g = lv_meteorGroup;
autoB05DA75F_u = UnitGroupCount(autoB05DA75F_g, c_unitCountAll);
for (;; autoB05DA75F_u -= 1) {
lv_targetUnit = UnitGroupUnitFromEnd(autoB05DA75F_g, autoB05DA75F_u);
if (lv_targetUnit == null) { break; }
if ((lv_meteorCount >= 1)) {
UnitCreateEffectPoint(lp_caster, "DeathwingFirestormCreatePersistent", UnitGetPosition(lv_targetUnit));
UnitGroupRemove(lv_meteorGroup, lv_targetUnit);
lv_meteorCount -= 1;
Wait(RandomFixed(0.0625, 0.0625), c_timeGame);
}
}
auto12BFBDAB_ae = lv_meteorCount;
lv_meteorIter = 1;
for ( ; ( (auto12BFBDAB_ai >= 0 && lv_meteorIter <= auto12BFBDAB_ae) || (auto12BFBDAB_ai < 0 && lv_meteorIter >= auto12BFBDAB_ae) ) ; lv_meteorIter += auto12BFBDAB_ai ) {
if ((lv_firstRandomMeteor == true)) {
lv_currentRandomPoint = RegionRandomPoint(lv_targetRegion);
UnitCreateEffectPoint(lp_caster, "DeathwingFirestormCreatePersistent", lv_currentRandomPoint);
lv_secondtoLastRandomPoint = lv_lastRandomPoint;
lv_lastRandomPoint = lv_currentRandomPoint;
lv_firstRandomMeteor = false;
Wait(RandomFixed(0.0625, 0.0625), c_timeGame);
}
else {
lv_currentRandomPoint = RegionRandomPoint(lv_targetRegion);
while (((DistanceBetweenPoints(lv_currentRandomPoint, lv_lastRandomPoint) < 4.0) && (DistanceBetweenPoints(lv_currentRandomPoint, lv_secondtoLastRandomPoint) < 4.0) && (lv_randomPointAttemptsRemaining >= 1))) {
lv_currentRandomPoint = RegionRandomPoint(lv_targetRegion);
lv_randomPointAttemptsRemaining -= 1;
}
UnitCreateEffectPoint(lp_caster, "DeathwingFirestormCreatePersistent", lv_currentRandomPoint);
lv_secondtoLastRandomPoint = lv_lastRandomPoint;
lv_lastRandomPoint = lv_currentRandomPoint;
Wait(RandomFixed(0.0625, 0.0625), c_timeGame);
}
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Kill Log - Warning Detection
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_KillLogWarningDetection_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_hero;
int lv_player;
int lv_player2;
// Automatic Variable Declarations
playergroup auto451B28A3_g;
// Variable Initialization
lv_hero = EventUnit();
// Actions
if (!runActions) {
return true;
}
auto451B28A3_g = PlayerGroupAll();
lv_player = -1;
while (true) {
lv_player = PlayerGroupNextPlayer(auto451B28A3_g, lv_player);
if (lv_player<0) { break; }
CameraShakeStart(lv_player, c_cameraPositionTarget, c_cameraDirectionXYZ, 0.025, 2.0, 100.0, 2.0);
}
SoundPlayForPlayer(SoundLink("DeathwingRumble", -1), c_maxPlayers, PlayerGroupAll(), 50.0, 0.0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_KillLogWarningDetection_Init () {
libHDEA_gt_KillLogWarningDetection = TriggerCreate("libHDEA_gt_KillLogWarningDetection_Func");
TriggerAddEventUnitToken(libHDEA_gt_KillLogWarningDetection, "DeathwingWarn", null, "");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Kill Log - Warning Detection 2
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_KillLogWarningDetection2_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_hero;
int lv_player;
// Automatic Variable Declarations
playergroup autoB62928B7_g;
// Variable Initialization
lv_hero = EventUnit();
// Actions
if (!runActions) {
return true;
}
autoB62928B7_g = PlayerGroupAll();
lv_player = -1;
while (true) {
lv_player = PlayerGroupNextPlayer(autoB62928B7_g, lv_player);
if (lv_player<0) { break; }
CameraShakeStart(lv_player, c_cameraPositionTarget, c_cameraDirectionXYZ, 0.05, 2.0, 100.0, 2.0);
}
SoundPlayForPlayer(SoundLink("DeathwingRumble", -1), c_maxPlayers, PlayerGroupAll(), 75.0, 0.0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_KillLogWarningDetection2_Init () {
libHDEA_gt_KillLogWarningDetection2 = TriggerCreate("libHDEA_gt_KillLogWarningDetection2_Func");
TriggerAddEventUnitToken(libHDEA_gt_KillLogWarningDetection2, "DeathwingWarn2", null, "");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Kill Log - Warning Detection 3
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_KillLogWarningDetection3_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_hero;
int lv_player;
// Automatic Variable Declarations
playergroup auto4D03B78A_g;
// Variable Initialization
lv_hero = EventUnit();
// Actions
if (!runActions) {
return true;
}
auto4D03B78A_g = PlayerGroupAll();
lv_player = -1;
while (true) {
lv_player = PlayerGroupNextPlayer(auto4D03B78A_g, lv_player);
if (lv_player<0) { break; }
CameraShakeStart(lv_player, c_cameraPositionTarget, c_cameraDirectionXYZ, 0.075, 2.0, 100.0, 2.0);
}
SoundPlayForPlayer(SoundLink("DeathwingRumble", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_KillLogWarningDetection3_Init () {
libHDEA_gt_KillLogWarningDetection3 = TriggerCreate("libHDEA_gt_KillLogWarningDetection3_Func");
TriggerAddEventUnitToken(libHDEA_gt_KillLogWarningDetection3, "DeathwingWarn3", null, "");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Kill Log - Warning Detection 4
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_KillLogWarningDetection4_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_hero;
int lv_player;
// Automatic Variable Declarations
playergroup autoC50335FC_g;
// Variable Initialization
lv_hero = EventUnit();
// Actions
if (!runActions) {
return true;
}
autoC50335FC_g = PlayerGroupAll();
lv_player = -1;
while (true) {
lv_player = PlayerGroupNextPlayer(autoC50335FC_g, lv_player);
if (lv_player<0) { break; }
CameraShakeStart(lv_player, c_cameraPositionTarget, c_cameraDirectionXYZ, 0.1, 2.0, 100.0, 2.0);
}
SoundPlayForPlayer(SoundLink("DeathwingRumble", -1), c_maxPlayers, PlayerGroupAll(), 250.0, 0.0);
SoundPlayForPlayer(SoundLink("DeathwingQuestNearCompletion", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_KillLogWarningDetection4_Init () {
libHDEA_gt_KillLogWarningDetection4 = TriggerCreate("libHDEA_gt_KillLogWarningDetection4_Func");
TriggerAddEventUnitToken(libHDEA_gt_KillLogWarningDetection4, "DeathwingWarn4", null, "");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Kill Log - Warning Detection 5
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_KillLogWarningDetection5_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_hero;
int lv_player;
// Automatic Variable Declarations
playergroup auto2F6E5675_g;
// Variable Initialization
lv_hero = EventUnit();
// Actions
if (!runActions) {
return true;
}
auto2F6E5675_g = PlayerGroupAll();
lv_player = -1;
while (true) {
lv_player = PlayerGroupNextPlayer(auto2F6E5675_g, lv_player);
if (lv_player<0) { break; }
CameraShakeStart(lv_player, c_cameraPositionTarget, c_cameraDirectionXYZ, 0.2, 2.0, 100.0, 2.0);
}
SoundPlayForPlayer(SoundLink("DeathwingRumble", -1), c_maxPlayers, PlayerGroupAll(), 500.0, 0.0);
SoundPlayForPlayer(SoundLink("DeathwingCataclysmUnlock", -1), c_maxPlayers, PlayerGroupAll(), 500.0, 0.0);
libUIUI_gf_KillLogAnnounceQuestCompletion(UnitGetOwner(lv_hero), "DeathwingCataclysmQuestToken", 1.0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_KillLogWarningDetection5_Init () {
libHDEA_gt_KillLogWarningDetection5 = TriggerCreate("libHDEA_gt_KillLogWarningDetection5_Func");
TriggerAddEventUnitToken(libHDEA_gt_KillLogWarningDetection5, "DeathwingComplete", null, "");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Cataclysm - Hero Takedown
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingCataclysmHeroTakedown_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_localPlayer;
unit lv_deathwing;
// Automatic Variable Declarations
// Variable Initialization
lv_localPlayer = libGame_gf_HeroParticipatedInTakedownKillingPlayer();
// Conditions
if (testConds) {
if (!(((PlayerHero(libGame_gf_HeroParticipatedInTakedownKillingPlayer()) == "Deathwing") || (PlayerHero(libGame_gf_HeroParticipatedInTakedownKillingPlayer()) == "DeathwingWorldBreaker")))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_deathwing = libGame_gv_players[lv_localPlayer].lv_heroUnit;
UnitCreateEffectUnit(lv_deathwing, "DeathwingCataclysmQuestAddTokenHeroKill", lv_deathwing);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingCataclysmHeroTakedown_Init () {
libHDEA_gt_HeroDeathwingCataclysmHeroTakedown = TriggerCreate("libHDEA_gt_HeroDeathwingCataclysmHeroTakedown_Func");
libGame_gf_HeroParticipatedInTakedown(libHDEA_gt_HeroDeathwingCataclysmHeroTakedown);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Bellowing Roar - Camera Lock
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingBellowingRoarCameraLock_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_targetPlayer;
int lv_itPlayer;
fixed lv_vertOffset;
fixed lv_horizOffset;
// Automatic Variable Declarations
const int autoA6B68362_ae = libCore_gv_bALMaxPlayers;
const int autoA6B68362_ai = 1;
// 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());
lv_itPlayer = 1;
for ( ; ( (autoA6B68362_ai >= 0 && lv_itPlayer <= autoA6B68362_ae) || (autoA6B68362_ai < 0 && lv_itPlayer >= autoA6B68362_ae) ) ; lv_itPlayer += autoA6B68362_ai ) {
lv_vertOffset = 1.5;
lv_horizOffset = RandomFixed(-0.4, -0.6);
libUIUI_gf_UIFloatingCombatTextCreateTextTag(lv_itPlayer, 2.0, StringExternal("Param/Value/lib_HDEA_57B60470"), EventUnit(), 0.0, 0.0, libCore_ge_FloatingTextType_InsaneDamage, true);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingBellowingRoarCameraLock_Init () {
libHDEA_gt_HeroDeathwingBellowingRoarCameraLock = TriggerCreate("libHDEA_gt_HeroDeathwingBellowingRoarCameraLock_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingBellowingRoarCameraLock, false);
TriggerAddEventUnitBehaviorChange(libHDEA_gt_HeroDeathwingBellowingRoarCameraLock, null, "DeathwingBellowingRoarFear", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Respawn
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingRespawn_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitGetType(libGame_gf_HeroRespawnUnit()) == "HeroDeathwing"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(libGame_gf_HeroRespawnUnit(), "DeathwingAdamantineArmorPlatesApplySwitch", libGame_gf_HeroRespawnUnit());
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingRespawn_Init () {
libHDEA_gt_HeroDeathwingRespawn = TriggerCreate("libHDEA_gt_HeroDeathwingRespawn_Func");
libGame_gf_HeroRespawn(libHDEA_gt_HeroDeathwingRespawn);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Dragonflight - Periodic Roar
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_deathwing;
int lv_deathwingOwner;
// Automatic Variable Declarations
// Variable Initialization
lv_deathwing = EventUnit();
lv_deathwingOwner = UnitGetOwner(lv_deathwing);
// Actions
if (!runActions) {
return true;
}
Wait(1.0, c_timeGame);
while ((UnitBehaviorCount(lv_deathwing, "DeathwingDragonflightBuff") == 1)) {
UnitCreateEffectPoint(lv_deathwing, "DeathwingDragonflightPeriodicRoarDummy", CameraGetTarget(lv_deathwingOwner));
Wait(10.0, c_timeGame);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar_Init () {
libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar = TriggerCreate("libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar, false);
TriggerAddEventUnitBehaviorChange(libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar, null, "DeathwingDragonflightBuff", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Dragonflight - Modify Facing
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingDragonflightModifyFacing_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_deathwingUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_deathwingUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
// Actions
if (!runActions) {
return true;
}
UnitSetFacing(lv_deathwingUnit, 270.0, 0.0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingDragonflightModifyFacing_Init () {
libHDEA_gt_HeroDeathwingDragonflightModifyFacing = TriggerCreate("libHDEA_gt_HeroDeathwingDragonflightModifyFacing_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightModifyFacing, false);
TriggerAddEventPlayerEffectUsed(libHDEA_gt_HeroDeathwingDragonflightModifyFacing, c_playerAny, "DeathwingDragonflightTeleport");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Dragonflight - Overlay On
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingDragonflightOverlayOn_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(EventPlayer(), libUIUI_ge_FullscreenOverlayPriorities_Stasis, "Cutscenes\\GameUI_DeathwingOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingDragonflightOverlayOn_Init () {
libHDEA_gt_HeroDeathwingDragonflightOverlayOn = TriggerCreate("libHDEA_gt_HeroDeathwingDragonflightOverlayOn_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightOverlayOn, false);
TriggerAddEventUnitBehaviorChange(libHDEA_gt_HeroDeathwingDragonflightOverlayOn, null, "DeathwingDragonflightBuff", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Dragonflight - Overlay Off
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingDragonflightOverlayOff_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
if ((UnitHasBehavior2(EventUnit(), "HeroGenericIgnoreFullscreenOverlay") == false)) {
libUIUI_gf_FullscreenOverlayRemoveItemFromQueueForPlayer(EventPlayer(), "Cutscenes\\GameUI_DeathwingOverlay.StormCutscene", EventUnitBehavior());
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingDragonflightOverlayOff_Init () {
libHDEA_gt_HeroDeathwingDragonflightOverlayOff = TriggerCreate("libHDEA_gt_HeroDeathwingDragonflightOverlayOff_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightOverlayOff, false);
TriggerAddEventUnitBehaviorChange(libHDEA_gt_HeroDeathwingDragonflightOverlayOff, null, "DeathwingDragonflightBuff", c_unitBehaviorChangeDestroy);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Dragonflight - Camera Lock Interrupt
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_player = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);
// Actions
if (!runActions) {
return true;
}
PlayerOptionOverride(lv_player, "camerafollow", "0");
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt_Init () {
libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt = TriggerCreate("libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt, false);
TriggerAddEventPlayerEffectUsed(libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt, c_playerAny, "DeathwingDragonflightBuffApplyBehavior");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Dragonflight - Camera Lock Resume
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingDragonflightCameraLockResume_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_player = UnitGetOwner(EventUnit());
// Actions
if (!runActions) {
return true;
}
libGame_gv_players[lv_player].lv_cameraCameraLockInterrupt = false;
libGame_gf_CameraUpdateCameraForPlayer(lv_player);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingDragonflightCameraLockResume_Init () {
libHDEA_gt_HeroDeathwingDragonflightCameraLockResume = TriggerCreate("libHDEA_gt_HeroDeathwingDragonflightCameraLockResume_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightCameraLockResume, false);
TriggerAddEventUnitBehaviorChange(libHDEA_gt_HeroDeathwingDragonflightCameraLockResume, null, "DeathwingDragonflightBuff", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Dragonflight - Damage Taken Cooldown Modifier
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_deathwing;
// Automatic Variable Declarations
// Variable Initialization
lv_deathwing = EventUnit();
// Conditions
if (testConds) {
if (!(((UnitGetType(lv_deathwing) == "HeroDeathwing") && (UnitOrder(lv_deathwing, 0) != Order(AbilityCommand("DeathwingDragonflight", 0))) && (CatalogFieldValueGet(c_gameCatalogEffect, EventUnitDamageEffect(), "Flags[" + IntToString(20) + "]", c_playerAny) == "0")))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_deathwing, "DeathwingDragonflightSetCooldown", lv_deathwing);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier_Init () {
libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier = TriggerCreate("libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier, false);
TriggerAddEventUnitDamaged(libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier, null, c_unitDamageTypeAny, c_unitDamageEither, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Elementium Plating Shield Strength
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_caster;
int lv_casterPlayer;
fixed lv_casterMissingHealth;
fixed lv_shieldFraction;
fixed lv_shieldValue;
// Automatic Variable Declarations
// Variable Initialization
lv_caster = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_casterPlayer = UnitGetOwner(lv_caster);
lv_casterMissingHealth = (UnitGetPropertyFixed(lv_caster, c_unitPropLifeMax, c_unitPropCurrent) - UnitGetPropertyFixed(lv_caster, c_unitPropLife, c_unitPropCurrent));
lv_shieldFraction = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DeathwingElementiumPlatingMissingHealthRatioDummy", "XP", c_playerAny);
lv_shieldValue = (lv_casterMissingHealth * lv_shieldFraction);
// Conditions
if (testConds) {
if (!((lv_casterMissingHealth > 0.0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "DeathwingElementiumPlatingShield", "DamageResponse.ModifyLimit", lv_casterPlayer, lv_shieldValue);
UnitCreateEffectUnit(lv_caster, "DeathwingElementiumPlatingShieldApply", lv_caster);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength_Init () {
libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength = TriggerCreate("libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength, false);
TriggerAddEventPlayerEffectUsed(libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength, c_playerAny, "DeathwingElementiumPlatingInitialSet");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Burn Beneath My Shadow - Fort Or Keep Dies
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_dyingStructureUnit;
int lv_victimTeam;
int lv_structureType;
int lv_itPlayer;
unit lv_itUnit;
int lv_killingTeam;
// Automatic Variable Declarations
playergroup auto04166922_g;
// Variable Initialization
lv_dyingStructureUnit = EventUnit();
lv_structureType = libGame_ge_TownStructureTypes_None;
// Conditions
if (testConds) {
if (!((UnitTypeTestAttribute(UnitGetType(lv_dyingStructureUnit), c_unitAttributeStructure) == true))) {
return false;
}
if (!((UnitTypeTestAttribute(UnitGetType(lv_dyingStructureUnit), c_unitAttributeSummoned) == false))) {
return false;
}
if (!((libGame_gv_gameOver == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_structureType = libGame_gf_TownGetTownStructurePresetFromUnit(lv_dyingStructureUnit);
lv_victimTeam = libGame_gf_TeamNumberOfPlayer(UnitGetOwner(lv_dyingStructureUnit));
lv_killingTeam = libGame_gf_EnemyTeam(lv_victimTeam);
auto04166922_g = libGame_gv_teams[libGame_gf_EnemyTeam(lv_victimTeam)].lv_teamPlayerGroup;
lv_itPlayer = -1;
while (true) {
lv_itPlayer = PlayerGroupNextPlayer(auto04166922_g, lv_itPlayer);
if (lv_itPlayer<0) { break; }
if (((lv_structureType == libGame_ge_TownStructureTypes_TownHall) && ((UnitGetType(libGame_gv_players[lv_itPlayer].lv_heroUnit) == "HeroDeathwing") || (UnitGetType(libGame_gv_players[lv_itPlayer].lv_heroUnit) == "DeathwingDragonflightUnit")) && (PlayerHasTalent(lv_itPlayer, "DeathwingBurnBeneathMyShadow") == true))) {
lv_itUnit = libGame_gv_players[lv_itPlayer].lv_heroUnit;
UnitCreateEffectUnit(lv_itUnit, "DeathwingBurnBeneathMyShadowResetCataclysmCooldown", lv_itUnit);
}
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies_Init () {
libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies = TriggerCreate("libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies, false);
TriggerAddEventUnitDied(libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Conflagration - Remove Tracked Damage
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_player = UnitGetOwner(lv_unit);
// Conditions
if (testConds) {
if (!((lv_player > 0))) {
return false;
}
if (!((lv_player <= libCore_gv_bALMaxPlayers))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitSetCustomValue(lv_unit, 48, 0.0);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage_Init () {
libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage = TriggerCreate("libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage, false);
TriggerAddEventUnitBehaviorChange(libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage, null, "DeathwingConflagrationTracker", c_unitBehaviorChangeDestroy);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Conflagration - Unit Takes Damage
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage_Func (bool testConds, bool runActions) {
// Variable Declarations
fixed lv_damageAmount;
unit lv_attackingUnit;
int lv_attackingOwner;
unit lv_victimUnit;
int lv_victimOwner;
fixed lv_conflagrationRequiredDamageAmount;
// Automatic Variable Declarations
// Variable Initialization
lv_damageAmount = EventUnitDamageAbsorbed();
lv_attackingUnit = EventUnitDamageSourceUnit();
lv_attackingOwner = UnitGetOwner(EventUnitDamageSourceUnit());
lv_victimUnit = EventUnit();
lv_victimOwner = UnitGetOwner(lv_victimUnit);
lv_conflagrationRequiredDamageAmount = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "DeathwingConflagrationRequiredDamage", "Amount", lv_attackingOwner);
// Conditions
if (testConds) {
if (!((UnitGetOwner(lv_victimUnit) > 0))) {
return false;
}
if (!((UnitGetOwner(lv_victimUnit) <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!(((UnitGetType(lv_attackingUnit) == "HeroDeathwing") && (UnitHasBehavior2(lv_victimUnit, "DeathwingConflagrationTracker") == true) && (UnitBehaviorEffectPlayer(lv_victimUnit, "DeathwingConflagrationTracker", c_effectPlayerCaster, 0) == UnitGetOwner(lv_attackingUnit))))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitSetCustomValue(lv_victimUnit, 48, (UnitGetCustomValue(lv_victimUnit, 48) + lv_damageAmount));
if ((UnitGetCustomValue(lv_victimUnit, 48) >= lv_conflagrationRequiredDamageAmount)) {
UnitBehaviorAdd(lv_victimUnit, "DeathwingConflagrationDoT", lv_attackingUnit, 1);
UnitSetCustomValue(lv_victimUnit, 48, 0.0);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage_Init () {
libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage = TriggerCreate("libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage, false);
TriggerAddEventUnitDamaged(libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage, null, c_unitDamageTypeAny, c_unitDamageEither, "DeathwingMoltenFlameDamage");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Deathwing - Firestorm - Deathwing Landed
//--------------------------------------------------------------------------------------------------
bool libHDEA_gt_HeroDeathwingFirestormDeathwingLanded_Func (bool testConds, bool runActions) {
// Variable Declarations
point lv_landingLocation;
int lv_owner;
unit lv_caster;
// Automatic Variable Declarations
// Variable Initialization
lv_landingLocation = EventPlayerEffectUsedPoint(c_effectLocationTargetPoint);
lv_owner = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);
lv_caster = EventPlayerEffectUsedUnit(c_effectUnitCaster);
// Conditions
if (testConds) {
if (!(((PlayerHasTalent(lv_owner, "DeathwingFirestorm") == true) || (PlayerHasTalent(lv_owner, "DeathwingArrivalOfAGod") == true)))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
Wait(1.0, c_timeGame);
libHDEA_gf_HeroDeathwingFirestormGenerateFirestormatLocation(lv_landingLocation, lv_owner, lv_caster);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHDEA_gt_HeroDeathwingFirestormDeathwingLanded_Init () {
libHDEA_gt_HeroDeathwingFirestormDeathwingLanded = TriggerCreate("libHDEA_gt_HeroDeathwingFirestormDeathwingLanded_Func");
TriggerEnable(libHDEA_gt_HeroDeathwingFirestormDeathwingLanded, false);
TriggerAddEventPlayerEffectUsed(libHDEA_gt_HeroDeathwingFirestormDeathwingLanded, c_playerAny, "DeathwingDragonflightTeleport");
}
void libHDEA_InitTriggers () {
libHDEA_gt_KillLogWarningDetection_Init();
libHDEA_gt_KillLogWarningDetection2_Init();
libHDEA_gt_KillLogWarningDetection3_Init();
libHDEA_gt_KillLogWarningDetection4_Init();
libHDEA_gt_KillLogWarningDetection5_Init();
libHDEA_gt_HeroDeathwingCataclysmHeroTakedown_Init();
libHDEA_gt_HeroDeathwingBellowingRoarCameraLock_Init();
libHDEA_gt_HeroDeathwingRespawn_Init();
libHDEA_gt_HeroDeathwingDragonflightPeriodicRoar_Init();
libHDEA_gt_HeroDeathwingDragonflightModifyFacing_Init();
libHDEA_gt_HeroDeathwingDragonflightOverlayOn_Init();
libHDEA_gt_HeroDeathwingDragonflightOverlayOff_Init();
libHDEA_gt_HeroDeathwingDragonflightCameraLockInterrupt_Init();
libHDEA_gt_HeroDeathwingDragonflightCameraLockResume_Init();
libHDEA_gt_HeroDeathwingDragonflightDamageTakenCooldownModifier_Init();
libHDEA_gt_HeroDeathwingElementiumPlatingShieldStrength_Init();
libHDEA_gt_HeroDeathwingBurnBeneathMyShadowFortOrKeepDies_Init();
libHDEA_gt_HeroDeathwingConflagrationRemoveTrackedDamage_Init();
libHDEA_gt_HeroDeathwingConflagrationUnitTakesDamage_Init();
libHDEA_gt_HeroDeathwingFirestormDeathwingLanded_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHDEA_InitLib_completed = false;
void libHDEA_InitLib () {
if (libHDEA_InitLib_completed) {
return;
}
libHDEA_InitLib_completed = true;
libHDEA_InitLibraries();
libHDEA_InitVariables();
libHDEA_InitTriggers();
}