include "TriggerLibs/HeroesLib"
//--------------------------------------------------------------------------------------------------
// Library: Volskaya Mechanics
//--------------------------------------------------------------------------------------------------
// Preset Declarations
const int libVLSK_ge_OverwatchCapturePoint_State_Capturing = 0;
const int libVLSK_ge_OverwatchCapturePoint_State_Contested = 1;
const int libVLSK_ge_OverwatchCapturePoint_State_Empty = 2;
const int libVLSK_ge_OverwatchCapturePoint_State_Resetting = 3;
// Constants
const fixed libVLSK_gv_cooldownTimerDuration_C = 150.0;
const fixed libVLSK_gv_mechanicInitialSpawnTimerDuration_C = 150.0;
const fixed libVLSK_gv_warningTimerDuration = 30.0;
const int libVLSK_gv_capturePointMaxCount_C = 3;
const fixed libVLSK_gv_capturePointCheckPeriod_C = 0.0625;
const fixed libVLSK_gv_capturePointOvertimeTime_C = 5.0;
const string libVLSK_gv_eventID_VolskayaPointWarningCreated_C = "CapturePointWarningCreated";
const string libVLSK_gv_eventParam_VolskayaPointWarningCreated_Region_C = "Region";
const string libVLSK_gv_eventID_VolskayaPointEnabled_C = "CapturePointEnabled";
const string libVLSK_gv_eventParam_VolskayaPointEnabled_Region = "Region";
const string libVLSK_gv_eventID_VolskayaPointCompleted = "CapturePointCompleted";
const string libVLSK_gv_eventParam_VolskayaPointCompleted_Region = "Region";
const string libVLSK_gv_eventParam_VolskayaPointCompleted_WinningTeam = "Team";
const string libVLSK_gv_eventID_VolskayaPointOwnershipChanged_C = "CapturePointOwnershipChanged";
const string libVLSK_gv_eventParam_VolskayaPointOwnershipChanged_Region_C = "Region";
const string libVLSK_gv_eventParam_VolskayaPointOwnershipChanged_NewOwner_C = "NewOwner";
const string libVLSK_gv_eventID_Volskaya_TeamBeginsCapturingPoint = "TeamBeginsCapturingPoint";
const string libVLSK_gv_eventParam_Volskaya_TeamBeginsCapturing_AllyTeam = "AllyTeam";
const string libVLSK_gv_eventParam_Volskaya_TeamBeginsCapturing_EnemyTeam = "EnemyTeam";
const string libVLSK_gv_eventParam_Volskaya_TeamBeginsCapturing_CapturePointIndex = "CapturePointIndex";
const string libVLSK_gv_eventID_Volskaya_TeamBeginsContestingPoint = "TeamBeginsContestingPoint";
const string libVLSK_gv_eventParam_Volskaya_TeamBeginsContesting_OriginalTeam = "OriginalTeam";
const string libVLSK_gv_eventParam_Volskaya_TeamBeginsContesting_ContestingTeam = "ContestingTeam";
const string libVLSK_gv_eventParam_Volskaya_TeamBeginsContesting_CapturePointIndex = "CapturePointIndex";
const string libVLSK_gv_eventID_Volskaya_TeamStopsCapturingPoint = "TeamStopsCapturingPoint";
const string libVLSK_gv_eventParam_Volskaya_TeamStopsCapturingPoint_Team = "Team";
const string libVLSK_gv_eventParam_Volskaya_TeamStopsCapturingPoint_CapturePointIndex = "CapturePointIndex";
const string libVLSK_gv_eventID_VolskayaGiantRobotSpawns = "GiantRobotSpawns";
const string libVLSK_gv_eventID_VolskayaGiantRobotDies = "GiantRobotDies";
const string libVLSK_gv_eventParam_VolskayaGiantRobotDies_Position = "Point";
const string libVLSK_gv_eventParam_VolskayaGiantRobotDies_OwningTeam = "OwningTeam";
// Structures
struct libVLSK_gs_OverwatchCapturePoint {
region lv_region;
point lv_robotSpawnPoint;
unit lv_pilotBannerSconce;
unit lv_gunnerBannerSconce;
string lv_minimapIconUnitType;
string lv_minimapIconPreviewUnitType;
string lv_controlIndicatorImage;
bool lv_isActive;
int lv_owningTeam;
bool lv_isContested;
fixed[libCore_gv_bALMaxTeams + 1] lv_contestTimes;
fixed[libCore_gv_bALMaxTeams + 1] lv_victoryTimes;
bool lv_isOvertimeActive;
fixed lv_overtimeRemaining;
sound[libCore_gv_bALMaxTeams + 1] lv_allyCapturingSounds;
sound[libCore_gv_bALMaxTeams + 1] lv_enemyCapturingSounds;
unit lv_minimapIconUnit;
int lv_state;
bool[libCore_gv_bALMaxTeams + 1] lv_wasProgressing;
bool[libCore_gv_bALMaxTeams + 1] lv_wasDecaying;
int[libCore_gv_bALMaxTeams + 1] lv_oldCaptureProgress;
};
struct libVLSK_gs_VolskayaUI {
int lv_mapMechanic_Container;
int lv_mapMechanic_ContestProgressBar;
int lv_mapMechanic_ContestProgressBar_FillImage;
int lv_mapMechanic_VictoryProgress_OrderFill;
int lv_mapMechanic_VictoryProgress_OrderStroke;
int lv_mapMechanic_VictoryProgress_OrderLabel;
int lv_mapMechanic_VictoryProgress_ChaosFill;
int lv_mapMechanic_VictoryProgress_ChaosStroke;
int lv_mapMechanic_VictoryProgress_ChaosLabel;
int lv_mapMechanic_CenterCircle;
int lv_mapMechanic_CenterIndicator;
int lv_mapMechanic_ContestedLabel;
int lv_slideout_Container;
int lv_slideout_ToastNotification;
int lv_slideout_InfoLabel;
int lv_slideout_TimerLabel;
int lv_slideout_IconA;
int lv_slideout_IconB;
int lv_slideout_IconC;
int lv_overtimeBar_Container;
int lv_overtimeBar_ProgressBar;
int lv_robot_Container;
int lv_robot_TimeLabel;
int lv_robot_StatusFrame;
int lv_robot_GunnerPortrait;
int lv_robot_PilotPortrait;
int lv_robot_DeathIcon1;
int lv_robot_DeathIcon2;
int lv_robot_DeathIcon3;
int lv_robot_RobotIcon;
};
// Variable Declarations
fixed libVLSK_gv_capturePointContestTimeGoal_C;
fixed libVLSK_gv_capturePointVictoryTimeGoal_C;
fixed libVLSK_gv_capturePointDecayDelayTime_C;
unitfilter libVLSK_gv_capturePointContestFilter_C;
libVLSK_gs_OverwatchCapturePoint[libVLSK_gv_capturePointMaxCount_C + 1] libVLSK_gv_capturePoints;
int libVLSK_gv_capturePointCount;
int libVLSK_gv_currentCapturePoint;
timer libVLSK_gv_capturePointCooldownTimer;
timer libVLSK_gv_capturePointWarningTimer;
bool libVLSK_gv_grantStandardCapturePointRewards;
timer libVLSK_gv_mMVolskayaObjectivePreviewTimer;
fixed libVLSK_gv_mMVolskayaObjectivePreviewDelay_C;
unit libVLSK_gv_giantRobotUnit;
timer libVLSK_gv_pilotNeededTimer;
timer libVLSK_gv_gunnerNeededTimer;
fixed libVLSK_gv_controlPointVisualsActorMsgRadius_C;
bool libVLSK_gv_capturePointPlayControllingSounds;
sound[libCore_gv_bALMaxTeams + 1] libVLSK_gv_capturePoint_ControllingSound_Ally;
sound[libCore_gv_bALMaxTeams + 1] libVLSK_gv_capturePoint_ControllingSound_Enemy;
color libVLSK_gv_overwatchAllyBlue_C;
color libVLSK_gv_overwatchEnemyRed_C;
color libVLSK_gv_overwatchNeutralYellow_C;
libVLSK_gs_VolskayaUI libVLSK_gv_volskayaUI;
bool libVLSK_gv_overtimeActive;
bool libVLSK_gv_useFirstEventVoiceover;
// Function Declarations
void libVLSK_gf_InitializeOverwatchCapturePoint (region lp_region, point lp_rewardPoint, unit lp_pilotBannerSconce, unit lp_gunnerBannerSconce, string lp_minimapIconUnitType, string lp_minimapIconPreviewUnitType, string lp_controlIndicatorImage);
void libVLSK_gf_EnableDisableCapturePoint (int lp_capturePointIndex, bool lp_enableOrDisable);
void libVLSK_gf_CreateCapturePointPreview (int lp_capturePointIndex);
void libVLSK_gf_MonitorCapturePointProgressUntilComplete (int lp_capturePointIndex);
void libVLSK_gf_AdvanceCapturePointContestProgress (int lp_capturePointIndex, int lp_contestingTeam);
void libVLSK_gf_AdvanceCapturePointVictoryProgress (int lp_capturePointIndex);
void libVLSK_gf_AdvanceOvertimeTimer (int lp_capturePointIndex, bool lp_resetBarFirst);
void libVLSK_gf_AwardCapturePointVictorytoTeam (int lp_capturePointIndex, int lp_victoryTeam);
void libVLSK_gf_DecayCapturePointContest (int lp_capturePointIndex, int lp_team, fixed lp_speedMultiplier);
void libVLSK_gf_ChangeOwnershipofCapturePoint (int lp_capturePointIndex, int lp_newOwningTeam);
void libVLSK_gf_ClampVictoryProgressto99 (int lp_capturePointIndex);
int libVLSK_gf_GetCapturePointVictoryProgressasInt (int lp_capturePointIndex, int lp_teamNumber);
int libVLSK_gf_GetNextCapturePointIndex ();
int libVLSK_gf_OwningTeamOfCapturePoint (int lp_index);
int libVLSK_gf_TeamCapturingNeutralPoint (int lp_index);
fixed libVLSK_gf_CapturingProgressOfTeam (int lp_team, int lp_index);
int libVLSK_gf_StateOfPoint (int lp_index);
void libVLSK_gf_AwardGiantRobottoTeam (int lp_robotOwningTeam, point lp_spawnPoint);
void libVLSK_gf_SendEventVolskayaPointWarningCreated (region lp_position);
void libVLSK_gf_VolskayaPointWarningCreated (trigger t);
region libVLSK_gf_VolskayaPointWarningCreatedRegion ();
void libVLSK_gf_SendEventVolskayaPointEnabled (region lp_position);
void libVLSK_gf_VolskayaPointEnabled (trigger t);
region libVLSK_gf_VolskayaPointEnabledRegion ();
void libVLSK_gf_SendEventVolskayaPointCompleted (region lp_position, int lp_winningTeam);
void libVLSK_gf_VolskayaPointCompleted (trigger t);
region libVLSK_gf_VolskayaPointCompletedRegion ();
int libVLSK_gf_VolskayaPointCompletedWinningTeam ();
void libVLSK_gf_SendEventVolskayaPointOwnershipChanged (region lp_position, int lp_newOwner);
void libVLSK_gf_VolskayaPointOwnershipChanged (trigger t);
region libVLSK_gf_VolskayaPointOwnershipChangedRegion ();
int libVLSK_gf_VolskayaPointOwnershipChangedNewOwner ();
void libVLSK_gf_SendEventVolskayaTeamBeginsCapturingPoint (int lp_allyTeam, int lp_enemyTeam, int lp_capturePointIndex);
void libVLSK_gf_Volskaya_TeamBeginsCapturingPoint (trigger t);
int libVLSK_gf_Volskaya_TeamBeginsCapturingPoint_AllyTeam ();
int libVLSK_gf_Volskaya_TeamBeginsCapturingPoint_EnemyTeam ();
int libVLSK_gf_Volskaya_TeamBeginsCapturingPoint_CapturePointIndex ();
void libVLSK_gf_SendEventVolskayaTeamBeginsContestingPoint (int lp_originalTeam, int lp_contestingTeam, int lp_capturePointIndex);
void libVLSK_gf_Volskaya_TeamBeginsContestingPoint (trigger t);
int libVLSK_gf_Volskaya_TeamBeginsContestingPoint_OriginalTeam ();
int libVLSK_gf_Volskaya_TeamBeginsContestingPoint_ContestingTeam ();
int libVLSK_gf_Volskaya_TeamBeginsContestingPoint_CapturePointIndex ();
void libVLSK_gf_SendEventVolskayaTeamStopsCapturingPoint (int lp_team, int lp_capturePointIndex);
void libVLSK_gf_Volskaya_TeamStopsCapturingPoint (trigger t);
int libVLSK_gf_Volskaya_TeamStopsCapturingPoint_Team ();
int libVLSK_gf_Volskaya_TeamStopsCapturingPoint_CapturePointIndex ();
void libVLSK_gf_SendEventVolskayaGiantRobotSpawns ();
void libVLSK_gf_VolskayaGiantRobotSpawns (trigger t);
void libVLSK_gf_SendEventVolskayaGiantRobotDies (point lp_position, int lp_owningTeam);
void libVLSK_gf_VolskayaGiantRobotDies (trigger t);
point libVLSK_gf_VolskayaGiantRobotDiesPoint ();
int libVLSK_gf_VolskayaGiantRobotDiesOwningTeam ();
void libVLSK_gf_PlayControllingSoundsForTeams (int lp_owningTeam);
void libVLSK_gf_PauseUnpauseControllingSoundsForTeam (bool lp_pauseUnpause, int lp_team);
void libVLSK_gf_InitializeVolskayaUI ();
void libVLSK_gf_UpdateUIControlFrameColors (int lp_currentOwner);
void libVLSK_gf_UpdateUIContestBarProgress ();
void libVLSK_gf_UpdateUIVictoryPercentLabels ();
void libVLSK_gf_UpdateUIControlPointIndicatorImage ();
void libVLSK_gf_EnableDisableUIContestedCalloutDialog (bool lp_enableOrDisable);
void libVLSK_gf_ShowCapturePointWarningSlideoutWithPing (int lp_point);
void libVLSK_gf_ShowCapturePointCompletedSlideout (int lp_victoryTeam);
text libVLSK_gf_GetFormattedTimeRemaining (int lp_rawTime);
void libVLSK_gf_EnableDisableOvertimeBar (bool lp_enableOrDisable);
void libVLSK_gf_UpdateOvertimeBarforPoint (int lp_capturePointIndex);
void libVLSK_gf_ShowRobotSlideoutStatusFrameforUnit (unit lp_robotUnit);
void libVLSK_gf_SetPilotPortrait (unit lp_unit);
void libVLSK_gf_SetGunnerPortrait (unit lp_unit);
void libVLSK_gf_PlayVOControlPointWarning ();
void libVLSK_gf_PlayVOControlPointEnabled ();
void libVLSK_gf_PlayVOControlPointCompleted (int lp_winningTeam);
void libVLSK_gf_PlayVORobotNeedsaPilot (int lp_robotTeam);
void libVLSK_gf_PlayVORobotNeedsaGunner (int lp_robotTeam);
void libVLSK_gf_PlayVORobotDestroyed ();
void libVLSK_gf_PlayVORobotTimedOut ();
void libVLSK_gf_ResetAllVOUserData ();
// Trigger Declarations
trigger libVLSK_gt_VolskayaInitializeMapMVPAnnouncerSounds;
trigger libVLSK_gt_MapMechanicInitialization;
trigger libVLSK_gt_IncludeModInitialization;
trigger libVLSK_gt_CapturePointCooldownTimerExpires;
trigger libVLSK_gt_CapturePointWarningTimerExpires;
trigger libVLSK_gt_GateOpenTimerExpires;
trigger libVLSK_gt_MMVolskayaObjectivePreviewTimerExpires;
trigger libVLSK_gt_GiantRobotDies;
trigger libVLSK_gt_PilotEntersRobotDropBanner;
trigger libVLSK_gt_GunnerEntersRobotDropBanner;
trigger libVLSK_gt_PilotNeededTimerExpires;
trigger libVLSK_gt_GunnerNeededTimerExpires;
trigger libVLSK_gt_PilotEntersRobotStartGunnerReminderTimer;
trigger libVLSK_gt_GunnerEntersRobotStopGunnerReminderTimer;
trigger libVLSK_gt_ControlPointEnabled;
trigger libVLSK_gt_ControlPointOwnershipChanged;
trigger libVLSK_gt_ControlPointCompleted;
trigger libVLSK_gt_VehicleEntered;
trigger libVLSK_gt_VehicleSwapped;
trigger libVLSK_gt_VehicleAbandoned;
trigger libVLSK_gt_EnableNextCapturePoint;
trigger libVLSK_gt_KillRobot;
trigger libVLSK_gt_ShowOvertime;
trigger libVLSK_gt_PrepforRobotTesting;
trigger libVLSK_gt_SetPortraitIconPilot;
trigger libVLSK_gt_SetPortraitIconGunner;
trigger libVLSK_gt_PlayDeathJitter;
trigger libVLSK_gt_PlaySlideout;
// Library Initialization
void libVLSK_InitVariables ();