include "TriggerLibs/NativeLib"
include "TriggerLibs/HeroesLib"
include "TriggerLibs/GameLib"
include "TriggerLibs/UILib"
include "TriggerLibs/StartingExperienceLib"
include "LibMHmu_h"
include "LibNPLD_h"
//--------------------------------------------------------------------------------------------------
// Library: Neutral Payload (Unified)
//--------------------------------------------------------------------------------------------------
// External Library Initialization
void libNPLD_InitLibraries () {
libNtve_InitVariables();
libCore_InitVariables();
libGame_InitVariables();
libUIUI_InitVariables();
libStEx_InitVariables();
libMHmu_InitVariables();
}
// Variable Initialization
bool libNPLD_InitVariables_completed = false;
void libNPLD_InitVariables () {
int init_i1;
if (libNPLD_InitVariables_completed) {
return;
}
libNPLD_InitVariables_completed = true;
for (init_i1 = 0; init_i1 <= libCore_gv_bALMaxTeams; init_i1 += 1) {
libNPLD_gv_neutralPayload.lv_pathIndex_Team[init_i1] = 3;
}
libNPLD_gv_preanimationRange = 2.5;
libNPLD_gv_hanamura.lv_payloadPanel = c_invalidDialogControlId;
libNPLD_gv_hanamura.lv_warningTimerFrame = c_invalidDialogControlId;
libNPLD_gv_hanamura.lv_warningTimerLabel = c_invalidDialogControlId;
for (init_i1 = 0; init_i1 <= libCore_gv_bALMaxTeams; init_i1 += 1) {
libNPLD_gv_hanamura.lv_attackingStructureFrame[init_i1] = c_invalidDialogControlId;
}
for (init_i1 = 0; init_i1 <= libCore_gv_bALMaxTeams; init_i1 += 1) {
libNPLD_gv_hanamura.lv_attackingStructureLabel[init_i1] = c_invalidDialogControlId;
}
libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus = c_invalidDialogControlId;
for (init_i1 = 0; init_i1 <= libCore_gv_bALMaxTeams; init_i1 += 1) {
libNPLD_gv_hanamura.lv_background_New[init_i1] = c_invalidDialogControlId;
}
for (init_i1 = 0; init_i1 <= libCore_gv_bALMaxTeams; init_i1 += 1) {
libNPLD_gv_hanamura.lv_progressFrame_New[init_i1] = c_invalidDialogControlId;
}
for (init_i1 = 0; init_i1 <= libCore_gv_bALMaxTeams; init_i1 += 1) {
libNPLD_gv_hanamura.lv_progressBar_New[init_i1] = c_invalidDialogControlId;
}
libNPLD_gv_hanamura.lv_unitStatusBar_New = c_invalidDialogControlId;
}
// Functions
void libNPLD_gf_PayloadReachedDestination (trigger t) {
// Automatic Variable Declarations
// Implementation
TriggerAddEventGeneric(t, libNPLD_gv_eventID_PayloadReachedDestination_C);
}
void libNPLD_gf_SendInstantEventPayloadReachedDestination (int lp_playerThatEnteredVehicle) {
// Automatic Variable Declarations
// Implementation
DataTableSetInt(false, TriggerEventParamName(libNPLD_gv_eventID_PayloadReachedDestination_C, libNPLD_gv_eventParam_UnitStopsOccupyingVehicle_Vehicle_C), lp_playerThatEnteredVehicle);
TriggerSendInstantEvent(libNPLD_gv_eventID_PayloadReachedDestination_C);
}
int libNPLD_gf_UnitStopsOccupyingVehicleVehicle () {
// Automatic Variable Declarations
// Implementation
return DataTableGetInt(false, TriggerEventParamName(libNPLD_gv_eventID_PayloadReachedDestination_C, libNPLD_gv_eventParam_UnitStopsOccupyingVehicle_Vehicle_C));
}
void libNPLD_gf_CreateNeutralPayload () {
// Automatic Variable Declarations
// Implementation
libNPLD_gf_DestroyPayloadWarningPath();
libNPLD_gv_neutralPayload.lv_destinationReached = false;
libNPLD_gv_neutralPayload.lv_isContested = false;
libNPLD_gv_neutralPayload.lv_movingToStart = false;
libNPLD_gv_neutralPayload.lv_payload_ActorFlipped180 = false;
libNtve_gf_UnitCreateFacingPoint(1, "Payload_Neutral", c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_Neutral, libMHmu_gv_elevator_Point, libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]][1], null);
libNPLD_gv_neutralPayload.lv_unit = UnitLastCreated();
ActorSend(libNtve_gf_MainActorofUnit(libNPLD_gv_neutralPayload.lv_unit), "AnimHookSet BSD ::global.PayloadElevatorAttachment BSD");
ActorSend(ActorFrom("::global.PayloadElevatorAttachment"), "SetOpacity");
SoundPlayForPlayer(SoundLink("UI_Game_Ping_Payload_Ready", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);
libNPLD_gf_ShowActivePayloadPathonMinimap();
RemovePointOfInterest(libNPLD_gv_neutralPayload.lv_pathWaypoints_StartLocation, "PrepareForPayload", libNtve_ge_GoalTeam_Both);
AddUnitOfInterest(libNPLD_gv_neutralPayload.lv_unit, 8.0, 0.0, "EscortPayload", libNtve_ge_GoalTeam_Both, 0);
libNtve_gf_SetDialogItemUnit(libNPLD_gv_hanamura.lv_unitStatusBar_New, UnitLastCreated(), PlayerGroupAll());
DialogControlSetVisible(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, PlayerGroupAll(), true);
DialogControlSetAnimationState(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, PlayerGroupAll(), "OrderPath", IntToString(libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]));
DialogControlSetAnimationState(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, PlayerGroupAll(), "ChaosPath", IntToString(libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]));
Wait(0.0625, c_timeGame);
ActorSend(ActorFrom("::global.PayloadElevatorAttachment"), "Destroy");
libNPLD_gf_PayloadPathsCreateandStartBaseAnimations();
}
void libNPLD_gf_Payload_MoveToTeamDestination (int lp_team) {
// Variable Declarations
int lv_pointIndex;
int lv_pathIndex_Team;
int lv_pathIndex_Enemy_Team;
int lv_enemyTeam;
// Automatic Variable Declarations
int autoAE2DD01D_ae;
const int autoAE2DD01D_ai = 1;
const int autoD3450C5A_ae = 0;
const int autoD3450C5A_ai = -1;
int autoF1134768_ae;
const int autoF1134768_ai = 1;
// Variable Initialization
lv_pathIndex_Team = libNPLD_gv_neutralPayload.lv_pathIndex_Team[lp_team];
lv_pathIndex_Enemy_Team = libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gf_EnemyTeam(lp_team)];
lv_enemyTeam = libGame_gf_EnemyTeam(lp_team);
// Implementation
UnitIssueOrder(libNPLD_gv_neutralPayload.lv_unit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);
libNPLD_gf_FlipPayload();
if ((libNPLD_gv_neutralPayload.lv_teamWithProgress == lv_enemyTeam)) {
lv_pointIndex = libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_enemyTeam];
for ( ; ( (autoD3450C5A_ai >= 0 && lv_pointIndex <= autoD3450C5A_ae) || (autoD3450C5A_ai < 0 && lv_pointIndex >= autoD3450C5A_ae) ) ; lv_pointIndex += autoD3450C5A_ai ) {
UnitIssueOrder(libNPLD_gv_neutralPayload.lv_unit, OrderTargetingPoint(AbilityCommand("PayloadMove", 0), libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_enemyTeam][libNPLD_gv_neutralPayload.lv_pathIndex_Team[lv_enemyTeam]][lv_pointIndex]), c_orderQueueAddToEnd);
}
autoF1134768_ae = libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[lp_team][lv_pathIndex_Team];
lv_pointIndex = 1;
for ( ; ( (autoF1134768_ai >= 0 && lv_pointIndex <= autoF1134768_ae) || (autoF1134768_ai < 0 && lv_pointIndex >= autoF1134768_ae) ) ; lv_pointIndex += autoF1134768_ai ) {
UnitIssueOrder(libNPLD_gv_neutralPayload.lv_unit, OrderTargetingPoint(AbilityCommand("PayloadMove", 0), libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lv_pathIndex_Team][lv_pointIndex]), c_orderQueueAddToEnd);
}
}
else {
autoAE2DD01D_ae = libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[lp_team][lv_pathIndex_Team];
lv_pointIndex = (libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lp_team] + 1);
for ( ; ( (autoAE2DD01D_ai >= 0 && lv_pointIndex <= autoAE2DD01D_ae) || (autoAE2DD01D_ai < 0 && lv_pointIndex >= autoAE2DD01D_ae) ) ; lv_pointIndex += autoAE2DD01D_ai ) {
UnitIssueOrder(libNPLD_gv_neutralPayload.lv_unit, OrderTargetingPoint(AbilityCommand("PayloadMove", 0), libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lv_pathIndex_Team][lv_pointIndex]), c_orderQueueAddToEnd);
}
}
while (true) {
if (((libNPLD_gv_neutralPayload.lv_destination_Team != lp_team) || (libNPLD_gv_neutralPayload.lv_destinationReached == true))) {
break;
}
if ((libNtve_gf_UnitInRegion(libNPLD_gv_neutralPayload.lv_unit, RegionCircle(libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lv_pathIndex_Team][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[lp_team][lv_pathIndex_Team]], 0.1)) == true)) {
libStEx_gf_MoveUnit(libNPLD_gv_neutralPayload.lv_unit, libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lv_pathIndex_Team][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[lp_team][lv_pathIndex_Team]], true);
libNPLD_gf_Payload_ReachesDestination(lp_team);
return ;
}
if ((libNtve_gf_UnitInRegion(libNPLD_gv_neutralPayload.lv_unit, RegionCircle(libMHmu_gv_elevator_Point, 1.0)) == true) && (libNPLD_gv_neutralPayload.lv_teamWithProgress != lp_team)) {
libNPLD_gf_PayloadPathsCrossingCenterNudgeAnimations(lp_team);
libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[libNPLD_gv_neutralPayload.lv_teamWithProgress] = 0;
libNPLD_gv_neutralPayload.lv_teamWithProgress = lp_team;
if ((lp_team == libGame_gv_teamOrderIndex_C)) {
UnitBehaviorAdd(libNPLD_gv_neutralPayload.lv_unit, "Payload_HasOrderProgress", libNPLD_gv_neutralPayload.lv_unit, 1);
}
else {
UnitBehaviorAdd(libNPLD_gv_neutralPayload.lv_unit, "Payload_HasChaosProgress", libNPLD_gv_neutralPayload.lv_unit, 1);
}
}
if ((OrderGetTargetPoint(UnitOrder(libNPLD_gv_neutralPayload.lv_unit, 0)) == libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lv_pathIndex_Team][(libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lp_team] + 2)]) && (libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lv_pathIndex_Team][(libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lp_team] + 2)] != null)) {
libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lp_team] += 1;
if ((libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_enemyTeam] >= 1)) {
libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_enemyTeam] -= 1;
}
libNPLD_gf_ShowActivePayloadPathonMinimap();
}
if ((libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_enemyTeam] >= 1) && (OrderGetTargetPoint(UnitOrder(libNPLD_gv_neutralPayload.lv_unit, 0)) == libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_enemyTeam][lv_pathIndex_Enemy_Team][(libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_enemyTeam] - 0)]) && (libNtve_gf_UnitInRegion(libNPLD_gv_neutralPayload.lv_unit, RegionCircle(OrderGetTargetPoint(UnitOrder(libNPLD_gv_neutralPayload.lv_unit, 0)), 0.25)) == true)) {
libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_enemyTeam] -= 1;
}
libNPLD_gf_ShowActivePayloadPathonMinimap();
libNPLD_gf_PayloadPathsSetProgressTeamandAnimations();
Wait(0.0625, c_timeGame);
}
}
trigger auto_libNPLD_gf_Payload_ReachesDestination_Trigger = null;
int auto_libNPLD_gf_Payload_ReachesDestination_lp_team;
void libNPLD_gf_Payload_ReachesDestination (int lp_team) {
auto_libNPLD_gf_Payload_ReachesDestination_lp_team = lp_team;
if (auto_libNPLD_gf_Payload_ReachesDestination_Trigger == null) {
auto_libNPLD_gf_Payload_ReachesDestination_Trigger = TriggerCreate("auto_libNPLD_gf_Payload_ReachesDestination_TriggerFunc");
}
TriggerExecute(auto_libNPLD_gf_Payload_ReachesDestination_Trigger, false, false);
}
bool auto_libNPLD_gf_Payload_ReachesDestination_TriggerFunc (bool testConds, bool runActions) {
int lp_team = auto_libNPLD_gf_Payload_ReachesDestination_lp_team;
// Variable Declarations
int lv_townIndex_TownToAttack;
// Automatic Variable Declarations
// Variable Initialization
// Implementation
libNPLD_gf_SendInstantEventPayloadReachedDestination(lp_team);
UnitCreateEffectUnit(libNPLD_gv_neutralPayload.lv_unit, "RegenGlobePickupSearchSet", libNPLD_gv_neutralPayload.lv_unit);
PathDestroy(libNPLD_gv_neutralPayload.lv_pathDisplay_Order);
PathDestroy(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos);
UnitBehaviorAdd(libNPLD_gv_neutralPayload.lv_unit, "Payload_ReachedDestination", libNPLD_gv_neutralPayload.lv_unit, 1);
UnitKill(libCore_gf_UnitStoredForUnit(libNPLD_gv_neutralPayload.lv_unit, 1));
libNtve_gf_SendActorMessageToUnit(libNPLD_gv_neutralPayload.lv_unit, "Signal PayloadReachedDestination");
libNPLD_gv_neutralPayload.lv_destinationReached = true;
UnitSetOwner(libNPLD_gv_neutralPayload.lv_unit, libGame_gf_ComputerPlayerInTeam(lp_team), false);
SoundPlayForPlayer(SoundLink("UI_Game_Payload_Delivered_Ally", -1), c_maxPlayers, libGame_gf_PlayersOnTeamHeroes(lp_team, false), 100.0, 0.0);
SoundPlayForPlayer(SoundLink("UI_Game_Payload_Delivered_Enemy", -1), c_maxPlayers, libGame_gf_PlayersOnTeamHeroes(libGame_gf_EnemyTeam(lp_team), false), 100.0, 0.0);
libNPLD_gf_SetNewPayloadPathForTeam(lp_team);
Wait(1.0, c_timeGame);
UnitBehaviorRemove(libNPLD_gv_neutralPayload.lv_unit, "NeutralPayloadDisableAttackTurret", 1);
if ((libNPLD_gv_neutralPayload.lv_payload_ActorFlipped180 == true)) {
UnitCreateEffectPoint(libNPLD_gv_neutralPayload.lv_unit, "PayloadAttackCoreModifyTurretPoint", PointWithOffsetPolar(UnitGetPosition(libNPLD_gv_neutralPayload.lv_unit), 1.0, 180.0));
}
else {
UnitCreateEffectPoint(libNPLD_gv_neutralPayload.lv_unit, "PayloadAttackCoreModifyTurretPoint", PointWithOffsetPolar(UnitGetPosition(libNPLD_gv_neutralPayload.lv_unit), 1.0, 0.0));
}
DialogControlSendAnimationEvent(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, PlayerGroupAll(), "Hide");
while (!((libNPLD_gv_neutralPayload.lv_completedReward == true))) {
Wait(1.0, c_timeGame);
}
libNPLD_gv_neutralPayload.lv_completedReward = false;
libNPLD_gv_neutralPayload.lv_teamWithProgress = 0;
libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[libGame_gv_teamOrderIndex_C] = 0;
libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[libGame_gv_teamChaosIndex_C] = 0;
return true;
}
void libNPLD_gf_FlipPayload () {
// Automatic Variable Declarations
// Implementation
if (((UnitGetOwner(libNPLD_gv_neutralPayload.lv_unit) == libCore_gv_cOMPUTER_TeamChaos) || (UnitGetOwner(libNPLD_gv_neutralPayload.lv_unit) == 0))) {
if ((libNPLD_gv_neutralPayload.lv_payload_ActorFlipped180 == false)) {
UnitCreateEffectUnit(libNPLD_gv_neutralPayload.lv_unit, "PayloadReverseCreatePersistent", libNPLD_gv_neutralPayload.lv_unit);
libNPLD_gv_neutralPayload.lv_payload_ActorFlipped180 = true;
}
}
else {
if ((libNPLD_gv_neutralPayload.lv_payload_ActorFlipped180 == true)) {
UnitCreateEffectUnit(libNPLD_gv_neutralPayload.lv_unit, "PayloadForwardCreatePersistent", libNPLD_gv_neutralPayload.lv_unit);
libNPLD_gv_neutralPayload.lv_payload_ActorFlipped180 = false;
}
}
}
void libNPLD_gf_CalculatePayloadPathDistances () {
// Variable Declarations
int lv_itTeam;
int lv_itPath;
// Automatic Variable Declarations
const int autoE8D00ED1_ae = libCore_gv_bALMaxTeams;
const int autoE8D00ED1_ai = 1;
const int autoAC40B192_ae = libNPLD_gv_pathCountPerTeam_C;
const int autoAC40B192_ai = 1;
// Variable Initialization
// Implementation
lv_itTeam = 1;
for ( ; ( (autoE8D00ED1_ai >= 0 && lv_itTeam <= autoE8D00ED1_ae) || (autoE8D00ED1_ai < 0 && lv_itTeam >= autoE8D00ED1_ae) ) ; lv_itTeam += autoE8D00ED1_ai ) {
lv_itPath = 1;
for ( ; ( (autoAC40B192_ai >= 0 && lv_itPath <= autoAC40B192_ae) || (autoAC40B192_ai < 0 && lv_itPath >= autoAC40B192_ae) ) ; lv_itPath += autoAC40B192_ai ) {
libNPLD_gv_neutralPayload.lv_totaldistance_Path[lv_itTeam][lv_itPath] = libNPLD_gf_CalculatePayloadTravelDistancetoDestination(lv_itTeam, lv_itPath);
}
}
}
fixed libNPLD_gf_CalculatePayloadTravelDistancetoDestination (int lp_team, int lp_pathIndex) {
// Variable Declarations
fixed lv_totalDistance;
int lv_itPoints;
fixed lv_distance;
// Automatic Variable Declarations
int auto51CB6D38_ae;
const int auto51CB6D38_ai = 1;
// Variable Initialization
// Implementation
auto51CB6D38_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[lp_team][lp_pathIndex] - 1);
lv_itPoints = 0;
for ( ; ( (auto51CB6D38_ai >= 0 && lv_itPoints <= auto51CB6D38_ae) || (auto51CB6D38_ai < 0 && lv_itPoints >= auto51CB6D38_ae) ) ; lv_itPoints += auto51CB6D38_ai ) {
lv_distance = DistanceBetweenPoints(libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lp_pathIndex][lv_itPoints], libNPLD_gv_neutralPayload.lv_pathWaypoints[lp_team][lp_pathIndex][(lv_itPoints + 1)]);
lv_totalDistance += lv_distance;
}
return lv_totalDistance;
}
fixed libNPLD_gf_PayloadCurrentDistance () {
// Variable Declarations
int lv_itPoints;
fixed lv_totalDistance;
fixed lv_distance;
int lv_team_WithProgress;
int lv_path_WithProgress;
// Automatic Variable Declarations
int autoBD2238C3_ae;
const int autoBD2238C3_ai = 1;
// Variable Initialization
lv_team_WithProgress = libNPLD_gv_neutralPayload.lv_teamWithProgress;
lv_path_WithProgress = libNPLD_gv_neutralPayload.lv_pathIndex_Team[lv_team_WithProgress];
// Implementation
autoBD2238C3_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_team_WithProgress] - 1);
lv_itPoints = 0;
for ( ; ( (autoBD2238C3_ai >= 0 && lv_itPoints <= autoBD2238C3_ae) || (autoBD2238C3_ai < 0 && lv_itPoints >= autoBD2238C3_ae) ) ; lv_itPoints += autoBD2238C3_ai ) {
lv_distance = DistanceBetweenPoints(libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_team_WithProgress][lv_path_WithProgress][lv_itPoints], libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_team_WithProgress][lv_path_WithProgress][(lv_itPoints + 1)]);
lv_totalDistance += lv_distance;
}
if ((libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_team_WithProgress][lv_path_WithProgress][libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_team_WithProgress]] != null)) {
lv_totalDistance += DistanceBetweenPoints(UnitGetPosition(libNPLD_gv_neutralPayload.lv_unit), libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_team_WithProgress][lv_path_WithProgress][libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_team_WithProgress]]);
}
return lv_totalDistance;
}
void libNPLD_gf_SetNewPayloadPathForTeam (int lp_team) {
// Automatic Variable Declarations
// Implementation
if ((libNPLD_gv_neutralPayload.lv_pathIndex_Team[lp_team] == 1)) {
libNPLD_gv_neutralPayload.lv_pathIndex_Team[lp_team] = 3;
}
else {
libNPLD_gv_neutralPayload.lv_pathIndex_Team[lp_team] -= 1;
}
}
void libNPLD_gf_InitializePathAnimationRates () {
// Automatic Variable Declarations
// Implementation
libNPLD_gv_pathAnimationRate[1][1] = 0.3979;
libNPLD_gv_pathAnimationRate[1][2] = 0.4863;
libNPLD_gv_pathAnimationRate[1][3] = 0.5747;
libNPLD_gv_pathAnimationRate[2][1] = 0.2501;
libNPLD_gv_pathAnimationRate[2][2] = 0.3057;
libNPLD_gv_pathAnimationRate[2][3] = 0.3612;
libNPLD_gv_pathAnimationRate[3][1] = 0.2775;
libNPLD_gv_pathAnimationRate[3][2] = 0.334;
libNPLD_gv_pathAnimationRate[3][3] = 0.4008;
}
bool libNPLD_gf_PayloadNearElevator () {
// Automatic Variable Declarations
// Implementation
if ((DistanceBetweenPoints(UnitGetPosition(libNPLD_gv_neutralPayload.lv_unit), libMHmu_gv_elevator_Point) <= libNPLD_gv_preanimationRange)) {
return true;
}
else {
return false;
}
}
void libNPLD_gf_ShowActivePayloadPathonMinimap () {
// Variable Declarations
int lv_pathIndex_teamWithProgress;
int lv_pathIndex_teamWithoutProgress;
int lv_waypointIndex;
int lv_team_withProgress;
int lv_team_withoutProgress;
int lv_pathDisplay_teamWithProgress;
int lv_pathDisplay_teamWithoutProgress;
fixed lv_pathWidth;
// Automatic Variable Declarations
int auto9A78343E_ae;
const int auto9A78343E_ai = 1;
int auto4C946E13_ae;
const int auto4C946E13_ai = 1;
int autoEA8B284B_ae;
const int autoEA8B284B_ai = 1;
const int auto79811036_ae = 0;
const int auto79811036_ai = -1;
int autoDD100EF3_ae;
const int autoDD100EF3_ai = 1;
// Variable Initialization
lv_pathWidth = 0.5;
// Implementation
if ((UnitIsAlive(libNPLD_gv_neutralPayload.lv_unit) == false)) {
return ;
}
PathDestroy(libNPLD_gv_neutralPayload.lv_pathDisplay_Order);
PathDestroy(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos);
PathCreateForUnit(PlayerGroupAll(), libNPLD_gv_neutralPayload.lv_unit);
libNPLD_gv_neutralPayload.lv_pathDisplay_Order = PathLastCreated();
PathCreateForUnit(PlayerGroupAll(), libNPLD_gv_neutralPayload.lv_unit);
libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos = PathLastCreated();
PathSetOwnerPlayerId(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, libCore_gv_cOMPUTER_TeamOrder);
PathSetOwnerPlayerId(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, libCore_gv_cOMPUTER_TeamChaos);
lv_team_withProgress = libNPLD_gv_neutralPayload.lv_teamWithProgress;
if ((libNPLD_gv_neutralPayload.lv_teamWithProgress != 0)) {
if ((lv_team_withProgress == libGame_gv_teamOrderIndex_C)) {
lv_team_withoutProgress = libGame_gv_teamChaosIndex_C;
lv_pathDisplay_teamWithProgress = libNPLD_gv_neutralPayload.lv_pathDisplay_Order;
lv_pathDisplay_teamWithoutProgress = libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos;
}
else {
lv_team_withoutProgress = libGame_gv_teamOrderIndex_C;
lv_pathDisplay_teamWithProgress = libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos;
lv_pathDisplay_teamWithoutProgress = libNPLD_gv_neutralPayload.lv_pathDisplay_Order;
}
lv_pathIndex_teamWithProgress = libNPLD_gv_neutralPayload.lv_pathIndex_Team[lv_team_withProgress];
lv_pathIndex_teamWithoutProgress = libNPLD_gv_neutralPayload.lv_pathIndex_Team[lv_team_withoutProgress];
}
PathSetLineTexture(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, c_pathLocationMinimap, "Assets\\Textures\\waypointline.dds");
PathSetLineWidth(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, c_pathLocationWorld, lv_pathWidth);
PathSetVisible(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, c_pathLocationWorld, false);
PathSetVisible(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, c_pathLocationMinimap, true);
PathSetDestinationPoint(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]]]);
PathSetStepModel(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, c_pathLocationWorld, "Assets\\Units\\Test\\InvisibleUnit\\InvisibleUnit.m3");
PathSetLineTexture(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, c_pathLocationMinimap, "Assets\\Textures\\waypointline.dds");
PathSetLineWidth(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, c_pathLocationWorld, lv_pathWidth);
PathSetVisible(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, c_pathLocationWorld, false);
PathSetVisible(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, c_pathLocationMinimap, true);
PathSetDestinationPoint(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]]]);
PathSetStepModel(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, c_pathLocationWorld, "Assets\\Units\\Test\\InvisibleUnit\\InvisibleUnit.m3");
if ((libNPLD_gv_neutralPayload.lv_teamWithProgress != 0)) {
autoEA8B284B_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[lv_team_withProgress][lv_pathIndex_teamWithProgress] - 1);
lv_waypointIndex = (libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_team_withProgress] + 1);
for ( ; ( (autoEA8B284B_ai >= 0 && lv_waypointIndex <= autoEA8B284B_ae) || (autoEA8B284B_ai < 0 && lv_waypointIndex >= autoEA8B284B_ae) ) ; lv_waypointIndex += autoEA8B284B_ai ) {
PathAddWayPoint(lv_pathDisplay_teamWithProgress, libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_team_withProgress][lv_pathIndex_teamWithProgress][lv_waypointIndex]);
}
lv_waypointIndex = libNPLD_gv_neutralPayload.lv_pathWaypoints_LastWaypointReached[lv_team_withProgress];
for ( ; ( (auto79811036_ai >= 0 && lv_waypointIndex <= auto79811036_ae) || (auto79811036_ai < 0 && lv_waypointIndex >= auto79811036_ae) ) ; lv_waypointIndex += auto79811036_ai ) {
PathAddWayPoint(lv_pathDisplay_teamWithoutProgress, libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_team_withProgress][lv_pathIndex_teamWithProgress][lv_waypointIndex]);
}
autoDD100EF3_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[lv_team_withoutProgress][lv_pathIndex_teamWithoutProgress] - 1);
lv_waypointIndex = 0;
for ( ; ( (autoDD100EF3_ai >= 0 && lv_waypointIndex <= autoDD100EF3_ae) || (autoDD100EF3_ai < 0 && lv_waypointIndex >= autoDD100EF3_ae) ) ; lv_waypointIndex += autoDD100EF3_ai ) {
PathAddWayPoint(lv_pathDisplay_teamWithoutProgress, libNPLD_gv_neutralPayload.lv_pathWaypoints[lv_team_withoutProgress][lv_pathIndex_teamWithoutProgress][lv_waypointIndex]);
}
}
else {
auto9A78343E_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]] - 1);
lv_waypointIndex = 1;
for ( ; ( (auto9A78343E_ai >= 0 && lv_waypointIndex <= auto9A78343E_ae) || (auto9A78343E_ai < 0 && lv_waypointIndex >= auto9A78343E_ae) ) ; lv_waypointIndex += auto9A78343E_ai ) {
PathAddWayPoint(libNPLD_gv_neutralPayload.lv_pathDisplay_Order, libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]][lv_waypointIndex]);
}
auto4C946E13_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]] - 1);
lv_waypointIndex = 1;
for ( ; ( (auto4C946E13_ai >= 0 && lv_waypointIndex <= auto4C946E13_ae) || (auto4C946E13_ai < 0 && lv_waypointIndex >= auto4C946E13_ae) ) ; lv_waypointIndex += auto4C946E13_ai ) {
PathAddWayPoint(libNPLD_gv_neutralPayload.lv_pathDisplay_Chaos, libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]][lv_waypointIndex]);
}
}
}
void libNPLD_gf_PayloadPathsCreateandStartBaseAnimations () {
// Variable Declarations
int lv_teamID;
int lv_activePathID;
// Automatic Variable Declarations
const int autoE9A0635D_ae = libCore_gv_bALMaxTeams;
const int autoE9A0635D_ai = 1;
// Variable Initialization
// Implementation
lv_teamID = 1;
for ( ; ( (autoE9A0635D_ai >= 0 && lv_teamID <= autoE9A0635D_ae) || (autoE9A0635D_ai < 0 && lv_teamID >= autoE9A0635D_ae) ) ; lv_teamID += autoE9A0635D_ai ) {
libNtve_gf_CreateActorWithPointFacing(libMHmu_gv_payloadPaths[lv_teamID][libNPLD_gv_neutralPayload.lv_pathIndex_Team[lv_teamID]], libMHmu_gv_payloadPathSpawnPoint[lv_teamID]);
libNPLD_gv_activePathonMap[lv_teamID][1] = libNtve_gf_ActorLastCreated();
ActorSend(libNPLD_gv_activePathonMap[lv_teamID][1], "AnimPlay ForwardMotion GLstand PlayForever 0.000000");
ActorSend(libNPLD_gv_activePathonMap[lv_teamID][1], "Signal Invert");
libNtve_gf_CreateActorWithPointFacing(libMHmu_gv_payloadPaths[lv_teamID][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gf_EnemyTeam(lv_teamID)]], libMHmu_gv_payloadPathSpawnPoint[libGame_gf_EnemyTeam(lv_teamID)]);
libNPLD_gv_activePathonMap[lv_teamID][2] = libNtve_gf_ActorLastCreated();
ActorSend(libNPLD_gv_activePathonMap[lv_teamID][2], "AnimPlay BackwardMotion Custom PlayForever 0.000000");
}
}
void libNPLD_gf_PayloadPathsSetProgressTeamandAnimations () {
// Variable Declarations
bool lv_preAnimate;
// Automatic Variable Declarations
int auto9CD4DFE3_val;
// Variable Initialization
// Implementation
if (((UnitHasBehavior2(libNPLD_gv_neutralPayload.lv_unit, "PayloadObstaclesInTheWay") == true) || (UnitHasBehaviorWithCategoryFlag(libNPLD_gv_neutralPayload.lv_unit, c_behaviorCategoryDebuffStasis) == true) || (UnitHasBehaviorWithCategoryFlag(libNPLD_gv_neutralPayload.lv_unit, c_behaviorCategoryTimeStop) == true) || (libNPLD_gv_neutralPayload.lv_destination_Team == 0))) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "AnimSetPaused Progress");
return ;
}
lv_preAnimate = libNPLD_gf_PayloadNearElevator();
auto9CD4DFE3_val = UnitGetOwner(libNPLD_gv_neutralPayload.lv_unit);
if (auto9CD4DFE3_val == libCore_gv_cOMPUTER_TeamOrder) {
if ((libNPLD_gv_neutralPayload.lv_teamWithProgress == libGame_gv_teamChaosIndex_C)) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "AnimSetPaused Progress 0");
if ((lv_preAnimate == true)) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "AnimSetPaused Progress 0");
}
}
else {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "AnimSetPaused Progress 0");
if ((lv_preAnimate == true)) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "AnimSetPaused Progress 0");
}
}
libNPLD_gf_PayloadPathsUpdateAnimationSpeed();
}
else if (auto9CD4DFE3_val == libCore_gv_cOMPUTER_TeamChaos) {
if ((libNPLD_gv_neutralPayload.lv_teamWithProgress == libGame_gv_teamOrderIndex_C)) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "AnimSetPaused Progress 0");
if ((lv_preAnimate == true)) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "AnimSetPaused Progress 0");
}
}
else {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "AnimSetPaused Progress 0");
if ((lv_preAnimate == true)) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "Signal Forward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "AnimSetPaused Progress 0");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "Signal Backward");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "AnimSetPaused Progress 0");
}
}
libNPLD_gf_PayloadPathsUpdateAnimationSpeed();
}
else {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "AnimSetPaused Progress");
}
}
void libNPLD_gf_PayloadPathsDestroyActivePaths () {
// Variable Declarations
int lv_teamID;
int lv_activePathID;
// Automatic Variable Declarations
const int autoE9DB2CA7_ae = libCore_gv_bALMaxTeams;
const int autoE9DB2CA7_ai = 1;
// Variable Initialization
// Implementation
lv_teamID = 1;
for ( ; ( (autoE9DB2CA7_ai >= 0 && lv_teamID <= autoE9DB2CA7_ae) || (autoE9DB2CA7_ai < 0 && lv_teamID >= autoE9DB2CA7_ae) ) ; lv_teamID += autoE9DB2CA7_ai ) {
ActorSend(libNPLD_gv_activePathonMap[lv_teamID][1], "AnimBracketStop BSD");
ActorSend(libNPLD_gv_activePathonMap[lv_teamID][2], "AnimBracketStop BSD");
}
}
void libNPLD_gf_PayloadPathsUpdateAnimationSpeed () {
// Variable Declarations
int lv_payloadOwningTeam;
int lv_escortCount;
int lv_pathID;
string lv_actorMessageString;
// Automatic Variable Declarations
// Variable Initialization
lv_payloadOwningTeam = libNPLD_gv_neutralPayload.lv_destination_Team;
lv_actorMessageString = "";
// Implementation
if ((UnitBehaviorCount(libNPLD_gv_neutralPayload.lv_unit, "Payload_AllyMonitor_1") > 0)) {
lv_escortCount = 1;
}
else if ((UnitBehaviorCount(libNPLD_gv_neutralPayload.lv_unit, "Payload_AllyMonitor_2") > 0)) {
lv_escortCount = 2;
}
else if ((UnitBehaviorCount(libNPLD_gv_neutralPayload.lv_unit, "Payload_AllyMonitor_3") > 0)) {
lv_escortCount = 3;
}
else if (true) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "AnimSetPaused Progress");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "AnimSetPaused Progress");
}
if ((lv_escortCount == 0)) {
return ;
}
if ((libNPLD_gv_neutralPayload.lv_teamWithProgress == lv_payloadOwningTeam)) {
lv_pathID = libNPLD_gv_neutralPayload.lv_pathIndex_Team[lv_payloadOwningTeam];
}
else {
lv_pathID = libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gf_EnemyTeam(lv_payloadOwningTeam)];
}
lv_actorMessageString = ("AnimSetTimeScaleAbsolute Progress " + FixedToString(libNPLD_gv_pathAnimationRate[lv_pathID][lv_escortCount], c_fixedPrecisionAny));
ActorSendAsText(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], StringToText(lv_actorMessageString));
ActorSendAsText(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], StringToText(lv_actorMessageString));
ActorSendAsText(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], StringToText(lv_actorMessageString));
ActorSendAsText(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], StringToText(lv_actorMessageString));
}
void libNPLD_gf_PayloadPathsCrossingCenterNudgeAnimations (int lp_teamID) {
// Automatic Variable Declarations
// Implementation
if ((libNPLD_gv_neutralPayload.lv_teamWithProgress != 0)) {
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][1], "Signal ResetPath");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamOrderIndex_C][2], "Signal ResetPath");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][1], "Signal ResetPath");
ActorSend(libNPLD_gv_activePathonMap[libGame_gv_teamChaosIndex_C][2], "Signal ResetPath");
}
}
void libNPLD_gf_ShowPayloadPath_Warning () {
// Variable Declarations
int lv_waypointIndex;
// Automatic Variable Declarations
int auto5E573E48_ae;
const int auto5E573E48_ai = 1;
int autoAC653D97_ae;
const int autoAC653D97_ai = 1;
// Variable Initialization
// Implementation
libNtve_gf_CreateUnitsWithDefaultFacing(1, "Payload_Neutral_Warning", c_unitCreateIgnorePlacement, 0, libNPLD_gv_neutralPayload.lv_pathWaypoints_StartLocation, null);
libNPLD_gv_neutralPayload.lv_warningUnit = UnitLastCreated();
PathCreateForUnit(PlayerGroupAll(), libNPLD_gv_neutralPayload.lv_warningUnit);
libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C] = PathLastCreated();
PathCreateForUnit(PlayerGroupAll(), libNPLD_gv_neutralPayload.lv_warningUnit);
libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C] = PathLastCreated();
PathSetOwnerPlayerId(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C], libCore_gv_cOMPUTER_TeamOrder);
PathSetOwnerPlayerId(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C], libCore_gv_cOMPUTER_TeamChaos);
PathSetLineTexture(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C], c_pathLocationMinimap, "Assets\\Textures\\storm_waypointline.dds");
PathSetVisible(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C], c_pathLocationWorld, false);
PathSetVisible(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C], c_pathLocationMinimap, true);
PathSetDestinationPoint(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C], libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]]]);
PathSetLineTexture(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C], c_pathLocationMinimap, "Assets\\Textures\\storm_waypointline.dds");
PathSetVisible(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C], c_pathLocationWorld, false);
PathSetVisible(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C], c_pathLocationMinimap, true);
PathSetDestinationPoint(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C], libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]]]);
auto5E573E48_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]] - 1);
lv_waypointIndex = 1;
for ( ; ( (auto5E573E48_ai >= 0 && lv_waypointIndex <= auto5E573E48_ae) || (auto5E573E48_ai < 0 && lv_waypointIndex >= auto5E573E48_ae) ) ; lv_waypointIndex += auto5E573E48_ai ) {
PathAddWayPoint(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C], libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]][lv_waypointIndex]);
}
autoAC653D97_ae = (libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]] - 1);
lv_waypointIndex = 1;
for ( ; ( (autoAC653D97_ai >= 0 && lv_waypointIndex <= autoAC653D97_ae) || (autoAC653D97_ai < 0 && lv_waypointIndex >= autoAC653D97_ae) ) ; lv_waypointIndex += autoAC653D97_ai ) {
PathAddWayPoint(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C], libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]][lv_waypointIndex]);
}
libCore_gf_CreateMinimapPingStormWithPlayerId(PlayerGroupAll(), "OWHanaPayloadWarning", libNPLD_gv_neutralPayload.lv_pathWaypoints_StartLocation, ColorWithAlpha(0,0,0,0), 5.0, 0);
libCore_gf_CreateMinimapPingStormWithPlayerId(PlayerGroupAll(), "OWHanaPayloadWarning", libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamOrderIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamOrderIndex_C]]], ColorWithAlpha(0,0,0,0), 5.0, 0);
libCore_gf_CreateMinimapPingStormWithPlayerId(PlayerGroupAll(), "OWHanaPayloadWarning", libNPLD_gv_neutralPayload.lv_pathWaypoints[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]][libNPLD_gv_neutralPayload.lv_pathWaypoints_DestinationIndex[libGame_gv_teamChaosIndex_C][libNPLD_gv_neutralPayload.lv_pathIndex_Team[libGame_gv_teamChaosIndex_C]]], ColorWithAlpha(0,0,0,0), 5.0, 0);
}
void libNPLD_gf_DestroyPayloadWarningPath () {
// Automatic Variable Declarations
// Implementation
UnitRemove(libNPLD_gv_neutralPayload.lv_warningUnit);
PathDestroy(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamOrderIndex_C]);
PathDestroy(libNPLD_gv_neutralPayload.lv_warningPathDisplay[libGame_gv_teamChaosIndex_C]);
}
void libNPLD_gf_MapMechanicUIInit (int lp_parentPanel) {
// Automatic Variable Declarations
// Implementation
DialogControlCreateInPanelFromTemplate(lp_parentPanel, c_triggerControlTypePanel, "HanamuraRework/HanamuraReworkVictoryShotsStatusPanel");
libNPLD_gv_hanamura.lv_payloadPanel = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_payloadPanel, c_triggerControlTypePanel, "AttackingCoreFrame_Order");
libNPLD_gv_hanamura.lv_attackingStructureFrame[libGame_gv_teamOrderIndex_C] = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_attackingStructureFrame[libGame_gv_teamOrderIndex_C], c_triggerControlTypeLabel, "BackgroundImage/ActiveNotificationLabel");
libNPLD_gv_hanamura.lv_attackingStructureLabel[libGame_gv_teamOrderIndex_C] = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_payloadPanel, c_triggerControlTypePanel, "AttackingCoreFrame_Chaos");
libNPLD_gv_hanamura.lv_attackingStructureFrame[libGame_gv_teamChaosIndex_C] = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_attackingStructureFrame[libGame_gv_teamChaosIndex_C], c_triggerControlTypeLabel, "BackgroundImage/ActiveNotificationLabel");
libNPLD_gv_hanamura.lv_attackingStructureLabel[libGame_gv_teamChaosIndex_C] = DialogControlLastCreated();
DialogControlCreateInPanelFromTemplate(lp_parentPanel, c_triggerControlTypePanel, "HanamuraRework/HanamuraReworkPayloadWarningTimerPanel");
DialogControlHookup(DialogControlLastCreated(), c_triggerControlTypePanel, "PayloadSpawningFrame");
libNPLD_gv_hanamura.lv_warningTimerFrame = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_warningTimerFrame, c_triggerControlTypeLabel, "CountdownLabel");
libNPLD_gv_hanamura.lv_warningTimerLabel = DialogControlLastCreated();
DialogControlSetVisible(libNPLD_gv_hanamura.lv_payloadPanel, PlayerGroupAll(), false);
DialogControlCreateInPanelFromTemplate(lp_parentPanel, c_triggerControlTypePanel, "HanamuraRework/HanamuraReworkActivePaylaodStatusPanel");
libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, c_triggerControlTypeUnitStatus, "HanamuraUI_UnitStatusFrame");
libNPLD_gv_hanamura.lv_unitStatusBar_New = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, c_triggerControlTypePanel, "ProgressFrame_Order");
libNPLD_gv_hanamura.lv_progressFrame_New[libGame_gv_teamOrderIndex_C] = DialogControlLastCreated();
DialogControlHookup(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, c_triggerControlTypePanel, "ProgressFrame_Chaos");
libNPLD_gv_hanamura.lv_progressFrame_New[libGame_gv_teamChaosIndex_C] = DialogControlLastCreated();
DialogControlSetVisible(libNPLD_gv_hanamura.lv_payloadPanel_ActivePayloadStatus, PlayerGroupAll(), false);
}
// Triggers
//--------------------------------------------------------------------------------------------------
// Trigger: Init Payload Paths
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_InitPayloadPaths_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
libNPLD_gf_CalculatePayloadPathDistances();
libNPLD_gf_InitializePathAnimationRates();
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_InitPayloadPaths_Init () {
libNPLD_gt_InitPayloadPaths = TriggerCreate("libNPLD_gt_InitPayloadPaths_Func");
libCore_gf_IncludeModInitialization(libNPLD_gt_InitPayloadPaths);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Payload_OrderMonitor_Enabled
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_Payload_OrderMonitor_Enabled_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(libNPLD_gv_neutralPayload.lv_unit, "Payload_ReachedDestination") == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libNPLD_gv_neutralPayload.lv_destination_Team = libGame_gv_teamOrderIndex_C;
UnitSetOwner(libNPLD_gv_neutralPayload.lv_unit, libCore_gv_cOMPUTER_TeamOrder, false);
libNPLD_gf_Payload_MoveToTeamDestination(libGame_gv_teamOrderIndex_C);
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_Payload_OrderMonitor_Enabled_Init () {
libNPLD_gt_Payload_OrderMonitor_Enabled = TriggerCreate("libNPLD_gt_Payload_OrderMonitor_Enabled_Func");
TriggerAddEventUnitBehaviorChange(libNPLD_gt_Payload_OrderMonitor_Enabled, UnitRefFromVariable("libNPLD_gv_neutralPayload.lv_unit"), "Payload_OrderMonitor", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Payload_ChaosMonitor_Enabled
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_Payload_ChaosMonitor_Enabled_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(libNPLD_gv_neutralPayload.lv_unit, "Payload_ReachedDestination") == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libNPLD_gv_neutralPayload.lv_destination_Team = libGame_gv_teamChaosIndex_C;
UnitSetOwner(libNPLD_gv_neutralPayload.lv_unit, libCore_gv_cOMPUTER_TeamChaos, false);
libNPLD_gf_Payload_MoveToTeamDestination(libGame_gv_teamChaosIndex_C);
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_Payload_ChaosMonitor_Enabled_Init () {
libNPLD_gt_Payload_ChaosMonitor_Enabled = TriggerCreate("libNPLD_gt_Payload_ChaosMonitor_Enabled_Func");
TriggerAddEventUnitBehaviorChange(libNPLD_gt_Payload_ChaosMonitor_Enabled, UnitRefFromVariable("libNPLD_gv_neutralPayload.lv_unit"), "Payload_ChaosMonitor", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Payload_ContestedMonitor_Enabled
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_Payload_ContestedMonitor_Enabled_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(libNPLD_gv_neutralPayload.lv_unit, "Payload_ReachedDestination") == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libNPLD_gv_neutralPayload.lv_destination_Team = 0;
libNPLD_gv_neutralPayload.lv_isContested = true;
UnitSetOwner(libNPLD_gv_neutralPayload.lv_unit, libCore_gv_cOMPUTER_Neutral, false);
libNPLD_gf_PayloadPathsSetProgressTeamandAnimations();
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_Payload_ContestedMonitor_Enabled_Init () {
libNPLD_gt_Payload_ContestedMonitor_Enabled = TriggerCreate("libNPLD_gt_Payload_ContestedMonitor_Enabled_Func");
TriggerAddEventUnitBehaviorChange(libNPLD_gt_Payload_ContestedMonitor_Enabled, UnitRefFromVariable("libNPLD_gv_neutralPayload.lv_unit"), "Payload_ContestedMonitor", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Payload_ContestedMonitor_Disabled
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_Payload_ContestedMonitor_Disabled_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(libNPLD_gv_neutralPayload.lv_unit, "Payload_ReachedDestination") == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libNPLD_gv_neutralPayload.lv_isContested = false;
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_Payload_ContestedMonitor_Disabled_Init () {
libNPLD_gt_Payload_ContestedMonitor_Disabled = TriggerCreate("libNPLD_gt_Payload_ContestedMonitor_Disabled_Func");
TriggerAddEventUnitBehaviorChange(libNPLD_gt_Payload_ContestedMonitor_Disabled, UnitRefFromVariable("libNPLD_gv_neutralPayload.lv_unit"), "Payload_ContestedMonitor", c_unitBehaviorChangeDeactivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Payload_UnattendedMonitor_Enabled
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_Payload_UnattendedMonitor_Enabled_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitHasBehavior2(libNPLD_gv_neutralPayload.lv_unit, "Payload_ReachedDestination") == false))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
libNPLD_gv_neutralPayload.lv_destination_Team = 0;
UnitSetOwner(libNPLD_gv_neutralPayload.lv_unit, libCore_gv_cOMPUTER_Neutral, false);
Wait(0.125, c_timeGame);
libNPLD_gf_PayloadPathsSetProgressTeamandAnimations();
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_Payload_UnattendedMonitor_Enabled_Init () {
libNPLD_gt_Payload_UnattendedMonitor_Enabled = TriggerCreate("libNPLD_gt_Payload_UnattendedMonitor_Enabled_Func");
TriggerAddEventUnitBehaviorChange(libNPLD_gt_Payload_UnattendedMonitor_Enabled, UnitRefFromVariable("libNPLD_gv_neutralPayload.lv_unit"), "Payload_UnattendedMonitor", c_unitBehaviorChangeActivate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Player Creates Turret From Map Mechanic Ability
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_PlayerCreatesTurretFromMapMechanicAbility_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Conditions
if (testConds) {
if (!((UnitGetType(EventUnitCreatedUnit()) == "OverwatchTurretPayloadPlayer"))) {
return false;
}
}
// Actions
if (!runActions) {
return true;
}
UnitXPAddXP(EventUnitCreatedUnit(), "OverwatchTurretPlayerScaling", libGame_gv_teams[libGame_gf_TeamNumberOfPlayer(UnitGetOwner(EventUnit()))].lv_teamLevel);
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_PlayerCreatesTurretFromMapMechanicAbility_Init () {
libNPLD_gt_PlayerCreatesTurretFromMapMechanicAbility = TriggerCreate("libNPLD_gt_PlayerCreatesTurretFromMapMechanicAbility_Func");
TriggerAddEventUnitCreated(libNPLD_gt_PlayerCreatesTurretFromMapMechanicAbility, null, "MapMechanicAbilityTarget", null);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Payload_GainsTurret
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_Payload_GainsTurret_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
libNtve_gf_CreateUnitsWithDefaultFacing(1, "OverwatchTurretPayloadPlayer", c_unitCreateIgnorePlacement, libGame_gf_ComputerPlayerInTeam(libGame_gf_TeamNumberOfPlayer(UnitBehaviorEffectPlayer(EventUnit(), "Payload_HasTurret", c_effectPlayerCaster, 0))), UnitGetPosition(libNPLD_gv_neutralPayload.lv_unit), null);
UnitCreateEffectUnit(UnitLastCreated(), "Payload_LinkActor", libNPLD_gv_neutralPayload.lv_unit);
libCore_gf_StoreUnitForUnit(libNPLD_gv_neutralPayload.lv_unit, 1, UnitLastCreated());
while ((UnitIsAlive(libNPLD_gv_neutralPayload.lv_unit) == true) && (UnitIsAlive(UnitLastCreated()) == true)) {
libStEx_gf_MoveUnit(UnitLastCreated(), UnitGetPosition(libNPLD_gv_neutralPayload.lv_unit), false);
Wait(0.0625, c_timeGame);
}
if ((UnitIsAlive(libNPLD_gv_neutralPayload.lv_unit) == true) && (UnitIsAlive(UnitLastCreated()) == false)) {
UnitBehaviorRemove(libNPLD_gv_neutralPayload.lv_unit, "Payload_HasTurret", 1);
}
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_Payload_GainsTurret_Init () {
libNPLD_gt_Payload_GainsTurret = TriggerCreate("libNPLD_gt_Payload_GainsTurret_Func");
TriggerAddEventUnitBehaviorChange(libNPLD_gt_Payload_GainsTurret, null, "Payload_HasTurret", c_unitBehaviorChangeCreate);
}
//--------------------------------------------------------------------------------------------------
// Trigger: Initialize UI
//--------------------------------------------------------------------------------------------------
bool libNPLD_gt_InitializeUI_Func (bool testConds, bool runActions) {
// Automatic Variable Declarations
// Actions
if (!runActions) {
return true;
}
libNPLD_gf_MapMechanicUIInit(libUIUI_gv_mapMechanicsPanel.lv_mainPanel);
return true;
}
//--------------------------------------------------------------------------------------------------
void libNPLD_gt_InitializeUI_Init () {
libNPLD_gt_InitializeUI = TriggerCreate("libNPLD_gt_InitializeUI_Func");
libCore_gf_IncludeModInitialization(libNPLD_gt_InitializeUI);
}
void libNPLD_InitTriggers () {
libNPLD_gt_InitPayloadPaths_Init();
libNPLD_gt_Payload_OrderMonitor_Enabled_Init();
libNPLD_gt_Payload_ChaosMonitor_Enabled_Init();
libNPLD_gt_Payload_ContestedMonitor_Enabled_Init();
libNPLD_gt_Payload_ContestedMonitor_Disabled_Init();
libNPLD_gt_Payload_UnattendedMonitor_Enabled_Init();
libNPLD_gt_PlayerCreatesTurretFromMapMechanicAbility_Init();
libNPLD_gt_Payload_GainsTurret_Init();
libNPLD_gt_InitializeUI_Init();
}
//--------------------------------------------------------------------------------------------------
// Library Initialization
//--------------------------------------------------------------------------------------------------
bool libNPLD_InitLib_completed = false;
void libNPLD_InitLib () {
if (libNPLD_InitLib_completed) {
return;
}
libNPLD_InitLib_completed = true;
libNPLD_InitLibraries();
libNPLD_InitVariables();
libNPLD_InitTriggers();
}
include "LibMHmu"