include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "LibHMEP_h"
//--------------------------------------------------------------------------------------------------
// Library: Mephisto
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHMEP_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
}
// Variable Initialization
bool libHMEP_InitVariables_completed = false;
void libHMEP_InitVariables () {
if (libHMEP_InitVariables_completed) {
return;
}
libHMEP_InitVariables_completed = true;
libHMEP_gv_heroMephistoLightningNovaStaticBarrierShieldFraction = CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "MephistoLightningNovaStaticBarrierShieldFractionDummy", "XP", 0);
}
// Functions
void libHMEP_gf_HeroMephistoIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHMEP_gv_heroMephistoTriggerRegistrationVariable += 1;
if ((libHMEP_gv_heroMephistoTriggerRegistrationVariable == 1)) {
TriggerEnable(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield, true);
TriggerEnable(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield, true);
}
}
void libHMEP_gf_HeroMephistoDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHMEP_gv_heroMephistoTriggerRegistrationVariable -= 1;
if ((libHMEP_gv_heroMephistoTriggerRegistrationVariable < 0)) {
libHMEP_gv_heroMephistoTriggerRegistrationVariable = 0;
}
if ((libHMEP_gv_heroMephistoTriggerRegistrationVariable == 0)) {
TriggerEnable(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield, false);
TriggerEnable(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield, false);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Mephisto - Lightning Nova - Static Barrier - Update Shield
//--------------------------------------------------------------------------------------------------
bool libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_unit;
int lv_owner;
unit lv_mephistoUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_unit = EventUnit();
lv_owner = EventUnitDamageSourcePlayer();
lv_mephistoUnit = libGame_gv_players[lv_owner].lv_heroUnit;
// Conditions
if (testConds) {
if (!((UnitTypeTestAttribute(UnitGetType(lv_unit), c_unitAttributeHeroic) == true))) {
return false;
}
if (!((PlayerHasTalent(lv_owner, "MephistoLightningNovaStaticBarrier") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHMEP_gv_heroMephistoLightningNovaStaticBarrierShieldValue[lv_owner] += ((EventUnitDamageAmount() + EventUnitDamageBehaviorShield()) * libHMEP_gv_heroMephistoLightningNovaStaticBarrierShieldFraction);
CatalogFieldValueSetFixed(c_gameCatalogBehavior, "MephistoLightningNovaStaticBarrierShield", "DamageResponse.ModifyLimit", lv_owner, libHMEP_gv_heroMephistoLightningNovaStaticBarrierShieldValue[lv_owner]);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield_Init () {
libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield = TriggerCreate("libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield_Func");
TriggerEnable(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield, false);
TriggerAddEventUnitDamaged(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield, null, c_unitDamageTypeAbility, c_unitDamageEither, "MephistoLightningNovaDamage");
TriggerAddEventUnitDamaged(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield, null, c_unitDamageTypeAbility, c_unitDamageEither, "MephistoLightningNovaFuriousSparkDamage");
TriggerAddEventUnitDamaged(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield, null, c_unitDamageTypeAbility, c_unitDamageEither, "MephistoLightningNovaStaticFieldDamage");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Mephisto - Lightning Nova - Static Barrier - Apply Shield
//--------------------------------------------------------------------------------------------------
bool libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_mephistoUnit;
int lv_mephistoPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_mephistoUnit = EventUnit();
lv_mephistoPlayer = UnitGetOwner(lv_mephistoUnit);
// Conditions
if (testConds) {
if (!((PlayerHasTalent(lv_mephistoPlayer, "MephistoLightningNovaStaticBarrier") == true))) {
return false;
}
if (!((libHMEP_gv_heroMephistoLightningNovaStaticBarrierShieldValue[lv_mephistoPlayer] > 0.0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateEffectUnit(lv_mephistoUnit, "MephistoLightningNovaStaticBarrierShieldApplyBehavior", lv_mephistoUnit);
libHMEP_gv_heroMephistoLightningNovaStaticBarrierShieldValue[lv_mephistoPlayer] = 0.0;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield_Init () {
libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield = TriggerCreate("libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield_Func");
TriggerEnable(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield, false);
TriggerAddEventUnitBehaviorChange(libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield, null, "MephistoLightningNovaCasterBehavior", c_unitBehaviorChangeDeactivate);
}
void libHMEP_InitTriggers () {
libHMEP_gt_HeroMephistoLightningNovaStaticBarrierUpdateShield_Init();
libHMEP_gt_HeroMephistoLightningNovaStaticBarrierApplyShield_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHMEP_InitLib_completed = false;
void libHMEP_InitLib () {
if (libHMEP_InitLib_completed) {
return;
}
libHMEP_InitLib_completed = true;
libHMEP_InitLibraries();
libHMEP_InitVariables();
libHMEP_InitTriggers();
}