include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/AILib"
include "TriggerLibs/UILib"
include "TriggerLibs/GameDataHelperLib"
include "LibHIMP_h"
//--------------------------------------------------------------------------------------------------
// Library: Imperius
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libHIMP_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libAIAI_InitVariables();
libUIUI_InitVariables();
libGDHL_InitVariables();
}
// Variable Initialization
bool libHIMP_InitVariables_completed = false;
void libHIMP_InitVariables () {
if (libHIMP_InitVariables_completed) {
return;
}
libHIMP_InitVariables_completed = true;
}
// Functions
void libHIMP_gf_HeroImperiusIncrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHIMP_gv_heroImperiusTriggerRegistrationVariable += 1;
if ((libHIMP_gv_heroImperiusTriggerRegistrationVariable == 1)) {
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment, true);
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler, true);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow, true);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide, true);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl, true);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport, true);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport, true);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration, true);
TriggerEnable(libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText, true);
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc, true);
}
}
void libHIMP_gf_HeroImperiusDecrementHeroCountFunction () {
// Automatic Variable Declarations
// Implementation
libHIMP_gv_heroImperiusTriggerRegistrationVariable -= 1;
if ((libHIMP_gv_heroImperiusTriggerRegistrationVariable < 0)) {
libHIMP_gv_heroImperiusTriggerRegistrationVariable = 0;
}
if ((libHIMP_gv_heroImperiusTriggerRegistrationVariable == 0)) {
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment, false);
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler, false);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow, false);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide, false);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl, false);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport, false);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport, false);
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration, false);
TriggerEnable(libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText, false);
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc, false);
}
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Celestial Charge - Target Unit Alignment
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_imperiusUnit;
fixed lv_imperiusUnitFacing;
fixed lv_imperiusUnitFacing360;
point lv_imperiusUnitPoint;
unit lv_targetUnit;
point lv_targetUnitPoint;
fixed lv_iTDistance;
fixed lv_relativeAngle;
fixed lv_relativeAngle360;
fixed lv_iTAngle;
fixed lv_iADistance;
fixed lv_minSkewerDistance;
fixed lv_maxSkewerDistance;
point lv_alignmentPoint;
// Automatic Variable Declarations
// Variable Initialization
lv_imperiusUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_imperiusUnitFacing = UnitGetFacing(lv_imperiusUnit);
lv_imperiusUnitPoint = UnitGetPosition(lv_imperiusUnit);
lv_targetUnit = EventPlayerEffectUsedUnit(c_effectUnitTarget);
lv_targetUnitPoint = UnitGetPosition(lv_targetUnit);
// Conditions
if (testConds) {
if (!((UnitIsAlive(lv_targetUnit) == true))) {
return false;
}
if (!((UnitHasBehavior2(lv_targetUnit, "ImperiusCelestialChargeChannelStunDebuff") == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
lv_minSkewerDistance = 1.5;
lv_maxSkewerDistance = 4.5;
lv_iTDistance = DistanceBetweenPoints(lv_imperiusUnitPoint, lv_targetUnitPoint);
lv_relativeAngle = AngleBetweenPoints(lv_imperiusUnitPoint, lv_targetUnitPoint);
if ((lv_imperiusUnitFacing >= 0.0)) {
lv_imperiusUnitFacing360 = lv_imperiusUnitFacing;
}
else {
lv_imperiusUnitFacing360 = (lv_imperiusUnitFacing + 360.0);
}
if ((lv_relativeAngle >= 0.0)) {
lv_relativeAngle360 = lv_relativeAngle;
}
else {
lv_relativeAngle360 = (lv_relativeAngle + 360.0);
}
lv_iTAngle = MinF(AbsF((lv_imperiusUnitFacing360 - lv_relativeAngle360)), AbsF(((lv_imperiusUnitFacing360 + lv_relativeAngle360) - 360.0)));
lv_iADistance = (Cos(lv_iTAngle) * lv_iTDistance);
if (((lv_iADistance >= lv_minSkewerDistance) && (lv_iADistance <= lv_maxSkewerDistance))) {
lv_alignmentPoint = PointWithOffsetPolar(lv_imperiusUnitPoint, lv_iADistance, lv_imperiusUnitFacing);
}
else {
if ((lv_iADistance > lv_maxSkewerDistance)) {
lv_alignmentPoint = PointWithOffsetPolar(lv_imperiusUnitPoint, lv_maxSkewerDistance, lv_imperiusUnitFacing);
}
else {
lv_alignmentPoint = PointWithOffsetPolar(lv_imperiusUnitPoint, lv_minSkewerDistance, lv_imperiusUnitFacing);
}
}
UnitCreateEffectPoint(lv_targetUnit, "ImperiusCelestialChargeAlignmentLaunchMissile", lv_alignmentPoint);
if (((UnitGetType(lv_targetUnit) == "HeroFalstad") || (UnitGetType(lv_targetUnit) == "HeroFaerieDragon"))) {
while ((UnitHasBehavior2(lv_targetUnit, "ImperiusCelestialChargeChannelStunDebuff") == true)) {
Wait(0.1873, c_timeGame);
}
libGDHL_gf_RestoreHeight(lv_targetUnit);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment_Init () {
libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment = TriggerCreate("libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment_Func");
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment, false);
TriggerAddEventPlayerEffectUsed(libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment, c_playerAny, "ImperiusCelestialChargeChannelStunDebuffApplyBehavior");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Celestial Charge - Time Stop Handler
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_targetUnit;
unit lv_imperiusUnit;
// Automatic Variable Declarations
unitgroup autoB6DFFF06_g;
int autoB6DFFF06_u;
// Variable Initialization
lv_targetUnit = EventUnit();
// Conditions
if (testConds) {
if (!((UnitIsAlive(lv_targetUnit) == true))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
if ((UnitHasBehavior2(lv_targetUnit, "ImperiusCelestialChargeCasterChannelBuff") == true)) {
lv_imperiusUnit = lv_targetUnit;
autoB6DFFF06_g = UnitGetTrackedUnitGroup(lv_imperiusUnit, "ImperiusCelestialChargeUnitTracker");
autoB6DFFF06_u = UnitGroupCount(autoB6DFFF06_g, c_unitCountAll);
for (;; autoB6DFFF06_u -= 1) {
lv_targetUnit = UnitGroupUnitFromEnd(autoB6DFFF06_g, autoB6DFFF06_u);
if (lv_targetUnit == null) { break; }
if ((((UnitHasBehaviorWithCategoryFlag(lv_targetUnit, c_behaviorCategoryTimeStop) == true) && (UnitHasBehaviorWithCategoryFlag(lv_imperiusUnit, c_behaviorCategoryTimeStop) == false)) || ((UnitHasBehaviorWithCategoryFlag(lv_targetUnit, c_behaviorCategoryTimeStop) == false) && (UnitHasBehaviorWithCategoryFlag(lv_imperiusUnit, c_behaviorCategoryTimeStop) == true)))) {
UnitBehaviorRemove(lv_targetUnit, "ImperiusCelestialChargeChannelStunDebuff", c_unitBehaviorCountAll);
}
}
}
if ((UnitHasBehavior2(lv_targetUnit, "ImperiusCelestialChargeChannelStunDebuff") == true)) {
lv_imperiusUnit = UnitBehaviorEffectUnit(lv_targetUnit, "ImperiusCelestialChargeChannelStunDebuff", c_effectUnitCaster, 0);
if ((((UnitHasBehaviorWithCategoryFlag(lv_targetUnit, c_behaviorCategoryTimeStop) == true) && (UnitHasBehaviorWithCategoryFlag(lv_imperiusUnit, c_behaviorCategoryTimeStop) == false)) || ((UnitHasBehaviorWithCategoryFlag(lv_targetUnit, c_behaviorCategoryTimeStop) == false) && (UnitHasBehaviorWithCategoryFlag(lv_imperiusUnit, c_behaviorCategoryTimeStop) == true)))) {
UnitBehaviorRemove(lv_targetUnit, "ImperiusCelestialChargeChannelStunDebuff", c_unitBehaviorCountAll);
}
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler_Init () {
libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler = TriggerCreate("libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler_Func");
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler, false);
TriggerAddEventUnitBehaviorChangeFromCategory(libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler, null, c_behaviorCategoryTimeStop, c_unitBehaviorChangeCreate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Wrath Of The Angiris - Overlay Show
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_wrathOfTheAngirisUnit;
int lv_wrathOfTheAngirisPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_wrathOfTheAngirisUnit = EventUnit();
lv_wrathOfTheAngirisPlayer = UnitGetOwner(lv_wrathOfTheAngirisUnit);
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(lv_wrathOfTheAngirisUnit, "HeroGenericIgnoreFullscreenOverlay") == false))) {
return false;
}
if (!((lv_wrathOfTheAngirisUnit == libGame_gv_players[lv_wrathOfTheAngirisPlayer].lv_heroUnit))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libUIUI_gf_FullscreenOverlayAddItemForPlayer(lv_wrathOfTheAngirisPlayer, libUIUI_ge_FullscreenOverlayPriorities_Stasis, "Cutscenes\\GameUI_ImperiusOverlay.StormCutscene", EventUnitBehavior());
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow_Init () {
libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow = TriggerCreate("libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow_Func");
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow, false);
TriggerAddEventUnitBehaviorChange(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow, null, "ImperiusWrathOfTheAngirisTargetRemovedStasis", c_unitBehaviorChangeActivate);
TriggerAddEventUnitBehaviorChange(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow, null, "ImperiusWrathOfTheAngirisCasterRemovedStasis", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Wrath Of The Angiris - Overlay Hide
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_wrathOfTheAngirisUnit;
int lv_wrathOfTheAngirisPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_wrathOfTheAngirisUnit = EventUnit();
lv_wrathOfTheAngirisPlayer = UnitGetOwner(lv_wrathOfTheAngirisUnit);
// Actions
if (!runActions) {
return true;
}
Wait(0.125, c_timeGame);
libUIUI_gf_FullscreenOverlayRemoveItemFromQueueForPlayer(lv_wrathOfTheAngirisPlayer, "Cutscenes\\GameUI_ImperiusOverlay.StormCutscene", EventUnitBehavior());
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide_Init () {
libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide = TriggerCreate("libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide_Func");
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide, false);
TriggerAddEventUnitBehaviorChange(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide, null, "ImperiusWrathOfTheAngirisTargetRemovedStasis", c_unitBehaviorChangeDeactivate);
TriggerAddEventUnitBehaviorChange(libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide, null, "ImperiusWrathOfTheAngirisCasterRemovedStasis", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Wrath Of The Angiris - AI Control
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_wrathOfTheAngirisCursorUnit;
int lv_imperiusPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_wrathOfTheAngirisCursorUnit = EventUnitCreatedUnit();
lv_imperiusPlayer = UnitGetOwner(lv_wrathOfTheAngirisCursorUnit);
// Conditions
if (testConds) {
if (!((libAIAI_gf_HeroAIIsAIEnabledForPlayer(lv_imperiusPlayer) == true))) {
return false;
}
if (!((UnitGetType(EventUnitCreatedUnit()) == "ImperiusWrathOfTheAngirisCursorUnit"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitCreateAIThinkTree(lv_wrathOfTheAngirisCursorUnit);
while ((libAIAI_gf_HeroAIIsAIEnabledForPlayer(lv_imperiusPlayer) == true) && (UnitIsAlive(lv_wrathOfTheAngirisCursorUnit) == true)) {
Wait(0.5, c_timeGame);
}
UnitDestroyAIThinkTree(lv_wrathOfTheAngirisCursorUnit);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl_Init () {
libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl = TriggerCreate("libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl_Func");
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl, false);
TriggerAddEventUnitCreated(libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl, null, null, null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Wrath Of The Angiris - Imperius Teleport
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_wrathOfTheAngirisCursorUnit;
int lv_wrathOfTheAngirisImperiusPlayer;
unit lv_wrathOfTheAngirisImperiusUnit;
// Automatic Variable Declarations
// Variable Initialization
lv_wrathOfTheAngirisCursorUnit = EventUnit();
lv_wrathOfTheAngirisImperiusPlayer = UnitGetOwner(lv_wrathOfTheAngirisCursorUnit);
lv_wrathOfTheAngirisImperiusUnit = libGame_gv_players[lv_wrathOfTheAngirisImperiusPlayer].lv_heroUnit;
// Actions
if (!runActions) {
return true;
}
while ((UnitIsAlive(lv_wrathOfTheAngirisCursorUnit) == true) && (UnitHasBehavior2(lv_wrathOfTheAngirisImperiusUnit, "ImperiusWrathOfTheAngirisCasterRemovedStasis") == true)) {
UnitSetPosition(lv_wrathOfTheAngirisImperiusUnit, UnitGetPosition(lv_wrathOfTheAngirisCursorUnit), true);
Wait(0.0625, c_timeGame);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport_Init () {
libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport = TriggerCreate("libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport_Func");
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport, false);
TriggerAddEventUnitBehaviorChange(libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport, null, "ImperiusWrathOfTheAngirisCursorUnitTimedLife", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Wrath Of The Angiris - Target Teleport
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_wrathOfTheAngirisTargetUnit;
int lv_wrathOfTheAngirisTargetPlayer;
unit lv_wrathOfTheAngirisImperiusUnit;
int lv_wrathOfTheAngirisImperiusPlayer;
// Automatic Variable Declarations
// Variable Initialization
lv_wrathOfTheAngirisTargetUnit = EventUnit();
lv_wrathOfTheAngirisTargetPlayer = UnitGetOwner(lv_wrathOfTheAngirisTargetUnit);
lv_wrathOfTheAngirisImperiusUnit = UnitBehaviorEffectUnit(lv_wrathOfTheAngirisTargetUnit, "ImperiusWrathOfTheAngirisTargetRemovedStasis", c_effectUnitCaster, 0);
lv_wrathOfTheAngirisImperiusPlayer = UnitGetOwner(lv_wrathOfTheAngirisImperiusUnit);
// Actions
if (!runActions) {
return true;
}
if ((UnitHasBehavior2(lv_wrathOfTheAngirisTargetUnit, "ImperiusWrathOfTheAngirisTargetRemovedStasis") == true) && (lv_wrathOfTheAngirisTargetUnit == libGame_gv_players[lv_wrathOfTheAngirisTargetPlayer].lv_heroUnit)) {
libGame_gf_PlayerHeroDisplacementCameraLock(lv_wrathOfTheAngirisTargetUnit, "ImperiusWrathOfTheAngirisTargetRemovedStasis");
}
while ((UnitHasBehavior2(lv_wrathOfTheAngirisTargetUnit, "ImperiusWrathOfTheAngirisTargetRemovedStasis") == true) && (UnitBehaviorDuration(lv_wrathOfTheAngirisTargetUnit, "ImperiusWrathOfTheAngirisTargetRemovedStasis") > 0.125)) {
UnitSetPosition(lv_wrathOfTheAngirisTargetUnit, UnitGetPosition(lv_wrathOfTheAngirisImperiusUnit), true);
Wait(0.0625, c_timeGame);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport_Init () {
libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport = TriggerCreate("libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport_Func");
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport, false);
TriggerAddEventUnitBehaviorChange(libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport, null, "ImperiusWrathOfTheAngirisTargetRemovedStasis", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Wrath Of The Angiris - Valorouos Brand Store Duration
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration_Func (bool testConds, bool runActions) {
// Variable Declarations
int lv_wrathoftheAngirisPlayer;
int lv_valorousBrandIterator;
int lv_valorousBrandStackCount;
fixed lv_valorousBrandIteratorDuration;
string lv_behaviorLink;
string lv_behaviorApplySetLink;
string lv_behaviorApplyLink;
// Automatic Variable Declarations
int auto5288808B_ae;
const int auto5288808B_ai = 1;
int auto6B893CD3_ae;
const int auto6B893CD3_ai = 1;
int autoC8D28ECB_ae;
const int autoC8D28ECB_ai = 1;
// Variable Initialization
lv_wrathoftheAngirisPlayer = UnitBehaviorEffectPlayer(EventUnit(), EventUnitBehavior(), c_effectPlayerCaster, 0);
// Actions
if (!runActions) {
return true;
}
lv_behaviorLink = "ImperiusValorousBrandCelestialChargeComboPointBehavior";
lv_behaviorApplySetLink = "ImperiusValorousBrandApplyCelestialChargeWrathOfTheAngirisMarkSet";
lv_behaviorApplyLink = "ImperiusValorousBrandComboPointCelestialChargeWrathOfTheAngirisApplyBehavior";
if ((UnitHasBehavior2(EventUnit(), lv_behaviorLink) == true)) {
lv_valorousBrandStackCount = UnitBehaviorCount(EventUnit(), lv_behaviorLink);
lv_valorousBrandIterator = 0;
auto5288808B_ae = lv_valorousBrandStackCount;
lv_valorousBrandIterator = 0;
for ( ; ( (auto5288808B_ai >= 0 && lv_valorousBrandIterator <= auto5288808B_ae) || (auto5288808B_ai < 0 && lv_valorousBrandIterator >= auto5288808B_ae) ) ; lv_valorousBrandIterator += auto5288808B_ai ) {
if ((UnitBehaviorEffectPlayer(EventUnit(), lv_behaviorLink, c_effectPlayerCaster, lv_valorousBrandIterator) == lv_wrathoftheAngirisPlayer)) {
lv_valorousBrandIteratorDuration = UnitBehaviorDuration(EventUnit(), lv_behaviorLink);
if ((lv_valorousBrandIteratorDuration >= 1.0)) {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 1.0);
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplyLink, "Duration", lv_wrathoftheAngirisPlayer, (lv_valorousBrandIteratorDuration - 0.625));
break;
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
break;
}
if ((lv_valorousBrandIteratorDuration == lv_valorousBrandStackCount)) {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
}
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
lv_behaviorLink = "ImperiusValorousBrandSolarionsFireComboPointBehavior";
lv_behaviorApplySetLink = "ImperiusValorousBrandApplySolarionsFireWrathOfTheAngirisMarkSet";
lv_behaviorApplyLink = "ImperiusValorousBrandComboPointSolarionsFireWrathOfTheAngirisApplyBehavior";
if ((UnitHasBehavior2(EventUnit(), lv_behaviorLink) == true)) {
lv_valorousBrandStackCount = UnitBehaviorCount(EventUnit(), lv_behaviorLink);
lv_valorousBrandIterator = 0;
auto6B893CD3_ae = lv_valorousBrandStackCount;
lv_valorousBrandIterator = 0;
for ( ; ( (auto6B893CD3_ai >= 0 && lv_valorousBrandIterator <= auto6B893CD3_ae) || (auto6B893CD3_ai < 0 && lv_valorousBrandIterator >= auto6B893CD3_ae) ) ; lv_valorousBrandIterator += auto6B893CD3_ai ) {
if ((UnitBehaviorEffectPlayer(EventUnit(), lv_behaviorLink, c_effectPlayerCaster, lv_valorousBrandIterator) == lv_wrathoftheAngirisPlayer)) {
lv_valorousBrandIteratorDuration = UnitBehaviorDuration(EventUnit(), lv_behaviorLink);
if ((lv_valorousBrandIteratorDuration >= 1.0)) {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 1.0);
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplyLink, "Duration", lv_wrathoftheAngirisPlayer, (lv_valorousBrandIteratorDuration - 0.625));
break;
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
break;
}
if ((lv_valorousBrandIteratorDuration == lv_valorousBrandStackCount)) {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
}
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
lv_behaviorLink = "ImperiusValorousBrandMoltenArmorComboPointBehavior";
lv_behaviorApplySetLink = "ImperiusValorousBrandApplyMoltenArmorWrathOfTheAngirisMarkSet";
lv_behaviorApplyLink = "ImperiusValorousBrandComboPointMoltenArmorWrathOfTheAngirisApplyBehavior";
if ((UnitHasBehavior2(EventUnit(), lv_behaviorLink) == true)) {
lv_valorousBrandStackCount = UnitBehaviorCount(EventUnit(), lv_behaviorLink);
lv_valorousBrandIterator = 0;
autoC8D28ECB_ae = lv_valorousBrandStackCount;
lv_valorousBrandIterator = 0;
for ( ; ( (autoC8D28ECB_ai >= 0 && lv_valorousBrandIterator <= autoC8D28ECB_ae) || (autoC8D28ECB_ai < 0 && lv_valorousBrandIterator >= autoC8D28ECB_ae) ) ; lv_valorousBrandIterator += autoC8D28ECB_ai ) {
if ((UnitBehaviorEffectPlayer(EventUnit(), lv_behaviorLink, c_effectPlayerCaster, lv_valorousBrandIterator) == lv_wrathoftheAngirisPlayer)) {
lv_valorousBrandIteratorDuration = UnitBehaviorDuration(EventUnit(), lv_behaviorLink);
if ((lv_valorousBrandIteratorDuration >= 1.0)) {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 1.0);
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplyLink, "Duration", lv_wrathoftheAngirisPlayer, (lv_valorousBrandIteratorDuration - 0.625));
break;
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
break;
}
if ((lv_valorousBrandIteratorDuration == lv_valorousBrandStackCount)) {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
}
}
else {
CatalogFieldValueSetFixed(c_gameCatalogEffect, lv_behaviorApplySetLink, "Chance", lv_wrathoftheAngirisPlayer, 0.0);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration_Init () {
libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration = TriggerCreate("libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration_Func");
TriggerEnable(libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration, false);
TriggerAddEventUnitBehaviorChange(libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration, null, "ImperiusWrathOfTheAngirisTargetImpactStasis", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Unrelenting Descent Floating Text
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_imperiusUnit;
int lv_imperiusPlayer;
int lv_amountHealed;
// Automatic Variable Declarations
// Variable Initialization
lv_imperiusUnit = EventPlayerEffectUsedUnit(c_effectUnitCaster);
lv_imperiusPlayer = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);
lv_amountHealed = EventPlayerEffectUsedAmountInt(c_effectAmountHealed, false);
// Conditions
if (testConds) {
if (!((lv_imperiusPlayer <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((lv_imperiusPlayer != 0))) {
return false;
}
if (!((lv_amountHealed != 0))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
Wait(0.0625, c_timeGame);
FloatingCombatElementCreateTextAtUnit(PlayerGroupSingle(lv_imperiusPlayer), "FloatingCombatElements/FloatingCombatNormalAmountReceived", "HealState", lv_imperiusUnit, IntToText(lv_amountHealed), libNtve_gv_FloatingCombatTextAutoRandomSeed);
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText_Init () {
libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText = TriggerCreate("libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText_Func");
TriggerEnable(libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText, false);
TriggerAddEventPlayerEffectUsed(libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText, c_playerAny, "ImperiusWrathOfTheAngirisUnrelentingDescentCreateHealer");
}
//--------------------------------------------------------------------------------------------------
// Trigger: Hero - Imperius - Celestial Charge - Molten Armor Order Proc
//--------------------------------------------------------------------------------------------------
bool libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc_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 (!((libHIMP_gv_heroImperiusCelestialChargeMoltenArmorOrderProcBoolean[lv_player] == false))) {
return false;
}
if (!((lv_player > 0))) {
return false;
}
if (!((lv_player <= libCore_gv_bALMaxPlayers))) {
return false;
}
if (!((UnitFilterMatch(lv_unit, lv_player, UnitFilter(0, 0, (1 << c_targetFilterMissile) | (1 << c_targetFilterItem), (1 << (c_targetFilterStasis - 32)) | (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterSilenced - 32)))) == true))) {
return false;
}
if (!((UnitBehaviorCount(lv_unit, "ImperiusCelestialChargeCasterMarker") == 1))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libHIMP_gv_heroImperiusCelestialChargeMoltenArmorOrderProcBoolean[lv_player] = true;
UnitCreateEffectUnitWithSource(lv_unit, "ImperiusMoltenArmorCelestialChargeInitialSet", lv_unit, c_gameCatalogAbil, "ImperiusMoltenArmor");
Wait(0.0625, c_timeGame);
libHIMP_gv_heroImperiusCelestialChargeMoltenArmorOrderProcBoolean[lv_player] = false;
return true;
}
//--------------------------------------------------------------------------------------------------
void libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc_Init () {
libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc = TriggerCreate("libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc_Func");
TriggerEnable(libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc, false);
TriggerAddEventUnitOrder(libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc, null, AbilityCommand("ImperiusMoltenArmor", 0));
}
void libHIMP_InitTriggers () {
libHIMP_gt_HeroImperiusCelestialChargeTargetUnitAlignment_Init();
libHIMP_gt_HeroImperiusCelestialChargeTimeStopHandler_Init();
libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayShow_Init();
libHIMP_gt_HeroImperiusWrathOfTheAngirisOverlayHide_Init();
libHIMP_gt_HeroImperiusWrathOfTheAngirisAIControl_Init();
libHIMP_gt_HeroImperiusWrathOfTheAngirisImperiusTeleport_Init();
libHIMP_gt_HeroImperiusWrathOfTheAngirisTargetTeleport_Init();
libHIMP_gt_HeroImperiusWrathOfTheAngirisValorousBrandStoreDuration_Init();
libHIMP_gt_HeroImperiusUnrelentingDescentFloatingText_Init();
libHIMP_gt_HeroImperiusCelestialChargeMoltenArmorOrderProc_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libHIMP_InitLib_completed = false;
void libHIMP_InitLib () {
if (libHIMP_InitLib_completed) {
return;
}
libHIMP_InitLib_completed = true;
libHIMP_InitLibraries();
libHIMP_InitVariables();
libHIMP_InitTriggers();
}