include "TriggerLibs/HeroesLib_h"
//--------------------------------------------------------------------------------------------------
// Library: Maps
//--------------------------------------------------------------------------------------------------
// Preset Declarations
const int libMapM_ge_JungleCampDefenderTypes_Custom = 0;
const int libMapM_ge_JungleCampDefenderTypes_SiegeGiants = 1;
const int libMapM_ge_JungleCampDefenderTypes_Knights = 2;
const int libMapM_ge_JungleCampDefenderTypes_GraveGolem = 3;
const int libMapM_ge_JungleCampDefenderTypes_Doubloons = 4;
const int libMapM_ge_JungleCampDefenderTypes_SiegeCamp1 = 5;
const int libMapM_ge_JungleCampDefenderTypes_SiegeCamp2 = 6;
const int libMapM_ge_JungleCampDefenderTypes_SiegeCamp3 = 7;
const int libMapM_ge_JungleCampDefenderTypes_BruiserCamp1 = 8;
const int libMapM_ge_JungleCampDefenderTypes_BruiserCamp2 = 9;
const int libMapM_ge_JungleCampDefenderTypes_BruiserCamp3 = 10;
const int libMapM_ge_JungleCampDefenderTypes_BossCamp1 = 11;
const int libMapM_ge_JungleCampDefenderTypes_BossCamp2 = 12;
const int libMapM_ge_JungleCampDefenderTypes_BossCamp3 = 13;
const int libMapM_ge_JungleCampMercTypes_Custom = 0;
const int libMapM_ge_JungleCampMercTypes_SiegeGiants = 1;
const int libMapM_ge_JungleCampMercTypes_Ogres = 2;
const int libMapM_ge_JungleCampMercTypes_GraveGolem = 3;
const int libMapM_ge_JungleCampMercTypes_AshenvaleAncients = 4;
const int libMapM_ge_JungleCampMercTypes_SiegeCamp1 = 5;
const int libMapM_ge_JungleCampMercTypes_SiegeCamp2 = 6;
const int libMapM_ge_JungleCampMercTypes_SiegeCamp3 = 7;
const int libMapM_ge_JungleCampMercTypes_BruiserCamp1 = 8;
const int libMapM_ge_JungleCampMercTypes_BruiserCamp2 = 9;
const int libMapM_ge_JungleCampMercTypes_BruiserCamp3 = 10;
const int libMapM_ge_JungleCampMercTypes_BossCamp1 = 11;
const int libMapM_ge_JungleCampMercTypes_BossCamp2 = 12;
const int libMapM_ge_JungleCampMercTypes_BossCamp3 = 13;
const int libMapM_ge_JungleCampTypes_MercCamp = 0;
const int libMapM_ge_JungleCampTypes_DoubloonCamp = 1;
const int libMapM_ge_JungleCampTypes_DoubloonSmallCamp = 2;
const int libMapM_ge_JungleCampTypes_AshenvaleForestGuardians = 3;
const int libMapM_ge_JungleCampTypes_TryMeCamp = 4;
const int libMapM_ge_JungleCampTypes_Custom1 = 5;
const int libMapM_ge_JungleCampTypes_Custom2 = 6;
const int libMapM_ge_JungleCampTypes_Custom3 = 7;
const int libMapM_ge_JungleCampStates_Idle = 0;
const int libMapM_ge_JungleCampStates_Busy = 1;
const int libMapM_ge_JungleCampStates_Dead = 2;
const int libMapM_ge_JungleCampStates_Paused = 3;
const int libMapM_ge_JungleCampStates_Hibernating = 4;
const int libMapM_ge_JungleCampStates_HibernatingReadyToRespawn = 5;
string libMapM_ge_JungleCampStates_Ident (int lp_val);
const int libMapM_ge_MapMechanicAnnouncementAllyOptions_Neutral = 0;
const int libMapM_ge_MapMechanicAnnouncementAllyOptions_Ally = 1;
const int libMapM_ge_MapMechanicAnnouncementAllyOptions_Enemy = 2;
const int libMapM_ge_MapMechanicAnnouncementAllyOptions_AllySmall = 3;
const int libMapM_ge_MMRavenCurseState_Starting = 0;
const int libMapM_ge_MMRavenCurseState_TributeSpawning = 1;
const int libMapM_ge_MMRavenCurseState_TributeSpawned = 2;
const int libMapM_ge_MMRavenCurseState_NoActivity = 3;
const int libMapM_ge_MMRavenCurseState_Cursed = 4;
const int libMapM_ge_MMRavenCurseState_Lifted = 5;
const int libMapM_ge_MMGardensDragonState_Idle = 0;
const int libMapM_ge_MMGardensDragonState_ObelisksWarning = 1;
const int libMapM_ge_MMGardensDragonState_ObelisksAvailable = 2;
const int libMapM_ge_MMGardensDragonState_DragonRampaging = 3;
// Constants
const fixed libMapM_gv_bALJungleBirthDelay = 3.0;
const fixed libMapM_gv_bALJungleCampCaptureTime = 1.5;
const fixed libMapM_gv_bALJungleCampCaptureRadius = 3.0;
const int libMapM_gv_dataJungleMaxNumberOfDefenderTypes = 15;
const int libMapM_gv_dataJungleMaxNumberOfDefendersPerCamp = 10;
const int libMapM_gv_dataJungleMaxNumberOfMercTypes = 15;
const int libMapM_gv_dataJungleMaxNumberOfMercsSpawned = 10;
const int libMapM_gv_dataJungleMaxNumberOfPaths = 6;
const int libMapM_gv_jungleMaxCamps = 15;
const int libMapM_gv_jungleMaxMercGroups = 30;
const int libMapM_gv_mapMechanicsMaxCount_C = 4;
const int libMapM_gv_mMRepulseRegionPunchTargetMax_C = 4;
const string libMapM_gv_mMRavenMechanicName_C = "CursedHollow";
const int libMapM_gv_mMRavenTributeSpawnPointsCountMax_C = 50;
const fixed libMapM_gv_mMRavenRevealRadius_C = 4.5;
const fixed libMapM_gv_mMRavenSpawnWarningTimerTime_C = 30.0;
const fixed libMapM_gv_mMRavenTributeSpawnTimeFirst_C = 17.0;
const fixed libMapM_gv_mMRavenTributeSpawnTime_C = 70.0;
const int libMapM_gv_mMRavenTributeThreshold_C = 3;
const fixed libMapM_gv_mMRavenCurseDuration_C = 70.0;
const string libMapM_gv_mMGardensDragonMechanicName_C = "DragonShire";
const int libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C = 2;
const int libMapM_gv_mMGardensDragonDragonTowerMaxCount = 10;
const fixed libMapM_gv_mMGardensDragonWarningTime_C = 30.0;
const fixed libMapM_gv_mMGardensDragonDragonTowerStartTime_C = 60.0;
const fixed libMapM_gv_mMGardensDragonDragonTowerRespawnTime_C = 90.0;
const fixed libMapM_gv_mMGardensDragonDragonKnightStartingTime_C = 55.0;
const fixed libMapM_gv_mMGardensDragonDragonTowerOverCaptureTime_C = 0.0;
const fixed libMapM_gv_mMGardensDragonDragonballTowerCaptureRadius_C = 4.0;
const fixed libMapM_gv_mMGardensDragonDragonStatueReminderTimerTime_C = 15.0;
const fixed libMapM_gv_mMGardensDragonDragonStatueChannelTime_C = 3.0;
const fixed libMapM_gv_mMGardensDragonDragonStatueHelperTextTagHeightOffset_C = -2.5;
const fixed libMapM_gv_mMGardensDragonDragonTowerCaptureTime_C = 4.0;
const int libMapM_gv_vehicle_MaxNumberOfVehicles_C = 30;
// Structures
struct libMapM_gs_JungleCampDefenderData {
bool lv_campIsSoloable;
bool lv_campIsElite;
bool lv_defendersCoweronDeath;
bool[libMapM_gv_dataJungleMaxNumberOfDefendersPerCamp + 1] lv_defenderCoweringUnit;
fixed lv_initialSpawnDelay;
fixed lv_respawnTime;
int lv_numberOfCreeps;
text lv_campTypeMinimapTitleLabel;
text lv_campTypeMinimapLabel;
text lv_customTextTagTitle;
text lv_customTextTagInfoText;
string[libMapM_gv_dataJungleMaxNumberOfDefendersPerCamp + 1] lv_creepUnitTypes;
fixed lv_xPAwardForCapture;
int lv_numberOfRanks;
int[libCore_gv_dataScalingMaxScalingTicks + 1] lv_campLevel;
string lv_aIGoalLink;
};
struct libMapM_gs_JungleCampPathData {
region lv_townRegion;
point lv_waypoint;
};
struct libMapM_gs_JungleCampMercData {
int lv_numberOfMinionsSpawned;
string[libMapM_gv_dataJungleMaxNumberOfMercsSpawned + 1] lv_spawnedMinionUnitTypes;
int lv_numberOfRanks;
};
struct libMapM_gs_JungleCampUI {
int lv_jungleCreepCampsParentPanel;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsDialog;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCamp_PositionControl;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsInfoPanel;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsInfo_Label_Timer;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsInfo_Label_Title;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsInfo_Label_PlayerName;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsInfo_Label_Description;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsInfo_Label_Debug;
int[libMapM_gv_jungleMaxCamps + 1] lv_jungleCreepCampsInfoPanel2;
};
struct libMapM_gs_JungleCreepCamps {
int lv_mapDataCampType;
int lv_mapDataCampDefenderType;
point lv_mapDataCampCaptainSpawnPoint;
point[libMapM_gv_dataJungleMaxNumberOfDefendersPerCamp + 1] lv_mapDataDefenderSpawnPoints;
region lv_mapDataDefenderLeashRegion;
string lv_mapDataCapturePointSplatModel;
string lv_mapDataMinimapIcon;
fixed lv_mapDataMinimapIconScale;
bool lv_mapDataMinimapIconUseTeamColor;
bool lv_mapDataCampIsElite;
int lv_mapDataMercSpawnType;
int lv_mapDataBattleshipSpawnType;
unit lv_mapDataCampBuildingBuilding;
bool lv_defenderCampIsSoloable;
bool lv_defenderCampInstantlyGrantsReward;
int lv_defenderNumberofCreeps;
string[libMapM_gv_dataJungleMaxNumberOfDefendersPerCamp + 1] lv_defenderUnitTypes;
fixed lv_defenderInitialSpawnDelay;
fixed lv_defenderRespawnTime;
int lv_defenderNumberOfRanks;
int[libCore_gv_dataScalingMaxScalingTicks + 1] lv_defenderCampLevel;
fixed lv_defenderCaptureXPValue;
bool lv_defenderDefendersCoweronDeath;
bool lv_defenderSuppressActiveLanerCounter;
text lv_defenderCampTypeMinimapTitle;
text lv_defenderCampTypeMinimapLabel;
bool lv_defenderDefendersHaveStaggeredBirth;
fixed lv_defenderDefendersStaggeredBirthPeriod;
bool[libMapM_gv_dataJungleMaxNumberOfDefendersPerCamp + 1] lv_defenderCoweringUnit;
unitgroup lv_defenderCoweringLivingUnitGroup;
unitgroup lv_defenderCoweringDeadUnitGroup;
unitgroup lv_defenderUnitGroup;
bool lv_defenderDamagesCoreOnCapture;
int lv_defenderDefendersBribedCount;
int lv_mercNumberOfMinionsSpawned;
string[libMapM_gv_dataJungleMaxNumberOfMercsSpawned + 1] lv_mercSpawnedMinionUnitType;
fixed[libMapM_gv_dataJungleMaxNumberOfMercsSpawned + 1] lv_mercSpawnedMinionAIThreatValueforAITeamDelegateSystem;
int lv_mercNumberOfRanks;
bool[libCore_gv_bALMaxTeams + 1] lv_mercMercCampHasSingleWaypoint;
libMapM_gs_JungleCampPathData[libMapM_gv_dataJungleMaxNumberOfPaths + 1] lv_mercOrderMercCampPathing;
libMapM_gs_JungleCampPathData[libMapM_gv_dataJungleMaxNumberOfPaths + 1] lv_mercChaosMercCampPathing;
bool lv_mercCampHibernateswhenmatchingcampsareactive;
int[libCore_gv_bALMaxTeams + 1] lv_mercLaneToSpawnIn;
int[libCore_gv_bALMaxTeams + 1] lv_mercLaneLastSpawnedIn;
int[libCore_gv_bALMaxTeams + 1] lv_mercSpawnFirstWaypointIndex;
int lv_piratesNumberOfRanks;
unit lv_campIconUnit;
unit lv_campOwnershipFlagUnit;
point lv_campOwnershipFlagPosition;
int lv_campHelperTextTagOrder;
int lv_campHelperTextTagChaos;
int lv_capturingPlayer;
bool lv_campAwardsRegenGlobe;
bool lv_stateIsEnabled;
bool lv_statePersonalHiberationisEnabled;
timer lv_stateCreepBirthTimer;
timer lv_stateCreepRespawnTimer;
timer lv_stateCreepActiveTimer;
int lv_stateCurrentDefenderScalingTicks;
int lv_stateCurrentMercScalingTicks;
bool lv_stateHasSpawned;
int lv_aIState;
int lv_aIDefenderAIIndex;
string lv_aICampGoalLink;
region lv_captureCaptureRegion;
unit lv_captureCircleOfPowerUnit;
bool lv_captureCaptureEnabled;
int lv_captureCaptureCounter;
int lv_captureCapturePointIndex;
int lv_statTrackingOrderCaptures;
int lv_statTrackingChaosCaptures;
fixed lv_statTrackingDamageDoneByLastCapture;
};
struct libMapM_gs_MapMechanicUsedTracker {
bool lv_healingFountainUsed;
bool lv_dragonShrine;
bool lv_dragonStatue;
bool lv_minesEntrance;
bool lv_minesExit;
bool lv_ravenTribute;
};
struct libMapM_gs_RavenCurseTeamStats {
int lv_triburteCollected;
bool lv_cursed;
};
struct libMapM_gs_MMGardensDragonDragonballTowers {
unit lv_shrineUnit;
region lv_captureRegion;
bool lv_enabled;
int lv_captureBeaconIndex;
int lv_helperText;
unit lv_shrineBeamTargetUnit;
};
struct libMapM_gs_Vehicle {
unit lv_unit_Vehicle;
unit lv_unit_UnitInsideVehicle;
unit lv_unit_LinkedVehicle;
int lv_player_PlayerControllingVehicle;
};
// Variable Declarations
fixed libMapM_gv_bALJungleLeashRespawnTime;
fixed libMapM_gv_bALJungleCampScalingTimerDuration;
fixed libMapM_gv_bALJungleOgreMageAuraAbilityPowerPercentage;
fixed libMapM_gv_genericMercCampInitialSpawnDelay_C;
fixed libMapM_gv_genericMercBossCampInitialSpawnDelay_C;
fixed libMapM_gv_mercSapperDefaultSpawnTime_C;
fixed libMapM_gv_mercSapperDefaultRespawnTime_C;
fixed libMapM_gv_reconCampInitialSpawnDelay_C;
libMapM_gs_JungleCampDefenderData[libMapM_gv_dataJungleMaxNumberOfDefenderTypes + 1] libMapM_gv_dataJungleCampDefenderData;
libMapM_gs_JungleCampMercData[libMapM_gv_dataJungleMaxNumberOfMercTypes + 1] libMapM_gv_dataJungleCampMercData;
libMapM_gs_JungleCampUI libMapM_gv_uIJungleCampPanel;
bool libMapM_gv_jungleCreepCampsInitialized;
int libMapM_gv_jungleCreepCampsCurrentCallbackIndex;
libMapM_gs_JungleCreepCamps[libMapM_gv_jungleMaxCamps + 1] libMapM_gv_jungleCreepCamps;
int libMapM_gv_jungleNumberOfCreepCamps;
int libMapM_gv_jungleNumberOfActiveMercGroups;
unitgroup[libMapM_gv_jungleMaxMercGroups + 1] libMapM_gv_jungleMiniMapIconGroup;
unit[libMapM_gv_jungleMaxMercGroups + 1] libMapM_gv_jungleMiniMapLeader;
int[libMapM_gv_jungleMaxMercGroups + 1] libMapM_gv_jungleMiniMapPath;
int[libMapM_gv_jungleMaxMercGroups + 1] libMapM_gv_jungleMiniMapPathCurrentIndex;
int[libMapM_gv_jungleMaxMercGroups + 1] libMapM_gv_jungleMiniMapPathIndexMaximum;
text[libMapM_gv_jungleMaxCamps + 1][libMapM_gv_jungleMaxCamps + 1] libMapM_gv_jungleCreepCampTextTagText;
bool libMapM_gv_jungleAllCampsShouldBeHibernating;
string[libMapM_gv_mapMechanicsMaxCount_C + 1] libMapM_gv_mapMechanics;
actor libMapM_gv_mapMechanicControllerActor;
int libMapM_gv_mapMechanicsCount;
trigger[libMapM_gv_mapMechanicsMaxCount_C + 1] libMapM_gv_mapMechanicsInitCallbacks;
text libMapM_gv_mapMechanicsObserverCountLabelText;
libMapM_gs_MapMechanicUsedTracker[libCore_gv_bALMaxPlayers + 1] libMapM_gv_mapMechanicUsedTracker;
int[libCore_gv_bALMaxEnginePlayerCount + 1] libMapM_gv_mMIntroCutscene;
int libMapM_gv_mMIntroCutscenePlayer;
bool[libCore_gv_bALMaxEnginePlayerCount + 1] libMapM_gv_mMIntroCutsceneCompleted;
bool[libCore_gv_bALMaxEnginePlayerCount + 1] libMapM_gv_mMIntroCutsceneFinished;
int libMapM_gv_mMAnnouncementDialog;
int[libCore_gv_bALMaxEnginePlayerCount + 1] libMapM_gv_mMAnnouncementDialogsMultiple;
bool[6] libMapM_gv_mMRunConversationDone;
int libMapM_gv_mMRunConversationDoneCount;
region[libCore_gv_bALMaxTeams + 1] libMapM_gv_mMRepulseRegions;
point[libCore_gv_bALMaxTeams + 1][libMapM_gv_mMRepulseRegionPunchTargetMax_C + 1] libMapM_gv_mMRepulseRegionPunchTarget;
unitgroup libMapM_gv_mMRepulseRegionPunchedGroup;
region[libCore_gv_bALMaxTeams + 1] libMapM_gv_mMSafeRegions;
int libMapM_gv_countOfMMAIUnits;
trigger libMapM_gv_mMEnableMapEventTrigger;
trigger libMapM_gv_mMDisableMapEventTrigger;
bool libMapM_gv_mMMapMechanicDisabled;
bool libMapM_gv_mMMapEventHasOccured;
libMapM_gs_RavenCurseTeamStats[libCore_gv_bALMaxTeams + 1] libMapM_gv_mMRavenTeamStats;
point[libMapM_gv_mMRavenTributeSpawnPointsCountMax_C + 1] libMapM_gv_mMRavenTributeSpawnPoints;
point libMapM_gv_mMRavenTributeNextSpawnPoint;
int libMapM_gv_mMRavenTributeSpawnPointsCount;
bool libMapM_gv_mMRavenUseManualTributeSpawns;
revealer libMapM_gv_mMRavenOrderRevealer;
revealer libMapM_gv_mMRavenChaosRevealer;
unitgroup libMapM_gv_mMRavenTributes;
unitgroup libMapM_gv_mMRavenTributeWarnings;
unit libMapM_gv_mMRavenTributeWarning;
unit libMapM_gv_mMRavenTributePreview;
fixed libMapM_gv_mMRavenStartTime;
int libMapM_gv_mMRavenTributeSpawnTimeVariance;
fixed libMapM_gv_mMRavenTributePostCurseWaitTime;
int libMapM_gv_mMRavenTributesCollected;
timer libMapM_gv_mMRavenStartTimer;
timer libMapM_gv_mMRavenWarningTimer;
timer libMapM_gv_mMRavenTributeSpawnTimer;
bool libMapM_gv_mMRavenUseTributePreviews;
int libMapM_gv_mMRavenTributeSpawnCount;
int libMapM_gv_mMRavenLastTributeSpawnIndex1;
int libMapM_gv_mMRavenLastTributeSpawnIndex2;
int libMapM_gv_mMRavenTributeSpawnGroupIndex;
sound libMapM_gv_mMRavenSpawnSound;
fixed libMapM_gv_mMRavenFirstEventTiming;
timer libMapM_gv_mMRavenObjectivePreviewTimer;
fixed libMapM_gv_mMRavenObjectivePreviewLongDelay;
fixed libMapM_gv_mMRavenObjectivePreviewShortDelay;
timer libMapM_gv_mMRavenCurseTimer;
bool libMapM_gv_mMRavenCurseLifted;
sound libMapM_gv_mMRavenCurseSound;
fixed[libCore_gv_bALMaxPlayers + 1] libMapM_gv_siegeDamagePreCurse;
fixed[libCore_gv_bALMaxPlayers + 1] libMapM_gv_totalCurseSiegeDamage;
timer[6] libMapM_gv_mMRavenTimers;
int libMapM_gv_mMRavenTimerCount;
bool[6] libMapM_gv_mMRavenTimers3;
bool libMapM_gv_mMRavenTimers2;
bool libMapM_gv_mMRavenEventFirstTime;
text libMapM_gv_mMGardensDragonDragonballKnightNameC;
text libMapM_gv_mMGardensDragonDragonballShrineNameC;
unit libMapM_gv_mMGardensDragonTowerMoonBeamTarget;
unit libMapM_gv_mMGardensDragonTowerMoon;
unit libMapM_gv_mMGardensDragonTowerStar;
unit libMapM_gv_mMGardensDragonTowerStarBeamTarget;
sound libMapM_gv_mMGardensDragonAmbientSound;
unit libMapM_gv_mMGardensDragonUnit;
int libMapM_gv_mMGardensDragonPlayer;
unit libMapM_gv_mMGardensDragonStatue;
int libMapM_gv_mMGardensDragonStatueTextTag;
int libMapM_gv_mMGardensDragonStatueTextTagAllyOwned;
int libMapM_gv_mMGardensDragonStatueTextTagEnemyOwned;
timer libMapM_gv_mMGardensDragonDragonKnightLifeTimer;
point libMapM_gv_mMGardensDragonDragonKnightRespawnPoint;
int libMapM_gv_mMGardensDragonCurrentState;
bool libMapM_gv_mMGardensDragonSpawnFirstTime;
timer libMapM_gv_mMGardensDragonDragonTowerStartTimer;
timer libMapM_gv_mMGardensDragonDragonTowerRespawnTimer;
timer libMapM_gv_mMGardensDragonDragonTowerWarningTimer;
timer libMapM_gv_mMGardensDragonDragonTowerGoalActivationTimer;
timer libMapM_gv_mMGardensDragonDragonStatueActiveReminderTimer;
int libMapM_gv_mMGardensDragonDragonTowerCount;
libMapM_gs_MMGardensDragonDragonballTowers[libMapM_gv_mMGardensDragonDragonTowerMaxCount + 1] libMapM_gv_mMGardensDragonDragonTowers;
actor libMapM_gv_mMGardensDragonSoundRegionActor;
region libMapM_gv_mMGardensDragonSoundRegion;
int libMapM_gv_mMGardensDragonDragonCaptures;
point libMapM_gv_mMGardensDragonSpawnPoint;
bool libMapM_gv_mMDragonballsTransmissionShrinesRechargeFirstTime;
libMapM_gs_Vehicle[libMapM_gv_vehicle_MaxNumberOfVehicles_C + 1] libMapM_gv_vehicle;
int libMapM_gv_vehicle_VehicleCount;
// Function Declarations
void libMapM_gf_InitializeSiegeTrooperMercType (int lp_campType, text lp_mercName);
void libMapM_gf_InitializeSummonerMercType (int lp_campType, text lp_summonerName, text lp_summonedUnitName);
void libMapM_gf_InitializeHellbatMercType (int lp_campType, text lp_mercName, fixed lp_initialSpawnDelay, fixed lp_respawnTime, bool lp_cowerOnDeath);
void libMapM_gf_InitializeSapperMercType (int lp_campType, text lp_mercName, fixed lp_initialSpawnDelay, fixed lp_respawnDelay);
void libMapM_gf_DataInitializeScalingDataForDefender (int lp_defenderType, string lp_scalingBehavior);
void libMapM_gf_DataInitializeScalingDataForMerc (int lp_mercType, string lp_scalingBehavior);
void libMapM_gf_JungleInitializeDefenderData (int lp_camp);
void libMapM_gf_JungleInitializeMercCampData (int lp_camp);
void libMapM_gf_JungleUpdateMercCampData (int lp_camp);
point libMapM_gf_JungleDetermineMercWaypoint (int lp_owningTeam, int lp_camp);
void libMapM_gf_JungleInitializeDoubloonCampData (int lp_camp);
void libMapM_gf_JungleInitializeDoubloonSmallCampData (int lp_camp);
void libMapM_gf_JungleInitializeTryMeCampData (int lp_camp);
void libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons (unit lp_unit, fixed lp_delayTime);
void libMapM_gf_JungleInitializeCreepCamp (int lp_camp);
int libMapM_gf_JungleGetJungleCampForUnit (unit lp_unit);
int libMapM_gf_JungleGetJungleUnitIndexForUnit (unit lp_unit);
string libMapM_gf_JungleGetCurrentIconForJungleCamp (int lp_camp, bool lp_alive);
string libMapM_gf_JungleGetPortraitForJungleCamp (int lp_camp);
string libMapM_gf_JungleGetPortraitForUnitType (string lp_unitType);
text libMapM_gf_JungleGetNameTextForJungleCamp (int lp_camp);
unit libMapM_gf_JungleGetRandomEnemyHeroInRangeOfMinionWithMinimumRangeRequirements (unit lp_creep, point lp_position, fixed lp_minimumRange, fixed lp_maximumRange, unit lp_restrictedUnit);
int libMapM_gf_JungleGetCampIndexFromDefenderIndex (int lp_defenderIndex);
void libMapM_gf_JungleUpdateTextTagForCamp (int lp_camp);
void libMapM_gf_JungleSwitchToTextTagForCamp (int lp_camp);
void libMapM_gf_JungleUpdateMinimapTooltipForCamp (int lp_camp);
void libMapM_gf_JungleRespawnCreepsForCamp (int lp_camp);
void libMapM_gf_JungleDebugResetCamp (int lp_Player, int lp_Camp);
void libMapM_gf_JungleTransitionCampIntoState (int lp_camp, int lp_state);
void libMapM_gf_JungleHibernateCampDefender (unit lp_defender);
void libMapM_gf_JungleStopHibernatingCampDefender (unit lp_defender, point lp_location);
void libMapM_gf_JungleStartHibernateCamps ();
void libMapM_gf_JungleHibernateMatchingCamps (string lp_leaderUnitType);
void libMapM_gf_JungleStopHibernateCamps ();
void libMapM_gf_JungleStopHibernateCampsByLeaderUnit (string lp_laningUnitType);
void libMapM_gf_JungleTurnOnCampCaptureBeacon (int lp_camp);
void libMapM_gf_JungleTurnOffCampCaptureBeacon (int lp_camp, int lp_owner);
void libMapM_gf_JungleTransitionCampCaptureBeacontoHidden (int lp_camp);
void libMapM_gf_JungleGrantCaptureRewards (int lp_camp, int lp_owner, bool lp_hasMercLordTalent);
void libMapM_gf_JungleMercCampCapturedAnnouncement (int lp_camp, int lp_owner);
void libMapM_gf_JungleSpawnMercMinions (int lp_camp, int lp_owner, bool lp_hasMercLordTalent);
int libMapM_gf_JungleGetMercCampForUnit (unit lp_unit);
int libMapM_gf_JungleGetMercLanerGroupForUnit (unit lp_unit);
void libMapM_gf_JungleSetMiniMapIconForMercMinions (int lp_camp, int lp_mercGroupIndex, string lp_mercUnitMiniMapModel, unitgroup lp_mercUnitGroup);
void libMapM_gf_JungleCreateMercPath (unit lp_mercLeader, bool lp_newPath);
void libMapM_gf_JungleDropLootBannerinMercCamp (int lp_campIndex, playergroup lp_creditPlayerGroup);
void libMapM_gf_JungleUpdateMercDamageTracker (int lp_camp, fixed lp_damageDealt);
void libMapM_gf_MapMechanicAdd (string lp_mechanic, trigger lp_initializeCallback);
int libMapM_gf_MapMechanicIndex (string lp_mechanic);
bool libMapM_gf_MapMechanicExistsOnMap (string lp_mechanic);
string libMapM_gf_PrimaryMapMechanic ();
void libMapM_gf_PlayMapMechanicIntroForPlayer (int lp_player, string lp_cutscene, string lp_filter);
bool libMapM_gf_MapMechanicIntroFinished (int lp_player);
void libMapM_gf_MapMechanicDisplayAnnouncement (text lp_announcement, bool lp_writeOut, fixed lp_writeOutDuration, fixed lp_duration, int lp_allyOption, playergroup lp_players);
void libMapM_gf_MapMechanicDisplayAnnouncementWait (text lp_announcement, bool lp_writeOut, fixed lp_writeOutDuration, fixed lp_duration, int lp_allyOption, playergroup lp_players, bool lp_waitOption);
void libMapM_gf_MMAnnouncementClearnup (int lp_dlg, int lp_label, fixed lp_duration, playergroup lp_players);
void libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed (text lp_announcement, bool lp_writeOut, fixed lp_writeOutDuration, fixed lp_duration, int lp_allyOption, playergroup lp_players);
void libMapM_gf_MMAnnouncementMultiplePerPlayer (int lp_player, text lp_announcement, bool lp_writeOut, fixed lp_writeOutDuration, fixed lp_duration, int lp_allyOption);
void libMapM_gf_MapMechanicRunConversation (string lp_convoOrder, string lp_convoChaos, string lp_convoObserver);
void libMapM_gf_MMRunConversationIndividual (string lp_convo, playergroup lp_players);
void libMapM_gf_MapSetRepulseRegion (int lp_team, region lp_pulseRegion, point lp_punchTargetLocation1, point lp_punchTargetLocation2, point lp_punchTargetLocation3, point lp_punchTargetLocation4);
void libMapM_gf_MMRepulseRegionAddToPunchedGroup (unit lp_punchedUnit);
void libMapM_gf_MapSetSafeRegion (int lp_team, region lp_safeRegion);
void libMapM_gf_RestrictAbilitiesToRegionForUnit (unit lp_unit, region lp_region);
int libMapM_gf_RegisterMapMechanicAIUnitCustomValue ();
void libMapM_gf_ShareVisionofUnitForBothTeams (unit lp_tributeWarningUnit);
void libMapM_gf_CreateSnapshotOfUnitForBothTeams (unit lp_unit);
void libMapM_gf_RegisterMapEventEnableDisableTriggers (trigger lp_disableMapEventTrigger, trigger lp_enableMapEventTrigger);
void libMapM_gf_EnableDisableMapEvent (bool lp_enableOrDisable);
void libMapM_gf_MMRavenCurseAddTributeSpawnLocation (point lp_spawnLocation);
bool libMapM_gf_MMRavenCurseStarted ();
fixed libMapM_gf_MMRavenStartTime ();
fixed libMapM_gf_MMRavenTributeSpawnTime ();
int libMapM_gf_MMRavenTributeThresholdAmount ();
string libMapM_gf_MMRavenTributeUnitType ();
point libMapM_gf_MMRavenRandomSpawnPoint ();
int libMapM_gf_MMRavenSpawnPointSide (int lp_index);
void libMapM_gf_MMRavenStartSpawnTimer5090 ();
void libMapM_gf_MMRavenCreatePreviewTribute (point lp_previewLocation);
void libMapM_gf_MMRavenTributeCollectionThresholdReached (int lp_winningTeam);
void libMapM_gf_MMRavenCurseStart (int lp_cursedPlayerID);
void libMapM_gf_MMRavenApplyCurseEffectOnMinion (unit lp_unit);
void libMapM_gf_MMRavenRemoveCurseEffectOnMinion (unit lp_minion);
void libMapM_gf_MMRavenPlayCurseSound (int lp_cursedTeam);
void libMapM_gf_MMRavenWaitForandPlayCurseEndWarning ();
void libMapM_gf_MMRavenObjectiveUIUpdateText ();
void libMapM_gf_PreCurseSiegeDamageCache (int lp_cursingTeam);
void libMapM_gf_CalculateCurseSiegeDamageDone (int lp_cursingTeam);
void libMapM_gf_PauseUnpauseCurseHollowTimers (bool lp_pauseUnpause);
void libMapM_gf_MMRavenTransmissionFirstEventStartQ ();
void libMapM_gf_MMRavenTransmissionRepeatEventStartQ ();
void libMapM_gf_MMRavenTransmissionCurseActiveQ (int lp_cursedTeam);
void libMapM_gf_MMRavenTransmissionCurseEndsQ ();
void libMapM_gf_MMGardensDragonInitTowers (unit lp_towerMoon, unit lp_towerStar);
void libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership (int lp_dragonballTowerIndex, int lp_newOwner, playergroup lp_capturingPlayers);
void libMapM_gf_MMGardensDragonDeactivateStatue (int lp_computerPlayer);
void libMapM_gf_MMGardensDragonActivateStatueForTeam (int lp_computerPlayer);
fixed libMapM_gf_MMGardensDragonDragonDuration ();
bool libMapM_gf_MMGardensDragonObeliskFullyCaptured (unit lp_obeliskUnit);
void libMapM_gf_MMGardensDragonDragonHasEnteredArtHooks ();
void libMapM_gf_MMGardensDragonDragonHasLeftArtHooks ();
void libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ ();
void libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ ();
void libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ ();
void libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ ();
void libMapM_gf_MMDragonballsTransmissionDragonCapturableQ (int lp_activeTeam);
void libMapM_gf_MMDragonballsTransmissionDragonActiveQ (int lp_activeTeam);
void libMapM_gf_MMDragonballsTransmissionDragonExpireQ ();
void libMapM_gf_AddVehicle (unit lp_vehicleUnit);
void libMapM_gf_RemoveVehicle (unit lp_vehicleUnit);
void libMapM_gf_SwapVehicleForPlayer (unit lp_originalVehicle, unit lp_newVehicle);
void libMapM_gf_LinkVehicleToVehicle (unit lp_vehicleUnit_1, unit lp_vehicleUnit_2);
void libMapM_gf_PlayerEntersVehicle (unit lp_unitEnteringVehicle, unit lp_vehicleUnit);
void libMapM_gf_PlayerLeavesVehicle (int lp_vehicleIndex);
int libMapM_gf_GetVehicleIndexOfUnit (unit lp_vehicleUnit);
// Trigger Declarations
trigger libMapM_gt_IncludeMapMechanics;
trigger libMapM_gt_SummonerMinionLanerScaling;
trigger libMapM_gt_DataJungleCampDefenderDoubloons;
trigger libMapM_gt_DataJungleCampDefenderSiegeGiants;
trigger libMapM_gt_DataJungleCampDefenderKnights;
trigger libMapM_gt_DataJungleCampDefenderGraveGolem;
trigger libMapM_gt_DataJungleCampMercSiegeGiants;
trigger libMapM_gt_DataJungleCampMercOgres;
trigger libMapM_gt_DataJungleCampMercGraveGolem;
trigger libMapM_gt_DataJungleCampDefenderData;
trigger libMapM_gt_DataJungleCampMercData;
trigger libMapM_gt_InitializeJungleCamps;
trigger libMapM_gt_StartJungleCampTimers;
trigger libMapM_gt_JungleCreepCampRespawnTimerExpires;
trigger libMapM_gt_JungleRespawnTimerTextTagCountdown;
trigger libMapM_gt_JungleDefendersBeginFighting;
trigger libMapM_gt_JungleDefendersEndFighting;
trigger libMapM_gt_JungleAllDefendersKilled;
trigger libMapM_gt_JungleHibernateCampsStart;
trigger libMapM_gt_JungleHibernateCampsEnd;
trigger libMapM_gt_JungleHibernateDefendersThatLeash;
trigger libMapM_gt_JungleHibernateDefendersThatJustSpawned;
trigger libMapM_gt_JungleCampOwnershipChange;
trigger libMapM_gt_JungleMercLeaderDies;
trigger libMapM_gt_JungleMercOgreShieldUsedOgre;
trigger libMapM_gt_JungleMercOgreShieldUsedHero;
trigger libMapM_gt_DEBUGJungleMercDamageDetection;
trigger libMapM_gt_JungleSiegeGiantTaunt;
trigger libMapM_gt_InitializeMapMechanics;
trigger libMapM_gt_MMHelpbuttonClicked;
trigger libMapM_gt_MMIntroCutsceneStart;
trigger libMapM_gt_MMIntroCutsceneEnd;
trigger libMapM_gt_MMIntroSkippable;
trigger libMapM_gt_MMRepulseRegionPunchBehavior;
trigger libMapM_gt_MMSafeRegionBehavior;
trigger libMapM_gt_MMRemoveStackingCoreShieldMechanic;
trigger libMapM_gt_EnableDisableMapEvent;
trigger libMapM_gt_MMRavenCurseInit;
trigger libMapM_gt_MMRavenCurseGateOpen;
trigger libMapM_gt_MMRavenStartSpawning;
trigger libMapM_gt_MMRavenSpawnTribute;
trigger libMapM_gt_MMRavenObjectivePreviewTimerExpires;
trigger libMapM_gt_MMRavenTributeCollectStarted;
trigger libMapM_gt_MMRavenTributeCollectCanceled;
trigger libMapM_gt_MMRavenTributeCollectInterrupted;
trigger libMapM_gt_MMRavenTributeObtained;
trigger libMapM_gt_MMRavenCurseReapplication;
trigger libMapM_gt_MMRavenCurseStartLightTransition;
trigger libMapM_gt_MMRavenCurseFinished;
trigger libMapM_gt_MMRavenObjectiveUIHandler;
trigger libMapM_gt_MMRavenDisableEvent;
trigger libMapM_gt_MMRavenEnableEvent;
trigger libMapM_gt_MMRavenDebugStartWarning;
trigger libMapM_gt_MMRavenDebugStartElunees;
trigger libMapM_gt_MMRavenDebugStartNexten;
trigger libMapM_gt_MMRavenDebugStartCurseec;
trigger libMapM_gt_CalculateCurseSiegeDamageDone;
trigger libMapM_gt_MMGardensDragonInit;
trigger libMapM_gt_MMGardensDragonGateOpen;
trigger libMapM_gt_MMGardensDragonWarningTimerStart;
trigger libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires;
trigger libMapM_gt_MMGardensDragonWarningTimerExpires;
trigger libMapM_gt_MMGardensDragonDragonEventStarts;
trigger libMapM_gt_MMGardensDragonDragonEventEnds;
trigger libMapM_gt_MMGardensDragonTurnOnDragonTowersFirstTime;
trigger libMapM_gt_MMGardensDragonTurnOnDragonTowersAgain;
trigger libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires;
trigger libMapM_gt_MMGardensDragonDragonTowerCheckObeliskStatus;
trigger libMapM_gt_MMGardensDragonTransformChannelStart;
trigger libMapM_gt_MMGardensDragonTransformChannelFinish;
trigger libMapM_gt_MMGardensDragonTakeDragonReminderTimerExpires;
trigger libMapM_gt_MMGardensDragonDragonKnightDiesorExpires;
trigger libMapM_gt_MMGardensDragonObjectiveUIHandler;
trigger libMapM_gt_MMGardensDragonDisableEvent;
trigger libMapM_gt_MMGardensDragonDebugCheatStartObelisksso;
trigger libMapM_gt_MMGardensDragonCreateDragon;
trigger libMapM_gt_MMGardensDragonExtendLife;
trigger libMapM_gt_DEBUGAddVehicle;
trigger libMapM_gt_DEBUGRemoveVehicle;
trigger libMapM_gt_DEBUGLinkVehicle;
// Library Initialization
void libMapM_InitVariables ();