include "TriggerLibs/NativeLib"
include "TriggerLibs/GameLib"
include "LibHAND_h"
//--------------------------------------------------------------------------------------------------
// Library: Anduin
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHAND_InitLibraries () {
libNtve_InitVariables();
libGame_InitVariables();
}
// Variable Initialization
bool libHAND_InitVariables_completed = false;
void libHAND_InitVariables () {
if (libHAND_InitVariables_completed) {
return;
}
libHAND_InitVariables_completed = true;
libHAND_gv_heroAnduinBlessedRecoveryConstant = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "AnduinBlessedRecoveryThreshold", "Amount", 0);
}
// Functions
void libHAND_gf_HeroAnduinIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHAND_gv_heroAnduinTriggerRegistrationVariable += 1;
if ((libHAND_gv_heroAnduinTriggerRegistrationVariable == 1)) {
TriggerEnable(libHAND_gt_HeroAnduinLeapofFaithCameraLock, true);
TriggerEnable(libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck, true);
TriggerEnable(libHAND_gt_HeroAnduinLightofStormwindCDR, true);
}
}
void libHAND_gf_HeroAnduinDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHAND_gv_heroAnduinTriggerRegistrationVariable -= 1;
if ((libHAND_gv_heroAnduinTriggerRegistrationVariable < 0)) {
libHAND_gv_heroAnduinTriggerRegistrationVariable = 0;
}
if ((libHAND_gv_heroAnduinTriggerRegistrationVariable == 0)) {
TriggerEnable(libHAND_gt_HeroAnduinLeapofFaithCameraLock, false);
TriggerEnable(libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck, false);
TriggerEnable(libHAND_gt_HeroAnduinLightofStormwindCDR, false);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Anduin - Leap of Faith Camera Lock
//--------------------------------------------------------------------------------------------------
bool libHAND_gt_HeroAnduinLeapofFaithCameraLock_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_player;
// Automatic Variable Declarations
// Variable Initialization
lv_player = UnitGetOwner(EventUnit());
// Conditions
if (testConds) {
if (!(((UnitGetOwner(EventUnit()) >= 1) && (UnitGetOwner(EventUnit()) <= 10) && (EventUnit() == libGame_gv_players[lv_player].lv_heroUnit) && (UnitIsAlive(EventUnit()) == true)))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libGame_gf_PlayerHeroDisplacementCameraLock(EventUnit(), EventUnitBehavior());
return true;
}
//--------------------------------------------------------------------------------------------------
void libHAND_gt_HeroAnduinLeapofFaithCameraLock_Init () {
libHAND_gt_HeroAnduinLeapofFaithCameraLock = TriggerCreate("libHAND_gt_HeroAnduinLeapofFaithCameraLock_Func");
TriggerEnable(libHAND_gt_HeroAnduinLeapofFaithCameraLock, false);
TriggerAddEventUnitBehaviorChange(libHAND_gt_HeroAnduinLeapofFaithCameraLock, null, "AnduinLeapOfFaithTargetUnstoppable", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Anduin - Blessed Recovery Damage Check
//--------------------------------------------------------------------------------------------------
bool libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_player;
fixed lv_damageTaken;
fixed lv_totalHealth;
fixed lv_percentDamageTaken;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_player = UnitGetOwner(lv_unit);
// Conditions
if (testConds) {
if (!((UnitGetType(lv_unit) == "HeroAnduin"))) {
return false;
}
if (!((PlayerHasTalent(lv_player, "AnduinBlessedRecovery") == true))) {
return false;
}
if (!((PlayerGetCooldown(lv_player, "Abil/AnduinBlessedRecovery") == 0.0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_damageTaken = EventUnitDamageAmount();
lv_totalHealth = UnitGetPropertyFixed(lv_unit, c_unitPropLifeMax, c_unitPropCurrent);
lv_percentDamageTaken = (lv_damageTaken/lv_totalHealth);
if ((lv_percentDamageTaken > libHAND_gv_heroAnduinBlessedRecoveryConstant)) {
UnitBehaviorAdd(lv_unit, "AnduinBlessedRecoveryHoT", lv_unit, 1);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck_Init () {
libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck = TriggerCreate("libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck_Func");
TriggerEnable(libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck, false);
TriggerAddEventUnitDamaged(libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck, null, c_unitDamageTypeAny, c_unitDamageEither, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Anduin - Light of Stormwind CDR
//--------------------------------------------------------------------------------------------------
bool libHAND_gt_HeroAnduinLightofStormwindCDR_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 (!((UnitGetType(lv_unit) == "HeroAnduin"))) {
return false;
}
if (!((PlayerHasTalent(lv_player, "AnduinHolyWordSalvationLightOfStormwind") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_unit, "AnduinHolyWordSalvationLightOfStormwindCooldownReduction", lv_unit);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHAND_gt_HeroAnduinLightofStormwindCDR_Init () {
libHAND_gt_HeroAnduinLightofStormwindCDR = TriggerCreate("libHAND_gt_HeroAnduinLightofStormwindCDR_Func");
TriggerEnable(libHAND_gt_HeroAnduinLightofStormwindCDR, false);
TriggerAddEventUnitAbility(libHAND_gt_HeroAnduinLightofStormwindCDR, null, AbilityCommand("AnduinHolyWordSalvation", 0), c_abilEffectStageFinish, false);
}
void libHAND_InitTriggers () {
libHAND_gt_HeroAnduinLeapofFaithCameraLock_Init();
libHAND_gt_HeroAnduinBlessedRecoveryDamageCheck_Init();
libHAND_gt_HeroAnduinLightofStormwindCDR_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHAND_InitLib_completed = false;
void libHAND_InitLib () {
if (libHAND_InitLib_completed) {
return;
}
libHAND_InitLib_completed = true;
libHAND_InitLibraries();
libHAND_InitVariables();
libHAND_InitTriggers();
}