include "TriggerLibs/NativeLib"

include "TriggerLibs/HeroesLib_h"

include "TriggerLibs/GameLib_h"

include "TriggerLibs/AILib_h"

include "TriggerLibs/UILib_h"

include "TriggerLibs/StartingExperienceLib_h"

include "TriggerLibs/SoundLib_h"

include "TriggerLibs/SupportLib_h"



include "TriggerLibs/MapMechanicsLib_h"



//--------------------------------------------------------------------------------------------------

// Library: Maps

//--------------------------------------------------------------------------------------------------

// External Library Initialization

void libMapM_InitLibraries () {

    libNtve_InitVariables();

    libCore_InitVariables();

    libGame_InitVariables();

    libAIAI_InitVariables();

    libUIUI_InitVariables();

    libStEx_InitVariables();

    libSond_InitVariables();

    libSprt_InitVariables();

}



// Variable Initialization

bool libMapM_InitVariables_completed = false;



void libMapM_InitVariables () {

    int init_i;

    int init_i1;



    if (libMapM_InitVariables_completed) {

        return;

    }



    libMapM_InitVariables_completed = true;



    libMapM_gv_bALJungleLeashRespawnTime = 45.0;

    libMapM_gv_bALJungleCampScalingTimerDuration = 60.0;

    libMapM_gv_bALJungleOgreMageAuraAbilityPowerPercentage = 0.2;

    libMapM_gv_genericMercCampInitialSpawnDelay_C = 30.0;

    libMapM_gv_genericMercBossCampInitialSpawnDelay_C = 300.0;

    libMapM_gv_mercSapperDefaultSpawnTime_C = 30.0;

    libMapM_gv_mercSapperDefaultRespawnTime_C = 150.0;

    libMapM_gv_reconCampInitialSpawnDelay_C = 30.0;

    for (init_i = 0; init_i <= libMapM_gv_dataJungleMaxNumberOfDefenderTypes; init_i += 1) {

        libMapM_gv_dataJungleCampDefenderData[init_i].lv_aIGoalLink = "MercenaryCamp";

    }

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsParentPanel = c_invalidDialogControlId;

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsDialog[init_i1] = c_invalidDialogId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCamp_PositionControl[init_i1] = c_invalidDialogControlId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[init_i1] = c_invalidDialogControlId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Timer[init_i1] = c_invalidDialogControlId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Title[init_i1] = c_invalidDialogControlId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_PlayerName[init_i1] = c_invalidDialogControlId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[init_i1] = c_invalidDialogControlId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Debug[init_i1] = c_invalidDialogControlId;

    }

    for (init_i1 = 0; init_i1 <= libMapM_gv_jungleMaxCamps; init_i1 += 1) {

        libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel2[init_i1] = c_invalidDialogControlId;

    }

    for (init_i = 0; init_i <= libMapM_gv_jungleMaxCamps; init_i += 1) {

        libMapM_gv_jungleCreepCamps[init_i].lv_mapDataCampType = libMapM_ge_JungleCampTypes_MercCamp;

        libMapM_gv_jungleCreepCamps[init_i].lv_mapDataCampDefenderType = libMapM_ge_JungleCampDefenderTypes_Custom;

        libMapM_gv_jungleCreepCamps[init_i].lv_mapDataMinimapIconScale = 0.7;

        libMapM_gv_jungleCreepCamps[init_i].lv_mapDataMercSpawnType = libMapM_ge_JungleCampMercTypes_Custom;

        libMapM_gv_jungleCreepCamps[init_i].lv_mapDataBattleshipSpawnType = libMapM_ge_JungleCampMercTypes_Custom;

        libMapM_gv_jungleCreepCamps[init_i].lv_defenderCoweringLivingUnitGroup = UnitGroupEmpty();

        libMapM_gv_jungleCreepCamps[init_i].lv_defenderCoweringDeadUnitGroup = UnitGroupEmpty();

        libMapM_gv_jungleCreepCamps[init_i].lv_defenderUnitGroup = UnitGroupEmpty();

        for (init_i1 = 0; init_i1 <= libCore_gv_bALMaxTeams; init_i1 += 1) {

            libMapM_gv_jungleCreepCamps[init_i].lv_mercMercCampHasSingleWaypoint[init_i1] = true;

        }

        libMapM_gv_jungleCreepCamps[init_i].lv_campHelperTextTagOrder = c_textTagNone;

        libMapM_gv_jungleCreepCamps[init_i].lv_campHelperTextTagChaos = c_textTagNone;

        libMapM_gv_jungleCreepCamps[init_i].lv_capturingPlayer = libCore_gv_cOMPUTER_Neutral;

        libMapM_gv_jungleCreepCamps[init_i].lv_campAwardsRegenGlobe = true;

        libMapM_gv_jungleCreepCamps[init_i].lv_stateIsEnabled = true;

        libMapM_gv_jungleCreepCamps[init_i].lv_stateCreepBirthTimer = TimerCreate();

        libMapM_gv_jungleCreepCamps[init_i].lv_stateCreepRespawnTimer = TimerCreate();

        libMapM_gv_jungleCreepCamps[init_i].lv_stateCreepActiveTimer = TimerCreate();

        libMapM_gv_jungleCreepCamps[init_i].lv_aIState = libMapM_ge_JungleCampStates_Dead;

        libMapM_gv_jungleCreepCamps[init_i].lv_aICampGoalLink = "MercenaryCamp";

    }

    for (init_i = 0; init_i <= libMapM_gv_jungleMaxMercGroups; init_i += 1) {

        libMapM_gv_jungleMiniMapIconGroup[init_i] = UnitGroupEmpty();

    }

    for (init_i = 0; init_i <= libMapM_gv_jungleMaxMercGroups; init_i += 1) {

        libMapM_gv_jungleMiniMapPathCurrentIndex[init_i] = 1;

    }

    for (init_i = 0; init_i <= libMapM_gv_jungleMaxMercGroups; init_i += 1) {

        libMapM_gv_jungleMiniMapPathIndexMaximum[init_i] = 1;

    }

    for (init_i = 0; init_i <= libMapM_gv_mapMechanicsMaxCount_C; init_i += 1) {

        libMapM_gv_mapMechanics[init_i] = "";

    }

    for (init_i = 0; init_i <= libCore_gv_bALMaxEnginePlayerCount; init_i += 1) {

        libMapM_gv_mMIntroCutscene[init_i] = c_cutsceneNone;

    }

    for (init_i = 0; init_i <= libCore_gv_bALMaxEnginePlayerCount; init_i += 1) {

        libMapM_gv_mMIntroCutsceneFinished[init_i] = true;

    }

    libMapM_gv_mMAnnouncementDialog = c_invalidDialogId;

    for (init_i = 0; init_i <= libCore_gv_bALMaxEnginePlayerCount; init_i += 1) {

        libMapM_gv_mMAnnouncementDialogsMultiple[init_i] = c_invalidDialogId;

    }

    libMapM_gv_mMRepulseRegionPunchedGroup = UnitGroupEmpty();

    libMapM_gv_mMRavenTributes = UnitGroupEmpty();

    libMapM_gv_mMRavenTributeWarnings = UnitGroupEmpty();

    libMapM_gv_mMRavenStartTime = 150.0;

    libMapM_gv_mMRavenTributeSpawnTimeVariance = 20;

    libMapM_gv_mMRavenTributePostCurseWaitTime = 70.0;

    libMapM_gv_mMRavenStartTimer = TimerCreate();

    libMapM_gv_mMRavenWarningTimer = TimerCreate();

    libMapM_gv_mMRavenTributeSpawnTimer = TimerCreate();

    libMapM_gv_mMRavenUseTributePreviews = true;

    libMapM_gv_mMRavenTributeSpawnCount = 1;

    libMapM_gv_mMRavenObjectivePreviewTimer = TimerCreate();

    libMapM_gv_mMRavenObjectivePreviewLongDelay = 30.0;

    libMapM_gv_mMRavenObjectivePreviewShortDelay = 15.0;

    libMapM_gv_mMRavenCurseTimer = TimerCreate();

    for (init_i = 0; init_i <= 5; init_i += 1) {

        libMapM_gv_mMRavenTimers[init_i] = TimerCreate();

    }

    libMapM_gv_mMRavenEventFirstTime = true;

    libMapM_gv_mMGardensDragonDragonballKnightNameC = StringExternal("Param/Value/lib_MapM_C1C93EA8");

    libMapM_gv_mMGardensDragonDragonballShrineNameC = StringExternal("Param/Value/lib_MapM_779CD885");

    libMapM_gv_mMGardensDragonStatueTextTag = c_textTagNone;

    libMapM_gv_mMGardensDragonStatueTextTagAllyOwned = c_textTagNone;

    libMapM_gv_mMGardensDragonStatueTextTagEnemyOwned = c_textTagNone;

    libMapM_gv_mMGardensDragonDragonKnightLifeTimer = TimerCreate();

    libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_Idle;

    libMapM_gv_mMGardensDragonSpawnFirstTime = true;

    libMapM_gv_mMGardensDragonDragonTowerStartTimer = TimerCreate();

    libMapM_gv_mMGardensDragonDragonTowerRespawnTimer = TimerCreate();

    libMapM_gv_mMGardensDragonDragonTowerWarningTimer = TimerCreate();

    libMapM_gv_mMGardensDragonDragonTowerGoalActivationTimer = TimerCreate();

    libMapM_gv_mMGardensDragonDragonStatueActiveReminderTimer = TimerCreate();

    for (init_i = 0; init_i <= libMapM_gv_mMGardensDragonDragonTowerMaxCount; init_i += 1) {

        libMapM_gv_mMGardensDragonDragonTowers[init_i].lv_enabled = true;

        libMapM_gv_mMGardensDragonDragonTowers[init_i].lv_helperText = c_textTagNone;

    }

    libMapM_gv_mMDragonballsTransmissionShrinesRechargeFirstTime = true;

}



// Presets

string libMapM_ge_JungleCampStates_Ident (int lp_val) {

         if (lp_val == libMapM_ge_JungleCampStates_Idle) { return "Idle"; }

    else if (lp_val == libMapM_ge_JungleCampStates_Busy) { return "Busy"; }

    else if (lp_val == libMapM_ge_JungleCampStates_Dead) { return "Dead"; }

    else if (lp_val == libMapM_ge_JungleCampStates_Paused) { return "Paused"; }

    else if (lp_val == libMapM_ge_JungleCampStates_Hibernating) { return "Hibernating"; }

    else if (lp_val == libMapM_ge_JungleCampStates_HibernatingReadyToRespawn) { return "HibernatingReadyToRespawn"; }

    return null;

}



// Functions

void libMapM_gf_InitializeSiegeTrooperMercType (int lp_campType, text lp_mercName) {

    // Variable Declarations

    int lv_campTypeInt;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_campTypeInt = (lp_campType);



    // Implementation

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_aIGoalLink = "MercenaryCampShockTrooper";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defendersCoweronDeath = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_initialSpawnDelay = libMapM_gv_genericMercCampInitialSpawnDelay_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_respawnTime = 180.0;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfCreeps = 3;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campTypeMinimapLabel = lp_mercName;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[1] = "MercSiegeTrooperDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defenderCoweringUnit[1] = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[2] = "MercSiegeTrooperDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defenderCoweringUnit[2] = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[3] = "MercSiegeTrooperDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defenderCoweringUnit[3] = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_xPAwardForCapture = libCore_gv_data_XP_SiegeGiantCapture_C;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfMinionsSpawned = 3;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[1] = "MercSiegeTrooperLaner";

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[2] = "MercSiegeTrooperLaner";

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[3] = "MercSiegeTrooperLaner";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "MercSiegeTrooperDefenderScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "MercSiegeTrooperLanerScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libUIUI_gf_PingCreateNewPingTarget("MercSiegeTrooperDefender", false, StringExternal("Param/Value/lib_MapM_7D17941C"), StringExternal("Param/Value/lib_MapM_6D78AC8F"), StringExternal("Param/Value/lib_MapM_BE0737A7"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetHumanAISourceHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackMercCamp, libCore_ge_HeroVOEvents_AIMercCapture);

    libUIUI_gf_PingCreateNewPingTarget("MercSiegeTrooperLaner", false, lp_mercName, StringExternal("Param/Value/lib_MapM_8A5F6392"), StringExternal("Param/Value/lib_MapM_7FC7680C"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetAllyEnemyTargetHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackHere, libCore_ge_HeroVOEvents_PingAttackHere);

}



void libMapM_gf_InitializeSummonerMercType (int lp_campType, text lp_summonerName, text lp_summonedUnitName) {

    // Variable Declarations

    int lv_campTypeInt;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_campTypeInt = (lp_campType);



    // Implementation

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_aIGoalLink = "MercenaryCampSummoner";

    TriggerEnable(libMapM_gt_SummonerMinionLanerScaling, true);

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_initialSpawnDelay = libMapM_gv_genericMercCampInitialSpawnDelay_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_respawnTime = 240.0;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfCreeps = 3;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campTypeMinimapLabel = lp_summonerName;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defendersCoweronDeath = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[1] = "MercSummonerDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defenderCoweringUnit[1] = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[2] = "MercSummonerDefenderMinion";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[3] = "MercSummonerDefenderMinion";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_xPAwardForCapture = libCore_gv_data_XP_OgreCapture_C;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfMinionsSpawned = 1;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[1] = "MercSummonerLaner";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "MercSummonerDefenderScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "MercSummonerDefenderMinionScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "MercSummonerLanerScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libUIUI_gf_PingCreateNewPingTarget("MercSummonerDefender", false, StringExternal("Param/Value/lib_MapM_AD640F18"), StringExternal("Param/Value/lib_MapM_B0611E4E"), StringExternal("Param/Value/lib_MapM_9C3B9F3A"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetHumanAISourceHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackMercCamp, libCore_ge_HeroVOEvents_AIMercCapture);

    libUIUI_gf_PingCreateNewPingTarget("MercSummonerDefenderMinion", false, StringExternal("Param/Value/lib_MapM_CC092B3A"), StringExternal("Param/Value/lib_MapM_2735E79A"), StringExternal("Param/Value/lib_MapM_DB2F75DE"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetHumanAISourceHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackMercCamp, libCore_ge_HeroVOEvents_AIMercCapture);

    libUIUI_gf_PingCreateNewPingTarget("MercSummonerLaner", false, lp_summonerName, StringExternal("Param/Value/lib_MapM_888C180F"), StringExternal("Param/Value/lib_MapM_601E133B"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetAllyEnemyTargetHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackHere, libCore_ge_HeroVOEvents_PingAttackHere);

    libUIUI_gf_PingCreateNewPingTarget("MercSummonerLanerMinion", false, lp_summonedUnitName, StringExternal("Param/Value/lib_MapM_8963A34E"), StringExternal("Param/Value/lib_MapM_FCAC2F14"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetAllyEnemyTargetHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackHere, libCore_ge_HeroVOEvents_PingAttackHere);

}



void libMapM_gf_InitializeHellbatMercType (int lp_campType, text lp_mercName, fixed lp_initialSpawnDelay, fixed lp_respawnTime, bool lp_cowerOnDeath) {

    // Variable Declarations

    int lv_campTypeInt;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_campTypeInt = (lp_campType);



    // Implementation

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_aIGoalLink = "MercenaryCampShockTrooper";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defendersCoweronDeath = lp_cowerOnDeath;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_initialSpawnDelay = lp_initialSpawnDelay;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_respawnTime = lp_respawnTime;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfCreeps = 2;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campTypeMinimapLabel = lp_mercName;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[1] = "TerranHellbatDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defenderCoweringUnit[1] = lp_cowerOnDeath;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[2] = "TerranHellbatDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_defenderCoweringUnit[2] = lp_cowerOnDeath;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_xPAwardForCapture = libCore_gv_data_XP_SiegeGiantCapture_C;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfMinionsSpawned = 2;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[1] = "TerranHellbat";

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[2] = "TerranHellbat";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "TerranHellbatDefenderScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "TerranHellbatScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libUIUI_gf_PingCreateNewPingTarget("TerranHellbatDefender", false, StringExternal("Param/Value/lib_MapM_24DBA175"), StringExternal("Param/Value/lib_MapM_566B7407"), StringExternal("Param/Value/lib_MapM_FA057BB0"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetHumanAISourceHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackMercCamp, libCore_ge_HeroVOEvents_AIMercCapture);

    libUIUI_gf_PingCreateNewPingTarget("TerranHellbat", false, lp_mercName, StringExternal("Param/Value/lib_MapM_F245B529"), StringExternal("Param/Value/lib_MapM_7220AF70"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingSetAllyEnemyTargetHeroVOForPingTarget(libUIUI_gf_PingLastCreatedPingTarget(), libCore_ge_HeroVOEvents_PingAttackHere, libCore_ge_HeroVOEvents_PingAttackHere);

}



void libMapM_gf_InitializeSapperMercType (int lp_campType, text lp_mercName, fixed lp_initialSpawnDelay, fixed lp_respawnDelay) {

    // Variable Declarations

    int lv_campTypeInt;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_campTypeInt = (lp_campType);



    // Implementation

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_aIGoalLink = "MercenaryCampSappers";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campTypeMinimapLabel = lp_mercName;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_initialSpawnDelay = lp_initialSpawnDelay;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_respawnTime = lp_respawnDelay;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfCreeps = 3;

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[1] = "MercGoblinSapperDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[2] = "MercGoblinSapperDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_creepUnitTypes[3] = "MercGoblinSapperDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_xPAwardForCapture = libCore_gv_data_XP_SiegeGiantCapture_C;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfMinionsSpawned = 3;

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[1] = "MercGoblinSapperLaner";

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[2] = "MercGoblinSapperLaner";

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_spawnedMinionUnitTypes[3] = "MercGoblinSapperLaner";

    libMapM_gv_dataJungleCampDefenderData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "MercGoblinSapperDefenderScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libMapM_gv_dataJungleCampMercData[lv_campTypeInt].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, "MercGoblinSapperLanerScaling", "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

    libUIUI_gf_PingCreateNewPingTarget("MercGoblinSapperDefender", false, StringExternal("Param/Value/lib_MapM_8D86B383"), StringExternal("Param/Value/lib_MapM_5B78A3A7"), StringExternal("Param/Value/lib_MapM_D78D61EB"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

    libUIUI_gf_PingCreateNewPingTarget("MercGoblinSapperLaner", false, lp_mercName, StringExternal("Param/Value/lib_MapM_FA01C50C"), StringExternal("Param/Value/lib_MapM_E7D0A0CE"), SoundLink("UI_Game_Ping_Attack", -1), SoundLink("UI_Game_Ping_Attack", -1));

}



void libMapM_gf_DataInitializeScalingDataForDefender (int lp_defenderType, string lp_scalingBehavior) {

    // Variable Declarations

    int lv_itRank;

    int lv_defenderTypeIndex;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    lv_defenderTypeIndex = (lp_defenderType);

    libMapM_gv_dataJungleCampDefenderData[lv_defenderTypeIndex].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, lp_scalingBehavior, "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

}



void libMapM_gf_DataInitializeScalingDataForMerc (int lp_mercType, string lp_scalingBehavior) {

    // Variable Declarations

    int lv_itRank;

    int lv_mercTypeIndex;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    lv_mercTypeIndex = (lp_mercType);

    libMapM_gv_dataJungleCampMercData[lv_mercTypeIndex].lv_numberOfRanks = MinI((CatalogFieldValueCount(c_gameCatalogBehavior, lp_scalingBehavior, "VeterancyLevelArray", c_playerAny) - 1), libCore_gv_dataScalingMaxScalingTicks);

}



void libMapM_gf_JungleInitializeDefenderData (int lp_camp) {

    // Variable Declarations

    int lv_i;

    int lv_campTypeIndex;

    int lv_missingPoints;



    // Automatic Variable Declarations

    int auto6AB4C519_ae;

    const int auto6AB4C519_ai = 1;

    int auto7D68F867_ae;

    const int auto7D68F867_ai = 1;

    int auto95FF0122_ae;

    const int auto95FF0122_ai = 1;



    // Variable Initialization



    // Implementation

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType != libMapM_ge_JungleCampDefenderTypes_Custom)) {

        lv_campTypeIndex = (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType);

        libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampIsSoloable = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_campIsSoloable;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_aICampGoalLink = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_aIGoalLink;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersCoweronDeath = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_defendersCoweronDeath;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderInitialSpawnDelay = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_initialSpawnDelay;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderRespawnTime = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_respawnTime;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderNumberofCreeps = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_numberOfCreeps;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampTypeMinimapLabel = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_campTypeMinimapLabel;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampIsElite = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_campIsElite;

        auto6AB4C519_ae = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_numberOfCreeps;

        lv_i = 1;

        for ( ; ( (auto6AB4C519_ai >= 0 && lv_i <= auto6AB4C519_ae) || (auto6AB4C519_ai < 0 && lv_i >= auto6AB4C519_ae) ) ; lv_i += auto6AB4C519_ai ) {

            libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderUnitTypes[lv_i] = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_creepUnitTypes[lv_i];

            libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCoweringUnit[lv_i] = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_defenderCoweringUnit[lv_i];

        }

        libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderNumberOfRanks = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_numberOfRanks;

        auto7D68F867_ae = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_numberOfRanks;

        lv_i = 0;

        for ( ; ( (auto7D68F867_ai >= 0 && lv_i <= auto7D68F867_ae) || (auto7D68F867_ai < 0 && lv_i >= auto7D68F867_ae) ) ; lv_i += auto7D68F867_ai ) {

            libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampLevel[lv_i] = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_campLevel[lv_i];

        }

    }



    auto95FF0122_ae = libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderNumberofCreeps;

    lv_i = 1;

    for ( ; ( (auto95FF0122_ai >= 0 && lv_i <= auto95FF0122_ae) || (auto95FF0122_ai < 0 && lv_i >= auto95FF0122_ae) ) ; lv_i += auto95FF0122_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataDefenderSpawnPoints[lv_i] == null)) {

            lv_missingPoints += 1;

        }



    }

    if ((lv_missingPoints > 0)) {

        TextExpressionSetToken("Param/Expression/lib_MapM_7AB5D588", "A", IntToText(lp_camp));

        TextExpressionSetToken("Param/Expression/lib_MapM_7AB5D588", "B", IntToText(lv_missingPoints));

        TriggerDebugOutput(1, TextExpressionAssemble("Param/Expression/lib_MapM_7AB5D588"), true);

    }



    libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCaptureXPValue = libMapM_gv_dataJungleCampDefenderData[lv_campTypeIndex].lv_xPAwardForCapture;

}



void libMapM_gf_JungleInitializeMercCampData (int lp_camp) {

    // Variable Declarations

    int lv_i;

    int lv_team;

    int lv_lane;

    int lv_waypoint;

    int lv_campTypeIndex;

    int lv_ownerPlayer;

    point lv_rallyPoint;

    bool lv_foundLane;

    int lv_spawnLane;

    int lv_spawnFirstWaypointIndex;



    // Automatic Variable Declarations

    int autoD92817D3_ae;

    const int autoD92817D3_ai = 1;

    const int auto3F7D2E74_ae = 2;

    const int auto3F7D2E74_ai = 1;

    int autoC6A8DA7C_ae;

    const int autoC6A8DA7C_ai = 1;

    int auto2503891E_ae;

    const int auto2503891E_ai = 1;



    // Variable Initialization



    // Implementation

    lv_campTypeIndex = (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMercSpawnType);

    libMapM_gv_jungleCreepCamps[lp_camp].lv_mercNumberOfMinionsSpawned = libMapM_gv_dataJungleCampMercData[lv_campTypeIndex].lv_numberOfMinionsSpawned;

    autoD92817D3_ae = libMapM_gv_dataJungleCampMercData[lv_campTypeIndex].lv_numberOfMinionsSpawned;

    lv_i = 1;

    for ( ; ( (autoD92817D3_ai >= 0 && lv_i <= autoD92817D3_ae) || (autoD92817D3_ai < 0 && lv_i >= autoD92817D3_ae) ) ; lv_i += autoD92817D3_ai ) {

        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[lv_i] = libMapM_gv_dataJungleCampMercData[lv_campTypeIndex].lv_spawnedMinionUnitTypes[lv_i];

        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[lv_i] = libMapM_gv_dataJungleCampMercData[lv_campTypeIndex].lv_spawnedMinionUnitTypes[lv_i];

        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionAIThreatValueforAITeamDelegateSystem[lv_i] = CatalogFieldValueGetAsFixed(c_gameCatalogUnit, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[lv_i], "AIBaseThreat", libCore_gv_cOMPUTER_Neutral);

    }

    libMapM_gv_jungleCreepCamps[lp_camp].lv_mercNumberOfRanks = libMapM_gv_dataJungleCampMercData[lv_campTypeIndex].lv_numberOfRanks;

    lv_team = 1;

    for ( ; ( (auto3F7D2E74_ai >= 0 && lv_team <= auto3F7D2E74_ae) || (auto3F7D2E74_ai < 0 && lv_team >= auto3F7D2E74_ae) ) ; lv_team += auto3F7D2E74_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mercMercCampHasSingleWaypoint[lv_team] == true)) {

            if ((lv_team == 1)) {

                lv_rallyPoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercOrderMercCampPathing[1].lv_waypoint;

                lv_ownerPlayer = libCore_gv_cOMPUTER_TeamOrder;

            }

            else {

                lv_rallyPoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercChaosMercCampPathing[1].lv_waypoint;

                lv_ownerPlayer = libCore_gv_cOMPUTER_TeamChaos;

            }

        }

        else {

            if ((lv_team == 1)) {

                lv_rallyPoint = libMapM_gf_JungleDetermineMercWaypoint(lv_team, lp_camp);

                lv_ownerPlayer = libCore_gv_cOMPUTER_TeamOrder;

            }

            else {

                lv_rallyPoint = libMapM_gf_JungleDetermineMercWaypoint(lv_team, lp_camp);

                lv_ownerPlayer = libCore_gv_cOMPUTER_TeamChaos;

            }

        }

        lv_foundLane = false;

        autoC6A8DA7C_ae = libGame_gv_laneCount;

        lv_lane = 1;

        for ( ; ( (autoC6A8DA7C_ai >= 0 && lv_lane <= autoC6A8DA7C_ae) || (autoC6A8DA7C_ai < 0 && lv_lane >= autoC6A8DA7C_ae) ) ; lv_lane += autoC6A8DA7C_ai ) {

            auto2503891E_ae = libGame_gv_laneData[lv_lane].lv_waypointCount;

            lv_waypoint = 1;

            for ( ; ( (auto2503891E_ai >= 0 && lv_waypoint <= auto2503891E_ae) || (auto2503891E_ai < 0 && lv_waypoint >= auto2503891E_ae) ) ; lv_waypoint += auto2503891E_ai ) {

                if ((libGame_gv_laneData[lv_lane].lv_waypoints[lv_waypoint] == lv_rallyPoint)) {

                    lv_spawnLane = lv_lane;

                    lv_spawnFirstWaypointIndex = lv_waypoint;

                    lv_foundLane = true;

                    break;

                }



            }

        }

        if ((lv_foundLane == false)) {

            libGame_gf_CalculateSpawnedMinionGoalPoints(lv_ownerPlayer, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint);

            lv_spawnLane = libGame_gv_spawnedMinionLane;

            lv_spawnFirstWaypointIndex = libGame_gv_spawnedMinionFirstWaypointIndex;

        }



        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercLaneToSpawnIn[lv_team] = lv_spawnLane;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnFirstWaypointIndex[lv_team] = lv_spawnFirstWaypointIndex;

    }

}



void libMapM_gf_JungleUpdateMercCampData (int lp_camp) {

    // Variable Declarations

    int lv_team;

    int lv_lane;

    int lv_waypoint;

    int lv_ownerPlayer;

    point lv_rallyPoint;

    bool lv_foundLane;

    int lv_spawnLane;

    int lv_spawnFirstWaypointIndex;



    // Automatic Variable Declarations

    const int auto14B3DEF5_ae = 2;

    const int auto14B3DEF5_ai = 1;

    int autoAF4748C2_ae;

    const int autoAF4748C2_ai = 1;

    int autoFDA6A904_ae;

    const int autoFDA6A904_ai = 1;



    // Variable Initialization



    // Implementation

    lv_team = 1;

    for ( ; ( (auto14B3DEF5_ai >= 0 && lv_team <= auto14B3DEF5_ae) || (auto14B3DEF5_ai < 0 && lv_team >= auto14B3DEF5_ae) ) ; lv_team += auto14B3DEF5_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mercMercCampHasSingleWaypoint[lv_team] == true)) {

            continue;

        }

        else {

            if ((lv_team == 1)) {

                lv_rallyPoint = libMapM_gf_JungleDetermineMercWaypoint(lv_team, lp_camp);

                lv_ownerPlayer = libCore_gv_cOMPUTER_TeamOrder;

            }

            else {

                lv_rallyPoint = libMapM_gf_JungleDetermineMercWaypoint(lv_team, lp_camp);

                lv_ownerPlayer = libCore_gv_cOMPUTER_TeamChaos;

            }

        }

        lv_foundLane = false;

        autoAF4748C2_ae = libGame_gv_laneCount;

        lv_lane = 1;

        for ( ; ( (autoAF4748C2_ai >= 0 && lv_lane <= autoAF4748C2_ae) || (autoAF4748C2_ai < 0 && lv_lane >= autoAF4748C2_ae) ) ; lv_lane += autoAF4748C2_ai ) {

            autoFDA6A904_ae = libGame_gv_laneData[lv_lane].lv_waypointCount;

            lv_waypoint = 1;

            for ( ; ( (autoFDA6A904_ai >= 0 && lv_waypoint <= autoFDA6A904_ae) || (autoFDA6A904_ai < 0 && lv_waypoint >= autoFDA6A904_ae) ) ; lv_waypoint += autoFDA6A904_ai ) {

                if ((libGame_gv_laneData[lv_lane].lv_waypoints[lv_waypoint] == lv_rallyPoint)) {

                    lv_spawnLane = lv_lane;

                    lv_spawnFirstWaypointIndex = lv_waypoint;

                    lv_foundLane = true;

                    break;

                }



            }

        }

        if ((lv_foundLane == false)) {

            libGame_gf_CalculateSpawnedMinionGoalPoints(lv_ownerPlayer, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint);

            lv_spawnLane = libGame_gv_spawnedMinionLane;

            lv_spawnFirstWaypointIndex = libGame_gv_spawnedMinionFirstWaypointIndex;

        }



        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercLaneToSpawnIn[lv_team] = lv_spawnLane;

        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnFirstWaypointIndex[lv_team] = lv_spawnFirstWaypointIndex;

    }

}



point libMapM_gf_JungleDetermineMercWaypoint (int lp_owningTeam, int lp_camp) {

    // Variable Declarations

    point lv_waypoint;

    int lv_itPath;

    int lv_enemyTeamPlayer;

    unitgroup lv_buildings;



    // Automatic Variable Declarations

    const int auto6D5E303D_ae = libMapM_gv_dataJungleMaxNumberOfPaths;

    const int auto6D5E303D_ai = 1;

    const int autoD8182B22_ae = libMapM_gv_dataJungleMaxNumberOfPaths;

    const int autoD8182B22_ai = 1;



    // Variable Initialization

    lv_buildings = UnitGroupEmpty();



    // Implementation

    if ((lp_owningTeam == libGame_gv_teamOrderIndex_C)) {

        lv_enemyTeamPlayer = libCore_gv_cOMPUTER_TeamChaos;

        lv_itPath = 1;

        for ( ; ( (auto6D5E303D_ai >= 0 && lv_itPath <= auto6D5E303D_ae) || (auto6D5E303D_ai < 0 && lv_itPath >= auto6D5E303D_ae) ) ; lv_itPath += auto6D5E303D_ai ) {

            if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mercOrderMercCampPathing[lv_itPath].lv_townRegion == null)) {

                lv_waypoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercOrderMercCampPathing[lv_itPath].lv_waypoint;

                if ((lv_waypoint == null)) {

                    TextExpressionSetToken("Param/Expression/lib_MapM_2E7BBFDE", "A", IntToText(lp_camp));

                    TextExpressionSetToken("Param/Expression/lib_MapM_2E7BBFDE", "B", IntToText(lv_itPath));

                    TriggerDebugOutput(1, TextExpressionAssemble("Param/Expression/lib_MapM_2E7BBFDE"), true);

                }



                return lv_waypoint;

            }

            else {

                lv_buildings = UnitGroup(null, lv_enemyTeamPlayer, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercOrderMercCampPathing[lv_itPath].lv_townRegion, UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

                if ((UnitGroupCount(lv_buildings, c_unitCountAlive) > 0)) {

                    lv_waypoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercOrderMercCampPathing[lv_itPath].lv_waypoint;

                    return lv_waypoint;

                }



            }

        }

    }



    if ((lp_owningTeam == libGame_gv_teamChaosIndex_C)) {

        lv_enemyTeamPlayer = libCore_gv_cOMPUTER_TeamOrder;

        lv_itPath = 1;

        for ( ; ( (autoD8182B22_ai >= 0 && lv_itPath <= autoD8182B22_ae) || (autoD8182B22_ai < 0 && lv_itPath >= autoD8182B22_ae) ) ; lv_itPath += autoD8182B22_ai ) {

            if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mercChaosMercCampPathing[lv_itPath].lv_townRegion == null)) {

                lv_waypoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercChaosMercCampPathing[lv_itPath].lv_waypoint;

                if ((lv_waypoint == null)) {

                    TextExpressionSetToken("Param/Expression/lib_MapM_72120814", "A", IntToText(lp_camp));

                    TextExpressionSetToken("Param/Expression/lib_MapM_72120814", "B", IntToText(lv_itPath));

                    TriggerDebugOutput(1, TextExpressionAssemble("Param/Expression/lib_MapM_72120814"), true);

                }



                return lv_waypoint;

            }

            else {

                lv_buildings = UnitGroup(null, lv_enemyTeamPlayer, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercChaosMercCampPathing[lv_itPath].lv_townRegion, UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

                if ((UnitGroupCount(lv_buildings, c_unitCountAlive) > 0)) {

                    lv_waypoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercChaosMercCampPathing[lv_itPath].lv_waypoint;

                    return lv_waypoint;

                }



            }

        }

    }



    TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_69AA4E42"), true);

    return lv_waypoint;

}



void libMapM_gf_JungleInitializeDoubloonCampData (int lp_camp) {

    // Variable Declarations

    int lv_i;

    int lv_spawnwave;

    int lv_lane;

    int lv_wapoint;

    int lv_campTypeIndex;

    point lv_rallyPoint;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    lv_campTypeIndex = (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataBattleshipSpawnType);

    libMapM_gv_jungleCreepCamps[lp_camp].lv_piratesNumberOfRanks = libMapM_gv_dataJungleCampMercData[lv_campTypeIndex].lv_numberOfRanks;

}



void libMapM_gf_JungleInitializeDoubloonSmallCampData (int lp_camp) {

    // Variable Declarations

    int lv_campTypeIndex;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    lv_campTypeIndex = (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataBattleshipSpawnType);

    libMapM_gv_jungleCreepCamps[lp_camp].lv_piratesNumberOfRanks = libMapM_gv_dataJungleCampMercData[lv_campTypeIndex].lv_numberOfRanks;

    libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCapturePointSplatModel = "TownMercCampCaptureBeaconSmall";

}



void libMapM_gf_JungleInitializeTryMeCampData (int lp_camp) {

    // Automatic Variable Declarations

}



trigger auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_Trigger = null;

unit auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_lp_unit;

fixed auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_lp_delayTime;



void libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons (unit lp_unit, fixed lp_delayTime) {

    auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_lp_unit = lp_unit;

    auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_lp_delayTime = lp_delayTime;



    if (auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_Trigger == null) {

        auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_Trigger = TriggerCreate("auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_Trigger, false, false);

}



bool auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_TriggerFunc (bool testConds, bool runActions) {

    unit lp_unit = auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_lp_unit;

    fixed lp_delayTime = auto_libMapM_gf_JungleInitializeCreepCampDelayMinimapIcons_lp_delayTime;



    // Automatic Variable Declarations

    // Implementation

    Wait(lp_delayTime, c_timeGame);

    libNtve_gf_SendActorMessageToUnit(lp_unit, "SetMinimapVisibility 1");

    return true;

}



void libMapM_gf_JungleInitializeCreepCamp (int lp_camp) {

    int init_i;



    // Variable Declarations

    int[libMapM_gv_jungleMaxCamps + 1] lv_infoPanel;

    string lv_iconScaleString;

    string lv_iconUnitType;

    unit lv_iconUnit;

    string lv_icon;

    const int lv_textTagHeightOffset = 5;

    const fixed lv_iconScale = 0.7;

    string lv_timerString;



    // Automatic Variable Declarations

    // Variable Initialization

    for (init_i = 0; init_i <= libMapM_gv_jungleMaxCamps; init_i += 1) {

        lv_infoPanel[init_i] = c_invalidDialogControlId;

    }

    lv_iconScaleString = "";

    lv_timerString = "";



    // Implementation

    libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagUnit = UnitGroupUnit(UnitGroup("LootBannerSconce", c_playerAny, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataDefenderLeashRegion, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), 1);

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagUnit == null)) {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_59C36C74"), true);

        libMapM_gv_jungleCreepCamps[lp_camp].lv_stateIsEnabled = false;

        return ;

    }



    libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagPosition = UnitGetPosition(libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagUnit);

    libMapM_gf_JungleDropLootBannerinMercCamp(lp_camp, PlayerGroupSingle(libCore_gv_cOMPUTER_Hostile));

    if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMinimapIconUseTeamColor == true) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_MercCamp))) {

        libNtve_gf_CreateUnitsWithDefaultFacing(1, "JungleCampIconUnitTeamColor", c_unitCreateIgnorePlacement, 0, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, null);

    }

    else {

        libNtve_gf_CreateUnitsWithDefaultFacing(1, "JungleCampIconUnit", c_unitCreateIgnorePlacement, 0, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, null);

    }

    lv_iconUnit = UnitLastCreated();

    DialogCreate(1, 1, c_anchorTop, 0, 0, true);

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsDialog[lp_camp] = DialogLastCreated();

    DialogSetPositionRelativeToUnitWithAnchor(DialogLastCreated(), libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagUnit, "Ref_Overhead", c_anchorCenter, 0, 0);

    DialogControlCreate(DialogLastCreated(), c_triggerControlTypePanel);

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCamp_PositionControl[lp_camp] = DialogControlLastCreated();

    DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/FullscreenLowerContainer/MercCampPanel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsParentPanel = DialogControlLastCreated();

    DialogControlCreateInPanelFromTemplate(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsParentPanel, c_triggerControlTypePanel, "JungleCampInfoPanel/JungleCampInfoPanelTemplate");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp] = DialogControlLastCreated();

    lv_infoPanel[lp_camp] = DialogControlLastCreated();

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), true);

    DialogControlSetPositionRelative(DialogControlLastCreated(), PlayerGroupAll(), c_anchorCenter, libMapM_gv_uIJungleCampPanel.lv_jungleCreepCamp_PositionControl[lp_camp], c_anchorBottom, 0, 0);

    DialogControlHookup(lv_infoPanel[lp_camp], c_triggerControlTypeLabel, "CampTimerLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Timer[lp_camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_camp], c_triggerControlTypeLabel, "CampTitleLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Title[lp_camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_camp], c_triggerControlTypeLabel, "PlayerNameLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_PlayerName[lp_camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_camp], c_triggerControlTypeLabel, "CampDescriptionLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_camp], c_triggerControlTypeLabel, "DebugLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Debug[lp_camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_camp], c_triggerControlTypeLabel, "CampEliteLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel2[lp_camp] = DialogControlLastCreated();

    libNtve_gf_SendActorMessageToUnit(lv_iconUnit, "SetMinimapVisibility");

    lv_icon = libMapM_gf_JungleGetCurrentIconForJungleCamp(lp_camp, true);

    libNtve_gf_SendActorMessageToUnit(lv_iconUnit, "MinimapIcon " + lv_icon);

    libNtve_gf_SendActorMessageToUnit(UnitLastCreated(), (("MinimapIconScale " + FixedToString(libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMinimapIconScale, c_fixedPrecisionAny))));

    libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit = lv_iconUnit;

}



int libMapM_gf_JungleGetJungleCampForUnit (unit lp_unit) {

    // Variable Declarations

    int lv_i;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    return FixedToInt(UnitGetCustomValue(lp_unit, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_JungleDefenderCreepCampIndex)));

}



int libMapM_gf_JungleGetJungleUnitIndexForUnit (unit lp_unit) {

    // Variable Declarations

    int lv_i;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    return FixedToInt(UnitGetCustomValue(lp_unit, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_JungleDefenderCreepUnitIndex)));

}



string libMapM_gf_JungleGetCurrentIconForJungleCamp (int lp_camp, bool lp_alive) {

    // Automatic Variable Declarations

    int autoC825EDFA_val;

    int autoDE822826_val;

    int autoC838F424_val;



    // Implementation

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMinimapIcon != null)) {

        return libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMinimapIcon;

    }



    autoC825EDFA_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType;

    if (autoC825EDFA_val == libMapM_ge_JungleCampTypes_MercCamp) {

        autoDE822826_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType;

        if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_SiegeGiants) {

            return "Assets\\Textures\\storm_ui_minimapicon_merccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_SiegeCamp1) {

            return "Assets\\Textures\\storm_ui_minimapicon_merccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_SiegeCamp2) {

            return "Assets\\Textures\\storm_ui_minimapicon_merccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_SiegeCamp3) {

            return "Assets\\Textures\\storm_ui_minimapicon_merccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_Knights) {

            return "Assets\\Textures\\storm_ui_minimapicon_elitemerccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_BruiserCamp1) {

            return "Assets\\Textures\\storm_ui_minimapicon_elitemerccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_BruiserCamp2) {

            return "Assets\\Textures\\storm_ui_minimapicon_elitemerccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_BruiserCamp3) {

            return "Assets\\Textures\\storm_ui_minimapicon_elitemerccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_GraveGolem) {

            return "Assets\\Textures\\storm_ui_minimapicon_golemmerccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_BossCamp1) {

            return "Assets\\Textures\\storm_ui_minimapicon_golemmerccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_BossCamp2) {

            return "Assets\\Textures\\storm_ui_minimapicon_golemmerccamp.dds";

        }

        else if (autoDE822826_val == libMapM_ge_JungleCampDefenderTypes_BossCamp3) {

            return "Assets\\Textures\\storm_ui_minimapicon_golemmerccamp.dds";

        }

        else {

            return "Assets\\Textures\\storm_ui_minimapicon_merccamp.dds";

        }

    }

    else if (autoC825EDFA_val == libMapM_ge_JungleCampTypes_DoubloonCamp) {

        if ((lp_alive == true)) {

            return "Assets\\Textures\\storm_ui_minimapicon_ogreking.dds";

        }

        else {

            return "Assets\\Textures\\storm_ui_minimapicon_ogreking_dead.dds";

        }

    }

    else if (autoC825EDFA_val == libMapM_ge_JungleCampTypes_DoubloonSmallCamp) {

        if ((lp_alive == true)) {

            return "Assets\\Textures\\storm_ui_minimapicon_piratecamp.dds";

        }

        else {

            return "Assets\\Textures\\storm_ui_minimapicon_piratecampempty.dds";

        }

    }

    else if (autoC825EDFA_val == libMapM_ge_JungleCampTypes_TryMeCamp) {

        autoC838F424_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType;

        if (autoC838F424_val == libMapM_ge_JungleCampDefenderTypes_SiegeGiants) {

            return "Assets\\Textures\\storm_ui_minimapicon_merccamp.dds";

        }

        else if (autoC838F424_val == libMapM_ge_JungleCampDefenderTypes_Knights) {

            return "Assets\\Textures\\storm_ui_minimapicon_elitemerccamp.dds";

        }

        else if (autoC838F424_val == libMapM_ge_JungleCampDefenderTypes_GraveGolem) {

            return "Assets\\Textures\\storm_ui_minimapicon_golemmerccamp.dds";

        }

        else {

            return "Assets\\Textures\\storm_ui_minimapicon_merccamp.dds";

        }

    }

    else {

        if ((lp_alive == true)) {

            return "Assets\\Textures\\storm_ui_minimapicon_creepcamp_medium.dds";

        }

        else {

            return "Assets\\Textures\\storm_ui_minimapicon_creepcamp_medium_dead.dds";

        }

    }

}



string libMapM_gf_JungleGetPortraitForJungleCamp (int lp_camp) {

    // Automatic Variable Declarations

    int auto253F4BAC_val;

    int autoF6D62E55_val;



    // Implementation

    auto253F4BAC_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType;

    if (auto253F4BAC_val == libMapM_ge_JungleCampTypes_MercCamp) {

        autoF6D62E55_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMercSpawnType;

        if (autoF6D62E55_val == libMapM_ge_JungleCampMercTypes_SiegeGiants) {

        }

        else if (autoF6D62E55_val == libMapM_ge_JungleCampMercTypes_Ogres) {

        }

        else if (autoF6D62E55_val == libMapM_ge_JungleCampMercTypes_GraveGolem) {

        }

        else {

        }

    }

    else {

    }

    return null;

}



string libMapM_gf_JungleGetPortraitForUnitType (string lp_unitType) {

    // Automatic Variable Declarations

    string autoA489BFB7_val;



    // Implementation

    autoA489BFB7_val = lp_unitType;

    if (autoA489BFB7_val == "MercLanerSiegeGiant") {

        return "Assets\\Textures\\storm_temp_war3_btnberserk.dds";

    }

    else if (autoA489BFB7_val == "MercLanerMeleeKnight") {

        return "Assets\\Textures\\storm_temp_war3_btnrevenant.dds";

    }

    else if (autoA489BFB7_val == "MercLanerRangedMage") {

        return "Assets\\Textures\\storm_temp_war3_btnrevenant.dds";

    }

    else if (autoA489BFB7_val == "JungleGraveGolemLaner") {

        return "Assets\\Textures\\storm_temp_war3_btngolemthunderclap.dds";

    }

    else {

    }

    return null;

}



text libMapM_gf_JungleGetNameTextForJungleCamp (int lp_camp) {

    // Automatic Variable Declarations

    int auto9A00953C_val;

    int auto4B152FD2_val;

    int auto78B4AE16_val;



    // Implementation

    auto9A00953C_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType;

    if (auto9A00953C_val == libMapM_ge_JungleCampTypes_MercCamp) {

        auto4B152FD2_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMercSpawnType;

        if (auto4B152FD2_val == libMapM_ge_JungleCampMercTypes_SiegeGiants) {

            return StringExternal("Param/Value/lib_MapM_71255AE7");

        }

        else if (auto4B152FD2_val == libMapM_ge_JungleCampMercTypes_Ogres) {

            return StringExternal("Param/Value/lib_MapM_D0F00D8A");

        }

        else if (auto4B152FD2_val == libMapM_ge_JungleCampMercTypes_GraveGolem) {

            return StringExternal("Param/Value/lib_MapM_B9B68899");

        }

        else {

            return StringExternal("Param/Value/lib_MapM_B37AEAAE");

        }

    }

    else if (auto9A00953C_val == libMapM_ge_JungleCampTypes_DoubloonCamp) {

        return StringExternal("Param/Value/lib_MapM_2AE79BAD");

    }

    else if (auto9A00953C_val == libMapM_ge_JungleCampTypes_DoubloonSmallCamp) {

        return StringExternal("Param/Value/lib_MapM_B72F24BC");

    }

    else if (auto9A00953C_val == libMapM_ge_JungleCampTypes_TryMeCamp) {

        auto78B4AE16_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType;

        if (auto78B4AE16_val == libMapM_ge_JungleCampDefenderTypes_SiegeGiants) {

            return StringExternal("Param/Value/lib_MapM_65E8BE29");

        }

        else if (auto78B4AE16_val == libMapM_ge_JungleCampDefenderTypes_Knights) {

            return StringExternal("Param/Value/lib_MapM_93870F82");

        }

        else if (auto78B4AE16_val == libMapM_ge_JungleCampDefenderTypes_GraveGolem) {

            return StringExternal("Param/Value/lib_MapM_8C0F57BC");

        }

        else {

            return StringExternal("Param/Value/lib_MapM_5063E421");

        }

    }

    else {

    }

    return StringExternal("Param/Value/lib_MapM_6B5370A7");

}



unit libMapM_gf_JungleGetRandomEnemyHeroInRangeOfMinionWithMinimumRangeRequirements (unit lp_creep, point lp_position, fixed lp_minimumRange, fixed lp_maximumRange, unit lp_restrictedUnit) {

    // Variable Declarations

    unit lv_u;

    unitgroup lv_unitGroup;

    point lv_minionPosition;



    // Automatic Variable Declarations

    unitgroup autoBBCB82D8_g;

    int autoBBCB82D8_u;



    // Variable Initialization

    lv_unitGroup = UnitGroupEmpty();



    // Implementation

    autoBBCB82D8_g = libNtve_gf_UnitsInRegionWithAllianceToPlayerMatchingCondition(null, "", "", UnitGetOwner(lp_creep), c_unitAllianceEnemy, RegionCircle(lp_position, lp_maximumRange), UnitFilter((1 << c_targetFilterHeroic) | (1 << c_targetFilterVisible), 0, (1 << c_targetFilterPlayer) | (1 << c_targetFilterAlly) | (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

    autoBBCB82D8_u = UnitGroupCount(autoBBCB82D8_g, c_unitCountAll);

    for (;; autoBBCB82D8_u -= 1) {

        lv_u = UnitGroupUnitFromEnd(autoBBCB82D8_g, autoBBCB82D8_u);

        if (lv_u == null) { break; }

        if ((DistanceBetweenPoints(lp_position, UnitGetPosition(lv_u)) >= lp_minimumRange) && (lv_u != lp_restrictedUnit)) {

            UnitGroupAdd(lv_unitGroup, lv_u);

        }



    }

    return UnitGroupUnit(lv_unitGroup, RandomInt(1, UnitGroupCount(lv_unitGroup, c_unitCountAll)));

}



int libMapM_gf_JungleGetCampIndexFromDefenderIndex (int lp_defenderIndex) {

    // Variable Declarations

    int lv_itCamp;



    // Automatic Variable Declarations

    int autoFFD97303_ae;

    const int autoFFD97303_ai = 1;



    // Variable Initialization



    // Implementation

    autoFFD97303_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; ( (autoFFD97303_ai >= 0 && lv_itCamp <= autoFFD97303_ae) || (autoFFD97303_ai < 0 && lv_itCamp >= autoFFD97303_ae) ) ; lv_itCamp += autoFFD97303_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex == lp_defenderIndex)) {

            return lv_itCamp;

        }



    }

    return 0;

}



void libMapM_gf_JungleUpdateTextTagForCamp (int lp_camp) {

    // Variable Declarations

    int lv_campType;

    int lv_defenderType;

    text lv_titleText;

    text lv_subText;

    text lv_descText;

    text lv_subTextBlue;

    text lv_subTextRed;

    text lv_formattedTitleText;

    text lv_formattedTitleTextBlue;

    text lv_formattedTitleTextRed;

    text lv_playerNameText;

    text lv_playerNameTextBlue;

    text lv_playerNameTextRed;

    text lv_debugDamageText;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_campType = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType;

    lv_defenderType = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType;

    lv_titleText = StringExternal("Param/Value/lib_MapM_72002658");

    lv_subText = StringToText("");

    lv_descText = StringExternal("Param/Value/lib_MapM_2B2EEB9C");

    lv_subTextBlue = StringToText("");

    lv_subTextRed = StringToText("");

    lv_formattedTitleText = StringToText("");

    lv_formattedTitleTextBlue = StringToText("");

    lv_formattedTitleTextRed = StringToText("");

    lv_playerNameText = StringToText("");

    lv_playerNameTextBlue = StringToText("");

    lv_playerNameTextRed = StringToText("");

    lv_debugDamageText = StringToText("");



    // Implementation

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_stateIsEnabled == false)) {

        return ;

    }



    if ((libMapM_gv_dataJungleCampDefenderData[lv_defenderType].lv_customTextTagTitle != null)) {

        lv_titleText = libMapM_gv_dataJungleCampDefenderData[lv_defenderType].lv_customTextTagTitle;

    }

    else if ((lv_defenderType == libMapM_ge_JungleCampDefenderTypes_Doubloons)) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_DD393591");

    }

    else if (((lv_defenderType == libMapM_ge_JungleCampDefenderTypes_SiegeGiants) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp1) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp2) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp3))) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_15277F20");

    }

    else if (((lv_defenderType == libMapM_ge_JungleCampDefenderTypes_Knights) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp1) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp2) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp3))) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_994B5E79");

    }

    else if (((lv_defenderType == libMapM_ge_JungleCampDefenderTypes_GraveGolem) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp1) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp2) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp3))) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_3BE90BC3");

    }

    if ((libMapM_gv_dataJungleCampDefenderData[lv_defenderType].lv_campIsElite == true)) {

        DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel2[lp_camp], PlayerGroupAll(), "CampEliteStatus", "CampIsElite");

    }

    else {

        DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel2[lp_camp], PlayerGroupAll(), "CampEliteStatus", "CampNotElite");

    }

    if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_capturingPlayer >= 1) && (libMapM_gv_jungleCreepCamps[lp_camp].lv_capturingPlayer <= libCore_gv_bALMaxPlayers))) {

        TextExpressionSetToken("Param/Expression/lib_MapM_50C2893A", "A", PlayerName(libMapM_gv_jungleCreepCamps[lp_camp].lv_capturingPlayer));

        lv_playerNameText = TextExpressionAssemble("Param/Expression/lib_MapM_50C2893A");

    }



    if ((TimerGetRemaining(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepRespawnTimer) > 0.0)) {

        TextExpressionSetToken("Param/Expression/lib_MapM_A9F1CFD7", "A", TextTimeFormat(StringToText("<mintotal/>:<sec2/>"), FixedToInt(TimerGetRemaining(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepRespawnTimer))));

        lv_subText = TextExpressionAssemble("Param/Expression/lib_MapM_A9F1CFD7");

        TextExpressionSetToken("Param/Expression/lib_MapM_5E46FF3A", "B", lv_titleText);

        TextExpressionSetToken("Param/Expression/lib_MapM_5E46FF3A", "A", TextTimeFormat(StringToText("<mintotal/>:<sec2/>"), FixedToInt(TimerGetRemaining(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepRespawnTimer))));

        ActorSendAsText(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit), TextExpressionAssemble("Param/Expression/lib_MapM_5E46FF3A"));

    }



    if ((libMapM_gv_dataJungleCampDefenderData[lv_defenderType].lv_customTextTagInfoText != null)) {

        lv_descText = libMapM_gv_dataJungleCampDefenderData[lv_defenderType].lv_customTextTagInfoText;

    }

    else if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDamagesCoreOnCapture == true)) {

        lv_descText = StringExternal("Param/Value/lib_MapM_F93FF8F2");

    }

    else if (((lv_campType == libMapM_ge_JungleCampTypes_DoubloonCamp) || (lv_campType == libMapM_ge_JungleCampTypes_DoubloonSmallCamp))) {

        lv_descText = StringExternal("Param/Value/lib_MapM_39EC2271");

    }

    else if (((lv_defenderType == libMapM_ge_JungleCampDefenderTypes_GraveGolem) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp1) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp2) || (lv_defenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp3))) {

        lv_descText = StringExternal("Param/Value/lib_MapM_FEC29940");

    }

    if ((libCore_gv_dEBUGDebuggingEnabled == true) && (libSprt_gv_dEBUGMapTextEnabled == true)) {

        TextExpressionSetToken("Param/Expression/lib_MapM_80E63651", "A", IntToText(FixedToInt(libMapM_gv_jungleCreepCamps[lp_camp].lv_statTrackingDamageDoneByLastCapture)));

        lv_debugDamageText = TextExpressionAssemble("Param/Expression/lib_MapM_80E63651");

    }



    if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_capturingPlayer >= 1) && (libMapM_gv_jungleCreepCamps[lp_camp].lv_capturingPlayer <= libCore_gv_bALMaxPlayers))) {

        if ((libGame_gf_TeamNumberOfPlayer(libMapM_gv_jungleCreepCamps[lp_camp].lv_capturingPlayer) == libGame_gv_teamOrderIndex_C)) {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false), "TeamCaptured", "BlueTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false), "TeamCaptured", "RedTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], PlayerGroupSingle(libCore_gv_oBSERVER_ObserverUIPlayer), "TeamCaptured", "BlueTeam");

        }

        else {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false), "TeamCaptured", "RedTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false), "TeamCaptured", "BlueTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], PlayerGroupSingle(libCore_gv_oBSERVER_ObserverUIPlayer), "TeamCaptured", "RedTeam");

        }

        if ((TimerGetRemaining(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepRespawnTimer) > 0.0)) {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_camp], PlayerGroupAll(), "ShowHideDescription", "HideDesc");

        }

        else {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_camp], PlayerGroupAll(), "ShowHideDescription", "ShowDesc");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], PlayerGroupAll(), "TeamCaptured", "CapturedReset");

        }

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Timer[lp_camp], lv_subText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Title[lp_camp], lv_titleText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_PlayerName[lp_camp], lv_playerNameText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_camp], lv_descText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Debug[lp_camp], lv_debugDamageText, PlayerGroupAll());

    }

    else {

        DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_camp], PlayerGroupAll(), "TeamCaptured", "NotCaptured");

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Timer[lp_camp], lv_subText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Title[lp_camp], lv_titleText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_PlayerName[lp_camp], lv_playerNameText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_camp], lv_descText, PlayerGroupAll());

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Debug[lp_camp], lv_debugDamageText, PlayerGroupAll());

    }

}



void libMapM_gf_JungleSwitchToTextTagForCamp (int lp_camp) {

    // Automatic Variable Declarations

    // Implementation

    libMapM_gf_JungleUpdateTextTagForCamp(lp_camp);

}



void libMapM_gf_JungleUpdateMinimapTooltipForCamp (int lp_camp) {

    // Variable Declarations

    int lv_campDisplayLevel;

    text lv_titleText;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_titleText = StringExternal("Param/Value/lib_MapM_460B0FE1");



    // Implementation

    lv_campDisplayLevel = libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampLevel[libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCurrentDefenderScalingTicks];

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampTypeMinimapTitle != null)) {

        lv_titleText = libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampTypeMinimapTitle;

    }

    else if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_Doubloons)) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_311EBDDD");

    }

    else if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeGiants) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp1) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp2) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp3))) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_A4569F3A");

    }

    else if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_Knights) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp1) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp2) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp3))) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_90B4C6A7");

    }

    else if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_GraveGolem) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp1) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp2) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp3))) {

        lv_titleText = StringExternal("Param/Value/lib_MapM_A9458433");

    }

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampTypeMinimapLabel != null)) {

        TextExpressionSetToken("Param/Expression/lib_MapM_A2B826DD", "A", lv_titleText);

        TextExpressionSetToken("Param/Expression/lib_MapM_A2B826DD", "B", libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCampTypeMinimapLabel);

        ActorSendAsText(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit), TextExpressionAssemble("Param/Expression/lib_MapM_A2B826DD"));

    }

    else {

        TextExpressionSetToken("Param/Expression/lib_MapM_BA00E7C6", "A", lv_titleText);

        ActorSendAsText(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit), TextExpressionAssemble("Param/Expression/lib_MapM_BA00E7C6"));

    }

}



trigger auto_libMapM_gf_JungleRespawnCreepsForCamp_Trigger = null;

int auto_libMapM_gf_JungleRespawnCreepsForCamp_lp_camp;



void libMapM_gf_JungleRespawnCreepsForCamp (int lp_camp) {

    auto_libMapM_gf_JungleRespawnCreepsForCamp_lp_camp = lp_camp;



    if (auto_libMapM_gf_JungleRespawnCreepsForCamp_Trigger == null) {

        auto_libMapM_gf_JungleRespawnCreepsForCamp_Trigger = TriggerCreate("auto_libMapM_gf_JungleRespawnCreepsForCamp_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_JungleRespawnCreepsForCamp_Trigger, false, false);

}



bool auto_libMapM_gf_JungleRespawnCreepsForCamp_TriggerFunc (bool testConds, bool runActions) {

    int lp_camp = auto_libMapM_gf_JungleRespawnCreepsForCamp_lp_camp;



    // Variable Declarations

    int lv_i;

    fixed lv_StaggeredBirth;

    unit lv_u;

    region lv_aggroRegion;

    string lv_icon;

    int lv_heightOffset;

    text lv_helperTextStart;

    unitgroup lv_defenderGroup;

    unit lv_newUnit;



    // Automatic Variable Declarations

    unitgroup auto10B8F53E_g;

    int auto10B8F53E_u;

    unitgroup autoB3DF04CC_g;

    int autoB3DF04CC_u;

    int auto9754AF77_ae;

    const int auto9754AF77_ai = 1;



    // Variable Initialization

    lv_heightOffset = 4;

    lv_defenderGroup = UnitGroupEmpty();



    // Implementation

    libNtve_gf_SendActorMessageToUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit, "SetMinimapVisibility 1");

    auto10B8F53E_g = libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lp_camp].lv_aIDefenderAIIndex);

    auto10B8F53E_u = UnitGroupCount(auto10B8F53E_g, c_unitCountAll);

    for (;; auto10B8F53E_u -= 1) {

        lv_u = UnitGroupUnitFromEnd(auto10B8F53E_g, auto10B8F53E_u);

        if (lv_u == null) { break; }

        UnitRemove(lv_u);

    }

    autoB3DF04CC_g = libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCoweringDeadUnitGroup;

    autoB3DF04CC_u = UnitGroupCount(autoB3DF04CC_g, c_unitCountAll);

    for (;; autoB3DF04CC_u -= 1) {

        lv_u = UnitGroupUnitFromEnd(autoB3DF04CC_g, autoB3DF04CC_u);

        if (lv_u == null) { break; }

        libNtve_gf_SendActorMessageToGameRegion(RegionCircle(UnitGetPosition(lv_u), 2.0), "Signal CreepCleanup");

        UnitRemove(lv_u);

    }

    libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersBribedCount = 0;

    UnitGroupClear(libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderUnitGroup);

    Wait(0.125, c_timeGame);

    auto9754AF77_ae = libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderNumberofCreeps;

    lv_i = 1;

    for ( ; ( (auto9754AF77_ai >= 0 && lv_i <= auto9754AF77_ae) || (auto9754AF77_ai < 0 && lv_i >= auto9754AF77_ae) ) ; lv_i += auto9754AF77_ai ) {

        libNtve_gf_CreateUnitsAtPoint2(1, libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderUnitTypes[lv_i], c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_Hostile, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataDefenderSpawnPoints[lv_i], null);

        lv_newUnit = UnitLastCreated();

        UnitGroupAdd(lv_defenderGroup, lv_newUnit);

        UnitGroupAdd(libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderUnitGroup, lv_newUnit);

        UnitSetCustomValue(lv_newUnit, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_JungleDefenderCreepCampIndex), IntToFixed(lp_camp));

        UnitSetCustomValue(lv_newUnit, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_JungleDefenderCreepUnitIndex), IntToFixed(lv_i));

        UnitBehaviorAdd(lv_newUnit, "JungleMercDefenderBirthInvulnerability", lv_newUnit, 1);

        libGame_gf_SendEventJungleCampDefenderCreated(lv_newUnit);

        if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCoweringUnit[lv_i] == true)) {

            UnitGroupAdd(libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCoweringLivingUnitGroup, lv_newUnit);

        }



        if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersHaveStaggeredBirth == true)) {

            if ((libAIAI_gv_defenderAI[lp_camp].lv_aggoRegion == null)) {

                UnitBehaviorAdd(lv_newUnit, "JungleCreepBenign", lv_newUnit, 1);

            }



            UnitBehaviorAdd(lv_newUnit, "JungleCreepPassive", lv_newUnit, 1);

            UnitBehaviorSetDurationRemaining(lv_newUnit, "JungleMercDefenderBirthInvulnerability", (UnitBehaviorDuration(lv_newUnit, "JungleMercDefenderBirthInvulnerability") - lv_StaggeredBirth));

            lv_StaggeredBirth += libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersStaggeredBirthPeriod;

            Wait(libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersStaggeredBirthPeriod, c_timeGame);

        }



    }

    libAIAI_gf_StartDefenderAI(false, lv_defenderGroup, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataDefenderLeashRegion, lv_aggroRegion, true);

    libMapM_gv_jungleCreepCamps[lp_camp].lv_aIDefenderAIIndex = libAIAI_gf_LastCreatedDefenderAI();

    AIAddMercenaryCamp(UnitGetPosition(libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCircleOfPowerUnit), lv_defenderGroup, libMapM_gv_jungleCreepCamps[lp_camp].lv_aICampGoalLink);

    libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCurrentDefenderScalingTicks = 0;

    libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCurrentMercScalingTicks = 0;

    libGame_gf_JungleUpdateScalingForCamp(lp_camp, libGame_gv_scalingTicks);

    libGame_gf_SendEventJungleCampSpawning(lp_camp);

    Wait((libMapM_gv_bALJungleBirthDelay - lv_StaggeredBirth), c_timeGame);

    if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_MercCamp) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_DoubloonCamp))) {

        UnitSetOwner(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit, 0, true);

        libNtve_gf_SendActorMessageToGameRegion(libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataDefenderLeashRegion, "Signal OwnerNeutral");

    }



    libMapM_gf_JungleTransitionCampIntoState(lp_camp, libMapM_ge_JungleCampStates_Idle);

    lv_icon = libMapM_gf_JungleGetCurrentIconForJungleCamp(lp_camp, true);

    libNtve_gf_SendActorMessageToUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit, "MinimapIcon " + lv_icon);

    libNtve_gf_SendActorMessageToUnit(UnitLastCreated(), (("MinimapIconScale " + FixedToString(libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMinimapIconScale, c_fixedPrecisionAny))));

    libMapM_gf_CreateSnapshotOfUnitForBothTeams(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit);

    libMapM_gf_JungleSwitchToTextTagForCamp(lp_camp);

    libMapM_gf_JungleUpdateMinimapTooltipForCamp(lp_camp);

    libGame_gf_SendEventJungleCampSpawned(lp_camp);

    return true;

}



void libMapM_gf_JungleDebugResetCamp (int lp_Player, int lp_Camp) {

    int init_i;



    // Variable Declarations

    int[libMapM_gv_jungleMaxCamps + 1] lv_infoPanel;

    int lv_titleText;

    int lv_subTimerText;

    int lv_descText;

    text lv_playerNameText;



    // Automatic Variable Declarations

    // Variable Initialization

    for (init_i = 0; init_i <= libMapM_gv_jungleMaxCamps; init_i += 1) {

        lv_infoPanel[init_i] = c_invalidDialogControlId;

    }

    lv_titleText = c_invalidDialogControlId;

    lv_subTimerText = c_invalidDialogControlId;

    lv_descText = c_invalidDialogControlId;

    lv_playerNameText = StringToText("");



    // Implementation

    libCore_gf_DataLootContentLoadBannerDataIntoIndex("NeutralMercCamp", libCore_gv_cOMPUTER_Hostile);

    UnitCreate(1, "LootBannerSconce", c_unitCreateIgnorePlacement, libGame_gf_ComputerPlayerInTeam(libGame_gf_TeamNumberOfPlayer(lp_Player)), libMapM_gv_jungleCreepCamps[lp_Camp].lv_campOwnershipFlagPosition, 270.0, null);

    libMapM_gv_jungleCreepCamps[lp_Camp].lv_campOwnershipFlagUnit = UnitLastCreated();

    libMapM_gf_JungleDropLootBannerinMercCamp(lp_Camp, PlayerGroupSingle(lp_Player));

    DialogControlDestroy(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp]);

    DialogCreate(1, 1, c_anchorTop, 0, 0, true);

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsDialog[lp_Camp] = DialogLastCreated();

    DialogSetPositionRelativeToUnitWithAnchor(DialogLastCreated(), libMapM_gv_jungleCreepCamps[lp_Camp].lv_campOwnershipFlagUnit, "Ref_Overhead", c_anchorCenter, 0, 0);

    DialogControlCreate(DialogLastCreated(), c_triggerControlTypePanel);

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCamp_PositionControl[lp_Camp] = DialogControlLastCreated();

    DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/FullscreenLowerContainer/MercCampPanel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsParentPanel = DialogControlLastCreated();

    DialogControlCreateInPanelFromTemplate(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsParentPanel, c_triggerControlTypePanel, "JungleCampInfoPanel/JungleCampInfoPanelTemplate");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp] = DialogControlLastCreated();

    lv_infoPanel[lp_Camp] = DialogControlLastCreated();

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), true);

    DialogControlSetPositionRelative(DialogControlLastCreated(), PlayerGroupAll(), c_anchorCenter, libMapM_gv_uIJungleCampPanel.lv_jungleCreepCamp_PositionControl[lp_Camp], c_anchorBottom, 0, 0);

    DialogControlHookup(lv_infoPanel[lp_Camp], c_triggerControlTypeLabel, "CampTimerLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Timer[lp_Camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_Camp], c_triggerControlTypeLabel, "CampTitleLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Title[lp_Camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_Camp], c_triggerControlTypeLabel, "PlayerNameLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_PlayerName[lp_Camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_Camp], c_triggerControlTypeLabel, "CampDescriptionLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_Camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_Camp], c_triggerControlTypeLabel, "DebugLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Debug[lp_Camp] = DialogControlLastCreated();

    DialogControlHookup(lv_infoPanel[lp_Camp], c_triggerControlTypeLabel, "CampEliteLabel");

    libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel2[lp_Camp] = DialogControlLastCreated();

    if (((lp_Player >= 1) && (lp_Player <= libCore_gv_bALMaxPlayers))) {

        TextExpressionSetToken("Param/Expression/lib_MapM_104CCD72", "A", PlayerName(lp_Player));

        lv_playerNameText = TextExpressionAssemble("Param/Expression/lib_MapM_104CCD72");

    }



    if (((lp_Player >= 1) && (lp_Player <= libCore_gv_bALMaxPlayers))) {

        if ((libGame_gf_TeamNumberOfPlayer(lp_Player) == libGame_gv_teamOrderIndex_C)) {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false), "TeamCaptured", "BlueTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false), "TeamCaptured", "RedTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], PlayerGroupSingle(libCore_gv_oBSERVER_ObserverUIPlayer), "TeamCaptured", "BlueTeam");

        }

        else {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false), "TeamCaptured", "RedTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false), "TeamCaptured", "BlueTeam");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], PlayerGroupSingle(libCore_gv_oBSERVER_ObserverUIPlayer), "TeamCaptured", "RedTeam");

        }

        if ((TimerGetRemaining(libMapM_gv_jungleCreepCamps[lp_Camp].lv_stateCreepRespawnTimer) > 0.0)) {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_Camp], PlayerGroupAll(), "ShowHideDescription", "HideDesc");

        }

        else {

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_Description[lp_Camp], PlayerGroupAll(), "ShowHideDescription", "ShowDesc");

            DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], PlayerGroupAll(), "TeamCaptured", "CapturedReset");

        }

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_PlayerName[lp_Camp], lv_playerNameText, PlayerGroupAll());

    }

    else {

        DialogControlSetAnimationState(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfoPanel[lp_Camp], PlayerGroupAll(), "TeamCaptured", "NotCaptured");

        libNtve_gf_SetDialogItemText(libMapM_gv_uIJungleCampPanel.lv_jungleCreepCampsInfo_Label_PlayerName[lp_Camp], lv_playerNameText, PlayerGroupAll());

    }

}



void libMapM_gf_JungleTransitionCampIntoState (int lp_camp, int lp_state) {

    // Variable Declarations

    unit lv_itUnit;

    string lv_icon;



    // Automatic Variable Declarations

    int auto438F5FF1_val;

    unitgroup auto11B9D48C_g;

    int auto11B9D48C_u;

    unitgroup auto0136C2BD_g;

    int auto0136C2BD_u;



    // Variable Initialization



    // Implementation

    libMapM_gv_jungleCreepCamps[lp_camp].lv_aIState = lp_state;

    libMapM_gf_JungleSwitchToTextTagForCamp(lp_camp);

    auto438F5FF1_val = lp_state;

    if (auto438F5FF1_val == libMapM_ge_JungleCampStates_Idle) {

        AIEnableMercenaryCamp(UnitGetPosition(libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCircleOfPowerUnit), true);

        libGame_gf_JungleUpdateScalingForCamp(lp_camp, libGame_gv_scalingTicks);

    }

    else if (auto438F5FF1_val == libMapM_ge_JungleCampStates_Busy) {

        libMapM_gv_jungleCreepCamps[lp_camp].lv_statTrackingDamageDoneByLastCapture = 0.0;

        TimerPause(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepRespawnTimer, true);

        TimerPause(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepBirthTimer, true);

    }

    else if (auto438F5FF1_val == libMapM_ge_JungleCampStates_Dead) {

        AIRemoveMercenaryCamp(UnitGetPosition(libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCircleOfPowerUnit));

        libMapM_gf_JungleSwitchToTextTagForCamp(lp_camp);

        lv_icon = libMapM_gf_JungleGetCurrentIconForJungleCamp(lp_camp, false);

        libNtve_gf_SendActorMessageToUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit, "MinimapIcon " + lv_icon);

        libNtve_gf_SendActorMessageToUnit(UnitLastCreated(), (("MinimapIconScale " + FixedToString(libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMinimapIconScale, c_fixedPrecisionAny))));

        if (((libMapM_gv_jungleAllCampsShouldBeHibernating == true) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_statePersonalHiberationisEnabled == true))) {

            libMapM_gf_JungleTransitionCampIntoState(lp_camp, libMapM_ge_JungleCampStates_Hibernating);

        }



    }

    else if (auto438F5FF1_val == libMapM_ge_JungleCampStates_Paused) {

        auto11B9D48C_g = libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lp_camp].lv_aIDefenderAIIndex);

        auto11B9D48C_u = UnitGroupCount(auto11B9D48C_g, c_unitCountAll);

        for (;; auto11B9D48C_u -= 1) {

            lv_itUnit = UnitGroupUnitFromEnd(auto11B9D48C_g, auto11B9D48C_u);

            if (lv_itUnit == null) { break; }

            UnitIssueOrder(lv_itUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);

        }

    }

    else if (auto438F5FF1_val == libMapM_ge_JungleCampStates_Hibernating) {

        AIEnableMercenaryCamp(UnitGetPosition(libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCircleOfPowerUnit), false);

        auto0136C2BD_g = libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lp_camp].lv_aIDefenderAIIndex);

        auto0136C2BD_u = UnitGroupCount(auto0136C2BD_g, c_unitCountAll);

        for (;; auto0136C2BD_u -= 1) {

            lv_itUnit = UnitGroupUnitFromEnd(auto0136C2BD_g, auto0136C2BD_u);

            if (lv_itUnit == null) { break; }

            libMapM_gf_JungleHibernateCampDefender(lv_itUnit);

        }

        ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit), "SetMinimapVisibility");

        libMapM_gf_JungleSwitchToTextTagForCamp(lp_camp);

    }

    else if (auto438F5FF1_val == libMapM_ge_JungleCampStates_HibernatingReadyToRespawn) {

        libMapM_gf_JungleSwitchToTextTagForCamp(lp_camp);

    }

    else {

    }

}



trigger auto_libMapM_gf_JungleHibernateCampDefender_Trigger = null;

unit auto_libMapM_gf_JungleHibernateCampDefender_lp_defender;



void libMapM_gf_JungleHibernateCampDefender (unit lp_defender) {

    auto_libMapM_gf_JungleHibernateCampDefender_lp_defender = lp_defender;



    if (auto_libMapM_gf_JungleHibernateCampDefender_Trigger == null) {

        auto_libMapM_gf_JungleHibernateCampDefender_Trigger = TriggerCreate("auto_libMapM_gf_JungleHibernateCampDefender_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_JungleHibernateCampDefender_Trigger, false, false);

}



bool auto_libMapM_gf_JungleHibernateCampDefender_TriggerFunc (bool testConds, bool runActions) {

    unit lp_defender = auto_libMapM_gf_JungleHibernateCampDefender_lp_defender;



    // Automatic Variable Declarations

    // Implementation

    UnitIssueOrder(lp_defender, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);

    libNtve_gf_MakeUnitInvulnerable(lp_defender, true);

    UnitSetState(lp_defender, c_unitStateTargetable, false);

    UnitSetState(lp_defender, c_unitStateStatusBar, false);

    UnitSetState(lp_defender, c_unitStateFidget, false);

    UnitBehaviorRemoveCategory(lp_defender, c_behaviorCategoryReveal);

    UnitBehaviorRemoveCategory(lp_defender, c_behaviorCategorySlow);

    UnitBehaviorRemoveCategory(lp_defender, c_behaviorCategoryStun);

    UnitBehaviorRemoveCategory(lp_defender, c_behaviorCategoryDamageOverTime);

    UnitBehaviorAddPlayer(lp_defender, "GardensMercCampPreHibernator", UnitGetOwner(lp_defender), 1);

    libNtve_gf_SendActorMessageToUnit(lp_defender, "SetOpacity 0.000000 2.500000");

    Wait(0.125, c_timeGame);

    libNtve_gf_SendActorMessageToUnit(lp_defender, "AnimSetPausedAll");

    libNtve_gf_PauseUnit(lp_defender, true);

    Wait(3.0, c_timeGame);

    if ((libMapM_gv_jungleAllCampsShouldBeHibernating == true)) {

        UnitBehaviorAddPlayer(lp_defender, "GardensMercCampHibernator", UnitGetOwner(lp_defender), 1);

    }



    return true;

}



trigger auto_libMapM_gf_JungleStopHibernatingCampDefender_Trigger = null;

unit auto_libMapM_gf_JungleStopHibernatingCampDefender_lp_defender;

point auto_libMapM_gf_JungleStopHibernatingCampDefender_lp_location;



void libMapM_gf_JungleStopHibernatingCampDefender (unit lp_defender, point lp_location) {

    auto_libMapM_gf_JungleStopHibernatingCampDefender_lp_defender = lp_defender;

    auto_libMapM_gf_JungleStopHibernatingCampDefender_lp_location = lp_location;



    if (auto_libMapM_gf_JungleStopHibernatingCampDefender_Trigger == null) {

        auto_libMapM_gf_JungleStopHibernatingCampDefender_Trigger = TriggerCreate("auto_libMapM_gf_JungleStopHibernatingCampDefender_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_JungleStopHibernatingCampDefender_Trigger, false, false);

}



bool auto_libMapM_gf_JungleStopHibernatingCampDefender_TriggerFunc (bool testConds, bool runActions) {

    unit lp_defender = auto_libMapM_gf_JungleStopHibernatingCampDefender_lp_defender;

    point lp_location = auto_libMapM_gf_JungleStopHibernatingCampDefender_lp_location;



    // Variable Declarations

    int lv_campDefenderType;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_campDefenderType = libMapM_gv_jungleCreepCamps[libMapM_gf_JungleGetJungleCampForUnit(lp_defender)].lv_mapDataCampDefenderType;



    // Implementation

    libNtve_gf_PauseUnit(lp_defender, false);

    if ((UnitIsAlive(lp_defender) == true)) {

        UnitSetPosition(lp_defender, lp_location, false);

        UnitSetFacing(lp_defender, PointGetFacing(lp_location), 0.0);

    }



    UnitBehaviorRemove(lp_defender, "GardensMercCampHibernator", 1);

    UnitBehaviorRemove(lp_defender, "GardensMercCampPreHibernator", 1);

    libNtve_gf_SendActorMessageToUnit(lp_defender, "AnimSetPausedAll 0");

    libNtve_gf_SendActorMessageToUnit(lp_defender, "SetOpacity 1.000000 2.000000");

    Wait(2.0, c_timeGame);

    libNtve_gf_MakeUnitInvulnerable(lp_defender, false);

    UnitSetState(lp_defender, c_unitStateTargetable, true);

    UnitSetState(lp_defender, c_unitStateStatusBar, true);

    UnitSetState(lp_defender, c_unitStateFidget, true);

    return true;

}



void libMapM_gf_JungleStartHibernateCamps () {

    // Variable Declarations

    int lv_itCamp;



    // Automatic Variable Declarations

    int autoF0D500E2_ae;

    const int autoF0D500E2_ai = 1;



    // Variable Initialization



    // Implementation

    libMapM_gv_jungleAllCampsShouldBeHibernating = true;

    autoF0D500E2_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; ( (autoF0D500E2_ai >= 0 && lv_itCamp <= autoF0D500E2_ae) || (autoF0D500E2_ai < 0 && lv_itCamp >= autoF0D500E2_ae) ) ; lv_itCamp += autoF0D500E2_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState != libMapM_ge_JungleCampStates_Busy) && (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState != libMapM_ge_JungleCampStates_Paused)) {

            libMapM_gf_JungleTransitionCampIntoState(lv_itCamp, libMapM_ge_JungleCampStates_Hibernating);

        }



    }

}



void libMapM_gf_JungleHibernateMatchingCamps (string lp_leaderUnitType) {

    // Variable Declarations

    int lv_itCamp;



    // Automatic Variable Declarations

    int auto98AE68D1_ae;

    const int auto98AE68D1_ai = 1;



    // Variable Initialization



    // Implementation

    auto98AE68D1_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; ( (auto98AE68D1_ai >= 0 && lv_itCamp <= auto98AE68D1_ae) || (auto98AE68D1_ai < 0 && lv_itCamp >= auto98AE68D1_ae) ) ; lv_itCamp += auto98AE68D1_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mercSpawnedMinionUnitType[1] == lp_leaderUnitType) && (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mercCampHibernateswhenmatchingcampsareactive == true)) {

            libMapM_gv_jungleCreepCamps[lv_itCamp].lv_statePersonalHiberationisEnabled = true;

            if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState != libMapM_ge_JungleCampStates_Busy) && (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState != libMapM_ge_JungleCampStates_Paused)) {

                libMapM_gf_JungleTransitionCampIntoState(lv_itCamp, libMapM_ge_JungleCampStates_Hibernating);

            }



        }



    }

}



void libMapM_gf_JungleStopHibernateCamps () {

    // Variable Declarations

    int lv_itCamp;

    int lv_itDefenderIndex;

    unit lv_defenderUnit;



    // Automatic Variable Declarations

    int autoE0EA0DBF_ae;

    const int autoE0EA0DBF_ai = 1;

    int autoB7B3B98F_ae;

    const int autoB7B3B98F_ai = 1;



    // Variable Initialization



    // Implementation

    libMapM_gv_jungleAllCampsShouldBeHibernating = false;

    TriggerEnable(libMapM_gt_JungleRespawnTimerTextTagCountdown, true);

    autoE0EA0DBF_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; ( (autoE0EA0DBF_ai >= 0 && lv_itCamp <= autoE0EA0DBF_ae) || (autoE0EA0DBF_ai < 0 && lv_itCamp >= autoE0EA0DBF_ae) ) ; lv_itCamp += autoE0EA0DBF_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState == libMapM_ge_JungleCampStates_Hibernating) && (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_statePersonalHiberationisEnabled == false)) {

            autoB7B3B98F_ae = libMapM_gv_jungleCreepCamps[lv_itCamp].lv_defenderNumberofCreeps;

            lv_itDefenderIndex = 1;

            for ( ; ( (autoB7B3B98F_ai >= 0 && lv_itDefenderIndex <= autoB7B3B98F_ae) || (autoB7B3B98F_ai < 0 && lv_itDefenderIndex >= autoB7B3B98F_ae) ) ; lv_itDefenderIndex += autoB7B3B98F_ai ) {

                lv_defenderUnit = libAIAI_gf_DefenderUnit(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex, lv_itDefenderIndex);

                libMapM_gf_JungleStopHibernatingCampDefender(lv_defenderUnit, libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataDefenderSpawnPoints[lv_itDefenderIndex]);

            }

            if ((UnitGroupCount(libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex), c_unitCountAlive) > 0)) {

                ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit), "SetMinimapVisibility 1");

                libMapM_gf_JungleTransitionCampIntoState(lv_itCamp, libMapM_ge_JungleCampStates_Idle);

            }

            else {

                if (((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mercLaneLastSpawnedIn[0] != 0) || (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mercLaneLastSpawnedIn[1] != 0) || (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mercLaneLastSpawnedIn[2] != 0))) {

                    ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit), "SetMinimapVisibility 1");

                }



                libMapM_gf_JungleTransitionCampIntoState(lv_itCamp, libMapM_ge_JungleCampStates_Dead);

            }

            if ((UnitGroupCount(libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex), c_unitCountAlive) > 0) && (UnitGroupCount(libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex), c_unitCountAlive) < libMapM_gv_jungleCreepCamps[lv_itCamp].lv_defenderNumberofCreeps)) {

            }



        }



        if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState == libMapM_ge_JungleCampStates_HibernatingReadyToRespawn)) {

            ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit), "SetMinimapVisibility 1");

            libMapM_gf_JungleRespawnCreepsForCamp(lv_itCamp);

        }



        libMapM_gf_JungleSwitchToTextTagForCamp(lv_itCamp);

    }

}



void libMapM_gf_JungleStopHibernateCampsByLeaderUnit (string lp_laningUnitType) {

    // Variable Declarations

    int lv_itCamp;

    int lv_itDefenderIndex;

    unit lv_defenderUnit;



    // Automatic Variable Declarations

    int auto2FB8170E_ae;

    const int auto2FB8170E_ai = 1;

    int auto0E6FFA74_ae;

    const int auto0E6FFA74_ai = 1;



    // Variable Initialization



    // Implementation

    auto2FB8170E_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; ( (auto2FB8170E_ai >= 0 && lv_itCamp <= auto2FB8170E_ae) || (auto2FB8170E_ai < 0 && lv_itCamp >= auto2FB8170E_ae) ) ; lv_itCamp += auto2FB8170E_ai ) {

        if (((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mercSpawnedMinionUnitType[1] == lp_laningUnitType) || (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mercCampHibernateswhenmatchingcampsareactive == true))) {

            libMapM_gv_jungleCreepCamps[lv_itCamp].lv_statePersonalHiberationisEnabled = false;

            if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState == libMapM_ge_JungleCampStates_Hibernating) && (libMapM_gv_jungleAllCampsShouldBeHibernating == false)) {

                auto0E6FFA74_ae = libMapM_gv_jungleCreepCamps[lv_itCamp].lv_defenderNumberofCreeps;

                lv_itDefenderIndex = 1;

                for ( ; ( (auto0E6FFA74_ai >= 0 && lv_itDefenderIndex <= auto0E6FFA74_ae) || (auto0E6FFA74_ai < 0 && lv_itDefenderIndex >= auto0E6FFA74_ae) ) ; lv_itDefenderIndex += auto0E6FFA74_ai ) {

                    lv_defenderUnit = libAIAI_gf_DefenderUnit(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex, lv_itDefenderIndex);

                    libMapM_gf_JungleStopHibernatingCampDefender(lv_defenderUnit, libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataDefenderSpawnPoints[lv_itDefenderIndex]);

                }

                ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit), "SetMinimapVisibility 1");

                if ((UnitGroupCount(libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex), c_unitCountAlive) > 0)) {

                    libMapM_gf_JungleTransitionCampIntoState(lv_itCamp, libMapM_ge_JungleCampStates_Idle);

                }

                else {

                    libMapM_gf_JungleTransitionCampIntoState(lv_itCamp, libMapM_ge_JungleCampStates_Dead);

                }

                if ((UnitGroupCount(libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex), c_unitCountAlive) > 0) && (UnitGroupCount(libAIAI_gf_DefenderGroup(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIDefenderAIIndex), c_unitCountAlive) < libMapM_gv_jungleCreepCamps[lv_itCamp].lv_defenderNumberofCreeps)) {

                }



            }



            if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState == libMapM_ge_JungleCampStates_HibernatingReadyToRespawn)) {

                ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit), "SetMinimapVisibility 1");

                libMapM_gf_JungleRespawnCreepsForCamp(lv_itCamp);

            }



            libMapM_gf_JungleSwitchToTextTagForCamp(lv_itCamp);

        }



    }

}



void libMapM_gf_JungleTurnOnCampCaptureBeacon (int lp_camp) {

    // Automatic Variable Declarations

    // Implementation

    libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCaptureEnabled = true;

    UnitSetOwner(libMapM_gv_jungleCreepCamps[lp_camp].lv_campIconUnit, 0, true);

    UnitSetOwner(libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagUnit, libCore_gv_cOMPUTER_Hostile, true);

    libGame_gf_CapturePointEnable(libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCapturePointIndex);

    libMapM_gf_JungleTransitionCampIntoState(lp_camp, libMapM_ge_JungleCampStates_Paused);

}



void libMapM_gf_JungleTurnOffCampCaptureBeacon (int lp_camp, int lp_owner) {

    // Automatic Variable Declarations

    // Implementation

    libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCaptureEnabled = false;

    UnitSetOwner(libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCircleOfPowerUnit, lp_owner, true);

    libMapM_gf_JungleTransitionCampCaptureBeacontoHidden(lp_camp);

}



void libMapM_gf_JungleTransitionCampCaptureBeacontoHidden (int lp_camp) {

    // Automatic Variable Declarations

    // Implementation

    libGame_gf_CapturePointDisable(libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCapturePointIndex);

}



void libMapM_gf_JungleGrantCaptureRewards (int lp_camp, int lp_owner, bool lp_hasMercLordTalent) {

    // Variable Declarations

    int lv_itPlayer;

    unit lv_itUnit;

    int lv_killingFaction;

    string lv_campPortrait;

    playergroup lv_creditGroup;

    fixed lv_grantedXP;

    fixed lv_captureRadiusScoreCredit;



    // Automatic Variable Declarations

    unitgroup auto65C1FEA2_g;

    int auto65C1FEA2_u;

    unitgroup auto6F574477_g;

    int auto6F574477_u;

    playergroup auto6FC0000D_g;

    playergroup auto92E53E49_g;

    playergroup auto7D3C6A92_g;

    int auto9C82785C_val;

    const int auto55464B3F_n = 3;

    int auto55464B3F_i;

    const int autoEFA847D9_n = 2;

    int autoEFA847D9_i;



    // Variable Initialization

    lv_creditGroup = PlayerGroupEmpty();

    lv_captureRadiusScoreCredit = (libMapM_gv_bALJungleCampCaptureRadius + 5.0);



    // Implementation

    if ((lp_owner == libCore_gv_cOMPUTER_TeamOrder)) {

        libMapM_gv_jungleCreepCamps[lp_camp].lv_statTrackingOrderCaptures += 1;

        lv_killingFaction = libGame_ge_Faction_Order;

    }

    else {

        libMapM_gv_jungleCreepCamps[lp_camp].lv_statTrackingChaosCaptures += 1;

        lv_killingFaction = libGame_ge_Faction_Chaos;

    }

    StatEventCreate("JungleCampCapture");

    StatEventAddDataInt(StatEventLastCreated(), "CampID", lp_camp);

    StatEventAddDataFixed(StatEventLastCreated(), "TeamID", libGame_gf_TeamNumberOfPlayer(lp_owner));

    if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_GraveGolem) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp1) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp2) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp3))) {

        StatEventAddDataString(StatEventLastCreated(), "CampType", "Boss Camp");

    }

    else if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_Knights) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp1) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp2) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BruiserCamp3))) {

        StatEventAddDataString(StatEventLastCreated(), "CampType", "Bruiser Camp");

    }

    else if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeGiants) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp1) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp2) || (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_SiegeCamp3))) {

        StatEventAddDataString(StatEventLastCreated(), "CampType", "Siege Camp");

    }

    else if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_Doubloons))) {

        StatEventAddDataString(StatEventLastCreated(), "CampType", "Doubloons Camp");

    }

    else if (((libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_Custom))) {

        StatEventAddDataString(StatEventLastCreated(), "CampType", "Custom");

    }

    else if (true) {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_6D547B1E"), true);

        StatEventAddDataString(StatEventLastCreated(), "CampType", "Other");

    }

    StatEventAddDataFixed(StatEventLastCreated(), "GameTime", libUIUI_gf_HeroesGameTime());

    StatEventSend(StatEventLastCreated());

    auto65C1FEA2_g = UnitGroupSearch(null, lp_owner, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, lv_captureRadiusScoreCredit, libCore_gv_filtersHeroicAllyorPlayerandnotHallucinationorBenign, 0);

    auto65C1FEA2_u = UnitGroupCount(auto65C1FEA2_g, c_unitCountAll);

    for (;; auto65C1FEA2_u -= 1) {

        lv_itUnit = UnitGroupUnitFromEnd(auto65C1FEA2_g, auto65C1FEA2_u);

        if (lv_itUnit == null) { break; }

        PlayerGroupAdd(lv_creditGroup, UnitGetOwner(lv_itUnit));

    }

    auto6F574477_g = UnitGroupSearch("HeroGall", lp_owner, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, lv_captureRadiusScoreCredit, libCore_gv_filtersHeroicjustexcludingMissile, 0);

    auto6F574477_u = UnitGroupCount(auto6F574477_g, c_unitCountAll);

    for (;; auto6F574477_u -= 1) {

        lv_itUnit = UnitGroupUnitFromEnd(auto6F574477_g, auto6F574477_u);

        if (lv_itUnit == null) { break; }

        PlayerGroupAdd(lv_creditGroup, UnitGetOwner(lv_itUnit));

    }

    lv_grantedXP = UnitXPGetCurrentXP(libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagUnit, null);

    lv_grantedXP += libMapM_gv_dataJungleCampDefenderData[(libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampDefenderType)].lv_xPAwardForCapture;

    auto6FC0000D_g = lv_creditGroup;

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(auto6FC0000D_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	libGame_gf_AddtoAwardValue(lv_itPlayer, 1.0, libGame_ge_SecondaryAwards_Headhunter);

        libGame_gv_scoreValues[lv_itPlayer].lv_creepCampsCaptured += 1;

        UnitCreateEffectUnit(libGame_gv_players[lv_itPlayer].lv_heroUnit, "JungleCampCaptureParticipationSet", libGame_gv_players[lv_itPlayer].lv_heroUnit);

        libSond_gf_HeroVOStartCelebrateVOTimerForPlayer(lv_itPlayer, lv_creditGroup);

        libGame_gf_ScoreValuesRecordXPContributionForPlayer(lv_itPlayer, (lv_grantedXP / PlayerGroupCount(lv_creditGroup)), false);

    }

    if ((libCore_gv_dEBUGSoloXPOn == true)) {

        auto7D3C6A92_g = lv_creditGroup;

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(auto7D3C6A92_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	libGame_gf_GrantXPToPlayer(lv_grantedXP, lv_itPlayer, libGame_ge_XPSources_Creep);

            libUIUI_gf_UIFloatingCombatTextH16MidXP(lv_itPlayer, libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCircleOfPowerUnit, libCore_ge_FloatingTextType_XPMedium, FixedToInt(lv_grantedXP));

        }

    }

    else {

        auto92E53E49_g = libGame_gf_PlayersOnTeamHeroes(libGame_gf_TeamNumberOfPlayer(lp_owner), false);

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(auto92E53E49_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	libGame_gf_GrantXPToPlayer(lv_grantedXP, lv_itPlayer, libGame_ge_XPSources_Creep);

            libUIUI_gf_UIFloatingCombatTextH16MidXP(lv_itPlayer, libMapM_gv_jungleCreepCamps[lp_camp].lv_captureCircleOfPowerUnit, libCore_ge_FloatingTextType_XPMedium, FixedToInt(lv_grantedXP));

        }

    }

    UnitXPSetCurrentXP(libMapM_gv_jungleCreepCamps[lp_camp].lv_campOwnershipFlagUnit, null, 0.0);

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_campAwardsRegenGlobe == true)) {

        if ((lp_owner == libCore_gv_cOMPUTER_TeamOrder)) {

            libNtve_gf_CreateUnitsWithDefaultFacing(1, "RegenGlobe", c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_TeamOrder, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, null);

        }

        else {

            libNtve_gf_CreateUnitsWithDefaultFacing(1, "RegenGlobe", c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_TeamChaos, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, null);

        }

    }



    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersBribedCount == libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderNumberofCreeps)) {

        TimerStart(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepRespawnTimer, (libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderRespawnTime / 2.0), false, c_timeGame);

        TimerStart(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepBirthTimer, ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderRespawnTime / 2) - libMapM_gv_bALJungleBirthDelay), false, c_timeGame);

    }

    else {

        TimerStart(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepRespawnTimer, libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderRespawnTime, false, c_timeGame);

        TimerStart(libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCreepBirthTimer, (libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderRespawnTime - libMapM_gv_bALJungleBirthDelay), false, c_timeGame);

    }

    libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersBribedCount = 0;

    libMapM_gf_JungleTransitionCampIntoState(lp_camp, libMapM_ge_JungleCampStates_Dead);

    libMapM_gf_JungleDropLootBannerinMercCamp(lp_camp, lv_creditGroup);

    libGame_gf_SendEventMercCampRewardGranted(lp_owner, lp_camp);

    auto9C82785C_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampType;

    if (auto9C82785C_val == libMapM_ge_JungleCampTypes_MercCamp) {

        libGame_gv_teams[libGame_gf_TeamNumberOfPlayer(lp_owner)].lv_map_MercCampCaptures += 1;

        libMapM_gf_JungleMercCampCapturedAnnouncement(lp_camp, lp_owner);

        libMapM_gf_JungleSpawnMercMinions(lp_camp, lp_owner, lp_hasMercLordTalent);

    }

    else if (auto9C82785C_val == libMapM_ge_JungleCampTypes_DoubloonCamp) {

        libMapM_gf_JungleMercCampCapturedAnnouncement(lp_camp, lp_owner);

        for (auto55464B3F_i = 1; auto55464B3F_i <= auto55464B3F_n; auto55464B3F_i += 1) {

            PlayerCreateEffectPoint(libCore_gv_cOMPUTER_Neutral, "DropCannonballsPersistent", libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint);

        }

    }

    else if (auto9C82785C_val == libMapM_ge_JungleCampTypes_DoubloonSmallCamp) {

        for (autoEFA847D9_i = 1; autoEFA847D9_i <= autoEFA847D9_n; autoEFA847D9_i += 1) {

            PlayerCreateEffectPoint(libCore_gv_cOMPUTER_Neutral, "DropCannonballsPersistent", libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint);

        }

    }

    else if (auto9C82785C_val == libMapM_ge_JungleCampTypes_TryMeCamp) {

    }

    else {

    }

}



void libMapM_gf_JungleMercCampCapturedAnnouncement (int lp_camp, int lp_owner) {

    // Variable Declarations

    int lv_mercType;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    lv_mercType = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMercSpawnType;

    if ((lp_owner == libCore_gv_cOMPUTER_TeamOrder)) {

        MinimapPing(libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, 5.0, Color(0.00, 33.33, 100.00));

        MinimapPing(libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, 5.0, Color(100.00, 0.00, 0.00));

        MinimapPing(libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, 5.0, Color(0.00, 33.33, 100.00));

        SoundtrackPlay(libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, c_soundtrackCategoryMusic, "MX_Stinger_MercCampTaken_Ally", c_soundtrackCueAny, c_soundtrackIndexAny, false);

        SoundtrackPlay(libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, c_soundtrackCategoryMusic, "MX_Stinger_MercCampTaken_Enemy", c_soundtrackCueAny, c_soundtrackIndexAny, false);

        SoundPlayForPlayer(SoundLink("UI_Game_Ping_MercCampCaptured_Ally", -1), lp_owner, libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, 100.0, 0.0);

        SoundPlayForPlayer(SoundLink("UI_Game_Ping_MercCampCaptured_Enemy", -1), lp_owner, libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, 100.0, 0.0);

    }

    else {

        MinimapPing(libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, 5.0, Color(100.00, 0.00, 0.00));

        MinimapPing(libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, 5.0, Color(0.00, 33.33, 100.00));

        MinimapPing(libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint, 5.0, Color(100.00, 0.00, 0.00));

        SoundtrackPlay(libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, c_soundtrackCategoryMusic, "MX_Stinger_MercCampTaken_Enemy", c_soundtrackCueAny, c_soundtrackIndexAny, false);

        SoundtrackPlay(libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, c_soundtrackCategoryMusic, "MX_Stinger_MercCampTaken_Ally", c_soundtrackCueAny, c_soundtrackIndexAny, false);

        SoundPlayForPlayer(SoundLink("UI_Game_Ping_MercCampCaptured_Enemy", -1), lp_owner, libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, 100.0, 0.0);

        SoundPlayForPlayer(SoundLink("UI_Game_Ping_MercCampCaptured_Ally", -1), lp_owner, libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, 100.0, 0.0);

    }

}



void libMapM_gf_JungleSpawnMercMinions (int lp_camp, int lp_owner, bool lp_hasMercLordTalent) {

    // Variable Declarations

    int lv_team;

    point lv_spawnPoint;

    int lv_mercTypeIndex;

    int lv_scalingTicks;

    int lv_i;

    unit lv_minion;

    int lv_waveIndex;

    int lv_lane;

    int lv_waypoint;

    unit lv_spawnHelperUnit;

    bool lv_knightHasAlreadyBeenCreated;

    fixed lv_staggeredBirthi;



    // Automatic Variable Declarations

    int autoB70C7584_ae;

    const int autoB70C7584_ai = 1;

    string auto0937F60E_val;



    // Variable Initialization

    lv_team = libGame_gf_TeamNumberOfPlayer(lp_owner);

    lv_spawnPoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataCampCaptainSpawnPoint;

    lv_mercTypeIndex = (libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMercSpawnType);

    lv_scalingTicks = libMapM_gv_jungleCreepCamps[lp_camp].lv_stateCurrentMercScalingTicks;



    // Implementation

    if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderSuppressActiveLanerCounter == false)) {

        libMapM_gv_jungleNumberOfActiveMercGroups += 1;

    }



    autoB70C7584_ae = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercNumberOfMinionsSpawned;

    lv_i = 1;

    for ( ; ( (autoB70C7584_ai >= 0 && lv_i <= autoB70C7584_ae) || (autoB70C7584_ai < 0 && lv_i >= autoB70C7584_ae) ) ; lv_i += autoB70C7584_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderDefendersCoweronDeath == true)) {

            lv_spawnHelperUnit = UnitGroupRandomUnit(libMapM_gv_jungleCreepCamps[lp_camp].lv_defenderCoweringDeadUnitGroup, c_unitCountAlive);

            if ((UnitIsValid(lv_spawnHelperUnit) == true)) {

                libNtve_gf_SendActorMessageToGameRegion(RegionCircle(UnitGetPosition(lv_spawnHelperUnit), 2.0), "Signal CreepCleanup");

                UnitCreate(1, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[lv_i], c_unitCreateIgnorePlacement, lp_owner, UnitGetPosition(lv_spawnHelperUnit), UnitGetFacing(lv_spawnHelperUnit), null);

                UnitRemove(lv_spawnHelperUnit);

            }

            else {

                UnitCreate(1, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[lv_i], c_unitCreateIgnorePlacement, lp_owner, lv_spawnPoint, PointGetFacing(lv_spawnPoint), null);

            }

        }

        else {

            UnitCreate(1, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[lv_i], c_unitCreateIgnorePlacement, lp_owner, libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataDefenderSpawnPoints[lv_i], PointGetFacing(libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataDefenderSpawnPoints[lv_i]), null);

        }

        lv_minion = UnitLastCreated();

        libGame_gf_SendEventJungleCampLanerCreated(lv_minion);

        libGame_gf_UpdateScalingForUnit(lv_minion, lv_scalingTicks, 0);

        if ((lp_hasMercLordTalent == true)) {

            auto0937F60E_val = UnitGetType(lv_minion);

            if (auto0937F60E_val == "MercLanerSiegeGiant") {

                UnitBehaviorAdd(lv_minion, "TalentMercenaryLordGiantBuff", lv_minion, 1);

            }

            else if (auto0937F60E_val == "MercLanerMeleeKnight") {

                UnitBehaviorAdd(lv_minion, "TalentMercenaryLordKnightBuff", lv_minion, 1);

            }

            else if (auto0937F60E_val == "MercLanerRangedMage") {

                UnitBehaviorAdd(lv_minion, "TalentMercenaryLordKnightBuff", lv_minion, 1);

            }

            else {

            }

        }



        if ((UnitGetType(lv_minion) == "MercLanerRangedMage")) {

            libNtve_gf_SendActorMessageToUnit(lv_minion, "Signal Captured");

        }



        if ((UnitGetType(lv_minion) == libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[1])) {

            libMapM_gf_JungleHibernateMatchingCamps(libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[1]);

        }



        if ((UnitGetType(lv_minion) == "MercLanerMeleeKnight") && (lv_knightHasAlreadyBeenCreated == false)) {

            libNtve_gf_SendActorMessageToUnit(lv_minion, "Signal Captured");

            lv_knightHasAlreadyBeenCreated = true;

        }



        UnitSetCustomValue(lv_minion, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_JungleLanerCreepCampIndex), IntToFixed(lp_camp));

        UnitSetCustomValue(lv_minion, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_MercLanerGroupIndex), IntToFixed(libMapM_gv_jungleNumberOfActiveMercGroups));

        UnitSetCustomValue(lv_minion, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_AIThreatBase), libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionAIThreatValueforAITeamDelegateSystem[lv_i]);

        UnitGroupAdd(libMapM_gv_jungleMiniMapIconGroup[libMapM_gv_jungleNumberOfActiveMercGroups], lv_minion);

        lv_lane = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercLaneToSpawnIn[lv_team];

        libMapM_gv_jungleCreepCamps[lp_camp].lv_mercLaneLastSpawnedIn[lv_team] = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercLaneToSpawnIn[lv_team];

        lv_waypoint = libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnFirstWaypointIndex[lv_team];

        libAIAI_gf_MinionAIStartMinionAI(-1, lv_minion, lv_lane, lv_waypoint, true, false, false, 0, false);

        libAIAI_gf_AITeamDelegateAddRemoveMercLanertoLane(lv_team, lv_lane, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionUnitType[lv_i], libAIAI_ge_AITeamDelegateAddRemoveLaneValue_Add, libMapM_gv_jungleCreepCamps[lp_camp].lv_mercSpawnedMinionAIThreatValueforAITeamDelegateSystem[lv_i]);

    }

    libMapM_gf_JungleSetMiniMapIconForMercMinions(lp_camp, libMapM_gv_jungleNumberOfActiveMercGroups, libMapM_gf_JungleGetPortraitForJungleCamp(lp_camp), libMapM_gv_jungleMiniMapIconGroup[libMapM_gv_jungleNumberOfActiveMercGroups]);

    libMapM_gf_JungleCreateMercPath(libMapM_gv_jungleMiniMapLeader[libMapM_gv_jungleNumberOfActiveMercGroups], true);

}



int libMapM_gf_JungleGetMercCampForUnit (unit lp_unit) {

    // Automatic Variable Declarations

    // Implementation

    return FixedToInt(UnitGetCustomValue(lp_unit, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_JungleLanerCreepCampIndex)));

}



int libMapM_gf_JungleGetMercLanerGroupForUnit (unit lp_unit) {

    // Variable Declarations

    int lv_i;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    return FixedToInt(UnitGetCustomValue(lp_unit, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_MercLanerGroupIndex)));

}



trigger auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_Trigger = null;

int auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_camp;

int auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercGroupIndex;

string auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercUnitMiniMapModel;

unitgroup auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercUnitGroup;



void libMapM_gf_JungleSetMiniMapIconForMercMinions (int lp_camp, int lp_mercGroupIndex, string lp_mercUnitMiniMapModel, unitgroup lp_mercUnitGroup) {

    auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_camp = lp_camp;

    auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercGroupIndex = lp_mercGroupIndex;

    auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercUnitMiniMapModel = lp_mercUnitMiniMapModel;

    auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercUnitGroup = lp_mercUnitGroup;



    if (auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_Trigger == null) {

        auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_Trigger = TriggerCreate("auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_Trigger, false, false);

}



bool auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_TriggerFunc (bool testConds, bool runActions) {

    int lp_camp = auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_camp;

    int lp_mercGroupIndex = auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercGroupIndex;

    string lp_mercUnitMiniMapModel = auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercUnitMiniMapModel;

    unitgroup lp_mercUnitGroup = auto_libMapM_gf_JungleSetMiniMapIconForMercMinions_lp_mercUnitGroup;



    // Variable Declarations

    string lv_image;

    bool lv_newLeaderFound;

    unit lv_minimapUnit;



    // Automatic Variable Declarations

    unitgroup auto26E1C0A8_g;

    int auto26E1C0A8_u;

    unit auto26E1C0A8_var;

    int auto34E8BF10_val;



    // Variable Initialization



    // Implementation

    auto26E1C0A8_g = lp_mercUnitGroup;

    auto26E1C0A8_u = UnitGroupCount(auto26E1C0A8_g, c_unitCountAll);

    for (;; auto26E1C0A8_u -= 1) {

        auto26E1C0A8_var = UnitGroupUnitFromEnd(auto26E1C0A8_g, auto26E1C0A8_u);

        if (auto26E1C0A8_var == null) { break; }

        lv_minimapUnit = auto26E1C0A8_var;

        if ((lv_newLeaderFound == false)) {

            lv_newLeaderFound = true;

            libMapM_gv_jungleMiniMapLeader[lp_mercGroupIndex] = auto26E1C0A8_var;

            UnitBehaviorAdd(auto26E1C0A8_var, "MinionDeathMonitor", auto26E1C0A8_var, 1);

            auto34E8BF10_val = libMapM_gv_jungleCreepCamps[lp_camp].lv_mapDataMercSpawnType;

            if (auto34E8BF10_val == libMapM_ge_JungleCampMercTypes_SiegeGiants) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_mercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_8E3779D5"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampMercTypes_SiegeCamp1) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_mercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_7FB3A831"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampMercTypes_SiegeCamp2) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_mercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_F4E1C8D1"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_SiegeCamp3) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_mercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_CB9A9D3E"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_Knights) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_elitemercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_49D61AB4"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_BruiserCamp1) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_elitemercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_B9FDC66D"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_BruiserCamp2) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_elitemercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_5B2FAFC8"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_BruiserCamp3) {

                libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\storm_ui_minimapicon_elitemercenary.dds");

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_CD9E7E1E"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_GraveGolem) {

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_D62042C6"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_BossCamp1) {

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_D029BC7F"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_BossCamp2) {

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_8D474A01"));

            }

            else if (auto34E8BF10_val == libMapM_ge_JungleCampDefenderTypes_BossCamp3) {

                ActorSendAsText(libNtve_gf_MainActorofUnit(lv_minimapUnit), TextExpressionAssemble("Param/Expression/lib_MapM_35E9B245"));

            }

            else {

            }

        }

        else {

            libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIcon Assets\\Textures\\blank.dds");

            libNtve_gf_SendActorMessageToUnit(lv_minimapUnit, "MinimapIconBackground Assets\\Textures\\blank.dds");

        }

    }

    return true;

}



void libMapM_gf_JungleCreateMercPath (unit lp_mercLeader, bool lp_newPath) {

    // Variable Declarations

    int lv_mercLanerGroup;

    int lv_waveIndex;

    int lv_currentLane;

    int lv_itWaypoint;

    const fixed lv_pingDuration = 0.75;



    // Automatic Variable Declarations

    int autoB97B7772_val;



    // Variable Initialization

    lv_mercLanerGroup = libMapM_gf_JungleGetMercLanerGroupForUnit(lp_mercLeader);



    // Implementation

    if ((UnitIsAlive(lp_mercLeader) == false)) {

        return ;

    }



    lv_waveIndex = FixedToInt(UnitGetCustomValue(lp_mercLeader, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_MinionIndex)));

    lv_currentLane = libAIAI_gf_MinionAIGetLaneForMinion(lp_mercLeader);

    lv_itWaypoint = libAIAI_gf_MinionAIGetNextWaypointIndexForMinion(lp_mercLeader);

    if ((lp_newPath == false)) {

        if ((libMapM_gv_jungleMiniMapPathCurrentIndex[lv_mercLanerGroup] < libMapM_gv_jungleMiniMapPathIndexMaximum[lv_mercLanerGroup])) {

            PathSetWayPointIndexStart(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libMapM_gv_jungleMiniMapPathCurrentIndex[lv_mercLanerGroup]);

        }

        else if ((libMapM_gv_jungleMiniMapPathCurrentIndex[lv_mercLanerGroup] >= libMapM_gv_jungleMiniMapPathIndexMaximum[lv_mercLanerGroup])) {

            PathDestroy(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup]);

            PathCreateForUnit(PlayerGroupAll(), lp_mercLeader);

            libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup] = PathLastCreated();

            PathSetVisible(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], c_pathLocationWorld, false);

            PathSetOwnerPlayerId(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], UnitGetOwner(lp_mercLeader));

            PathSetDestinationUnit(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libGame_gv_teams[libAIAI_gf_MinionAIGetTeamToAttackForMinion(lp_mercLeader)].lv_core);

        }

        return ;

    }

    else {

        if ((libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup] != 0)) {

            PathClearWayPoints(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup]);

            PathDestroy(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup]);

        }



        libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup] = 0;

        libMapM_gv_jungleMiniMapPathCurrentIndex[lv_mercLanerGroup] = 1;

        libMapM_gv_jungleMiniMapPathIndexMaximum[lv_mercLanerGroup] = 1;

    }

    PathCreateForUnit(PlayerGroupAll(), lp_mercLeader);

    PathSetLineTexture(PathLastCreated(), c_pathLocationMinimap, "Assets\\Textures\\storm_waypointline.dds");

    libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup] = PathLastCreated();

    PathSetVisible(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], c_pathLocationWorld, false);

    autoB97B7772_val = libAIAI_gf_MinionAIGetTeamToAttackForMinion(lp_mercLeader);

    if (autoB97B7772_val == libGame_gv_teamChaosIndex_C) {

        PathSetOwnerPlayerId(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libCore_gv_cOMPUTER_TeamOrder);

        PathSetDestinationUnit(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_core);

        while ((lv_itWaypoint < (libGame_gv_laneData[lv_currentLane].lv_waypointCount - 1))) {

            PathAddWayPoint(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint]);

            libMapM_gv_jungleMiniMapPathIndexMaximum[lv_mercLanerGroup] += 1;

            if ((lp_newPath == true)) {

                libNtve_gf_CreatePingFacingAngleWithType(libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, "StormPingArrow", libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], ColorWithAlpha(0.00, 0.00, 100.00, 0.00), lv_pingDuration, AngleBetweenPoints(libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], libGame_gv_laneData[lv_currentLane].lv_waypoints[(lv_itWaypoint + 1)]), -1, -1);

                PingSetScale(PingLastCreated(), 0.3);

                libNtve_gf_CreatePingFacingAngleWithType(libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, "StormPingArrow", libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], ColorWithAlpha(100.00, 0.00, 0.00, 0.00), lv_pingDuration, AngleBetweenPoints(libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], libGame_gv_laneData[lv_currentLane].lv_waypoints[(lv_itWaypoint + 1)]), -1, -1);

                PingSetScale(PingLastCreated(), 0.3);

                libNtve_gf_CreatePingFacingAngleWithType(libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], "StormPingArrow", libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], ColorWithAlpha(0.00, 0.00, 100.00, 0.00), lv_pingDuration, AngleBetweenPoints(libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], libGame_gv_laneData[lv_currentLane].lv_waypoints[(lv_itWaypoint + 1)]), -1, -1);

                PingSetScale(PingLastCreated(), 0.3);

            }



            lv_itWaypoint += 1;

        }

    }

    else if (autoB97B7772_val == libGame_gv_teamOrderIndex_C) {

        PathSetOwnerPlayerId(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libCore_gv_cOMPUTER_TeamChaos);

        PathSetDestinationUnit(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_core);

        while ((lv_itWaypoint > 1)) {

            PathAddWayPoint(libMapM_gv_jungleMiniMapPath[lv_mercLanerGroup], libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint]);

            libMapM_gv_jungleMiniMapPathIndexMaximum[lv_mercLanerGroup] += 1;

            if ((lp_newPath == true)) {

                libNtve_gf_CreatePingFacingAngleWithType(libGame_gv_teams[libGame_gv_teamOrderIndex_C].lv_teamPlayerGroup, "StormPingArrow", libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], ColorWithAlpha(100.00, 0.00, 0.00, 0.00), lv_pingDuration, AngleBetweenPoints(libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], libGame_gv_laneData[lv_currentLane].lv_waypoints[(lv_itWaypoint - 1)]), -1, -1);

                PingSetScale(PingLastCreated(), 0.3);

                libNtve_gf_CreatePingFacingAngleWithType(libGame_gv_teams[libGame_gv_teamChaosIndex_C].lv_teamPlayerGroup, "StormPingArrow", libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], ColorWithAlpha(0.00, 0.00, 100.00, 0.00), lv_pingDuration, AngleBetweenPoints(libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], libGame_gv_laneData[lv_currentLane].lv_waypoints[(lv_itWaypoint - 1)]), -1, -1);

                PingSetScale(PingLastCreated(), 0.3);

                libNtve_gf_CreatePingFacingAngleWithType(libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], "StormPingArrow", libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], ColorWithAlpha(100.00, 0.00, 0.00, 0.00), lv_pingDuration, AngleBetweenPoints(libGame_gv_laneData[lv_currentLane].lv_waypoints[lv_itWaypoint], libGame_gv_laneData[lv_currentLane].lv_waypoints[(lv_itWaypoint - 1)]), -1, -1);

                PingSetScale(PingLastCreated(), 0.3);

            }



            lv_itWaypoint -= 1;

        }

    }

    else {

    }

}



void libMapM_gf_JungleDropLootBannerinMercCamp (int lp_campIndex, playergroup lp_creditPlayerGroup) {

    // Variable Declarations

    unit lv_sconceUnit;

    int lv_randomPlayerInCreditGroup;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_sconceUnit = libMapM_gv_jungleCreepCamps[lp_campIndex].lv_campOwnershipFlagUnit;



    // Implementation

    if ((PlayerGroupCount(lp_creditPlayerGroup) > 0)) {

        lv_randomPlayerInCreditGroup = PlayerGroupPlayer(lp_creditPlayerGroup, RandomInt(1, PlayerGroupCount(lp_creditPlayerGroup)));

        libMapM_gv_jungleCreepCamps[lp_campIndex].lv_capturingPlayer = lv_randomPlayerInCreditGroup;

        libGame_gf_DropLootBannerinSconce(lv_sconceUnit, libGame_gv_players[lv_randomPlayerInCreditGroup].lv_lootContent.lv_loot_Banner.lv_bannerID, lv_randomPlayerInCreditGroup, false);

    }



}



void libMapM_gf_JungleUpdateMercDamageTracker (int lp_camp, fixed lp_damageDealt) {

    // Automatic Variable Declarations

    // Implementation

    libMapM_gv_jungleCreepCamps[lp_camp].lv_statTrackingDamageDoneByLastCapture += lp_damageDealt;

}



void libMapM_gf_MapMechanicAdd (string lp_mechanic, trigger lp_initializeCallback) {

    // Automatic Variable Declarations

    // Implementation

    if ((GameTestConfigType() == 1)) {

        return ;

    }



    if ((libMapM_gv_mapMechanicControllerActor == null)) {

        libNtve_gf_CreateActorAtPoint("MMController", RegionGetCenter(RegionEntireMap()));

        libMapM_gv_mapMechanicControllerActor = libNtve_gf_ActorLastCreated();

    }



    if ((libMapM_gf_MapMechanicExistsOnMap(lp_mechanic) == true)) {

        return ;

    }



    libMapM_gv_mapMechanicsCount += 1;

    libMapM_gv_mapMechanics[libMapM_gv_mapMechanicsCount] = lp_mechanic;

    libMapM_gv_mapMechanicsInitCallbacks[libMapM_gv_mapMechanicsCount] = lp_initializeCallback;

    libGame_gf_SendEventMapMechanicInitialization(lp_mechanic);

}



int libMapM_gf_MapMechanicIndex (string lp_mechanic) {

    // Variable Declarations

    int lv_itMechanic;



    // Automatic Variable Declarations

    int auto332ED446_ae;

    const int auto332ED446_ai = 1;



    // Variable Initialization



    // Implementation

    auto332ED446_ae = libMapM_gv_mapMechanicsCount;

    lv_itMechanic = 1;

    for ( ; ( (auto332ED446_ai >= 0 && lv_itMechanic <= auto332ED446_ae) || (auto332ED446_ai < 0 && lv_itMechanic >= auto332ED446_ae) ) ; lv_itMechanic += auto332ED446_ai ) {

        if ((libMapM_gv_mapMechanics[lv_itMechanic] == lp_mechanic)) {

            return lv_itMechanic;

        }



    }

    return 0;

}



bool libMapM_gf_MapMechanicExistsOnMap (string lp_mechanic) {

    // Automatic Variable Declarations

    // Implementation

    return (libMapM_gf_MapMechanicIndex(lp_mechanic) > 0);

}



string libMapM_gf_PrimaryMapMechanic () {

    // Automatic Variable Declarations

    // Implementation

    return libMapM_gv_mapMechanics[1];

}



trigger auto_libMapM_gf_PlayMapMechanicIntroForPlayer_Trigger = null;

int auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_player;

string auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_cutscene;

string auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_filter;



void libMapM_gf_PlayMapMechanicIntroForPlayer (int lp_player, string lp_cutscene, string lp_filter) {

    auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_player = lp_player;

    auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_cutscene = lp_cutscene;

    auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_filter = lp_filter;



    if (auto_libMapM_gf_PlayMapMechanicIntroForPlayer_Trigger == null) {

        auto_libMapM_gf_PlayMapMechanicIntroForPlayer_Trigger = TriggerCreate("auto_libMapM_gf_PlayMapMechanicIntroForPlayer_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_PlayMapMechanicIntroForPlayer_Trigger, false, false);

}



bool auto_libMapM_gf_PlayMapMechanicIntroForPlayer_TriggerFunc (bool testConds, bool runActions) {

    int lp_player = auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_player;

    string lp_cutscene = auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_cutscene;

    string lp_filter = auto_libMapM_gf_PlayMapMechanicIntroForPlayer_lp_filter;



    // Variable Declarations

    fixed lv_fadeDuration;

    int lv_itPlayer;



    // Automatic Variable Declarations

    playergroup autoA1C853BF_g;

    playergroup auto341C65FA_g;



    // Variable Initialization



    // Implementation

    TriggerEnable(libMapM_gt_MMIntroCutsceneStart, true);

    TriggerEnable(libMapM_gt_MMIntroCutsceneEnd, true);

    libGame_gv_players[lp_player].lv_heroSpawnReady = true;

    libMapM_gv_mMIntroCutsceneFinished[lp_player] = false;

    libNtve_gf_CinematicMode(true, libCore_gv_playerGroupFromPlayer[lp_player], c_transitionDurationImmediate);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryReady, true);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryBuild, true);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryVoice, true);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryAlert, true);

    CutsceneFade(false, 0.0, Color(0,0,0), 0.0, libCore_gv_playerGroupFromPlayer[lp_player], true);

    libStEx_gf_TurnCinematicCameraOnOff(lp_player, true);

    autoA1C853BF_g = PlayerGroupAll();

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(autoA1C853BF_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	if ((lv_itPlayer != lp_player) && (libNtve_gf_PlayerIsEnemy(lp_player, lv_itPlayer, libNtve_ge_PlayerRelation_Ally) == true)) {

            PlayerSetAlliance(lp_player, c_allianceIdVision, lv_itPlayer, false);

        }



    }

    VisRevealerCreate(lp_player, RegionEntireMap());

    CutsceneCreateNoPosition(lp_cutscene, libCore_gv_playerGroupFromPlayer[lp_player], false);

    libMapM_gv_mMIntroCutscene[lp_player] = CutsceneLastCreated();

    if ((StringLength(lp_filter) > 0)) {

        CutsceneAddFilter(CutsceneLastCreated(), lp_filter);

    }



    CutscenePlay(libMapM_gv_mMIntroCutscene[lp_player]);

    libMapM_gv_mMIntroCutscenePlayer = lp_player;

    TriggerExecute(libMapM_gt_MMIntroSkippable, true, true);

    if ((libMapM_gv_mMIntroCutsceneCompleted[lp_player] == false)) {

        lv_fadeDuration = 0.75;

        CutsceneFade(false, lv_fadeDuration, Color(0,0,0), 0.0, libCore_gv_playerGroupFromPlayer[lp_player], false);

        libStEx_gf_CinematicFade(false, lv_fadeDuration, Color(0.00, 0.00, 0.00), lp_player);

        Wait(lv_fadeDuration, c_timeGame);

    }



    CutsceneStop(libMapM_gv_mMIntroCutscene[lp_player]);

    VisRevealerEnable(VisRevealerLastCreated(), false);

    VisRevealerDestroy(VisRevealerLastCreated());

    libMapM_gv_mMIntroCutsceneFinished[lp_player] = true;

    libGame_gf_AnnouncementClearQueueForPlayer(lp_player);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryReady, false);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryBuild, false);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryVoice, false);

    SoundChannelMute(libCore_gv_playerGroupFromPlayer[lp_player], c_soundCategoryAlert, false);

    auto341C65FA_g = PlayerGroupAll();

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(auto341C65FA_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	if ((lv_itPlayer != lp_player) && (libNtve_gf_PlayerIsEnemy(lp_player, lv_itPlayer, libNtve_ge_PlayerRelation_Ally) == true)) {

            PlayerSetAlliance(lp_player, c_allianceIdVision, lv_itPlayer, true);

        }



    }

    libStEx_gf_CinematicModeTutorial(false, libCore_gv_playerGroupFromPlayer[lp_player], 1.0);

    libStEx_gf_TurnCinematicCameraOnOff(lp_player, false);

    libUIUI_gf_UIGameUIShowHideConsolePanelForPlayer(false, lp_player);

    lv_fadeDuration = 1.5;

    if ((libNtve_gf_UnitGroupIsDead(libGame_gv_players[lp_player].lv_heroUnitGroup) == true)) {

        CutsceneFade(true, lv_fadeDuration, Color(0,0,0), 0.0, libCore_gv_playerGroupFromPlayer[lp_player], false);

        libStEx_gf_CinematicFade(true, lv_fadeDuration, Color(0.00, 0.00, 0.00), lp_player);

        Wait(lv_fadeDuration, c_timeGame);

    }

    else {

        UISetMode(libCore_gv_playerGroupFromPlayer[lp_player], c_uiModeConsole, lv_fadeDuration);

        CutsceneFade(true, lv_fadeDuration, Color(0,0,0), 0.0, libCore_gv_playerGroupFromPlayer[lp_player], false);

        libStEx_gf_CinematicFade(true, lv_fadeDuration, Color(0.00, 0.00, 0.00), lp_player);

        Wait(0.5, c_timeGame);

        UnitGroupSelect(libGame_gv_players[lp_player].lv_heroUnitGroup, lp_player, true);

        UISetMode(libCore_gv_playerGroupFromPlayer[lp_player], c_uiModeConsole, c_transitionDurationImmediate);

        libUIUI_gf_UIPartyFrameShowHidePartyFramePanelForPlayer(true, lp_player);

        libUIUI_gf_UIGameUIShowHideConsolePanelForPlayer(true, lp_player);

        Wait((lv_fadeDuration - 0.5), c_timeGame);

    }

    libGame_gv_players[lp_player].lv_heroSpawnReady = true;

    return true;

}



bool libMapM_gf_MapMechanicIntroFinished (int lp_player) {

    // Automatic Variable Declarations

    // Implementation

    return libMapM_gv_mMIntroCutsceneFinished[lp_player];

}



trigger auto_libMapM_gf_MapMechanicDisplayAnnouncement_Trigger = null;

text auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_announcement;

bool auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_writeOut;

fixed auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_writeOutDuration;

fixed auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_duration;

int auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_allyOption;

playergroup auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_players;



void libMapM_gf_MapMechanicDisplayAnnouncement (text lp_announcement, bool lp_writeOut, fixed lp_writeOutDuration, fixed lp_duration, int lp_allyOption, playergroup lp_players) {

    auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_announcement = lp_announcement;

    auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_writeOut = lp_writeOut;

    auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_writeOutDuration = lp_writeOutDuration;

    auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_duration = lp_duration;

    auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_allyOption = lp_allyOption;

    auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_players = lp_players;



    if (auto_libMapM_gf_MapMechanicDisplayAnnouncement_Trigger == null) {

        auto_libMapM_gf_MapMechanicDisplayAnnouncement_Trigger = TriggerCreate("auto_libMapM_gf_MapMechanicDisplayAnnouncement_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MapMechanicDisplayAnnouncement_Trigger, false, false);

}



bool auto_libMapM_gf_MapMechanicDisplayAnnouncement_TriggerFunc (bool testConds, bool runActions) {

    text lp_announcement = auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_announcement;

    bool lp_writeOut = auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_writeOut;

    fixed lp_writeOutDuration = auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_writeOutDuration;

    fixed lp_duration = auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_duration;

    int lp_allyOption = auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_allyOption;

    playergroup lp_players = auto_libMapM_gf_MapMechanicDisplayAnnouncement_lp_players;



    // Variable Declarations

    text lv_msg;

    int lv_dlg;



    // Automatic Variable Declarations

    int auto2C408549_val;



    // Variable Initialization

    lv_dlg = c_invalidDialogId;



    // Implementation

    if ((libMapM_gv_mMAnnouncementDialog != c_invalidDialogId)) {

        DialogDestroy(libMapM_gv_mMAnnouncementDialog);

    }



    DialogCreate(1000, 200, c_anchorTop, 0, 175, false);

    libMapM_gv_mMAnnouncementDialog = DialogLastCreated();

    lv_dlg = DialogLastCreated();

    DialogSetImageVisible(DialogLastCreated(), false);

    DialogSetVisible(DialogLastCreated(), lp_players, true);

    auto2C408549_val = lp_allyOption;

    if (auto2C408549_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Neutral) {

        lv_msg = (StringExternal("Param/Value/lib_MapM_4015ADE0") + lp_announcement + StringExternal("Param/Value/lib_MapM_56C0DA48"));

    }

    else if (auto2C408549_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Ally) {

        lv_msg = (StringExternal("Param/Value/lib_MapM_66ADAE20") + lp_announcement + StringExternal("Param/Value/lib_MapM_41E4D92B"));

    }

    else if (auto2C408549_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Enemy) {

        lv_msg = (StringExternal("Param/Value/lib_MapM_C0DA83FE") + lp_announcement + StringExternal("Param/Value/lib_MapM_FE1E01CF"));

    }

    else {

    }

    SoundPlay(SoundLink("UI_CampaignHintNotify", -1), lp_players, 100.0, 0.0);

    libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 200, 50, c_anchorCenter, 0, 0, lv_msg, ColorWithAlpha(0,0,0,0), lp_writeOut, lp_writeOutDuration);

    DialogControlSetFullDialog(DialogControlLastCreated(), lp_players, true);

    libNtve_gf_SetDialogItemStyle(DialogControlLastCreated(), "Storm_Map_Announcement", lp_players);

    Wait(lp_duration, c_timeGame);

    if ((libMapM_gv_mMAnnouncementDialog != lv_dlg)) {

        return true;

    }



    DialogControlFadeTransparency(DialogControlLastCreated(), lp_players, 2.0, 100.0);

    Wait(2.0, c_timeGame);

    if ((libMapM_gv_mMAnnouncementDialog != lv_dlg)) {

        return true;

    }



    DialogDestroy(DialogLastCreated());

    libMapM_gv_mMAnnouncementDialog = c_invalidDialogId;

    return true;

}



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) {

    // Variable Declarations

    text lv_msg;

    int lv_dlg;



    // Automatic Variable Declarations

    int auto96FC6928_val;



    // Variable Initialization

    lv_dlg = c_invalidDialogId;



    // Implementation

    DialogCreate(1000, 200, c_anchorTop, 0, 175, false);

    lv_dlg = DialogLastCreated();

    DialogSetImageVisible(DialogLastCreated(), false);

    DialogSetVisible(DialogLastCreated(), lp_players, true);

    auto96FC6928_val = lp_allyOption;

    if (auto96FC6928_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Neutral) {

        TextExpressionSetToken("Param/Expression/lib_MapM_3C60D2C9", "A", lp_announcement);

        lv_msg = TextExpressionAssemble("Param/Expression/lib_MapM_3C60D2C9");

    }

    else if (auto96FC6928_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Ally) {

        TextExpressionSetToken("Param/Expression/lib_MapM_34434C06", "A", lp_announcement);

        lv_msg = TextExpressionAssemble("Param/Expression/lib_MapM_34434C06");

    }

    else if (auto96FC6928_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Enemy) {

        TextExpressionSetToken("Param/Expression/lib_MapM_BEB89D60", "A", lp_announcement);

        lv_msg = TextExpressionAssemble("Param/Expression/lib_MapM_BEB89D60");

    }

    else {

    }

    SoundPlay(SoundLink("UI_CampaignHintNotify", -1), lp_players, 100.0, 0.0);

    TextExpressionSetToken("Param/Expression/lib_MapM_3319AAA3", "A", lp_announcement);

    libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 200, 50, c_anchorCenter, 0, 0, TextExpressionAssemble("Param/Expression/lib_MapM_3319AAA3"), ColorWithAlpha(0,0,0,0), lp_writeOut, lp_writeOutDuration);

    DialogControlSetFullDialog(DialogControlLastCreated(), lp_players, true);

    libNtve_gf_SetDialogItemStyle(DialogControlLastCreated(), "Storm_Map_Announcement", lp_players);

    libMapM_gf_MMAnnouncementClearnup(lv_dlg, DialogControlLastCreated(), lp_duration, lp_players);

}



trigger auto_libMapM_gf_MMAnnouncementClearnup_Trigger = null;

int auto_libMapM_gf_MMAnnouncementClearnup_lp_dlg;

int auto_libMapM_gf_MMAnnouncementClearnup_lp_label;

fixed auto_libMapM_gf_MMAnnouncementClearnup_lp_duration;

playergroup auto_libMapM_gf_MMAnnouncementClearnup_lp_players;



void libMapM_gf_MMAnnouncementClearnup (int lp_dlg, int lp_label, fixed lp_duration, playergroup lp_players) {

    auto_libMapM_gf_MMAnnouncementClearnup_lp_dlg = lp_dlg;

    auto_libMapM_gf_MMAnnouncementClearnup_lp_label = lp_label;

    auto_libMapM_gf_MMAnnouncementClearnup_lp_duration = lp_duration;

    auto_libMapM_gf_MMAnnouncementClearnup_lp_players = lp_players;



    if (auto_libMapM_gf_MMAnnouncementClearnup_Trigger == null) {

        auto_libMapM_gf_MMAnnouncementClearnup_Trigger = TriggerCreate("auto_libMapM_gf_MMAnnouncementClearnup_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMAnnouncementClearnup_Trigger, false, false);

}



bool auto_libMapM_gf_MMAnnouncementClearnup_TriggerFunc (bool testConds, bool runActions) {

    int lp_dlg = auto_libMapM_gf_MMAnnouncementClearnup_lp_dlg;

    int lp_label = auto_libMapM_gf_MMAnnouncementClearnup_lp_label;

    fixed lp_duration = auto_libMapM_gf_MMAnnouncementClearnup_lp_duration;

    playergroup lp_players = auto_libMapM_gf_MMAnnouncementClearnup_lp_players;



    // Automatic Variable Declarations

    // Implementation

    Wait(lp_duration, c_timeGame);

    DialogControlFadeTransparency(lp_label, lp_players, 2.0, 100.0);

    Wait(2.0, c_timeGame);

    DialogDestroy(lp_dlg);

    return true;

}



trigger auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_Trigger = null;

text auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_announcement;

bool auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_writeOut;

fixed auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_writeOutDuration;

fixed auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_duration;

int auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_allyOption;

playergroup auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_players;



void libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed (text lp_announcement, bool lp_writeOut, fixed lp_writeOutDuration, fixed lp_duration, int lp_allyOption, playergroup lp_players) {

    auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_announcement = lp_announcement;

    auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_writeOut = lp_writeOut;

    auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_writeOutDuration = lp_writeOutDuration;

    auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_duration = lp_duration;

    auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_allyOption = lp_allyOption;

    auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_players = lp_players;



    if (auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_Trigger == null) {

        auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_Trigger = TriggerCreate("auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_Trigger, false, false);

}



bool auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_TriggerFunc (bool testConds, bool runActions) {

    text lp_announcement = auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_announcement;

    bool lp_writeOut = auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_writeOut;

    fixed lp_writeOutDuration = auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_writeOutDuration;

    fixed lp_duration = auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_duration;

    int lp_allyOption = auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_allyOption;

    playergroup lp_players = auto_libMapM_gf_MapMechanicDisplayAnnouncementMultipleAllowed_lp_players;



    // Variable Declarations

    int lv_itPlayer;



    // Automatic Variable Declarations

    playergroup autoD023F6D3_g;



    // Variable Initialization



    // Implementation

    autoD023F6D3_g = lp_players;

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(autoD023F6D3_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	libMapM_gf_MMAnnouncementMultiplePerPlayer(lv_itPlayer, lp_announcement, lp_writeOut, lp_writeOutDuration, lp_duration, lp_allyOption);

    }

    return true;

}



trigger auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_Trigger = null;

int auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_player;

text auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_announcement;

bool auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_writeOut;

fixed auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_writeOutDuration;

fixed auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_duration;

int auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_allyOption;



void libMapM_gf_MMAnnouncementMultiplePerPlayer (int lp_player, text lp_announcement, bool lp_writeOut, fixed lp_writeOutDuration, fixed lp_duration, int lp_allyOption) {

    auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_player = lp_player;

    auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_announcement = lp_announcement;

    auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_writeOut = lp_writeOut;

    auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_writeOutDuration = lp_writeOutDuration;

    auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_duration = lp_duration;

    auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_allyOption = lp_allyOption;



    if (auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_Trigger == null) {

        auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_Trigger = TriggerCreate("auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_Trigger, false, false);

}



bool auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_TriggerFunc (bool testConds, bool runActions) {

    int lp_player = auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_player;

    text lp_announcement = auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_announcement;

    bool lp_writeOut = auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_writeOut;

    fixed lp_writeOutDuration = auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_writeOutDuration;

    fixed lp_duration = auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_duration;

    int lp_allyOption = auto_libMapM_gf_MMAnnouncementMultiplePerPlayer_lp_allyOption;



    // Variable Declarations

    string lv_style;



    // Automatic Variable Declarations

    int auto02A880C7_val;



    // Variable Initialization



    // Implementation

    SoundPlay(SoundLink("UI_CampaignHintNotify", -1), libCore_gv_playerGroupFromPlayer[lp_player], 100.0, 0.0);

    if ((libMapM_gv_mMAnnouncementDialogsMultiple[lp_player] != c_invalidDialogId)) {

        DialogDestroy(libMapM_gv_mMAnnouncementDialogsMultiple[lp_player]);

    }



    DialogCreate(1000, 200, c_anchorTop, 0, 175, false);

    libMapM_gv_mMAnnouncementDialogsMultiple[lp_player] = DialogLastCreated();

    DialogSetImageVisible(DialogLastCreated(), false);

    DialogSetVisible(DialogLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], true);

    auto02A880C7_val = lp_allyOption;

    if (auto02A880C7_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Neutral) {

        lv_style = "Storm_Map_Announcement";

    }

    else if (auto02A880C7_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Ally) {

        lv_style = "Storm_Map_AnnouncementAlly";

    }

    else if (auto02A880C7_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_Enemy) {

        lv_style = "Storm_Map_AnnouncementEnemy";

    }

    else if (auto02A880C7_val == libMapM_ge_MapMechanicAnnouncementAllyOptions_AllySmall) {

        lv_style = "Storm_Map_AnnouncementAlly_Small";

    }

    else {

        lv_style = "Storm_Map_Announcement";

    }

    libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 200, 50, c_anchorCenter, 0, 0, lp_announcement, ColorWithAlpha(0,0,0,0), lp_writeOut, lp_writeOutDuration);

    DialogControlSetFullDialog(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], true);

    libNtve_gf_SetDialogItemStyle(DialogControlLastCreated(), lv_style, libCore_gv_playerGroupFromPlayer[lp_player]);

    libMapM_gf_MMAnnouncementClearnup(DialogLastCreated(), DialogControlLastCreated(), lp_duration, libCore_gv_playerGroupFromPlayer[lp_player]);

    return true;

}



void libMapM_gf_MapMechanicRunConversation (string lp_convoOrder, string lp_convoChaos, string lp_convoObserver) {

    // Variable Declarations

    int lv_itIndex;



    // Automatic Variable Declarations

    int autoC1B27D67_ae;

    const int autoC1B27D67_ai = 1;



    // Variable Initialization



    // Implementation

    while (!((libMapM_gv_mMRunConversationDoneCount == 0))) {

        Wait(0.0625, c_timeGame);

    }

    libMapM_gf_MMRunConversationIndividual(lp_convoOrder, libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false));

    libMapM_gf_MMRunConversationIndividual(lp_convoChaos, libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false));

    libMapM_gf_MMRunConversationIndividual(lp_convoObserver, libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer]);

    while (true) {

        Wait(0.125, c_timeGame);

        autoC1B27D67_ae = libMapM_gv_mMRunConversationDoneCount;

        lv_itIndex = 1;

        for ( ; ( (autoC1B27D67_ai >= 0 && lv_itIndex <= autoC1B27D67_ae) || (autoC1B27D67_ai < 0 && lv_itIndex >= autoC1B27D67_ae) ) ; lv_itIndex += autoC1B27D67_ai ) {

            if ((libMapM_gv_mMRunConversationDone[lv_itIndex] == false)) {

                continue;

            }



        }

        libMapM_gv_mMRunConversationDoneCount = 0;

        return ;

    }

}



trigger auto_libMapM_gf_MMRunConversationIndividual_Trigger = null;

string auto_libMapM_gf_MMRunConversationIndividual_lp_convo;

playergroup auto_libMapM_gf_MMRunConversationIndividual_lp_players;



void libMapM_gf_MMRunConversationIndividual (string lp_convo, playergroup lp_players) {

    auto_libMapM_gf_MMRunConversationIndividual_lp_convo = lp_convo;

    auto_libMapM_gf_MMRunConversationIndividual_lp_players = lp_players;



    if (auto_libMapM_gf_MMRunConversationIndividual_Trigger == null) {

        auto_libMapM_gf_MMRunConversationIndividual_Trigger = TriggerCreate("auto_libMapM_gf_MMRunConversationIndividual_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRunConversationIndividual_Trigger, false, false);

}



bool auto_libMapM_gf_MMRunConversationIndividual_TriggerFunc (bool testConds, bool runActions) {

    string lp_convo = auto_libMapM_gf_MMRunConversationIndividual_lp_convo;

    playergroup lp_players = auto_libMapM_gf_MMRunConversationIndividual_lp_players;



    // Automatic Variable Declarations

    // Implementation

    libMapM_gv_mMRunConversationDoneCount += 1;

    libMapM_gv_mMRunConversationDone[libMapM_gv_mMRunConversationDoneCount] = false;

    ConversationDataRun(lp_convo, lp_players, c_conversationSkipNone, true);

    libMapM_gv_mMRunConversationDone[libMapM_gv_mMRunConversationDoneCount] = true;

    return true;

}



trigger auto_libMapM_gf_MapSetRepulseRegion_Trigger = null;

int auto_libMapM_gf_MapSetRepulseRegion_lp_team;

region auto_libMapM_gf_MapSetRepulseRegion_lp_pulseRegion;

point auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation1;

point auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation2;

point auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation3;

point auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation4;



void libMapM_gf_MapSetRepulseRegion (int lp_team, region lp_pulseRegion, point lp_punchTargetLocation1, point lp_punchTargetLocation2, point lp_punchTargetLocation3, point lp_punchTargetLocation4) {

    auto_libMapM_gf_MapSetRepulseRegion_lp_team = lp_team;

    auto_libMapM_gf_MapSetRepulseRegion_lp_pulseRegion = lp_pulseRegion;

    auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation1 = lp_punchTargetLocation1;

    auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation2 = lp_punchTargetLocation2;

    auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation3 = lp_punchTargetLocation3;

    auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation4 = lp_punchTargetLocation4;



    if (auto_libMapM_gf_MapSetRepulseRegion_Trigger == null) {

        auto_libMapM_gf_MapSetRepulseRegion_Trigger = TriggerCreate("auto_libMapM_gf_MapSetRepulseRegion_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MapSetRepulseRegion_Trigger, false, false);

}



bool auto_libMapM_gf_MapSetRepulseRegion_TriggerFunc (bool testConds, bool runActions) {

    int lp_team = auto_libMapM_gf_MapSetRepulseRegion_lp_team;

    region lp_pulseRegion = auto_libMapM_gf_MapSetRepulseRegion_lp_pulseRegion;

    point lp_punchTargetLocation1 = auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation1;

    point lp_punchTargetLocation2 = auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation2;

    point lp_punchTargetLocation3 = auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation3;

    point lp_punchTargetLocation4 = auto_libMapM_gf_MapSetRepulseRegion_lp_punchTargetLocation4;



    // Automatic Variable Declarations

    // Implementation

    TriggerEnable(libGame_gt_HallOfStormsKnockbackLaunchMissile, false);

    TriggerEnable(libGame_gt_HallOfStormsKnockbackUnitEntersRegion, true);

    libMapM_gv_mMRepulseRegions[lp_team] = lp_pulseRegion;

    libMapM_gv_mMRepulseRegionPunchTarget[lp_team][1] = lp_punchTargetLocation1;

    libMapM_gv_mMRepulseRegionPunchTarget[lp_team][2] = lp_punchTargetLocation2;

    libMapM_gv_mMRepulseRegionPunchTarget[lp_team][3] = lp_punchTargetLocation3;

    libMapM_gv_mMRepulseRegionPunchTarget[lp_team][4] = lp_punchTargetLocation4;

    Wait(2.0, c_timeGame);

    TriggerExecute(libMapM_gt_MMRepulseRegionPunchBehavior, true, false);

    return true;

}



trigger auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_Trigger = null;

unit auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_lp_punchedUnit;



void libMapM_gf_MMRepulseRegionAddToPunchedGroup (unit lp_punchedUnit) {

    auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_lp_punchedUnit = lp_punchedUnit;



    if (auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_Trigger == null) {

        auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_Trigger = TriggerCreate("auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_Trigger, false, false);

}



bool auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_TriggerFunc (bool testConds, bool runActions) {

    unit lp_punchedUnit = auto_libMapM_gf_MMRepulseRegionAddToPunchedGroup_lp_punchedUnit;



    // Automatic Variable Declarations

    // Implementation

    UnitGroupAdd(libMapM_gv_mMRepulseRegionPunchedGroup, lp_punchedUnit);

    Wait(1.0, c_timeGame);

    UnitGroupRemove(libMapM_gv_mMRepulseRegionPunchedGroup, lp_punchedUnit);

    return true;

}



void libMapM_gf_MapSetSafeRegion (int lp_team, region lp_safeRegion) {

    // Automatic Variable Declarations

    // Implementation

    TriggerEnable(libGame_gt_HallOfStormsUnitEntersRegion, true);

    TriggerEnable(libGame_gt_HallOfStormsUnitExitsRegion, true);

    libMapM_gv_mMSafeRegions[lp_team] = lp_safeRegion;

    TriggerExecute(libMapM_gt_MMSafeRegionBehavior, true, false);

}



void libMapM_gf_RestrictAbilitiesToRegionForUnit (unit lp_unit, region lp_region) {

    // Variable Declarations

    int lv_itAbility;

    string lv_ability;



    // Automatic Variable Declarations

    int autoED27FBF2_ae;



    // Variable Initialization



    // Implementation

    if (((libMapM_gf_MapMechanicExistsOnMap("HauntedMinesRework") == true) && ((UnitGetType(lp_unit) == "HeroDeathwing") || (UnitGetType(lp_unit) == "DeathwingDragonflightUnit")))) {

    }

    else {

        autoED27FBF2_ae = (CatalogFieldValueCount(c_gameCatalogUnit, UnitGetType(lp_unit), "AbilArray", UnitGetOwner(lp_unit)) - 1);

        lv_itAbility = 0;

        for ( ; lv_itAbility <= autoED27FBF2_ae ; lv_itAbility += 1 ) {

            lv_ability = (CatalogFieldValueGet(c_gameCatalogUnit, UnitGetType(lp_unit), "AbilArray[" + IntToString(lv_itAbility) + "].Link", UnitGetOwner(lp_unit)));

            if ((CatalogEntryIsValid(c_gameCatalogAbil, lv_ability) == true)) {

                if ((libCore_gv_sYSGameMode == libCore_ge_GameModes_ArenaMode)) {

                    UnitAbilitySetRequiredRegion(lp_unit, lv_ability, lp_region, "");

                }

                else {

                    if (((CatalogFieldValueGet(c_gameCatalogAbil, lv_ability, "AbilityCategories[TargetAcrossMapPlane]", c_playerAny) == "1") || ((lv_ability == "AbathurToxicNest") && (PlayerHasTalent(UnitGetOwner(lp_unit), "AbathurMasteryBallistospores") == true)))) {

                    }

                    else {

                        UnitAbilitySetRequiredRegion(lp_unit, lv_ability, lp_region, "");

                    }

                }

            }



        }

    }

}



int libMapM_gf_RegisterMapMechanicAIUnitCustomValue () {

    // Automatic Variable Declarations

    // Implementation

    libMapM_gv_countOfMMAIUnits += 1;

    return (libMapM_gv_dataJungleMaxNumberOfMercsSpawned + libMapM_gv_countOfMMAIUnits);

}



trigger auto_libMapM_gf_ShareVisionofUnitForBothTeams_Trigger = null;

unit auto_libMapM_gf_ShareVisionofUnitForBothTeams_lp_tributeWarningUnit;



void libMapM_gf_ShareVisionofUnitForBothTeams (unit lp_tributeWarningUnit) {

    auto_libMapM_gf_ShareVisionofUnitForBothTeams_lp_tributeWarningUnit = lp_tributeWarningUnit;



    if (auto_libMapM_gf_ShareVisionofUnitForBothTeams_Trigger == null) {

        auto_libMapM_gf_ShareVisionofUnitForBothTeams_Trigger = TriggerCreate("auto_libMapM_gf_ShareVisionofUnitForBothTeams_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_ShareVisionofUnitForBothTeams_Trigger, false, false);

}



bool auto_libMapM_gf_ShareVisionofUnitForBothTeams_TriggerFunc (bool testConds, bool runActions) {

    unit lp_tributeWarningUnit = auto_libMapM_gf_ShareVisionofUnitForBothTeams_lp_tributeWarningUnit;



    // Variable Declarations

    int lv_team;



    // Automatic Variable Declarations

    int auto3348E454_ae;



    // Variable Initialization



    // Implementation

    auto3348E454_ae = libCore_gv_bALMaxTeams;

    lv_team = 1;

    for ( ; lv_team <= auto3348E454_ae ; lv_team += 1 ) {

        libNtve_gf_ShareVisionofUnit(lp_tributeWarningUnit, true, libGame_gf_ComputerPlayerInTeam(lv_team));

    }

    return true;

}



trigger auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_Trigger = null;

unit auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_lp_unit;



void libMapM_gf_CreateSnapshotOfUnitForBothTeams (unit lp_unit) {

    auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_lp_unit = lp_unit;



    if (auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_Trigger == null) {

        auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_Trigger = TriggerCreate("auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_Trigger, false, false);

}



bool auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_TriggerFunc (bool testConds, bool runActions) {

    unit lp_unit = auto_libMapM_gf_CreateSnapshotOfUnitForBothTeams_lp_unit;



    // Variable Declarations

    int lv_i;



    // Automatic Variable Declarations

    const int auto9F88AE3B_ae = libCore_gv_bALMaxTeams;

    const int auto9F88AE3B_ai = 1;

    const int auto05932E8B_ae = libCore_gv_bALMaxTeams;

    const int auto05932E8B_ai = 1;



    // Variable Initialization



    // Implementation

    lv_i = 1;

    for ( ; ( (auto9F88AE3B_ai >= 0 && lv_i <= auto9F88AE3B_ae) || (auto9F88AE3B_ai < 0 && lv_i >= auto9F88AE3B_ae) ) ; lv_i += auto9F88AE3B_ai ) {

        libNtve_gf_ShareVisionofUnit(lp_unit, true, libGame_gf_ComputerPlayerInTeam(lv_i));

    }

    Wait(0.0625, c_timeGame);

    lv_i = 1;

    for ( ; ( (auto05932E8B_ai >= 0 && lv_i <= auto05932E8B_ae) || (auto05932E8B_ai < 0 && lv_i >= auto05932E8B_ae) ) ; lv_i += auto05932E8B_ai ) {

        libNtve_gf_ShareVisionofUnit(lp_unit, false, libGame_gf_ComputerPlayerInTeam(lv_i));

    }

    return true;

}



void libMapM_gf_RegisterMapEventEnableDisableTriggers (trigger lp_disableMapEventTrigger, trigger lp_enableMapEventTrigger) {

    // Automatic Variable Declarations

    // Implementation

    libMapM_gv_mMDisableMapEventTrigger = lp_disableMapEventTrigger;

    libMapM_gv_mMEnableMapEventTrigger = lp_enableMapEventTrigger;

}



void libMapM_gf_EnableDisableMapEvent (bool lp_enableOrDisable) {

    // Automatic Variable Declarations

    // Implementation

    if ((libMapM_gv_mMMapEventHasOccured == false) && (libMapM_gv_mMMapMechanicDisabled == false) && (lp_enableOrDisable == false)) {

        libMapM_gv_mMMapMechanicDisabled = true;

        if ((libMapM_gv_mMDisableMapEventTrigger != null)) {

            TriggerExecute(libMapM_gv_mMDisableMapEventTrigger, true, true);

        }



    }



    if ((libMapM_gv_mMMapEventHasOccured == false) && (libMapM_gv_mMMapMechanicDisabled == true) && (lp_enableOrDisable == true)) {

        libMapM_gv_mMMapMechanicDisabled = false;

        if ((libMapM_gv_mMEnableMapEventTrigger != null)) {

            TriggerExecute(libMapM_gv_mMEnableMapEventTrigger, true, true);

        }



    }



}



void libMapM_gf_MMRavenCurseAddTributeSpawnLocation (point lp_spawnLocation) {

    // Automatic Variable Declarations

    // Implementation

    if ((libMapM_gv_mMRavenTributeSpawnPointsCount >= libMapM_gv_mMRavenTributeSpawnPointsCountMax_C)) {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_55A9F5EA"), true);

        return ;

    }



    libMapM_gv_mMRavenTributeSpawnPointsCount += 1;

    libMapM_gv_mMRavenTributeSpawnPoints[libMapM_gv_mMRavenTributeSpawnPointsCount] = lp_spawnLocation;

}



bool libMapM_gf_MMRavenCurseStarted () {

    // Automatic Variable Declarations

    // Implementation

    return (libMapM_gv_mMRavenTeamStats[1].lv_cursed || libMapM_gv_mMRavenTeamStats[2].lv_cursed);

}



fixed libMapM_gf_MMRavenStartTime () {

    // Automatic Variable Declarations

    // Implementation

    return libMapM_gv_mMRavenStartTime;

}



fixed libMapM_gf_MMRavenTributeSpawnTime () {

    // Automatic Variable Declarations

    // Implementation

    return libMapM_gv_mMRavenTributeSpawnTime_C;

}



int libMapM_gf_MMRavenTributeThresholdAmount () {

    // Automatic Variable Declarations

    // Implementation

    return libMapM_gv_mMRavenTributeThreshold_C;

}



string libMapM_gf_MMRavenTributeUnitType () {

    // Automatic Variable Declarations

    // Implementation

    return "RavenLordTribute";

}



point libMapM_gf_MMRavenRandomSpawnPoint () {

    // Variable Declarations

    int lv_spawnIndex;

    int[libMapM_gv_mMRavenTributeSpawnPointsCountMax_C + 1] lv_availableSpawnPointIndex;

    int lv_availableSpawnPointsCount;

    int lv_index;

    int lv_sideIndex1;

    int lv_sideIndex2;

    int lv_sideIndex;

    bool lv_pointGood;

    int lv_firstPointIndex;



    // Automatic Variable Declarations

    int auto3F8AF97C_ae;

    const int auto3F8AF97C_ai = 1;



    // Variable Initialization



    // Implementation

    if ((libMapM_gv_mMRavenTributeSpawnPointsCount < 1)) {

        return null;

    }



    lv_sideIndex1 = libMapM_gf_MMRavenSpawnPointSide(libMapM_gv_mMRavenLastTributeSpawnIndex1);

    lv_sideIndex2 = libMapM_gf_MMRavenSpawnPointSide(libMapM_gv_mMRavenLastTributeSpawnIndex2);

    auto3F8AF97C_ae = libMapM_gv_mMRavenTributeSpawnPointsCount;

    lv_index = 1;

    for ( ; ( (auto3F8AF97C_ai >= 0 && lv_index <= auto3F8AF97C_ae) || (auto3F8AF97C_ai < 0 && lv_index >= auto3F8AF97C_ae) ) ; lv_index += auto3F8AF97C_ai ) {

        if ((lv_index != libMapM_gv_mMRavenLastTributeSpawnIndex1) && (!(((libMapM_gv_mMRavenLastTributeSpawnIndex1 > 0) && (libMapM_gv_mMRavenLastTributeSpawnIndex2 > 0) && (ModI(libMapM_gv_mMRavenLastTributeSpawnIndex1, 2) == ModI(libMapM_gv_mMRavenLastTributeSpawnIndex2, 2)) && (ModI(lv_index, 2) == ModI(libMapM_gv_mMRavenLastTributeSpawnIndex1, 2)))))) {

            lv_pointGood = false;

            lv_sideIndex = libMapM_gf_MMRavenSpawnPointSide(lv_index);

            if ((libMapM_gv_mMRavenLastTributeSpawnIndex1 == 0)) {

                if (((lv_index == 1) || (lv_index == 2))) {

                    lv_pointGood = true;

                }



            }

            else if ((libMapM_gv_mMRavenLastTributeSpawnIndex2 == 0)) {

                if ((lv_sideIndex != lv_sideIndex1)) {

                    lv_pointGood = true;

                }



            }

            else if ((libMapM_gv_mMRavenTributeSpawnGroupIndex == 0)) {

                lv_pointGood = true;

            }

            else if ((libMapM_gv_mMRavenTributeSpawnGroupIndex == 1)) {

                if ((lv_sideIndex != lv_sideIndex1)) {

                    lv_pointGood = true;

                }



            }

            else if ((libMapM_gv_mMRavenTributeSpawnGroupIndex == 2)) {

                if ((lv_sideIndex != lv_sideIndex1) && (lv_sideIndex != lv_sideIndex2)) {

                    lv_pointGood = true;

                }



            }

            if ((lv_pointGood == true)) {

                lv_availableSpawnPointsCount += 1;

                lv_availableSpawnPointIndex[lv_availableSpawnPointsCount] = lv_index;

            }



        }



    }

    libMapM_gv_mMRavenLastTributeSpawnIndex2 = libMapM_gv_mMRavenLastTributeSpawnIndex1;

    libMapM_gv_mMRavenLastTributeSpawnIndex1 = lv_availableSpawnPointIndex[RandomInt(1, lv_availableSpawnPointsCount)];

    libMapM_gv_mMRavenTributeSpawnGroupIndex += 1;

    if ((libMapM_gv_mMRavenTributeSpawnGroupIndex == 3)) {

        libMapM_gv_mMRavenTributeSpawnGroupIndex = 0;

    }



    return libMapM_gv_mMRavenTributeSpawnPoints[libMapM_gv_mMRavenLastTributeSpawnIndex1];

}



int libMapM_gf_MMRavenSpawnPointSide (int lp_index) {

    // Automatic Variable Declarations

    // Implementation

    if (((lp_index == 1) || (lp_index == 2))) {

        return 0;

    }

    else if (((lp_index == 4) || (lp_index == 5))) {

        return 1;

    }

    else if (((lp_index == 3) || (lp_index == 6))) {

        return 2;

    }

    return 0;

}



void libMapM_gf_MMRavenStartSpawnTimer5090 () {

    // Variable Declarations

    fixed lv_spawnTime;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    if ((libMapM_gv_mMRavenUseManualTributeSpawns == false)) {

        lv_spawnTime = (libMapM_gv_mMRavenTributeSpawnTime_C + RandomFixed((libMapM_gv_mMRavenTributeSpawnTimeVariance * -1), libMapM_gv_mMRavenTributeSpawnTimeVariance));

        TimerStart(libMapM_gv_mMRavenWarningTimer, (lv_spawnTime - libMapM_gv_mMRavenSpawnWarningTimerTime_C), false, c_timeGame);

    }



}



void libMapM_gf_MMRavenCreatePreviewTribute (point lp_previewLocation) {

    // Automatic Variable Declarations

    // Implementation

    libNtve_gf_CreateUnitsWithDefaultFacing(1, "RavenLordTributePreview", c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_Neutral, lp_previewLocation, null);

    libMapM_gv_mMRavenTributePreview = UnitLastCreated();

}



void libMapM_gf_MMRavenTributeCollectionThresholdReached (int lp_winningTeam) {

    // Automatic Variable Declarations

    // Implementation

    if ((lp_winningTeam == libGame_gf_TeamNumberOfPlayer(libCore_gv_cOMPUTER_TeamOrder))) {

        libMapM_gf_MMRavenCurseStart(libCore_gv_cOMPUTER_TeamChaos);

    }

    else {

        libMapM_gf_MMRavenCurseStart(libCore_gv_cOMPUTER_TeamOrder);

    }

}



void libMapM_gf_MMRavenCurseStart (int lp_cursedPlayerID) {

    // Variable Declarations

    int lv_itPlayer;

    int lv_index;

    int lv_cursedTeam;

    int lv_enemyTeamWinningTeam;

    int lv_townIndex;

    int lv_structureIndex;

    unit lv_structureUnit;



    // Automatic Variable Declarations

    int auto1E839FCC_ae;

    const int auto1E839FCC_ai = 1;

    int autoCEB3961F_ae;

    const int autoCEB3961F_ai = 1;

    unitgroup auto4E0D066B_g;

    int auto4E0D066B_u;

    unit auto4E0D066B_var;



    // Variable Initialization



    // Implementation

    lv_cursedTeam = libGame_gf_TeamNumberOfPlayer(lp_cursedPlayerID);

    lv_enemyTeamWinningTeam = libGame_gf_EnemyTeam(lv_cursedTeam);

    libMapM_gf_MMRavenPlayCurseSound(lv_cursedTeam);

    SoundChannelMute(PlayerGroupAll(), c_soundCategoryAmbient, true);

    SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);

    libSond_gf_SoundtrackApplyNewDefaultSoundtrackForPlayerGroup("Storm_Music_RavenKing_Cursed", PlayerGroupAll());

    libGame_gf_SendEventMapCursedHollowCurseStarts(lv_enemyTeamWinningTeam);

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal MM1On");

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal RainOn");

    libGame_gv_teams[lv_enemyTeamWinningTeam].lv_map_CursesPlacedOnEnemyTeam += 1;

    StatEventCreate("RavenCurseActivated");

    StatEventAddDataInt(StatEventLastCreated(), "Event", (libGame_gv_teams[1].lv_map_CursesPlacedOnEnemyTeam + libGame_gv_teams[2].lv_map_CursesPlacedOnEnemyTeam));

    StatEventAddDataFixed(StatEventLastCreated(), "TeamID", lv_enemyTeamWinningTeam);

    StatEventAddDataInt(StatEventLastCreated(), "TeamScore", libMapM_gv_mMRavenTeamStats[lv_enemyTeamWinningTeam].lv_triburteCollected);

    StatEventAddDataInt(StatEventLastCreated(), "OpponentScore", libMapM_gv_mMRavenTeamStats[lv_cursedTeam].lv_triburteCollected);

    StatEventAddDataFixed(StatEventLastCreated(), "GameTime", libUIUI_gf_HeroesGameTime());

    StatEventSend(StatEventLastCreated());

    libMapM_gf_PreCurseSiegeDamageCache(lv_enemyTeamWinningTeam);

    libMapM_gv_mMRavenTeamStats[libGame_gf_TeamNumberOfPlayer(lp_cursedPlayerID)].lv_cursed = true;

    libAIAI_gf_AITeamDelegateActivateDeactivateMapReward(libAIAI_ge_AITeamDelegateActivateDeactivateMapToken_Activate);

    libAIAI_gf_AITeamDelegateResetMapEventProgressforTeam(lv_enemyTeamWinningTeam);

    auto1E839FCC_ae = libGame_gv_townTownCount;

    lv_townIndex = 1;

    for ( ; ( (auto1E839FCC_ai >= 0 && lv_townIndex <= auto1E839FCC_ae) || (auto1E839FCC_ai < 0 && lv_townIndex >= auto1E839FCC_ae) ) ; lv_townIndex += auto1E839FCC_ai ) {

        if ((libGame_gv_townTownData[lv_townIndex].lv_owner == lp_cursedPlayerID)) {

            autoCEB3961F_ae = libGame_gv_townTownData[lv_townIndex].lv_structureCount;

            lv_structureIndex = 1;

            for ( ; ( (autoCEB3961F_ai >= 0 && lv_structureIndex <= autoCEB3961F_ae) || (autoCEB3961F_ai < 0 && lv_structureIndex >= autoCEB3961F_ae) ) ; lv_structureIndex += autoCEB3961F_ai ) {

                lv_structureUnit = libGame_gv_townTownData[lv_townIndex].lv_structureUnits[lv_structureIndex];

                if ((UnitIsAlive(libGame_gv_townTownData[lv_townIndex].lv_structureUnits[lv_structureIndex]) == true) && ((libGame_gf_TownGetTownStructurePresetFromUnit(libGame_gv_townTownData[lv_townIndex].lv_structureUnits[lv_structureIndex]) == libGame_ge_TownStructureTypes_TownHall) || (libGame_gf_TownGetTownStructurePresetFromUnit(libGame_gv_townTownData[lv_townIndex].lv_structureUnits[lv_structureIndex]) == libGame_ge_TownStructureTypes_CannonTower))) {

                    UnitBehaviorAdd(lv_structureUnit, "RavenLordsCurseStructures", lv_structureUnit, 1);

                    UnitBehaviorSetDuration(lv_structureUnit, "RavenLordsCurseStructures", libMapM_gv_mMRavenCurseDuration_C);

                    UnitBehaviorAdd(lv_structureUnit, "RavenLordsCurseStructuresWarning", lv_structureUnit, 1);

                    UnitBehaviorSetDuration(lv_structureUnit, "RavenLordsCurseStructuresWarning", (libMapM_gv_mMRavenCurseDuration_C - 5.0));

                }



            }

        }



    }

    auto4E0D066B_g = UnitGroup(null, lp_cursedPlayerID, RegionEntireMap(), libCore_gv_filtersMinionsTownMinions, 0);

    auto4E0D066B_u = UnitGroupCount(auto4E0D066B_g, c_unitCountAll);

    for (;; auto4E0D066B_u -= 1) {

        auto4E0D066B_var = UnitGroupUnitFromEnd(auto4E0D066B_g, auto4E0D066B_u);

        if (auto4E0D066B_var == null) { break; }

        libMapM_gf_MMRavenApplyCurseEffectOnMinion(auto4E0D066B_var);

    }

    TriggerExecute(libMapM_gt_MMRavenCurseStartLightTransition, true, false);

    TimerStart(libMapM_gv_mMRavenCurseTimer, libMapM_gv_mMRavenCurseDuration_C, false, c_timeGame);

    libMapM_gf_MMRavenWaitForandPlayCurseEndWarning();

}



void libMapM_gf_MMRavenApplyCurseEffectOnMinion (unit lp_unit) {

    // Automatic Variable Declarations

    // Implementation

    UnitBehaviorAdd(lp_unit, "RavenLordsCurseUnits", lp_unit, 1);

    UnitSetPropertyFixed(lp_unit, c_unitPropLife, 1.0);

    libNtve_gf_SendActorMessageToUnit(lp_unit, "SetTintColor 207,159,255");

}



void libMapM_gf_MMRavenRemoveCurseEffectOnMinion (unit lp_minion) {

    // Automatic Variable Declarations

    // Implementation

    if ((UnitIsAlive(lp_minion) == false)) {

        return ;

    }



    UnitSetPropertyFixed(lp_minion, c_unitPropLifePercent, 100.0);

    UnitBehaviorRemove(lp_minion, "RavenLordsCurseUnits", 1);

    libNtve_gf_SendActorMessageToUnit(lp_minion, "SetTintColor 255,255,255");

}



trigger auto_libMapM_gf_MMRavenPlayCurseSound_Trigger = null;

int auto_libMapM_gf_MMRavenPlayCurseSound_lp_cursedTeam;



void libMapM_gf_MMRavenPlayCurseSound (int lp_cursedTeam) {

    auto_libMapM_gf_MMRavenPlayCurseSound_lp_cursedTeam = lp_cursedTeam;



    if (auto_libMapM_gf_MMRavenPlayCurseSound_Trigger == null) {

        auto_libMapM_gf_MMRavenPlayCurseSound_Trigger = TriggerCreate("auto_libMapM_gf_MMRavenPlayCurseSound_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRavenPlayCurseSound_Trigger, false, false);

}



bool auto_libMapM_gf_MMRavenPlayCurseSound_TriggerFunc (bool testConds, bool runActions) {

    int lp_cursedTeam = auto_libMapM_gf_MMRavenPlayCurseSound_lp_cursedTeam;



    // Variable Declarations

    int lv_enemyTeam;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    SoundPlayForPlayer(SoundLink("Event_RavenCurse_CurseStart", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);

    SoundPlayForPlayer(SoundLink("Event_RavenCurse_CurseMid", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);

    libMapM_gv_mMRavenCurseSound = SoundLastPlayed();

    Wait(2.0, c_timeReal);

    lv_enemyTeam = libGame_gf_EnemyTeam(lp_cursedTeam);

    libMapM_gf_MMRavenTransmissionCurseActiveQ(lp_cursedTeam);

    return true;

}



trigger auto_libMapM_gf_MMRavenWaitForandPlayCurseEndWarning_Trigger = null;



void libMapM_gf_MMRavenWaitForandPlayCurseEndWarning () {

    if (auto_libMapM_gf_MMRavenWaitForandPlayCurseEndWarning_Trigger == null) {

        auto_libMapM_gf_MMRavenWaitForandPlayCurseEndWarning_Trigger = TriggerCreate("auto_libMapM_gf_MMRavenWaitForandPlayCurseEndWarning_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRavenWaitForandPlayCurseEndWarning_Trigger, false, false);

}



bool auto_libMapM_gf_MMRavenWaitForandPlayCurseEndWarning_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    libNtve_gf_WaitForTimer(libMapM_gv_mMRavenCurseTimer, 9.0, false);

    SoundPlayForPlayer(SoundLink("Event_RavenCurse_CurseEnd_Timer", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);

    return true;

}



void libMapM_gf_MMRavenObjectiveUIUpdateText () {

    // Variable Declarations

    int lv_indexTeam;

    int lv_indexTeamEnemy;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    libUIUI_gf_MapMechanicsRavenCourtSetTributeCountForTeam(libMapM_gv_mMRavenTeamStats[libGame_gv_teamOrderIndex_C].lv_triburteCollected, libGame_gv_teamOrderIndex_C);

    libUIUI_gf_MapMechanicsRavenCourtSetTributeCountForTeam(libMapM_gv_mMRavenTeamStats[libGame_gv_teamChaosIndex_C].lv_triburteCollected, libGame_gv_teamChaosIndex_C);

}



void libMapM_gf_PreCurseSiegeDamageCache (int lp_cursingTeam) {

    // Variable Declarations

    int lv_iterator;



    // Automatic Variable Declarations

    int autoEDD9318E_ae;



    // Variable Initialization



    // Implementation

    autoEDD9318E_ae = libCore_gv_bALMaxPlayers;

    lv_iterator = 1;

    for ( ; lv_iterator <= autoEDD9318E_ae ; lv_iterator += 1 ) {

        if ((libGame_gf_TeamNumberOfPlayer(lv_iterator) == lp_cursingTeam)) {

            libMapM_gv_siegeDamagePreCurse[lv_iterator] = PlayerScoreValueGetAsFixed(lv_iterator, "SiegeDamage");

        }



    }

}



void libMapM_gf_CalculateCurseSiegeDamageDone (int lp_cursingTeam) {

    // Variable Declarations

    int lv_iterator;



    // Automatic Variable Declarations

    int autoC675CD57_ae;



    // Variable Initialization



    // Implementation

    autoC675CD57_ae = libCore_gv_bALMaxPlayers;

    lv_iterator = 1;

    for ( ; lv_iterator <= autoC675CD57_ae ; lv_iterator += 1 ) {

        if ((libGame_gf_TeamNumberOfPlayer(lv_iterator) == lp_cursingTeam)) {

            libMapM_gv_totalCurseSiegeDamage[lv_iterator] = (libMapM_gv_totalCurseSiegeDamage[lv_iterator] + (PlayerScoreValueGetAsFixed(lv_iterator, "SiegeDamage") - libMapM_gv_siegeDamagePreCurse[lv_iterator]));

            libGame_gf_ScoreValuesReportRealValueAndLog(lv_iterator, "CurseDamageDone", libMapM_gv_totalCurseSiegeDamage[lv_iterator]);

            libGame_gf_SendMapSpecificAwardEvent(lv_iterator, libMapM_gv_totalCurseSiegeDamage[lv_iterator], false);

        }



    }

}



void libMapM_gf_PauseUnpauseCurseHollowTimers (bool lp_pauseUnpause) {

    // Variable Declarations

    int lv_itIndex;



    // Automatic Variable Declarations

    int auto23602211_ae;

    const int auto23602211_ai = 1;

    int auto62E41E9B_ae;

    const int auto62E41E9B_ai = 1;



    // Variable Initialization



    // Implementation

    if ((lp_pauseUnpause == libMapM_gv_mMRavenTimers2)) {

        return ;

    }



    libMapM_gv_mMRavenTimers2 = lp_pauseUnpause;

    libMapM_gv_mMRavenTimers[1] = libMapM_gv_mMRavenStartTimer;

    libMapM_gv_mMRavenTimers[2] = libMapM_gv_mMRavenTributeSpawnTimer;

    libMapM_gv_mMRavenTimers[3] = libMapM_gv_mMRavenWarningTimer;

    libMapM_gv_mMRavenTimers[4] = libMapM_gv_mMRavenCurseTimer;

    libMapM_gv_mMRavenTimerCount = 4;

    if ((lp_pauseUnpause == true)) {

        auto62E41E9B_ae = libMapM_gv_mMRavenTimerCount;

        lv_itIndex = 1;

        for ( ; ( (auto62E41E9B_ai >= 0 && lv_itIndex <= auto62E41E9B_ae) || (auto62E41E9B_ai < 0 && lv_itIndex >= auto62E41E9B_ae) ) ; lv_itIndex += auto62E41E9B_ai ) {

            if ((TimerIsPaused(libMapM_gv_mMRavenTimers[lv_itIndex]) == false) && (TimerGetRemaining(libMapM_gv_mMRavenTimers[lv_itIndex]) > 0.0)) {

                libMapM_gv_mMRavenTimers3[lv_itIndex] = true;

                TimerPause(libMapM_gv_mMRavenTimers[lv_itIndex], true);

            }

            else {

                libMapM_gv_mMRavenTimers3[lv_itIndex] = false;

            }

        }

    }

    else {

        auto23602211_ae = libMapM_gv_mMRavenTimerCount;

        lv_itIndex = 1;

        for ( ; ( (auto23602211_ai >= 0 && lv_itIndex <= auto23602211_ae) || (auto23602211_ai < 0 && lv_itIndex >= auto23602211_ae) ) ; lv_itIndex += auto23602211_ai ) {

            if ((libMapM_gv_mMRavenTimers3[lv_itIndex] == true)) {

                TimerPause(libMapM_gv_mMRavenTimers[lv_itIndex], false);

                libMapM_gv_mMRavenTimers3[lv_itIndex] = false;

            }



        }

    }

}



trigger auto_libMapM_gf_MMRavenTransmissionFirstEventStartQ_Trigger = null;



void libMapM_gf_MMRavenTransmissionFirstEventStartQ () {

    if (auto_libMapM_gf_MMRavenTransmissionFirstEventStartQ_Trigger == null) {

        auto_libMapM_gf_MMRavenTransmissionFirstEventStartQ_Trigger = TriggerCreate("auto_libMapM_gf_MMRavenTransmissionFirstEventStartQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRavenTransmissionFirstEventStartQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMRavenTransmissionFirstEventStartQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "Raven - Event First", "Value", 1, 1);

    ConversationDataRun("CursedHollow", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMRavenTransmissionRepeatEventStartQ_Trigger = null;



void libMapM_gf_MMRavenTransmissionRepeatEventStartQ () {

    if (auto_libMapM_gf_MMRavenTransmissionRepeatEventStartQ_Trigger == null) {

        auto_libMapM_gf_MMRavenTransmissionRepeatEventStartQ_Trigger = TriggerCreate("auto_libMapM_gf_MMRavenTransmissionRepeatEventStartQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRavenTransmissionRepeatEventStartQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMRavenTransmissionRepeatEventStartQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "Raven - Event Repeat", "Value", 1, 1);

    ConversationDataRun("CursedHollow", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_Trigger = null;

int auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_lp_cursedTeam;



void libMapM_gf_MMRavenTransmissionCurseActiveQ (int lp_cursedTeam) {

    auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_lp_cursedTeam = lp_cursedTeam;



    if (auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_Trigger == null) {

        auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_Trigger = TriggerCreate("auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_TriggerFunc (bool testConds, bool runActions) {

    int lp_cursedTeam = auto_libMapM_gf_MMRavenTransmissionCurseActiveQ_lp_cursedTeam;



    // Variable Declarations

    playergroup lv_orderPlayerGroup;

    playergroup lv_chaosPlayerGroup;

    playergroup lv_observerPlayer;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_orderPlayerGroup = PlayerGroupEmpty();

    lv_chaosPlayerGroup = PlayerGroupEmpty();

    lv_observerPlayer = PlayerGroupEmpty();



    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    ConversationDataLineResetPlayers("CursedHollow", ("Left"));

    ConversationDataLineResetPlayers("CursedHollow", ("Right"));

    ConversationDataLineResetPlayers("CursedHollow", ("Observer"));

    if ((lp_cursedTeam == libGame_gv_teamOrderIndex_C)) {

        UserDataSetInt("MapVOEvent", "Raven - Left Team Cursed", "Value", 1, 1);

    }

    else {

        UserDataSetInt("MapVOEvent", "Raven - Right Team Cursed", "Value", 1, 1);

    }

    lv_orderPlayerGroup = libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false);

    lv_chaosPlayerGroup = libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false);

    lv_observerPlayer = libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer];

    ConversationDataLineSetPlayers("CursedHollow", ("Left"), lv_orderPlayerGroup);

    ConversationDataLineSetPlayers("CursedHollow", ("Right"), lv_chaosPlayerGroup);

    ConversationDataLineSetPlayers("CursedHollow", ("Observer"), lv_observerPlayer);

    ConversationDataRun("CursedHollow", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMRavenTransmissionCurseEndsQ_Trigger = null;



void libMapM_gf_MMRavenTransmissionCurseEndsQ () {

    if (auto_libMapM_gf_MMRavenTransmissionCurseEndsQ_Trigger == null) {

        auto_libMapM_gf_MMRavenTransmissionCurseEndsQ_Trigger = TriggerCreate("auto_libMapM_gf_MMRavenTransmissionCurseEndsQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMRavenTransmissionCurseEndsQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMRavenTransmissionCurseEndsQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "Raven - Curse Ends", "Value", 1, 1);

    ConversationDataRun("CursedHollow", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMGardensDragonInitTowers_Trigger = null;

unit auto_libMapM_gf_MMGardensDragonInitTowers_lp_towerMoon;

unit auto_libMapM_gf_MMGardensDragonInitTowers_lp_towerStar;



void libMapM_gf_MMGardensDragonInitTowers (unit lp_towerMoon, unit lp_towerStar) {

    auto_libMapM_gf_MMGardensDragonInitTowers_lp_towerMoon = lp_towerMoon;

    auto_libMapM_gf_MMGardensDragonInitTowers_lp_towerStar = lp_towerStar;



    if (auto_libMapM_gf_MMGardensDragonInitTowers_Trigger == null) {

        auto_libMapM_gf_MMGardensDragonInitTowers_Trigger = TriggerCreate("auto_libMapM_gf_MMGardensDragonInitTowers_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMGardensDragonInitTowers_Trigger, false, false);

}



bool auto_libMapM_gf_MMGardensDragonInitTowers_TriggerFunc (bool testConds, bool runActions) {

    unit lp_towerMoon = auto_libMapM_gf_MMGardensDragonInitTowers_lp_towerMoon;

    unit lp_towerStar = auto_libMapM_gf_MMGardensDragonInitTowers_lp_towerStar;



    // Variable Declarations

    unit lv_u;

    unit lv_utargetZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ;

    int lv_player;

    fixed lv_beam_fulldistance;

    fixed lv_beam_count;

    int lv_itPlayer;



    // Automatic Variable Declarations

    unitgroup autoE15D888F_g;

    int autoE15D888F_u;

    unit autoE15D888F_var;

    unitgroup auto8A56646F_g;

    int auto8A56646F_u;

    playergroup autoAFCA884A_g;

    unitgroup auto254889A9_g;

    int auto254889A9_u;

    unitgroup auto4ED31F5E_g;

    int auto4ED31F5E_u;

    playergroup auto3D9EC4D4_g;

    unitgroup autoC3C6CAFA_g;

    int autoC3C6CAFA_u;

    playergroup autoAB2D3B75_g;

    playergroup auto2BE87695_g;



    // Variable Initialization



    // Implementation

    libMapM_gv_mMGardensDragonTowerMoon = lp_towerMoon;

    libMapM_gv_mMGardensDragonTowerStar = lp_towerStar;

    autoE15D888F_g = UnitGroup("VehicleDragon", c_playerAny, null, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1);

    autoE15D888F_u = UnitGroupCount(autoE15D888F_g, c_unitCountAll);

    for (;; autoE15D888F_u -= 1) {

        autoE15D888F_var = UnitGroupUnitFromEnd(autoE15D888F_g, autoE15D888F_u);

        if (autoE15D888F_var == null) { break; }

        libMapM_gv_mMGardensDragonDragonKnightRespawnPoint = UnitGetPosition(autoE15D888F_var);

        libMapM_gv_mMGardensDragonStatue = autoE15D888F_var;

        UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateStatusBar, false);

        libMapM_gf_AddVehicle(libMapM_gv_mMGardensDragonStatue);

    }

    auto8A56646F_g = UnitGroup("DragonShireShrineSun", c_playerAny, null, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1);

    auto8A56646F_u = UnitGroupCount(auto8A56646F_g, c_unitCountAll);

    for (;; auto8A56646F_u -= 1) {

        lv_u = UnitGroupUnitFromEnd(auto8A56646F_g, auto8A56646F_u);

        if (lv_u == null) { break; }

        libMapM_gv_mMGardensDragonDragonTowerCount += 1;

        libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineUnit = lv_u;

        UnitCreate(1, "DragonballCaptureBeacon", c_unitCreateIgnorePlacement, UnitGetOwner(lv_u), UnitGetPosition(lv_u), 300.0, lv_u);

        libGame_gf_CapturePointCreate(UnitLastCreated(), libMapM_gv_mMGardensDragonDragonballTowerCaptureRadius_C, libMapM_gv_mMGardensDragonDragonTowerCaptureTime_C, libMapM_gv_mMGardensDragonDragonTowerOverCaptureTime_C, libGame_ge_CapturePointDecay_DoNotDecay, libGame_ge_CapturePointDecay_Owner, true);

        libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_captureBeaconIndex = libGame_gf_LastCreatedCapturePoint();

        libGame_gf_CapturePointDisable(libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_captureBeaconIndex);

        autoAFCA884A_g = PlayerGroupAll();

        lv_player = -1;

        while (true) {

            	lv_player = PlayerGroupNextPlayer(autoAFCA884A_g, lv_player);

            	if (lv_player<0) { break; }

            	VisRevealArea(lv_player, RegionCircle(UnitGetPosition(lv_u), 0.75), 0.125, false);

        }

        auto254889A9_g = UnitGroup("GardensDragonShrineTargetSun", c_playerAny, null, UnitFilter(0, 0, 0, 0), 1);

        auto254889A9_u = UnitGroupCount(auto254889A9_g, c_unitCountAll);

        for (;; auto254889A9_u -= 1) {

            lv_utargetZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ = UnitGroupUnitFromEnd(auto254889A9_g, auto254889A9_u);

            if (lv_utargetZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ == null) { break; }

            libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineBeamTargetUnit = lv_utargetZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ;

        }

        libMapM_gv_mMGardensDragonSoundRegion = RegionCircle(UnitGetPosition(lv_u), 1.0);

        lv_beam_count = 0.0;

        lv_beam_fulldistance = DistanceBetweenPoints(UnitGetPosition(lv_u), UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineBeamTargetUnit));

        while ((lv_beam_count < lv_beam_fulldistance)) {

            lv_beam_count += 1.0;

            RegionAddCircle(libMapM_gv_mMGardensDragonSoundRegion, true, libNtve_gf_PointOffsetTowardsPoint(UnitGetPosition(lv_u), lv_beam_count, UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineBeamTargetUnit)), 1.0);

        }

    }

    auto4ED31F5E_g = UnitGroup("DragonShireShrineMoon", c_playerAny, null, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1);

    auto4ED31F5E_u = UnitGroupCount(auto4ED31F5E_g, c_unitCountAll);

    for (;; auto4ED31F5E_u -= 1) {

        lv_u = UnitGroupUnitFromEnd(auto4ED31F5E_g, auto4ED31F5E_u);

        if (lv_u == null) { break; }

        libMapM_gv_mMGardensDragonDragonTowerCount += 1;

        libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineUnit = lv_u;

        UnitCreate(1, "DragonballCaptureBeacon", c_unitCreateIgnorePlacement, UnitGetOwner(lv_u), UnitGetPosition(lv_u), 300.0, lv_u);

        libGame_gf_CapturePointCreate(UnitLastCreated(), libMapM_gv_mMGardensDragonDragonballTowerCaptureRadius_C, libMapM_gv_mMGardensDragonDragonTowerCaptureTime_C, libMapM_gv_mMGardensDragonDragonTowerOverCaptureTime_C, libGame_ge_CapturePointDecay_DoNotDecay, libGame_ge_CapturePointDecay_Owner, true);

        libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_captureBeaconIndex = libGame_gf_LastCreatedCapturePoint();

        libGame_gf_CapturePointDisable(libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_captureBeaconIndex);

        auto3D9EC4D4_g = PlayerGroupAll();

        lv_player = -1;

        while (true) {

            	lv_player = PlayerGroupNextPlayer(auto3D9EC4D4_g, lv_player);

            	if (lv_player<0) { break; }

            	VisRevealArea(lv_player, RegionCircle(UnitGetPosition(lv_u), 0.75), 0.125, false);

        }

        autoC3C6CAFA_g = UnitGroup("GardensDragonShrineTargetMoon", c_playerAny, null, UnitFilter(0, 0, 0, 0), 1);

        autoC3C6CAFA_u = UnitGroupCount(autoC3C6CAFA_g, c_unitCountAll);

        for (;; autoC3C6CAFA_u -= 1) {

            lv_utargetZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ = UnitGroupUnitFromEnd(autoC3C6CAFA_g, autoC3C6CAFA_u);

            if (lv_utargetZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ == null) { break; }

            libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineBeamTargetUnit = lv_utargetZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ;

        }

        lv_beam_count = 0.0;

        lv_beam_fulldistance = DistanceBetweenPoints(UnitGetPosition(lv_u), UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineBeamTargetUnit));

        while ((lv_beam_count < lv_beam_fulldistance)) {

            lv_beam_count += 1.0;

            RegionAddCircle(libMapM_gv_mMGardensDragonSoundRegion, true, libNtve_gf_PointOffsetTowardsPoint(UnitGetPosition(lv_u), lv_beam_count, UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[libMapM_gv_mMGardensDragonDragonTowerCount].lv_shrineBeamTargetUnit)), 1.0);

        }

    }

    if ((CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "UseVehiclePersistent", "PeriodicPeriodArray[" + IntToString(0) + "]", 0) == 0.0)) {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_8D3E1C40"), true);

        auto2BE87695_g = PlayerGroupAll();

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(auto2BE87695_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	CatalogFieldValueSetInt(c_gameCatalogEffect, "UseVehiclePersistent", "PeriodCount", lv_itPlayer, FixedToInt((libMapM_gv_mMGardensDragonDragonStatueChannelTime_C / 0.125)));

        }

    }

    else {

        autoAB2D3B75_g = PlayerGroupAll();

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(autoAB2D3B75_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	CatalogFieldValueSetInt(c_gameCatalogEffect, "UseVehiclePersistent", "PeriodCount", lv_itPlayer, FixedToInt((libMapM_gv_mMGardensDragonDragonStatueChannelTime_C / CatalogFieldValueGetAsFixed(c_gameCatalogEffect, "UseVehiclePersistent", "PeriodicPeriodArray[" + IntToString(0) + "]", 0))));

        }

    }

    return true;

}



trigger auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_Trigger = null;

int auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_dragonballTowerIndex;

int auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_newOwner;

playergroup auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_capturingPlayers;



void libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership (int lp_dragonballTowerIndex, int lp_newOwner, playergroup lp_capturingPlayers) {

    auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_dragonballTowerIndex = lp_dragonballTowerIndex;

    auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_newOwner = lp_newOwner;

    auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_capturingPlayers = lp_capturingPlayers;



    if (auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_Trigger == null) {

        auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_Trigger = TriggerCreate("auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_Trigger, false, false);

}



bool auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_TriggerFunc (bool testConds, bool runActions) {

    int lp_dragonballTowerIndex = auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_dragonballTowerIndex;

    int lp_newOwner = auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_newOwner;

    playergroup lp_capturingPlayers = auto_libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership_lp_capturingPlayers;



    // Variable Declarations

    int lv_player;

    unitgroup lv_pillarUnits;

    int lv_iterPlayer;



    // Automatic Variable Declarations

    playergroup autoAAB21751_g;



    // Variable Initialization

    lv_pillarUnits = UnitGroupEmpty();



    // Implementation

    if ((lp_newOwner == libCore_gv_cOMPUTER_Neutral)) {

        libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lp_dragonballTowerIndex].lv_shrineUnit, "AnimBracketStop Capture");

    }

    else {

        libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lp_dragonballTowerIndex].lv_shrineUnit, "AnimBracketStart Capture Stand,Work,Start Stand,Work Stand,Work,End");

    }

    UnitSetOwner(libMapM_gv_mMGardensDragonDragonTowers[lp_dragonballTowerIndex].lv_shrineUnit, lp_newOwner, true);

    libGame_gf_SendEventMapDragonShireObeliskOwnershipChange(lp_newOwner, libMapM_gv_mMGardensDragonDragonTowers[lp_dragonballTowerIndex].lv_shrineUnit, lp_capturingPlayers);

    ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_mMGardensDragonDragonTowers[lp_dragonballTowerIndex].lv_shrineUnit), "Signal ActiveSoundTog");

    TriggerExecute(libMapM_gt_MMGardensDragonDragonTowerCheckObeliskStatus, true, false);

    Wait(0.125, c_timeGame);

    autoAAB21751_g = PlayerGroupAll();

    lv_player = -1;

    while (true) {

        	lv_player = PlayerGroupNextPlayer(autoAAB21751_g, lv_player);

        	if (lv_player<0) { break; }

        	VisRevealArea(lv_player, RegionCircle(UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[lp_dragonballTowerIndex].lv_shrineUnit), 0.75), 0.125, false);

    }

    return true;

}



trigger auto_libMapM_gf_MMGardensDragonDeactivateStatue_Trigger = null;

int auto_libMapM_gf_MMGardensDragonDeactivateStatue_lp_computerPlayer;



void libMapM_gf_MMGardensDragonDeactivateStatue (int lp_computerPlayer) {

    auto_libMapM_gf_MMGardensDragonDeactivateStatue_lp_computerPlayer = lp_computerPlayer;



    if (auto_libMapM_gf_MMGardensDragonDeactivateStatue_Trigger == null) {

        auto_libMapM_gf_MMGardensDragonDeactivateStatue_Trigger = TriggerCreate("auto_libMapM_gf_MMGardensDragonDeactivateStatue_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMGardensDragonDeactivateStatue_Trigger, false, false);

}



bool auto_libMapM_gf_MMGardensDragonDeactivateStatue_TriggerFunc (bool testConds, bool runActions) {

    int lp_computerPlayer = auto_libMapM_gf_MMGardensDragonDeactivateStatue_lp_computerPlayer;



    // Variable Declarations

    int lv_player;

    int lv_towerIndex;



    // Automatic Variable Declarations

    const int autoCF060AB7_ae = libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C;

    const int autoCF060AB7_ai = 1;

    playergroup autoA4D903F6_g;



    // Variable Initialization



    // Implementation

    UnitSetOwner(libMapM_gv_mMGardensDragonStatue, 0, true);

    lv_towerIndex = 1;

    for ( ; ( (autoCF060AB7_ai >= 0 && lv_towerIndex <= autoCF060AB7_ae) || (autoCF060AB7_ai < 0 && lv_towerIndex >= autoCF060AB7_ae) ) ; lv_towerIndex += autoCF060AB7_ai ) {

        UnitIssueOrder(libMapM_gv_mMGardensDragonDragonTowers[lv_towerIndex].lv_shrineUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);

    }

    ActorScopeSend(ActorScopeFromActor(libMapM_gv_mMGardensDragonSoundRegionActor), "Signal StopSound");

    ActorRegionCreate(null, "DragonBeamEndRegion", libMapM_gv_mMGardensDragonSoundRegion);

    UnitBehaviorRemove(libMapM_gv_mMGardensDragonStatue, "GenericVehicleBehaviorEmpty", 1);

    UnitBehaviorAdd(libMapM_gv_mMGardensDragonStatue, "DragonShrineDeactivated", libMapM_gv_mMGardensDragonStatue, 1);

    UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateHighlightable, false);

    UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateTargetable, false);

    libCore_gf_CreateMinimapPingStorm(PlayerGroupAll(), "StormWarning", UnitGetPosition(libMapM_gv_mMGardensDragonStatue), ColorWithAlpha(100.00, 0.00, 0.00, 0.00), 3.0);

    if ((lp_computerPlayer == libCore_gv_cOMPUTER_TeamOrder)) {

        RemoveUnitOfInterest(libMapM_gv_mMGardensDragonStatue, "ActivateDragonKnight", libNtve_ge_GoalTeam_Order);

        RemoveUnitOfInterest(libMapM_gv_mMGardensDragonStatue, "DefendDragonStatue", libNtve_ge_GoalTeam_Chaos);

    }

    else {

        RemoveUnitOfInterest(libMapM_gv_mMGardensDragonStatue, "ActivateDragonKnight", libNtve_ge_GoalTeam_Chaos);

        RemoveUnitOfInterest(libMapM_gv_mMGardensDragonStatue, "DefendDragonStatue", libNtve_ge_GoalTeam_Order);

    }

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTag, PlayerGroupAll(), true);

    autoA4D903F6_g = libCore_gv_activeHumanPlayers;

    lv_player = -1;

    while (true) {

        	lv_player = PlayerGroupNextPlayer(autoA4D903F6_g, lv_player);

        	if (lv_player<0) { break; }

        	if ((libMapM_gv_mapMechanicUsedTracker[lv_player].lv_dragonStatue == true)) {

            TextTagShow(libMapM_gv_mMGardensDragonStatueTextTag, libCore_gv_playerGroupFromPlayer[lv_player], false);

        }



    }

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTagAllyOwned, PlayerGroupAll(), false);

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTagEnemyOwned, PlayerGroupAll(), false);

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTag, libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], false);

    TimerPause(libMapM_gv_mMGardensDragonDragonStatueActiveReminderTimer, true);

    return true;

}



trigger auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_Trigger = null;

int auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_lp_computerPlayer;



void libMapM_gf_MMGardensDragonActivateStatueForTeam (int lp_computerPlayer) {

    auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_lp_computerPlayer = lp_computerPlayer;



    if (auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_Trigger == null) {

        auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_Trigger = TriggerCreate("auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_Trigger, false, false);

}



bool auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_TriggerFunc (bool testConds, bool runActions) {

    int lp_computerPlayer = auto_libMapM_gf_MMGardensDragonActivateStatueForTeam_lp_computerPlayer;



    // Variable Declarations

    int lv_camp;

    int lv_scalingcamp;

    int lv_defender;

    int lv_i;

    int lv_p;



    // Automatic Variable Declarations

    int autoE85C092C_ae;

    const int autoE85C092C_ai = 1;

    playergroup auto57396F19_g;

    playergroup auto3B8E9622_g;

    playergroup autoA43C1C70_g;

    playergroup auto6728DB37_g;



    // Variable Initialization



    // Implementation

    UnitSetOwner(libMapM_gv_mMGardensDragonStatue, lp_computerPlayer, true);

    autoE85C092C_ae = libMapM_gv_mMGardensDragonDragonTowerCount;

    lv_i = 1;

    for ( ; ( (autoE85C092C_ai >= 0 && lv_i <= autoE85C092C_ae) || (autoE85C092C_ai < 0 && lv_i >= autoE85C092C_ae) ) ; lv_i += autoE85C092C_ai ) {

        UnitIssueOrder(libMapM_gv_mMGardensDragonDragonTowers[lv_i].lv_shrineUnit, OrderTargetingUnit(AbilityCommand("GardensObeliskActivate", 0), libMapM_gv_mMGardensDragonDragonTowers[lv_i].lv_shrineBeamTargetUnit), c_orderQueueReplace);

    }

    ActorRegionCreate(null, "DragonBeamStartRegion", libMapM_gv_mMGardensDragonSoundRegion);

    ActorRegionCreate(null, "DragonBeamLoopRegion", libMapM_gv_mMGardensDragonSoundRegion);

    libMapM_gv_mMGardensDragonSoundRegionActor = libNtve_gf_ActorLastCreated();

    UnitBehaviorAdd(libMapM_gv_mMGardensDragonStatue, "GenericVehicleBehaviorEmpty", libMapM_gv_mMGardensDragonStatue, 1);

    UnitBehaviorRemove(libMapM_gv_mMGardensDragonStatue, "DragonShrineDeactivated", 1);

    if ((lp_computerPlayer == libCore_gv_cOMPUTER_TeamOrder)) {

        AddUnitOfInterest(libMapM_gv_mMGardensDragonStatue, 2.0, 0.0, "ActivateDragonKnight", libNtve_ge_GoalTeam_Order, 0);

        AddUnitOfInterest(libMapM_gv_mMGardensDragonStatue, 6.0, 0.0, "DefendDragonStatue", libNtve_ge_GoalTeam_Chaos, 0);

    }

    else {

        AddUnitOfInterest(libMapM_gv_mMGardensDragonStatue, 2.0, 0.0, "ActivateDragonKnight", libNtve_ge_GoalTeam_Chaos, 0);

        AddUnitOfInterest(libMapM_gv_mMGardensDragonStatue, 6.0, 0.0, "DefendDragonStatue", libNtve_ge_GoalTeam_Order, 0);

    }

    UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateHighlightable, true);

    auto57396F19_g = PlayerGroupAlliance(c_playerGroupAlly, lp_computerPlayer);

    lv_p = -1;

    while (true) {

        	lv_p = PlayerGroupNextPlayer(auto57396F19_g, lv_p);

        	if (lv_p<0) { break; }

        	UnitSetStateForPlayer(libMapM_gv_mMGardensDragonStatue, c_unitStateTargetable, lv_p, true);

    }

    auto3B8E9622_g = PlayerGroupAlliance(c_playerGroupEnemy, lp_computerPlayer);

    lv_p = -1;

    while (true) {

        	lv_p = PlayerGroupNextPlayer(auto3B8E9622_g, lv_p);

        	if (lv_p<0) { break; }

        	UnitSetStateForPlayer(libMapM_gv_mMGardensDragonStatue, c_unitStateTargetable, lv_p, false);

    }

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTag, PlayerGroupAll(), false);

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTagAllyOwned, PlayerGroupAlliance(c_playerGroupAlly, lp_computerPlayer), true);

    autoA43C1C70_g = PlayerGroupAlliance(c_playerGroupAlly, lp_computerPlayer);

    lv_p = -1;

    while (true) {

        	lv_p = PlayerGroupNextPlayer(autoA43C1C70_g, lv_p);

        	if (lv_p<0) { break; }

        	if ((PlayerGroupHasPlayer(libCore_gv_activeHumanPlayers, lv_p) == true)) {

            if ((libMapM_gv_mapMechanicUsedTracker[lv_p].lv_dragonStatue == true)) {

                TextTagShow(libMapM_gv_mMGardensDragonStatueTextTagAllyOwned, libCore_gv_playerGroupFromPlayer[lv_p], false);

            }



        }



    }

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTagEnemyOwned, PlayerGroupAlliance(c_playerGroupEnemy, lp_computerPlayer), true);

    auto6728DB37_g = PlayerGroupAlliance(c_playerGroupEnemy, lp_computerPlayer);

    lv_p = -1;

    while (true) {

        	lv_p = PlayerGroupNextPlayer(auto6728DB37_g, lv_p);

        	if (lv_p<0) { break; }

        	if ((PlayerGroupHasPlayer(libCore_gv_activeHumanPlayers, lv_p) == true)) {

            if ((libMapM_gv_mapMechanicUsedTracker[lv_p].lv_dragonStatue == true)) {

                TextTagShow(libMapM_gv_mMGardensDragonStatueTextTagEnemyOwned, libCore_gv_playerGroupFromPlayer[lv_p], false);

            }



        }



    }

    TextTagShow(libMapM_gv_mMGardensDragonStatueTextTag, libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], false);

    TimerStart(libMapM_gv_mMGardensDragonDragonStatueActiveReminderTimer, 1.0, false, c_timeGame);

    return true;

}



fixed libMapM_gf_MMGardensDragonDragonDuration () {

    // Automatic Variable Declarations

    // Implementation

    return IntToFixed((FixedToInt(libMapM_gv_mMGardensDragonDragonKnightStartingTime_C)+2*FixedToInt(TimerGetElapsed(libGame_gv_gameTimer))/60));

}



bool libMapM_gf_MMGardensDragonObeliskFullyCaptured (unit lp_obeliskUnit) {

    // Variable Declarations

    int lv_obeliskIndex;



    // Automatic Variable Declarations

    int auto7B50E203_ae;



    // Variable Initialization



    // Implementation

    auto7B50E203_ae = libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C;

    lv_obeliskIndex = 1;

    for ( ; lv_obeliskIndex <= auto7B50E203_ae ; lv_obeliskIndex += 1 ) {

        if ((libMapM_gv_mMGardensDragonDragonTowers[lv_obeliskIndex].lv_shrineUnit == lp_obeliskUnit)) {

            return libGame_gf_CapturePointFullyCaptured(libMapM_gv_mMGardensDragonDragonTowers[lv_obeliskIndex].lv_captureBeaconIndex);

        }



    }

    return false;

}



void libMapM_gf_MMGardensDragonDragonHasEnteredArtHooks () {

    // Automatic Variable Declarations

    // Implementation

    libGame_gf_SpecialLightingEventStart("StormDragonFire", PlayerGroupAll(), 3.0);

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal MM1On");

    SoundPlayForPlayer(SoundLink("Event_Gardens_Dragon_Ambient_Start", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);

    SoundPlayForPlayer(SoundLink("Event_Gardens_Dragon_Ambient_Loop", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);

    libMapM_gv_mMGardensDragonAmbientSound = SoundLastPlayed();

}



void libMapM_gf_MMGardensDragonDragonHasLeftArtHooks () {

    // Automatic Variable Declarations

    // Implementation

    libGame_gf_SpecialLightingEventEnd("StormDragonFire", PlayerGroupAll(), 3.0);

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal MM1Off");

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal MM2On");

    SoundStop(libMapM_gv_mMGardensDragonAmbientSound, true);

    SoundPlayForPlayer(SoundLink("Event_Gardens_Dragon_Ambient_End", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);

}



trigger auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ_Trigger = null;



void libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ () {

    if (auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ_Trigger == null) {

        auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ_Trigger = TriggerCreate("auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "DS - Shrines Charge First", "Value", 1, 1);

    ConversationDataRun("DragonShire", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ_Trigger = null;



void libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ () {

    if (auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ_Trigger == null) {

        auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ_Trigger = TriggerCreate("auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "DS - Shrines Charge Repeat", "Value", 1, 1);

    ConversationDataRun("DragonShire", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ_Trigger = null;



void libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ () {

    if (auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ_Trigger == null) {

        auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ_Trigger = TriggerCreate("auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "DS - Shrines Spawn First", "Value", 1, 1);

    ConversationDataRun("DragonShire", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ_Trigger = null;



void libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ () {

    if (auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ_Trigger == null) {

        auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ_Trigger = TriggerCreate("auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "DS - Shrines Spawn Repeat", "Value", 1, 1);

    ConversationDataRun("DragonShire", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_Trigger = null;

int auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_lp_activeTeam;



void libMapM_gf_MMDragonballsTransmissionDragonCapturableQ (int lp_activeTeam) {

    auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_lp_activeTeam = lp_activeTeam;



    if (auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_Trigger == null) {

        auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_Trigger = TriggerCreate("auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_TriggerFunc (bool testConds, bool runActions) {

    int lp_activeTeam = auto_libMapM_gf_MMDragonballsTransmissionDragonCapturableQ_lp_activeTeam;



    // Variable Declarations

    playergroup lv_orderPlayerGroup;

    playergroup lv_chaosPlayerGroup;

    playergroup lv_observerPlayer;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_orderPlayerGroup = PlayerGroupEmpty();

    lv_chaosPlayerGroup = PlayerGroupEmpty();

    lv_observerPlayer = PlayerGroupEmpty();



    // Implementation

    return true;

}



trigger auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_Trigger = null;

int auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_lp_activeTeam;



void libMapM_gf_MMDragonballsTransmissionDragonActiveQ (int lp_activeTeam) {

    auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_lp_activeTeam = lp_activeTeam;



    if (auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_Trigger == null) {

        auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_Trigger = TriggerCreate("auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_TriggerFunc (bool testConds, bool runActions) {

    int lp_activeTeam = auto_libMapM_gf_MMDragonballsTransmissionDragonActiveQ_lp_activeTeam;



    // Variable Declarations

    playergroup lv_orderPlayerGroup;

    playergroup lv_chaosPlayerGroup;

    playergroup lv_observerPlayer;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_orderPlayerGroup = PlayerGroupEmpty();

    lv_chaosPlayerGroup = PlayerGroupEmpty();

    lv_observerPlayer = PlayerGroupEmpty();



    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    ConversationDataLineResetPlayers("DragonShire", ("Left"));

    ConversationDataLineResetPlayers("DragonShire", ("Right"));

    ConversationDataLineResetPlayers("DragonShire", ("Observer"));

    if ((lp_activeTeam == libGame_gv_teamOrderIndex_C)) {

        UserDataSetInt("MapVOEvent", "DS - Dragon - Left", "Value", 1, 1);

    }

    else {

        UserDataSetInt("MapVOEvent", "DS - Dragon - Right", "Value", 1, 1);

    }

    lv_orderPlayerGroup = libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false);

    lv_chaosPlayerGroup = libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false);

    lv_observerPlayer = libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer];

    ConversationDataLineSetPlayers("DragonShire", ("Left"), lv_orderPlayerGroup);

    ConversationDataLineSetPlayers("DragonShire", ("Right"), lv_chaosPlayerGroup);

    ConversationDataLineSetPlayers("DragonShire", ("Observer"), lv_observerPlayer);

    ConversationDataRun("DragonShire", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



trigger auto_libMapM_gf_MMDragonballsTransmissionDragonExpireQ_Trigger = null;



void libMapM_gf_MMDragonballsTransmissionDragonExpireQ () {

    if (auto_libMapM_gf_MMDragonballsTransmissionDragonExpireQ_Trigger == null) {

        auto_libMapM_gf_MMDragonballsTransmissionDragonExpireQ_Trigger = TriggerCreate("auto_libMapM_gf_MMDragonballsTransmissionDragonExpireQ_TriggerFunc");

    }



    TriggerExecute(auto_libMapM_gf_MMDragonballsTransmissionDragonExpireQ_Trigger, false, false);

}



bool auto_libMapM_gf_MMDragonballsTransmissionDragonExpireQ_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    TriggerQueueEnter();

    UserDataResetType("MapVOEvent");

    UserDataSetInt("MapVOEvent", "DS - Dragon Death", "Value", 1, 1);

    ConversationDataRun("DragonShire", PlayerGroupAll(), c_conversationSkipNone, false);

    libCore_gf_WaitForConversationToFinish();

    TriggerQueueExit();

    return true;

}



void libMapM_gf_AddVehicle (unit lp_vehicleUnit) {

    // Variable Declarations

    int lv_i;



    // Automatic Variable Declarations

    int autoB6D310BA_ae;

    const int autoB6D310BA_ai = 1;



    // Variable Initialization



    // Implementation

    if ((libMapM_gv_vehicle_VehicleCount >= libMapM_gv_vehicle_MaxNumberOfVehicles_C)) {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_8251E6F5"), true);

        return ;

    }



    autoB6D310BA_ae = libMapM_gv_vehicle_VehicleCount;

    lv_i = 1;

    for ( ; ( (autoB6D310BA_ai >= 0 && lv_i <= autoB6D310BA_ae) || (autoB6D310BA_ai < 0 && lv_i >= autoB6D310BA_ae) ) ; lv_i += autoB6D310BA_ai ) {

        if ((lp_vehicleUnit == libMapM_gv_vehicle[lv_i].lv_unit_Vehicle)) {

            TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_34348242"), true);

            return ;

        }



    }

    libMapM_gv_vehicle_VehicleCount += 1;

    libMapM_gv_vehicle[libMapM_gv_vehicle_VehicleCount].lv_unit_Vehicle = lp_vehicleUnit;

}



void libMapM_gf_RemoveVehicle (unit lp_vehicleUnit) {

    // Variable Declarations

    int lv_vehicleIndex;

    int lv_i;



    // Automatic Variable Declarations

    int auto16D03FA9_ae;



    // Variable Initialization

    lv_vehicleIndex = libMapM_gf_GetVehicleIndexOfUnit(lp_vehicleUnit);



    // Implementation

    if ((lv_vehicleIndex == 0)) {

        TextExpressionSetToken("Param/Expression/lib_MapM_BC366086", "A", UnitTypeGetName(UnitGetType(lp_vehicleUnit)));

        TriggerDebugOutput(1, TextExpressionAssemble("Param/Expression/lib_MapM_BC366086"), true);

        return ;

    }



    if ((libMapM_gv_vehicle_VehicleCount == 1)) {

        libMapM_gv_vehicle[lv_vehicleIndex].lv_unit_Vehicle = null;

        libMapM_gv_vehicle[lv_vehicleIndex].lv_unit_UnitInsideVehicle = null;

        libMapM_gv_vehicle[lv_vehicleIndex].lv_unit_LinkedVehicle = null;

        libMapM_gv_vehicle[lv_vehicleIndex].lv_player_PlayerControllingVehicle = 0;

        libMapM_gv_vehicle_VehicleCount -= 1;

    }

    else {

        auto16D03FA9_ae = libMapM_gv_vehicle_VehicleCount;

        lv_i = (lv_vehicleIndex + 1);

        for ( ; lv_i <= auto16D03FA9_ae ; lv_i += 1 ) {

            libMapM_gv_vehicle[(lv_i - 1)].lv_unit_Vehicle = libMapM_gv_vehicle[lv_i].lv_unit_Vehicle;

            libMapM_gv_vehicle[(lv_i - 1)].lv_unit_UnitInsideVehicle = libMapM_gv_vehicle[lv_i].lv_unit_UnitInsideVehicle;

            libMapM_gv_vehicle[(lv_i - 1)].lv_unit_LinkedVehicle = libMapM_gv_vehicle[lv_i].lv_unit_LinkedVehicle;

            libMapM_gv_vehicle[(lv_i - 1)].lv_player_PlayerControllingVehicle = libMapM_gv_vehicle[lv_i].lv_player_PlayerControllingVehicle;

        }

        libMapM_gv_vehicle[libMapM_gv_vehicle_VehicleCount].lv_unit_Vehicle = null;

        libMapM_gv_vehicle[libMapM_gv_vehicle_VehicleCount].lv_unit_UnitInsideVehicle = null;

        libMapM_gv_vehicle[libMapM_gv_vehicle_VehicleCount].lv_unit_LinkedVehicle = null;

        libMapM_gv_vehicle[libMapM_gv_vehicle_VehicleCount].lv_player_PlayerControllingVehicle = 0;

        libMapM_gv_vehicle_VehicleCount -= 1;

    }

}



void libMapM_gf_SwapVehicleForPlayer (unit lp_originalVehicle, unit lp_newVehicle) {

    // Variable Declarations

    int lv_originalVehicle_Index;

    int lv_newVehicle_Index;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_originalVehicle_Index = libMapM_gf_GetVehicleIndexOfUnit(lp_originalVehicle);

    lv_newVehicle_Index = libMapM_gf_GetVehicleIndexOfUnit(lp_newVehicle);



    // Implementation

    libMapM_gf_PlayerEntersVehicle(libMapM_gv_vehicle[lv_originalVehicle_Index].lv_unit_UnitInsideVehicle, libMapM_gv_vehicle[lv_newVehicle_Index].lv_unit_Vehicle);

    libMapM_gf_PlayerLeavesVehicle(lv_originalVehicle_Index);

}



void libMapM_gf_LinkVehicleToVehicle (unit lp_vehicleUnit_1, unit lp_vehicleUnit_2) {

    // Variable Declarations

    int lv_vehicle1_Index;

    int lv_vehicle2_Index;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_vehicle1_Index = libMapM_gf_GetVehicleIndexOfUnit(lp_vehicleUnit_1);

    lv_vehicle2_Index = libMapM_gf_GetVehicleIndexOfUnit(lp_vehicleUnit_2);



    // Implementation

    if (((lv_vehicle1_Index == 0) || (lv_vehicle2_Index == 0))) {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_1A843F28"), true);

        return ;

    }



    libMapM_gv_vehicle[lv_vehicle1_Index].lv_unit_LinkedVehicle = lp_vehicleUnit_2;

    libMapM_gv_vehicle[lv_vehicle2_Index].lv_unit_LinkedVehicle = lp_vehicleUnit_1;

}



void libMapM_gf_PlayerEntersVehicle (unit lp_unitEnteringVehicle, unit lp_vehicleUnit) {

    // Variable Declarations

    int lv_index;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_index = libMapM_gf_GetVehicleIndexOfUnit(lp_vehicleUnit);



    // Implementation

    libMapM_gv_vehicle[lv_index].lv_unit_UnitInsideVehicle = lp_unitEnteringVehicle;

    libMapM_gv_vehicle[lv_index].lv_player_PlayerControllingVehicle = UnitGetOwner(lp_unitEnteringVehicle);

}



void libMapM_gf_PlayerLeavesVehicle (int lp_vehicleIndex) {

    // Automatic Variable Declarations

    // Implementation

    libMapM_gv_vehicle[lp_vehicleIndex].lv_unit_UnitInsideVehicle = null;

    libMapM_gv_vehicle[lp_vehicleIndex].lv_player_PlayerControllingVehicle = 0;

}



int libMapM_gf_GetVehicleIndexOfUnit (unit lp_vehicleUnit) {

    // Variable Declarations

    int lv_i;



    // Automatic Variable Declarations

    int autoA7F701F9_ae;

    const int autoA7F701F9_ai = 1;



    // Variable Initialization



    // Implementation

    autoA7F701F9_ae = libMapM_gv_vehicle_VehicleCount;

    lv_i = 1;

    for ( ; ( (autoA7F701F9_ai >= 0 && lv_i <= autoA7F701F9_ae) || (autoA7F701F9_ai < 0 && lv_i >= autoA7F701F9_ae) ) ; lv_i += autoA7F701F9_ai ) {

        if ((lp_vehicleUnit == libMapM_gv_vehicle[lv_i].lv_unit_Vehicle)) {

            return lv_i;

        }



    }

    return 0;

}



// Triggers

//--------------------------------------------------------------------------------------------------

// Trigger: #Include Map Mechanics

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_IncludeMapMechanics_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_IncludeMapMechanics_Init () {

    libMapM_gt_IncludeMapMechanics = TriggerCreate("libMapM_gt_IncludeMapMechanics_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Summoner Minion Laner Scaling

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_SummonerMinionLanerScaling_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unit lv_summoner;

    int lv_team;

    int lv_campIndex;

    int lv_lane;

    int lv_summonIndex;

    int lv_waypoint;



    // Automatic Variable Declarations

    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((UnitGetType(EventUnitCreatedUnit()) == "MercSummonerLanerMinion"))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    UnitXPAddXP(EventUnitCreatedUnit(), null, libGame_gv_scalingTicks);

    lv_summoner = UnitGroupUnit(UnitGroup("MercSummonerLaner", UnitGetOwner(EventUnitCreatedUnit()), RegionCircle(UnitGetPosition(EventUnitCreatedUnit()), 6.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), 1);

    if ((lv_summoner != null)) {

        lv_summonIndex = FixedToInt(UnitGetCustomValue(lv_summoner, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_SummonerSummonIndex)));

        if ((lv_summonIndex < 2)) {

            UnitSetCustomValue(lv_summoner, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_SummonerSummonIndex), IntToFixed((lv_summonIndex + 1)));

            lv_campIndex = FixedToInt(UnitGetCustomValue(lv_summoner, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_JungleLanerCreepCampIndex)));

            lv_team = libGame_gf_TeamNumberOfPlayer(UnitGetOwner(lv_summoner));

            lv_lane = libMapM_gv_jungleCreepCamps[lv_campIndex].lv_mercLaneLastSpawnedIn[lv_team];

            lv_waypoint = libMapM_gv_jungleCreepCamps[lv_campIndex].lv_mercSpawnFirstWaypointIndex[lv_team];

            libAIAI_gf_MinionAIStartMinionAI(-1, EventUnitCreatedUnit(), lv_lane, lv_waypoint, true, false, false, 0, false);

            return true;

        }



    }



    libGame_gf_CalculateSpawnedMinionGoalPoints(UnitGetOwner(EventUnitCreatedUnit()), UnitGetPosition(EventUnitCreatedUnit()));

    libAIAI_gf_MinionAIStartMinionAI(-1, EventUnitCreatedUnit(), libGame_gv_spawnedMinionLane, libGame_gv_spawnedMinionFirstWaypointIndex, false, true, false, libGame_gf_EnemyTeam(libGame_gf_TeamNumberOfPlayer(UnitGetOwner(EventUnitCreatedUnit()))), false);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_SummonerMinionLanerScaling_Init () {

    libMapM_gt_SummonerMinionLanerScaling = TriggerCreate("libMapM_gt_SummonerMinionLanerScaling_Func");

    TriggerEnable(libMapM_gt_SummonerMinionLanerScaling, false);

    TriggerAddEventUnitCreated(libMapM_gt_SummonerMinionLanerScaling, null, null, null);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Defender Doubloons

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampDefenderDoubloons_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_campType;

    int lv_rank;

    int lv_rankToStartScaling;



    // Automatic Variable Declarations

    int auto4811CEB5_ae;

    const int auto4811CEB5_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_campType = (libMapM_ge_JungleCampDefenderTypes_Doubloons);

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_defendersCoweronDeath = false;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_aIGoalLink = "MercenaryCampDoubloon";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_initialSpawnDelay = libMapM_gv_genericMercCampInitialSpawnDelay_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_respawnTime = 150.0;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_numberOfCreeps = 2;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[1] = "SkeletalPirate";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[2] = "SkeletalPirate";

    libMapM_gf_DataInitializeScalingDataForDefender(libMapM_ge_JungleCampDefenderTypes_Doubloons, "DoubloonDefenderScaling");

    lv_rankToStartScaling = 2;

    auto4811CEB5_ae = (lv_rankToStartScaling - 1);

    lv_rank = 0;

    for ( ; ( (auto4811CEB5_ai >= 0 && lv_rank <= auto4811CEB5_ae) || (auto4811CEB5_ai < 0 && lv_rank >= auto4811CEB5_ae) ) ; lv_rank += auto4811CEB5_ai ) {

        libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 5;

    }

    lv_rank = lv_rankToStartScaling;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 6;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 7;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 7;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 8;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 8;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 9;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 9;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 10;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 10;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 10;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 11;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 11;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 11;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 12;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 12;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 12;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampDefenderDoubloons_Init () {

    libMapM_gt_DataJungleCampDefenderDoubloons = TriggerCreate("libMapM_gt_DataJungleCampDefenderDoubloons_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Defender Siege Giants

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampDefenderSiegeGiants_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_campType;

    int lv_rank;

    int lv_rankToStartScaling;



    // Automatic Variable Declarations

    int autoAADE6A3C_ae;

    const int autoAADE6A3C_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_campType = (libMapM_ge_JungleCampDefenderTypes_SiegeGiants);

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_aIGoalLink = "MercenaryCampSiegeGiants";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_defendersCoweronDeath = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_initialSpawnDelay = libMapM_gv_genericMercCampInitialSpawnDelay_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_respawnTime = 180.0;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_numberOfCreeps = 2;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[1] = "MercDefenderSiegeGiant";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_defenderCoweringUnit[1] = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[2] = "MercDefenderSiegeGiant";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_defenderCoweringUnit[2] = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_xPAwardForCapture = libCore_gv_data_XP_SiegeGiantCapture_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campTypeMinimapLabel = StringExternal("Param/Value/lib_MapM_CD592AD9");

    libMapM_gf_DataInitializeScalingDataForDefender(libMapM_ge_JungleCampDefenderTypes_SiegeGiants, "SiegeGiantDefenderScaling");

    lv_rankToStartScaling = 2;

    autoAADE6A3C_ae = (lv_rankToStartScaling - 1);

    lv_rank = 0;

    for ( ; ( (autoAADE6A3C_ai >= 0 && lv_rank <= autoAADE6A3C_ae) || (autoAADE6A3C_ai < 0 && lv_rank >= autoAADE6A3C_ae) ) ; lv_rank += autoAADE6A3C_ai ) {

        libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 6;

    }

    lv_rank = lv_rankToStartScaling;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 7;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 8;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 8;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 9;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 9;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 10;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 10;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 11;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 11;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 11;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 12;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 12;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 12;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 18;

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampDefenderSiegeGiants_Init () {

    libMapM_gt_DataJungleCampDefenderSiegeGiants = TriggerCreate("libMapM_gt_DataJungleCampDefenderSiegeGiants_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Defender Knights

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampDefenderKnights_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_campType;

    int lv_rank;

    int lv_rankToStartScaling;



    // Automatic Variable Declarations

    int auto2880C3C4_ae;

    const int auto2880C3C4_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_campType = (libMapM_ge_JungleCampDefenderTypes_Knights);

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_aIGoalLink = "MercenaryCampKnights";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_defendersCoweronDeath = false;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_initialSpawnDelay = libMapM_gv_genericMercCampInitialSpawnDelay_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_respawnTime = 240.0;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_numberOfCreeps = 4;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[1] = "MercDefenderMeleeKnight";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[2] = "MercDefenderMeleeKnight";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[3] = "MercDefenderMeleeKnight";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[4] = "MercDefenderRangedMage";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_xPAwardForCapture = libCore_gv_data_XP_OgreCapture_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campTypeMinimapLabel = StringExternal("Param/Value/lib_MapM_EC6BA293");

    libMapM_gf_DataInitializeScalingDataForDefender(libMapM_ge_JungleCampDefenderTypes_Knights, "OgreDefenderScaling");

    lv_rankToStartScaling = 2;

    auto2880C3C4_ae = (lv_rankToStartScaling - 1);

    lv_rank = 0;

    for ( ; ( (auto2880C3C4_ai >= 0 && lv_rank <= auto2880C3C4_ae) || (auto2880C3C4_ai < 0 && lv_rank >= auto2880C3C4_ae) ) ; lv_rank += auto2880C3C4_ai ) {

        libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 11;

    }

    lv_rank = lv_rankToStartScaling;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 12;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 13;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 18;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 18;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 18;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 19;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 19;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 19;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 20;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 20;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 20;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 21;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 21;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 21;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 22;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 22;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 22;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 23;

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampDefenderKnights_Init () {

    libMapM_gt_DataJungleCampDefenderKnights = TriggerCreate("libMapM_gt_DataJungleCampDefenderKnights_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Defender Grave Golem

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampDefenderGraveGolem_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_campType;

    int lv_rank;

    int lv_rankToStartScaling;



    // Automatic Variable Declarations

    int autoB335DA30_ae;

    const int autoB335DA30_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_campType = (libMapM_ge_JungleCampDefenderTypes_GraveGolem);

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campIsSoloable = true;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_defendersCoweronDeath = false;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_aIGoalLink = "MercenaryCampGraveGolem";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_initialSpawnDelay = libMapM_gv_genericMercBossCampInitialSpawnDelay_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_respawnTime = 300.0;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_numberOfCreeps = 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_creepUnitTypes[1] = "JungleGraveGolemDefender";

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_xPAwardForCapture = libCore_gv_data_XP_GraveGolemCapture_C;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campIsElite = true;

    if ((libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campTypeMinimapLabel == null)) {

        libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campTypeMinimapLabel = StringExternal("Param/Value/lib_MapM_E13C6C4C");

    }



    libMapM_gf_DataInitializeScalingDataForDefender(libMapM_ge_JungleCampDefenderTypes_GraveGolem, "GraveGolemDefenderScaling");

    lv_rankToStartScaling = 2;

    autoB335DA30_ae = (lv_rankToStartScaling - 1);

    lv_rank = 0;

    for ( ; ( (autoB335DA30_ai >= 0 && lv_rank <= autoB335DA30_ae) || (autoB335DA30_ai < 0 && lv_rank >= autoB335DA30_ae) ) ; lv_rank += autoB335DA30_ai ) {

        libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 14;

    }

    lv_rank = lv_rankToStartScaling;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 15;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 16;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 17;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 18;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 18;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 19;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 19;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 19;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 20;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 20;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 20;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 21;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 21;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 21;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 22;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 22;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 22;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 23;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 23;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 23;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 24;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 24;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 24;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 25;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 25;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 25;

    lv_rank += 1;

    libMapM_gv_dataJungleCampDefenderData[lv_campType].lv_campLevel[lv_rank] = 26;

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampDefenderGraveGolem_Init () {

    libMapM_gt_DataJungleCampDefenderGraveGolem = TriggerCreate("libMapM_gt_DataJungleCampDefenderGraveGolem_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Merc Siege Giants

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampMercSiegeGiants_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_campType;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_campType = (libMapM_ge_JungleCampMercTypes_SiegeGiants);

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_numberOfMinionsSpawned = 2;

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_spawnedMinionUnitTypes[1] = "MercLanerSiegeGiant";

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_spawnedMinionUnitTypes[2] = "MercLanerSiegeGiant";

    libMapM_gf_DataInitializeScalingDataForMerc(libMapM_ge_JungleCampMercTypes_SiegeGiants, "SiegeGiantMercScaling");

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampMercSiegeGiants_Init () {

    libMapM_gt_DataJungleCampMercSiegeGiants = TriggerCreate("libMapM_gt_DataJungleCampMercSiegeGiants_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Merc Ogres

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampMercOgres_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_campType;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_campType = (libMapM_ge_JungleCampMercTypes_Ogres);

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_numberOfMinionsSpawned = 4;

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_spawnedMinionUnitTypes[1] = "MercLanerMeleeKnight";

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_spawnedMinionUnitTypes[2] = "MercLanerMeleeKnight";

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_spawnedMinionUnitTypes[3] = "MercLanerMeleeKnight";

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_spawnedMinionUnitTypes[4] = "MercLanerRangedMage";

    libMapM_gf_DataInitializeScalingDataForMerc(libMapM_ge_JungleCampMercTypes_Ogres, "OgreMercScaling");

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampMercOgres_Init () {

    libMapM_gt_DataJungleCampMercOgres = TriggerCreate("libMapM_gt_DataJungleCampMercOgres_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Merc Grave Golem

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampMercGraveGolem_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_campType;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_campType = (libMapM_ge_JungleCampMercTypes_GraveGolem);

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_numberOfMinionsSpawned = 1;

    libMapM_gv_dataJungleCampMercData[lv_campType].lv_spawnedMinionUnitTypes[1] = "JungleGraveGolemLaner";

    libMapM_gf_DataInitializeScalingDataForMerc(libMapM_ge_JungleCampMercTypes_GraveGolem, "GraveGolemLanerScaling");

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampMercGraveGolem_Init () {

    libMapM_gt_DataJungleCampMercGraveGolem = TriggerCreate("libMapM_gt_DataJungleCampMercGraveGolem_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Defender Data

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampDefenderData_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libMapM_gt_DataJungleCampDefenderKnights, true, true);

    TriggerExecute(libMapM_gt_DataJungleCampDefenderGraveGolem, true, true);

    TriggerExecute(libMapM_gt_DataJungleCampDefenderDoubloons, true, true);

    TriggerExecute(libMapM_gt_DataJungleCampDefenderSiegeGiants, true, true);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampDefenderData_Init () {

    libMapM_gt_DataJungleCampDefenderData = TriggerCreate("libMapM_gt_DataJungleCampDefenderData_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Data - Jungle Camp Merc Data

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DataJungleCampMercData_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libMapM_gt_DataJungleCampMercSiegeGiants, true, true);

    TriggerExecute(libMapM_gt_DataJungleCampMercOgres, true, true);

    TriggerExecute(libMapM_gt_DataJungleCampMercGraveGolem, true, true);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DataJungleCampMercData_Init () {

    libMapM_gt_DataJungleCampMercData = TriggerCreate("libMapM_gt_DataJungleCampMercData_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Initialize Jungle Camps

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_InitializeJungleCamps_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_i;

    int lv_camp;

    string lv_actorMessageString;

    fixed lv_capturePointRadius;



    // Automatic Variable Declarations

    int auto7E730838_ae;

    const int auto7E730838_ai = 1;

    playergroup autoFBAAD7A0_g;



    // Variable Initialization

    lv_actorMessageString = "";

    lv_capturePointRadius = libMapM_gv_bALJungleCampCaptureRadius;



    // Conditions

    if (testConds) {

        if (!((libCore_gv_sYSJungleCreepCamps == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libCore_gf_DataLootContentLoadBannerDataIntoIndex("NeutralMercCamp", libCore_gv_cOMPUTER_Hostile);

    auto7E730838_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_camp = 1;

    for ( ; ( (auto7E730838_ai >= 0 && lv_camp <= auto7E730838_ae) || (auto7E730838_ai < 0 && lv_camp >= auto7E730838_ae) ) ; lv_camp += auto7E730838_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_camp].lv_stateIsEnabled == false)) {

            break;

        }



        libMapM_gf_JungleInitializeDefenderData(lv_camp);

        if ((libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_MercCamp)) {

            libMapM_gf_JungleInitializeMercCampData(lv_camp);

        }



        if ((libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_DoubloonCamp)) {

            libMapM_gf_JungleInitializeDoubloonCampData(lv_camp);

        }



        if ((libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_DoubloonSmallCamp)) {

            libMapM_gf_JungleInitializeDoubloonSmallCampData(lv_camp);

            lv_capturePointRadius = 1.7;

        }



        if ((libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_TryMeCamp)) {

            libMapM_gf_JungleInitializeTryMeCampData(lv_camp);

        }



        TriggerAddEventTimer(libMapM_gt_JungleCreepCampRespawnTimerExpires, libMapM_gv_jungleCreepCamps[lv_camp].lv_stateCreepBirthTimer);

        libNtve_gf_CreateUnitsWithDefaultFacing(1, "TownMercCampCaptureBeacon", c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_Neutral, libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampCaptainSpawnPoint, null);

        if ((libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCapturePointSplatModel != null)) {

            UnitSetFacing(UnitLastCreated(), PointGetFacing(libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampCaptainSpawnPoint), 0.0);

            lv_actorMessageString = ("ModelSwap " + (libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCapturePointSplatModel));

            ActorSendAsText(libNtve_gf_MainActorofUnit(UnitLastCreated()), StringToText(lv_actorMessageString));

        }



        libMapM_gv_jungleCreepCamps[lv_camp].lv_captureCircleOfPowerUnit = UnitLastCreated();

        libGame_gf_CapturePointCreate(UnitLastCreated(), lv_capturePointRadius, libMapM_gv_bALJungleCampCaptureTime, 0.0, libGame_ge_CapturePointDecay_DoNotDecay, libGame_ge_CapturePointDecay_Owner, false);

        libMapM_gv_jungleCreepCamps[lv_camp].lv_captureCapturePointIndex = libGame_gf_LastCreatedCapturePoint();

        libGame_gf_CapturePointDisable(libMapM_gv_jungleCreepCamps[lv_camp].lv_captureCapturePointIndex);

        libMapM_gf_JungleInitializeCreepCamp(lv_camp);

        autoFBAAD7A0_g = PlayerGroupAll();

        lv_i = -1;

        while (true) {

            	lv_i = PlayerGroupNextPlayer(autoFBAAD7A0_g, lv_i);

            	if (lv_i<0) { break; }

            	VisRevealArea(lv_i, RegionCircle(UnitGetPosition(libMapM_gv_jungleCreepCamps[lv_camp].lv_captureCircleOfPowerUnit), 0.75), 0.125, false);

        }

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_InitializeJungleCamps_Init () {

    libMapM_gt_InitializeJungleCamps = TriggerCreate("libMapM_gt_InitializeJungleCamps_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Start Jungle Camp Timers

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_StartJungleCampTimers_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itCamp;



    // Automatic Variable Declarations

    int auto0E6C078D_ae;

    const int auto0E6C078D_ai = 1;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((libCore_gv_sYSJungleCreepCamps == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    auto0E6C078D_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; ( (auto0E6C078D_ai >= 0 && lv_itCamp <= auto0E6C078D_ae) || (auto0E6C078D_ai < 0 && lv_itCamp >= auto0E6C078D_ae) ) ; lv_itCamp += auto0E6C078D_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_stateIsEnabled == true)) {

            TimerStart(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_stateCreepBirthTimer, (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_defenderInitialSpawnDelay - libMapM_gv_bALJungleBirthDelay), false, c_timeGame);

            TimerStart(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_stateCreepRespawnTimer, libMapM_gv_jungleCreepCamps[lv_itCamp].lv_defenderInitialSpawnDelay, false, c_timeGame);

        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_StartJungleCampTimers_Init () {

    libMapM_gt_StartJungleCampTimers = TriggerCreate("libMapM_gt_StartJungleCampTimers_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Creep Camp Respawn Timer Expires

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleCreepCampRespawnTimerExpires_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itCamp;



    // Automatic Variable Declarations

    int autoAD45B80E_ae;

    const int autoAD45B80E_ai = 1;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((libCore_gv_sYSJungleCreepCamps == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((libMapM_gv_jungleCreepCampsInitialized == false)) {

        libMapM_gv_jungleCreepCampsInitialized = true;

        TriggerEnable(libAIAI_gt_DefenderAICreepsAttacked, true);

        TriggerEnable(libAIAI_gt_DefenderAIDefenderAILogic, true);

        TriggerEnable(libMapM_gt_JungleDefendersBeginFighting, true);

        TriggerEnable(libMapM_gt_JungleDefendersEndFighting, true);

        TriggerEnable(libMapM_gt_JungleAllDefendersKilled, true);

        if ((TriggerIsEnabled(libStEx_gt_SE_TrainingModeTipMercCamps) == true)) {

            TriggerExecute(libStEx_gt_SE_TrainingModeTipMercCamps, true, false);

        }



    }



    autoAD45B80E_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; ( (autoAD45B80E_ai >= 0 && lv_itCamp <= autoAD45B80E_ae) || (autoAD45B80E_ai < 0 && lv_itCamp >= autoAD45B80E_ae) ) ; lv_itCamp += autoAD45B80E_ai ) {

        if ((EventTimer() == libMapM_gv_jungleCreepCamps[lv_itCamp].lv_stateCreepBirthTimer)) {

            break;

        }



    }

    if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit == null) && ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_GraveGolem) || (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp1) || (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp2) || (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampDefenderType == libMapM_ge_JungleCampDefenderTypes_BossCamp3))) {

        DialogControlSetEnabled(libUIUI_gv_uIDebugPanel.lv_spawnCreepCampsButton, PlayerGroupAll(), false);

    }



    if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit == null)) {

        libMapM_gf_JungleRespawnCreepsForCamp(lv_itCamp);

        return true;

    }



    if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState == libMapM_ge_JungleCampStates_Hibernating)) {

        libMapM_gf_JungleTransitionCampIntoState(lv_itCamp, libMapM_ge_JungleCampStates_HibernatingReadyToRespawn);

    }

    else {

        libMapM_gf_JungleRespawnCreepsForCamp(lv_itCamp);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleCreepCampRespawnTimerExpires_Init () {

    libMapM_gt_JungleCreepCampRespawnTimerExpires = TriggerCreate("libMapM_gt_JungleCreepCampRespawnTimerExpires_Func");

    TriggerEnable(libMapM_gt_JungleCreepCampRespawnTimerExpires, false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Respawn Timer Text Tag Countdown

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleRespawnTimerTextTagCountdown_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_camp;



    // Automatic Variable Declarations

    int autoF4FFF937_ae;

    const int autoF4FFF937_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    autoF4FFF937_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_camp = 1;

    for ( ; ( (autoF4FFF937_ai >= 0 && lv_camp <= autoF4FFF937_ae) || (autoF4FFF937_ai < 0 && lv_camp >= autoF4FFF937_ae) ) ; lv_camp += autoF4FFF937_ai ) {

        libMapM_gf_JungleUpdateTextTagForCamp(lv_camp);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleRespawnTimerTextTagCountdown_Init () {

    libMapM_gt_JungleRespawnTimerTextTagCountdown = TriggerCreate("libMapM_gt_JungleRespawnTimerTextTagCountdown_Func");

    TriggerEnable(libMapM_gt_JungleRespawnTimerTextTagCountdown, false);

    TriggerAddEventTimePeriodic(libMapM_gt_JungleRespawnTimerTextTagCountdown, 1.0, c_timeGame);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Defenders Begin Fighting

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleDefendersBeginFighting_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_defenderAIIndex;

    int lv_testIndex;

    int lv_camp;



    // Automatic Variable Declarations

    const int auto8BE37AE4_ae = libMapM_gv_jungleMaxCamps;

    const int auto8BE37AE4_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_defenderAIIndex = libGame_gf_JungleDefenderAIDefendersBeginFightingIndex();

    lv_testIndex = 1;

    for ( ; ( (auto8BE37AE4_ai >= 0 && lv_testIndex <= auto8BE37AE4_ae) || (auto8BE37AE4_ai < 0 && lv_testIndex >= auto8BE37AE4_ae) ) ; lv_testIndex += auto8BE37AE4_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_testIndex].lv_aIDefenderAIIndex == lv_defenderAIIndex)) {

            lv_camp = lv_testIndex;

            break;

        }



    }

    if ((lv_camp > 0) && (libMapM_gv_jungleCreepCamps[lv_camp].lv_aIState != libMapM_ge_JungleCampStates_Hibernating) && (libMapM_gv_jungleCreepCamps[lv_camp].lv_aIState != libMapM_ge_JungleCampStates_HibernatingReadyToRespawn)) {

        libMapM_gf_JungleTransitionCampIntoState(lv_camp, libMapM_ge_JungleCampStates_Busy);

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleDefendersBeginFighting_Init () {

    libMapM_gt_JungleDefendersBeginFighting = TriggerCreate("libMapM_gt_JungleDefendersBeginFighting_Func");

    TriggerEnable(libMapM_gt_JungleDefendersBeginFighting, false);

    libGame_gf_JungleDefenderAIDefendersBeginFighting(libMapM_gt_JungleDefendersBeginFighting);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Defenders End Fighting

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleDefendersEndFighting_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_defenderAIIndex;

    int lv_testIndex;

    int lv_camp;



    // Automatic Variable Declarations

    const int autoCE3EC7FE_ae = libMapM_gv_jungleMaxCamps;

    const int autoCE3EC7FE_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_defenderAIIndex = libGame_gf_JungleDefenderAIDefendersEndFightingIndex();

    lv_testIndex = 1;

    for ( ; ( (autoCE3EC7FE_ai >= 0 && lv_testIndex <= autoCE3EC7FE_ae) || (autoCE3EC7FE_ai < 0 && lv_testIndex >= autoCE3EC7FE_ae) ) ; lv_testIndex += autoCE3EC7FE_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_testIndex].lv_aIDefenderAIIndex == lv_defenderAIIndex)) {

            lv_camp = lv_testIndex;

            break;

        }



    }

    if ((lv_camp > 0) && (libMapM_gv_jungleCreepCamps[lv_camp].lv_aIState != libMapM_ge_JungleCampStates_Hibernating) && (libMapM_gv_jungleCreepCamps[lv_camp].lv_aIState != libMapM_ge_JungleCampStates_HibernatingReadyToRespawn)) {

        libMapM_gf_JungleTransitionCampIntoState(lv_camp, libMapM_ge_JungleCampStates_Idle);

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleDefendersEndFighting_Init () {

    libMapM_gt_JungleDefendersEndFighting = TriggerCreate("libMapM_gt_JungleDefendersEndFighting_Func");

    TriggerEnable(libMapM_gt_JungleDefendersEndFighting, false);

    libGame_gf_JungleDefenderAIDefendersEndFighting(libMapM_gt_JungleDefendersEndFighting);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - All Defenders Killed

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleAllDefendersKilled_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_defenderAIIndex;

    int lv_testIndex;

    int lv_camp;

    int lv_owner;

    int lv_killingUnitTeam;

    int lv_capturingPlayerIfNoCapturePoint;



    // Automatic Variable Declarations

    const int auto1D994751_ae = libMapM_gv_jungleMaxCamps;

    const int auto1D994751_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_defenderAIIndex = libGame_gf_JungleDefenderAIAllDefendersKilledIndex();

    lv_testIndex = 1;

    for ( ; ( (auto1D994751_ai >= 0 && lv_testIndex <= auto1D994751_ae) || (auto1D994751_ai < 0 && lv_testIndex >= auto1D994751_ae) ) ; lv_testIndex += auto1D994751_ai ) {

        if ((libMapM_gv_jungleCreepCamps[lv_testIndex].lv_aIDefenderAIIndex == lv_defenderAIIndex)) {

            lv_camp = lv_testIndex;

            break;

        }



    }

    if ((lv_camp > 0)) {

        if (((libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_MercCamp) || (libMapM_gv_jungleCreepCamps[lv_camp].lv_mapDataCampType == libMapM_ge_JungleCampTypes_DoubloonSmallCamp))) {

            if ((libMapM_gv_jungleCreepCamps[lv_camp].lv_defenderCampInstantlyGrantsReward == false)) {

                libMapM_gf_JungleTurnOnCampCaptureBeacon(lv_camp);

            }

            else {

                lv_killingUnitTeam = libGame_gf_TeamNumberOfPlayer(libGame_gf_JungleDefenderAIAllDefendersKilledKillingPlayer());

                if ((lv_killingUnitTeam == libGame_gv_teamOrderIndex_C)) {

                    lv_capturingPlayerIfNoCapturePoint = libCore_gv_cOMPUTER_TeamOrder;

                }

                else {

                    if ((lv_killingUnitTeam == libGame_gv_teamChaosIndex_C)) {

                        lv_capturingPlayerIfNoCapturePoint = libCore_gv_cOMPUTER_TeamChaos;

                    }



                }

                libMapM_gf_JungleGrantCaptureRewards(lv_camp, lv_capturingPlayerIfNoCapturePoint, false);

                UnitSetOwner(libMapM_gv_jungleCreepCamps[lv_camp].lv_campIconUnit, lv_capturingPlayerIfNoCapturePoint, true);

            }

        }

        else {

            lv_killingUnitTeam = libGame_gf_TeamNumberOfPlayer(libGame_gf_JungleDefenderAIAllDefendersKilledKillingPlayer());

            if (((lv_killingUnitTeam == libGame_gv_teamOrderIndex_C) || (lv_killingUnitTeam == libGame_gv_teamChaosIndex_C))) {

                libMapM_gf_JungleGrantCaptureRewards(lv_camp, libGame_gv_teams[lv_killingUnitTeam].lv_nPCPlayer, false);

            }



        }

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleAllDefendersKilled_Init () {

    libMapM_gt_JungleAllDefendersKilled = TriggerCreate("libMapM_gt_JungleAllDefendersKilled_Func");

    TriggerEnable(libMapM_gt_JungleAllDefendersKilled, false);

    libGame_gf_JungleDefenderAIAllDefendersKilled(libMapM_gt_JungleAllDefendersKilled);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Hibernate Camps Start

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleHibernateCampsStart_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gf_JungleStartHibernateCamps();

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleHibernateCampsStart_Init () {

    libMapM_gt_JungleHibernateCampsStart = TriggerCreate("libMapM_gt_JungleHibernateCampsStart_Func");

    libGame_gf_MapDragonShireDragonActivated(libMapM_gt_JungleHibernateCampsStart);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Hibernate Camps End

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleHibernateCampsEnd_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gf_JungleStopHibernateCamps();

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleHibernateCampsEnd_Init () {

    libMapM_gt_JungleHibernateCampsEnd = TriggerCreate("libMapM_gt_JungleHibernateCampsEnd_Func");

    libGame_gf_MapDragonShireDragonEnds(libMapM_gt_JungleHibernateCampsEnd);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Hibernate Defenders That Leash

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleHibernateDefendersThatLeash_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_camp;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_camp = libMapM_gf_JungleGetCampIndexFromDefenderIndex(libGame_gf_JungleDefenderAIDefendersEndFightingIndex());



    // Conditions

    if (testConds) {

        if (!(((libMapM_gv_jungleAllCampsShouldBeHibernating == true) || (libMapM_gv_jungleCreepCamps[lv_camp].lv_statePersonalHiberationisEnabled == true)))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((lv_camp > 0)) {

        libMapM_gf_JungleTransitionCampIntoState(lv_camp, libMapM_ge_JungleCampStates_Hibernating);

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleHibernateDefendersThatLeash_Init () {

    libMapM_gt_JungleHibernateDefendersThatLeash = TriggerCreate("libMapM_gt_JungleHibernateDefendersThatLeash_Func");

    libGame_gf_JungleDefenderAIDefendersEndFighting(libMapM_gt_JungleHibernateDefendersThatLeash);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Hibernate Defenders That Just Spawned

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleHibernateDefendersThatJustSpawned_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!(((libMapM_gv_jungleAllCampsShouldBeHibernating == true) || (libMapM_gv_jungleCreepCamps[libGame_gf_JungleCampSpawnedIndex()].lv_statePersonalHiberationisEnabled == true)))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gf_JungleTransitionCampIntoState(libGame_gf_JungleCampSpawnedIndex(), libMapM_ge_JungleCampStates_Hibernating);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleHibernateDefendersThatJustSpawned_Init () {

    libMapM_gt_JungleHibernateDefendersThatJustSpawned = TriggerCreate("libMapM_gt_JungleHibernateDefendersThatJustSpawned_Func");

    libGame_gf_JungleCampSpawned(libMapM_gt_JungleHibernateDefendersThatJustSpawned);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Camp Ownership Change

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleCampOwnershipChange_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itCamp;

    int lv_index;

    int lv_owner;

    bool lv_hasMercLordTalent;

    int lv_team;



    // Automatic Variable Declarations

    int auto1EEBCBD3_ae;



    // Variable Initialization

    lv_index = libGame_gf_CapturePointChangesOwnerCapturePointIndex();

    lv_owner = libGame_gf_CapturePointChangesOwnerOwner();

    lv_hasMercLordTalent = libGame_gf_CapturePointChangesOwnerHasMercLordTalent();



    // Actions

    if (!runActions) {

        return true;

    }



    auto1EEBCBD3_ae = libMapM_gv_jungleNumberOfCreepCamps;

    lv_itCamp = 1;

    for ( ; lv_itCamp <= auto1EEBCBD3_ae ; lv_itCamp += 1 ) {

        if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_captureCapturePointIndex == lv_index)) {

            libGame_gf_SendEventMercCampCaptured(lv_itCamp, lv_owner, libGame_gf_CapturePointChangesOwnerCapturingPlayers());

            if ((lv_owner == libCore_gv_cOMPUTER_TeamOrder)) {

                libNtve_gf_SendActorMessageToGameRegion(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataDefenderLeashRegion, "Signal OwnerOrder");

                UnitSetOwner(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit, libCore_gv_cOMPUTER_TeamOrder, true);

                UnitSetOwner(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campOwnershipFlagUnit, libCore_gv_cOMPUTER_TeamOrder, true);

                libMapM_gf_JungleTurnOffCampCaptureBeacon(lv_itCamp, libCore_gv_cOMPUTER_TeamOrder);

                libMapM_gf_JungleGrantCaptureRewards(lv_itCamp, libCore_gv_cOMPUTER_TeamOrder, lv_hasMercLordTalent);

            }

            else if ((lv_owner == libCore_gv_cOMPUTER_TeamChaos)) {

                libNtve_gf_SendActorMessageToGameRegion(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataDefenderLeashRegion, "Signal OwnerChaos");

                UnitSetOwner(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campIconUnit, libCore_gv_cOMPUTER_TeamChaos, true);

                UnitSetOwner(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_campOwnershipFlagUnit, libCore_gv_cOMPUTER_TeamChaos, true);

                libMapM_gf_JungleTurnOffCampCaptureBeacon(lv_itCamp, libCore_gv_cOMPUTER_TeamChaos);

                libMapM_gf_JungleGrantCaptureRewards(lv_itCamp, libCore_gv_cOMPUTER_TeamChaos, lv_hasMercLordTalent);

            }

            if (((lv_owner == libCore_gv_cOMPUTER_TeamOrder) || (lv_owner == libCore_gv_cOMPUTER_TeamChaos))) {

                lv_team = libGame_gf_TeamNumberOfPlayer(lv_owner);

                SoundPlayForPlayer(SoundLink("Doodad_Merc_Camp_Capture_Ally", -1), libCore_gv_cOMPUTER_TeamOrder, libGame_gf_PlayersOnTeamHeroes(lv_team, false), 100.0, 0.0);

                SoundPlayForPlayer(SoundLink("Doodad_Merc_Camp_Capture_Enemy", -1), libCore_gv_cOMPUTER_TeamChaos, libGame_gf_PlayersOnTeamHeroes((3 - lv_team), false), 100.0, 0.0);

                SoundPlayForPlayer(SoundLink("Doodad_Merc_Camp_Capture_Ally", -1), libCore_gv_oBSERVER_ObserverUIPlayer, libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], 100.0, 0.0);

            }



        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleCampOwnershipChange_Init () {

    libMapM_gt_JungleCampOwnershipChange = TriggerCreate("libMapM_gt_JungleCampOwnershipChange_Func");

    libGame_gf_CapturePointChangesOwner(libMapM_gt_JungleCampOwnershipChange);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Merc Leader Dies

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleMercLeaderDies_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itMercGroup;

    unit lv_itUnit;

    bool lv_groupIsDead;



    // Automatic Variable Declarations

    int auto9AC7B9FC_ae;

    const int auto9AC7B9FC_ai = 1;

    const int auto473D11F7_ae = 1;

    const int auto473D11F7_ai = -1;

    unitgroup autoF266B5E0_g;

    int autoF266B5E0_u;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    auto9AC7B9FC_ae = libMapM_gv_jungleNumberOfActiveMercGroups;

    lv_itMercGroup = 1;

    for ( ; ( (auto9AC7B9FC_ai >= 0 && lv_itMercGroup <= auto9AC7B9FC_ae) || (auto9AC7B9FC_ai < 0 && lv_itMercGroup >= auto9AC7B9FC_ae) ) ; lv_itMercGroup += auto9AC7B9FC_ai ) {

        if ((UnitIsAlive(libMapM_gv_jungleMiniMapLeader[lv_itMercGroup]) == false)) {

            UnitGroupRemove(libMapM_gv_jungleMiniMapIconGroup[lv_itMercGroup], libMapM_gv_jungleMiniMapLeader[lv_itMercGroup]);

            if ((UnitGroupCount(libMapM_gv_jungleMiniMapIconGroup[lv_itMercGroup], c_unitCountAlive) > 0)) {

                libMapM_gf_JungleSetMiniMapIconForMercMinions(libMapM_gf_JungleGetMercCampForUnit(UnitGroupUnit(libMapM_gv_jungleMiniMapIconGroup[lv_itMercGroup], 1)), lv_itMercGroup, "Assets\\Textures\\blank.dds", libMapM_gv_jungleMiniMapIconGroup[lv_itMercGroup]);

                libMapM_gf_JungleCreateMercPath(libMapM_gv_jungleMiniMapLeader[lv_itMercGroup], true);

            }

            else {

                lv_groupIsDead = true;

            }

            break;

        }



    }

    if ((lv_groupIsDead == true)) {

        lv_itMercGroup = libMapM_gv_jungleNumberOfActiveMercGroups;

        for ( ; ( (auto473D11F7_ai >= 0 && lv_itMercGroup <= auto473D11F7_ae) || (auto473D11F7_ai < 0 && lv_itMercGroup >= auto473D11F7_ae) ) ; lv_itMercGroup += auto473D11F7_ai ) {

            if ((libNtve_gf_UnitGroupIsDead(libMapM_gv_jungleMiniMapIconGroup[lv_itMercGroup]) == true)) {

                if ((libMapM_gv_jungleMiniMapPath[lv_itMercGroup] != 0)) {

                    PathDestroy(libMapM_gv_jungleMiniMapPath[lv_itMercGroup]);

                    libMapM_gv_jungleMiniMapPath[lv_itMercGroup] = 0;

                }



                if ((lv_itMercGroup == libMapM_gv_jungleNumberOfActiveMercGroups)) {

                    libMapM_gv_jungleMiniMapLeader[libMapM_gv_jungleNumberOfActiveMercGroups] = null;

                    libMapM_gv_jungleMiniMapIconGroup[libMapM_gv_jungleNumberOfActiveMercGroups] = UnitGroupEmpty();

                    libMapM_gv_jungleNumberOfActiveMercGroups -= 1;

                }

                else {

                    libMapM_gv_jungleMiniMapLeader[lv_itMercGroup] = libMapM_gv_jungleMiniMapLeader[libMapM_gv_jungleNumberOfActiveMercGroups];

                    libMapM_gv_jungleMiniMapIconGroup[lv_itMercGroup] = libMapM_gv_jungleMiniMapIconGroup[libMapM_gv_jungleNumberOfActiveMercGroups];

                    libMapM_gv_jungleMiniMapPath[lv_itMercGroup] = libMapM_gv_jungleMiniMapPath[libMapM_gv_jungleNumberOfActiveMercGroups];

                    libMapM_gv_jungleMiniMapPathCurrentIndex[lv_itMercGroup] = libMapM_gv_jungleMiniMapPathCurrentIndex[libMapM_gv_jungleNumberOfActiveMercGroups];

                    libMapM_gv_jungleMiniMapPathIndexMaximum[lv_itMercGroup] = libMapM_gv_jungleMiniMapPathIndexMaximum[libMapM_gv_jungleNumberOfActiveMercGroups];

                    autoF266B5E0_g = libMapM_gv_jungleMiniMapIconGroup[lv_itMercGroup];

                    autoF266B5E0_u = UnitGroupCount(autoF266B5E0_g, c_unitCountAll);

                    for (;; autoF266B5E0_u -= 1) {

                        lv_itUnit = UnitGroupUnitFromEnd(autoF266B5E0_g, autoF266B5E0_u);

                        if (lv_itUnit == null) { break; }

                        UnitSetCustomValue(lv_itUnit, libCore_gf_CustomValueIndex(libCore_ge_CustomValueIndexes_MercLanerGroupIndex), IntToFixed(lv_itMercGroup));

                    }

                    libMapM_gv_jungleMiniMapLeader[libMapM_gv_jungleNumberOfActiveMercGroups] = null;

                    libMapM_gv_jungleMiniMapIconGroup[libMapM_gv_jungleNumberOfActiveMercGroups] = UnitGroupEmpty();

                    libMapM_gv_jungleMiniMapPath[libMapM_gv_jungleNumberOfActiveMercGroups] = 0;

                    libMapM_gv_jungleNumberOfActiveMercGroups -= 1;

                }

            }



        }

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleMercLeaderDies_Init () {

    libMapM_gt_JungleMercLeaderDies = TriggerCreate("libMapM_gt_JungleMercLeaderDies_Func");

    TriggerAddEventUnitBehaviorChange(libMapM_gt_JungleMercLeaderDies, null, "MinionDeathMonitor", c_unitBehaviorChangeDestroy);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Merc - Ogre Shield Used (Ogre)

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleMercOgreShieldUsedOgre_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_stackCount;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_stackCount = (FixedToInt(UnitGetPropertyFixed(EventUnitTargetUnit(), c_unitPropLifeMax, c_unitPropCurrent)) / CatalogFieldValueGetAsInt(c_gameCatalogBehavior, "MercLanerOgreBuff", "DamageResponse.ModifyLimit", c_playerAny));

    UnitBehaviorAdd(EventUnitTargetUnit(), "MercLanerOgreBuff", EventUnit(), lv_stackCount);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleMercOgreShieldUsedOgre_Init () {

    libMapM_gt_JungleMercOgreShieldUsedOgre = TriggerCreate("libMapM_gt_JungleMercOgreShieldUsedOgre_Func");

    TriggerAddEventUnitAbility(libMapM_gt_JungleMercOgreShieldUsedOgre, null, AbilityCommand("MercLanerOgreBuffAbilityOgreOnly", 0), c_abilEffectStageFinish, false);

    TriggerAddEventUnitAbility(libMapM_gt_JungleMercOgreShieldUsedOgre, null, AbilityCommand("MercDefenderOgreBuffAbility", 0), c_abilEffectStageFinish, false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Merc - Ogre Shield Used (Hero)

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleMercOgreShieldUsedHero_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_stackCount;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_stackCount = (FixedToInt(UnitGetPropertyFixed(EventUnitTargetUnit(), c_unitPropLifeMax, c_unitPropCurrent)) / CatalogFieldValueGetAsInt(c_gameCatalogBehavior, "MercLanerOgreBuff", "DamageResponse.ModifyLimit", c_playerAny));

    lv_stackCount = (lv_stackCount / 4);

    UnitBehaviorAdd(EventUnitTargetUnit(), "MercLanerOgreBuff", EventUnit(), lv_stackCount);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleMercOgreShieldUsedHero_Init () {

    libMapM_gt_JungleMercOgreShieldUsedHero = TriggerCreate("libMapM_gt_JungleMercOgreShieldUsedHero_Func");

    TriggerAddEventUnitAbility(libMapM_gt_JungleMercOgreShieldUsedHero, null, AbilityCommand("MercLanerOgreBuffAbilityHeroOnly", 0), c_abilEffectStageFinish, false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: DEBUG - Jungle - Merc Damage Detection

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DEBUGJungleMercDamageDetection_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_MercCamp;



    // Automatic Variable Declarations

    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((libCore_gv_dEBUGDebuggingEnabled == true))) {

            return false;

        }



        if (!((libGame_gv_gameOver == false))) {

            return false;

        }



        if (!((libSprt_gv_dEBUGMapTextEnabled == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    lv_MercCamp = libMapM_gf_JungleGetMercCampForUnit(EventUnitDamageSourceUnit());

    libMapM_gf_JungleUpdateMercDamageTracker(lv_MercCamp, EventUnitDamageAmount());

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DEBUGJungleMercDamageDetection_Init () {

    libMapM_gt_DEBUGJungleMercDamageDetection = TriggerCreate("libMapM_gt_DEBUGJungleMercDamageDetection_Func");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercLanerMeleeKnightDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercLanerRangedMageWeaponDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercLanerSiegeGiantConfusionDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercLanerSiegeGiantDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "OgreKingLanerWeaponDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercLanerGoblinSapperNonStructureSuicideDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercLanerGoblinSapperStructureSuicideDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercLanerGoblinSapperDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercSiegeTrooperLanerWeaponDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercSummonerLanerMinionWeaponDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "MercSummonerLanerWeaponDamage");

    TriggerAddEventUnitDamaged(libMapM_gt_DEBUGJungleMercDamageDetection, null, c_unitDamageTypeAny, c_unitDamageEither, "TerranHellbatWeaponDamage");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Jungle - Siege Giant Taunt

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_JungleSiegeGiantTaunt_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unit lv_siegeGiant;

    unit lv_target;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_siegeGiant = EventPlayerEffectUsedUnit(c_effectUnitSource);

    lv_target = EventPlayerEffectUsedUnit(c_effectUnitTarget);

    ActorLookAtTypeStart(libNtve_gf_MainActorofUnit(lv_siegeGiant), "MedHeadOnly", libNtve_gf_MainActorofUnit(lv_target));

    while (!(((UnitHasBehavior2(lv_siegeGiant, "MercDefenderSiegeGiantTauntProcLookAt") == false) || (UnitHasBehavior2(lv_siegeGiant, "JungleCreepPassive") == false)))) {

        Wait(1.0, c_timeGame);

    }

    libNtve_gf_SimpleLookAtStop(lv_siegeGiant, "MedHeadOnly");

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_JungleSiegeGiantTaunt_Init () {

    libMapM_gt_JungleSiegeGiantTaunt = TriggerCreate("libMapM_gt_JungleSiegeGiantTaunt_Func");

    TriggerAddEventPlayerEffectUsed(libMapM_gt_JungleSiegeGiantTaunt, c_playerAny, "MercDefenderSiegeGiantTauntDummy");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Initialize Map Mechanics

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_InitializeMapMechanics_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itIndex;



    // Automatic Variable Declarations

    int auto7C9A6F5C_ae;

    const int auto7C9A6F5C_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    auto7C9A6F5C_ae = libMapM_gv_mapMechanicsCount;

    lv_itIndex = 1;

    for ( ; ( (auto7C9A6F5C_ai >= 0 && lv_itIndex <= auto7C9A6F5C_ae) || (auto7C9A6F5C_ai < 0 && lv_itIndex >= auto7C9A6F5C_ae) ) ; lv_itIndex += auto7C9A6F5C_ai ) {

        if ((libMapM_gv_mapMechanicsInitCallbacks[lv_itIndex] != null)) {

            TriggerExecute(libMapM_gv_mapMechanicsInitCallbacks[lv_itIndex], true, false);

        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_InitializeMapMechanics_Init () {

    libMapM_gt_InitializeMapMechanics = TriggerCreate("libMapM_gt_InitializeMapMechanics_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Helpbutton Clicked

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMHelpbuttonClicked_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMHelpbuttonClicked_Init () {

    libMapM_gt_MMHelpbuttonClicked = TriggerCreate("libMapM_gt_MMHelpbuttonClicked_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Intro Cutscene Start

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMIntroCutsceneStart_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;



    // Automatic Variable Declarations

    const int autoCD1759B6_ae = libCore_gv_bALMaxPlayers;

    const int autoCD1759B6_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_itPlayer = 1;

    for ( ; ( (autoCD1759B6_ai >= 0 && lv_itPlayer <= autoCD1759B6_ae) || (autoCD1759B6_ai < 0 && lv_itPlayer >= autoCD1759B6_ae) ) ; lv_itPlayer += autoCD1759B6_ai ) {

        if ((EventCutsceneId() == libMapM_gv_mMIntroCutscene[lv_itPlayer])) {

            libStEx_gf_CinematicFade(true, 1.5, Color(0.00, 0.00, 0.00), lv_itPlayer);

            return true;

        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMIntroCutsceneStart_Init () {

    libMapM_gt_MMIntroCutsceneStart = TriggerCreate("libMapM_gt_MMIntroCutsceneStart_Func");

    TriggerEnable(libMapM_gt_MMIntroCutsceneStart, false);

    TriggerAddEventCutsceneBookmarkFired(libMapM_gt_MMIntroCutsceneStart, c_cutsceneNone, "SceneStart");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Intro Cutscene End

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMIntroCutsceneEnd_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;



    // Automatic Variable Declarations

    const int auto41494892_ae = libCore_gv_bALMaxPlayers;

    const int auto41494892_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_itPlayer = 1;

    for ( ; ( (auto41494892_ai >= 0 && lv_itPlayer <= auto41494892_ae) || (auto41494892_ai < 0 && lv_itPlayer >= auto41494892_ae) ) ; lv_itPlayer += auto41494892_ai ) {

        if ((EventCutsceneId() == libMapM_gv_mMIntroCutscene[lv_itPlayer])) {

            libStEx_gf_CinematicFade(false, 0.0, Color(0.00, 0.00, 0.00), lv_itPlayer);

            return true;

        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMIntroCutsceneEnd_Init () {

    libMapM_gt_MMIntroCutsceneEnd = TriggerCreate("libMapM_gt_MMIntroCutsceneEnd_Func");

    TriggerEnable(libMapM_gt_MMIntroCutsceneEnd, false);

    TriggerAddEventCutsceneBookmarkFired(libMapM_gt_MMIntroCutsceneEnd, c_cutsceneNone, "SceneEnd");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Intro Skippable

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMIntroSkippable_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_cutscene;

    int lv_player;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_cutscene = c_cutsceneNone;



    // Actions

    if (!runActions) {

        return true;

    }



    lv_player = libMapM_gv_mMIntroCutscenePlayer;

    lv_cutscene = libMapM_gv_mMIntroCutscene[lv_player];

    TriggerSkippableBegin(libCore_gv_playerGroupFromPlayer[lv_player], 0, null, true, false);

    libMapM_gv_mMIntroCutsceneCompleted[lv_player] = false;

    WaitForCutsceneToEnd(lv_cutscene);

    libMapM_gv_mMIntroCutsceneCompleted[lv_player] = true;

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMIntroSkippable_Init () {

    libMapM_gt_MMIntroSkippable = TriggerCreate("libMapM_gt_MMIntroSkippable_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Repulse Region Punch Behavior

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRepulseRegionPunchBehavior_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itTeam;

    unit lv_itUnit;

    int lv_itPunchTargetIndex;

    point lv_pos;

    fixed lv_distance;

    fixed lv_distanceMin;

    int lv_punchTargetIndexMin;



    // Automatic Variable Declarations

    const int auto6774B061_ae = 2;

    const int auto6774B061_ai = 1;

    unitgroup autoC80E67AA_g;

    int autoC80E67AA_u;

    const int autoFEAFF3C0_ae = libMapM_gv_mMRepulseRegionPunchTargetMax_C;

    const int autoFEAFF3C0_ai = 1;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        lv_itTeam = 1;

        for ( ; ( (auto6774B061_ai >= 0 && lv_itTeam <= auto6774B061_ae) || (auto6774B061_ai < 0 && lv_itTeam >= auto6774B061_ae) ) ; lv_itTeam += auto6774B061_ai ) {

            autoC80E67AA_g = UnitGroup(null, c_playerAny, libMapM_gv_mMRepulseRegions[lv_itTeam], UnitFilter(0, 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterWorker) | (1 << c_targetFilterMissile) | (1 << c_targetFilterDestructible), (1 << (c_targetFilterStasis - 32)) | (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

            autoC80E67AA_u = UnitGroupCount(autoC80E67AA_g, c_unitCountAll);

            for (;; autoC80E67AA_u -= 1) {

                lv_itUnit = UnitGroupUnitFromEnd(autoC80E67AA_g, autoC80E67AA_u);

                if (lv_itUnit == null) { break; }

                if ((libGame_gf_TeamNumberOfPlayer(UnitGetOwner(lv_itUnit)) == libGame_gf_EnemyTeam(lv_itTeam)) && (UnitGroupHasUnit(libMapM_gv_mMRepulseRegionPunchedGroup, lv_itUnit) == false) && (UnitHasBehavior2(lv_itUnit, "HallOfStormsKnockbackImmunity") == false) && ((UnitGetMoverLink(lv_itUnit) == "Ground") || (UnitTypeTestAttribute(UnitGetType(lv_itUnit), c_unitAttributeSummoned) == true))) {

                    lv_pos = UnitGetPosition(lv_itUnit);

                    lv_punchTargetIndexMin = 0;

                    lv_itPunchTargetIndex = 1;

                    for ( ; ( (autoFEAFF3C0_ai >= 0 && lv_itPunchTargetIndex <= autoFEAFF3C0_ae) || (autoFEAFF3C0_ai < 0 && lv_itPunchTargetIndex >= autoFEAFF3C0_ae) ) ; lv_itPunchTargetIndex += autoFEAFF3C0_ai ) {

                        if ((libMapM_gv_mMRepulseRegionPunchTarget[lv_itTeam][lv_itPunchTargetIndex] == null)) {

                            continue;

                        }



                        lv_distance = DistanceBetweenPoints(lv_pos, libMapM_gv_mMRepulseRegionPunchTarget[lv_itTeam][lv_itPunchTargetIndex]);

                        if (((lv_punchTargetIndexMin == 0) || (lv_distance < lv_distanceMin))) {

                            lv_punchTargetIndexMin = lv_itPunchTargetIndex;

                            lv_distanceMin = lv_distance;

                        }



                    }

                    if ((lv_punchTargetIndexMin > 0)) {

                        libGame_gf_SendEventUnitEntersSafeZonePuntRegion(lv_itUnit, libMapM_gv_mMRepulseRegionPunchTarget[lv_itTeam][lv_punchTargetIndexMin]);

                        libMapM_gf_MMRepulseRegionAddToPunchedGroup(lv_itUnit);

                    }



                }



            }

        }

        Wait(0.125, c_timeGame);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRepulseRegionPunchBehavior_Init () {

    libMapM_gt_MMRepulseRegionPunchBehavior = TriggerCreate("libMapM_gt_MMRepulseRegionPunchBehavior_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Safe Region Behavior

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMSafeRegionBehavior_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_safeRegionUnitGroup;

    int lv_itTeam;

    unit lv_itUnit;



    // Automatic Variable Declarations

    int autoBA78DA76_ae;

    unitgroup auto9BBE802A_g;

    int auto9BBE802A_u;

    unitgroup autoDB56AFAB_g;

    int autoDB56AFAB_u;

    unit autoDB56AFAB_var;



    // Variable Initialization

    lv_safeRegionUnitGroup = UnitGroupEmpty();



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        autoBA78DA76_ae = 2;

        lv_itTeam = 1;

        for ( ; lv_itTeam <= autoBA78DA76_ae ; lv_itTeam += 1 ) {

            if ((libMapM_gv_mMSafeRegions[lv_itTeam] == null)) {

                continue;

            }



            auto9BBE802A_g = UnitGroup(null, c_playerAny, libMapM_gv_mMSafeRegions[lv_itTeam], UnitFilter(0, 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterWorker) | (1 << c_targetFilterMissile) | (1 << c_targetFilterDestructible), (1 << (c_targetFilterStasis - 32)) | (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

            auto9BBE802A_u = UnitGroupCount(auto9BBE802A_g, c_unitCountAll);

            for (;; auto9BBE802A_u -= 1) {

                lv_itUnit = UnitGroupUnitFromEnd(auto9BBE802A_g, auto9BBE802A_u);

                if (lv_itUnit == null) { break; }

                if ((libGame_gf_TeamNumberOfPlayer(UnitGetOwner(lv_itUnit)) == lv_itTeam)) {

                    UnitGroupAdd(lv_safeRegionUnitGroup, lv_itUnit);

                    libGame_gf_SendEventUnitEntersSafeZoneRegion(lv_itUnit);

                }



            }

            autoDB56AFAB_g = libGame_gv_players_Heroes_AllTrackedHeroesForTeam[lv_itTeam];

            autoDB56AFAB_u = UnitGroupCount(autoDB56AFAB_g, c_unitCountAll);

            for (;; autoDB56AFAB_u -= 1) {

                autoDB56AFAB_var = UnitGroupUnitFromEnd(autoDB56AFAB_g, autoDB56AFAB_u);

                if (autoDB56AFAB_var == null) { break; }

                if ((UnitGroupHasUnit(lv_safeRegionUnitGroup, autoDB56AFAB_var) == true) && (libNtve_gf_UnitInRegion(autoDB56AFAB_var, libMapM_gv_mMSafeRegions[lv_itTeam]) == false)) {

                    UnitGroupRemove(lv_safeRegionUnitGroup, autoDB56AFAB_var);

                    libGame_gf_SendEventUnitExitsSafeZoneRegion(autoDB56AFAB_var);

                }



            }

        }

        Wait(0.0625, c_timeGame);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMSafeRegionBehavior_Init () {

    libMapM_gt_MMSafeRegionBehavior = TriggerCreate("libMapM_gt_MMSafeRegionBehavior_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Remove Stacking Core Shield Mechanic

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRemoveStackingCoreShieldMechanic_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_teamIndex;



    // Automatic Variable Declarations

    const int auto7AE22EB6_ae = libCore_gv_bALMaxTeams;

    const int auto7AE22EB6_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_teamIndex = 1;

    for ( ; ( (auto7AE22EB6_ai >= 0 && lv_teamIndex <= auto7AE22EB6_ae) || (auto7AE22EB6_ai < 0 && lv_teamIndex >= auto7AE22EB6_ae) ) ; lv_teamIndex += auto7AE22EB6_ai ) {

        UnitBehaviorRemove(libGame_gv_teams[lv_teamIndex].lv_core, "CoreShieldsLevel1", 1);

        UnitBehaviorRemove(libGame_gv_teams[lv_teamIndex].lv_core, "CoreShieldsLevel2", 1);

        UnitBehaviorRemove(libGame_gv_teams[lv_teamIndex].lv_core, "CoreShieldsLevel3", 1);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRemoveStackingCoreShieldMechanic_Init () {

    libMapM_gt_MMRemoveStackingCoreShieldMechanic = TriggerCreate("libMapM_gt_MMRemoveStackingCoreShieldMechanic_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: Enable/Disable Map Event

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_EnableDisableMapEvent_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((EventChatMessage(false) == "EnableEvent")) {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_62CC6D3C"), true);

        libMapM_gf_EnableDisableMapEvent(true);

    }

    else {

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_937EB900"), true);

        libMapM_gf_EnableDisableMapEvent(false);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_EnableDisableMapEvent_Init () {

    libMapM_gt_EnableDisableMapEvent = TriggerCreate("libMapM_gt_EnableDisableMapEvent_Func");

    TriggerAddEventChatMessage(libMapM_gt_EnableDisableMapEvent, c_playerAny, "EnableEvent", true);

    TriggerAddEventChatMessage(libMapM_gt_EnableDisableMapEvent, c_playerAny, "DisableEvent", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Curse Init

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenCurseInit_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;



    // Automatic Variable Declarations

    playergroup autoFAEFD69E_g;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((libGame_gf_MapMechanicInitializationMechanicType() == libMapM_gv_mMRavenMechanicName_C))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gv_mapMechanicsObserverCountLabelText = StringToText("");

    TriggerEnable(libMapM_gt_MMRavenCurseGateOpen, true);

    TriggerEnable(libMapM_gt_MMRavenTributeCollectStarted, true);

    TriggerEnable(libMapM_gt_MMRavenTributeCollectCanceled, true);

    TriggerEnable(libMapM_gt_MMRavenDebugStartWarning, true);

    TriggerEnable(libMapM_gt_MMRavenDebugStartElunees, true);

    TriggerEnable(libMapM_gt_MMRavenDebugStartNexten, true);

    TriggerEnable(libMapM_gt_MMRavenDebugStartCurseec, true);

    TriggerEnable(libMapM_gt_MMRavenDisableEvent, true);

    libMapM_gf_RegisterMapEventEnableDisableTriggers(libMapM_gt_MMRavenDisableEvent, libMapM_gt_MMRavenEnableEvent);

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal MM1Off");

    libGame_gf_SendMapSpecificAwardInitializeEventwithUserData(null, "Master of the Curse");

    autoFAEFD69E_g = PlayerGroupAll();

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(autoFAEFD69E_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	CatalogFieldValueSet(c_gameCatalogAbil, "CaptureMacGuffin", "Activity", lv_itPlayer, "DOCSTR_MMRavenCurse_CapturingTribute");

        CatalogFieldValueSet(c_gameCatalogEffect, "CaptureMacGuffin", "PeriodCount", lv_itPlayer, "48");

    }

    libMapM_gv_mMRavenFirstEventTiming = libMapM_gv_mMRavenStartTime;

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenCurseInit_Init () {

    libMapM_gt_MMRavenCurseInit = TriggerCreate("libMapM_gt_MMRavenCurseInit_Func");

    libGame_gf_MapMechanicInitialization(libMapM_gt_MMRavenCurseInit);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Curse Gate Open

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenCurseGateOpen_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    TriggerEnable(libMapM_gt_MMRavenSpawnTribute, true);

    TriggerEnable(libMapM_gt_MMRavenTributeObtained, true);

    TimerStart(libMapM_gv_mMRavenStartTimer, libMapM_gv_mMRavenFirstEventTiming, false, c_timeGame);

    if ((libMapM_gv_mMMapMechanicDisabled == true)) {

        TimerPause(libMapM_gv_mMRavenStartTimer, true);

    }



    libMapM_gv_mMRavenTributeNextSpawnPoint = libMapM_gf_MMRavenRandomSpawnPoint();

    if ((libMapM_gv_mMRavenUseTributePreviews == true)) {

        TimerStart(libMapM_gv_mMRavenObjectivePreviewTimer, libMapM_gv_mMRavenObjectivePreviewLongDelay, false, c_timeGame);

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenCurseGateOpen_Init () {

    libMapM_gt_MMRavenCurseGateOpen = TriggerCreate("libMapM_gt_MMRavenCurseGateOpen_Func");

    TriggerEnable(libMapM_gt_MMRavenCurseGateOpen, false);

    TriggerAddEventTimer(libMapM_gt_MMRavenCurseGateOpen, libGame_gv_openTheGatesTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Start Spawning

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenStartSpawning_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    if ((libMapM_gv_mMMapMechanicDisabled == true)) {

        TriggerEnable(libMapM_gt_MMRavenSpawnTribute, false);

        TriggerEnable(libMapM_gt_MMRavenTributeObtained, false);

        return true;

    }



    if ((libMapM_gv_mMRavenEventFirstTime == true)) {

        TimerStart(libMapM_gv_mMRavenWarningTimer, 0.125, false, c_timeGame);

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenStartSpawning_Init () {

    libMapM_gt_MMRavenStartSpawning = TriggerCreate("libMapM_gt_MMRavenStartSpawning_Func");

    TriggerAddEventTimer(libMapM_gt_MMRavenStartSpawning, libMapM_gv_mMRavenStartTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Spawn Tribute

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenSpawnTribute_Func (bool testConds, bool runActions) {

    // Variable Declarations

    point lv_spawnPoint;

    int lv_itPlayer;



    // Automatic Variable Declarations

    int autoA0826D15_val;

    playergroup autoF1C7D990_g;

    playergroup auto4CE6CAAB_g;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gv_mMRavenCurseLifted = false;

    libMapM_gv_mMMapEventHasOccured = true;

    if ((libCore_gv_sYSGameMode == libCore_ge_GameModes_TutorialMapMechanics)) {

        autoA0826D15_val = libMapM_gv_mMRavenTributeSpawnCount;

        if (autoA0826D15_val == 1) {

            libMapM_gv_mMRavenTributeSpawnCount += 1;

            libMapM_gv_mMRavenLastTributeSpawnIndex1 = 2;

            lv_spawnPoint = libMapM_gv_mMRavenTributeSpawnPoints[libMapM_gv_mMRavenLastTributeSpawnIndex1];

        }

        else if (autoA0826D15_val == 2) {

            libMapM_gv_mMRavenTributeSpawnCount += 1;

            libMapM_gv_mMRavenLastTributeSpawnIndex1 = 4;

            libMapM_gv_mMRavenLastTributeSpawnIndex2 = 2;

            lv_spawnPoint = libMapM_gv_mMRavenTributeSpawnPoints[libMapM_gv_mMRavenLastTributeSpawnIndex1];

        }

        else if (autoA0826D15_val == 3) {

            libMapM_gv_mMRavenTributeSpawnCount += 1;

            libMapM_gv_mMRavenLastTributeSpawnIndex1 = 3;

            libMapM_gv_mMRavenLastTributeSpawnIndex2 = 4;

            lv_spawnPoint = libMapM_gv_mMRavenTributeSpawnPoints[libMapM_gv_mMRavenLastTributeSpawnIndex1];

        }

        else {

            lv_spawnPoint = libMapM_gf_MMRavenRandomSpawnPoint();

        }

    }

    else {

        lv_spawnPoint = libMapM_gv_mMRavenTributeNextSpawnPoint;

    }

    if ((libMapM_gv_mMRavenEventFirstTime == false)) {

        libMapM_gf_MMRavenTransmissionRepeatEventStartQ();

    }

    else {

        libMapM_gf_MMRavenTransmissionFirstEventStartQ();

        TriggerExecute(libMapM_gt_MMRavenObjectiveUIHandler, true, false);

    }

    Wait(2.0, c_timeGame);

    SoundPlayAtPointForPlayer(SoundLink("Event_RavenCurse_TributeSpawn", -1), c_maxPlayers, PlayerGroupAll(), lv_spawnPoint, 2.0, 100.0, 0.0);

    libCore_gf_CreateMinimapPingStorm(PlayerGroupAll(), "StormAlert", lv_spawnPoint, ColorWithAlpha(100.00, 100.00, 0.00, 0.00), 6.0);

    libGame_gf_SendEventMapCursedHollowTributeWarning(lv_spawnPoint);

    UnitRemove(libMapM_gv_mMRavenTributePreview);

    libNtve_gf_CreateUnitsWithDefaultFacing(1, "RavenLordTributeWarning", c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_Neutral, lv_spawnPoint, null);

    libMapM_gv_mMRavenTributeWarning = UnitLastCreated();

    UnitGroupAdd(libMapM_gv_mMRavenTributeWarnings, UnitLastCreated());

    libAIAI_gf_AITeamDelegateSetPeriodicMapValueAction(libAIAI_ge_AITeamDelegateMapNonEventMapValueOperations_Decrease);

    libMapM_gf_ShareVisionofUnitForBothTeams(UnitLastCreated());

    libNtve_gf_CreateUnitsWithDefaultFacing(1, "RavenLordTribute", c_unitCreateIgnorePlacement, libCore_gv_cOMPUTER_Neutral, lv_spawnPoint, null);

    UnitBehaviorAdd(UnitLastCreated(), "MapMechanicCoolUp", UnitLastCreated(), 1);

    UnitBehaviorSetDuration(UnitLastCreated(), "MapMechanicCoolUp", (libMapM_gv_mMRavenSpawnWarningTimerTime_C+.5));

    UnitBehaviorSetDurationRemaining(UnitLastCreated(), "MapMechanicCoolUp", (libMapM_gv_mMRavenSpawnWarningTimerTime_C+.5));

    AddUnitOfInterest(UnitLastCreated(), 500.0, 0.0, "Tribute", libNtve_ge_GoalTeam_Both, 0);

    TimerStart(libMapM_gv_mMRavenTributeSpawnTimer, libMapM_gv_mMRavenSpawnWarningTimerTime_C, false, c_timeGame);

    libNtve_gf_WaitForTimer(libMapM_gv_mMRavenTributeSpawnTimer, 0.0, false);

    UnitKill(libMapM_gv_mMRavenTributeWarning);

    libNtve_gf_CreateModelAtPoint("RavenLordTributeSpawn", lv_spawnPoint);

    Wait(0.5, c_timeReal);

    ActorSend(libNtve_gf_ActorLastCreated(), "AnimBracketStop BSD");

    libCore_gf_CreateMinimapPingStorm(PlayerGroupAll(), "StormAlert", lv_spawnPoint, ColorWithAlpha(100.00, 100.00, 0.00, 0.00), 3.0);

    libMapM_gf_ShareVisionofUnitForBothTeams(UnitLastCreated());

    ActorCreate(ActorScopeFromUnit(UnitLastCreated()), "UI_Game_Ping_Tribute_Ready", null, null, null);

    UnitGroupAddUnitGroup(libMapM_gv_mMRavenTributes, UnitLastCreatedGroup());

    libAIAI_gf_AITeamDelegateActivateDeactivateMapEvent(libAIAI_ge_AITeamDelegateActivateDeactivateMapToken_Activate);

    TriggerEnable(libMapM_gt_MMRavenTributeObtained, true);

    libGame_gf_SendEventMapCursedHollowTributeSpawned(UnitLastCreated());

    libMapM_gv_mMRavenEventFirstTime = false;

    Wait(1.0, c_timeGame);

    libUIUI_gf_AttachHelpButtonToUnit(UnitLastCreated(), libMapM_gt_MMHelpbuttonClicked, StringExternal("Param/Value/lib_MapM_E2F763F8"), 110, 135);

    autoF1C7D990_g = libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer];

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(autoF1C7D990_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	libUIUI_gf_ShowHideHelpButtonOnUnitForPlayer(lv_itPlayer, false, UnitLastCreated());

    }

    Wait(0.5, c_timeGame);

    auto4CE6CAAB_g = libCore_gv_activeHumanPlayers;

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(auto4CE6CAAB_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	if ((libMapM_gv_mapMechanicUsedTracker[lv_itPlayer].lv_ravenTribute == true) && (libCore_gv_sYSGameMode != libCore_ge_GameModes_TutorialMapMechanics)) {

            libUIUI_gf_ShowHideHelpButtonOnUnitForPlayer(lv_itPlayer, false, UnitLastCreated());

        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenSpawnTribute_Init () {

    libMapM_gt_MMRavenSpawnTribute = TriggerCreate("libMapM_gt_MMRavenSpawnTribute_Func");

    TriggerEnable(libMapM_gt_MMRavenSpawnTribute, false);

    TriggerAddEventTimer(libMapM_gt_MMRavenSpawnTribute, libMapM_gv_mMRavenWarningTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Objective Preview Timer Expires

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenObjectivePreviewTimerExpires_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gf_MMRavenCreatePreviewTribute(libMapM_gv_mMRavenTributeNextSpawnPoint);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenObjectivePreviewTimerExpires_Init () {

    libMapM_gt_MMRavenObjectivePreviewTimerExpires = TriggerCreate("libMapM_gt_MMRavenObjectivePreviewTimerExpires_Func");

    TriggerAddEventTimer(libMapM_gt_MMRavenObjectivePreviewTimerExpires, libMapM_gv_mMRavenObjectivePreviewTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Tribute Collect Started

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenTributeCollectStarted_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_count;



    // Automatic Variable Declarations

    int autoB2ADE185_val;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((UnitGetType(EventUnitTargetUnit()) == "RavenLordTribute"))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    lv_count = (libCore_gf_IntegerStoredForUnit(EventUnitTargetUnit(), 1) + 1);

    libCore_gf_StoreIntegerForUnit(EventUnitTargetUnit(), 1, lv_count);

    libNtve_gf_TurnAnimationPropertiesOn(libNtve_gf_MainActorofUnit(EventUnitTargetUnit()), "Work");

    autoB2ADE185_val = libGame_gf_TeamNumberOfPlayer(UnitGetOwner(EventUnit()));

    if (autoB2ADE185_val == libGame_gv_teamOrderIndex_C) {

        libNtve_gf_SendActorMessageToUnit(EventUnitTargetUnit(), "StatusIncrement TributeCaptureOrder");

    }

    else if (autoB2ADE185_val == libGame_gv_teamChaosIndex_C) {

        libNtve_gf_SendActorMessageToUnit(EventUnitTargetUnit(), "StatusIncrement TributeCaptureChaos");

    }

    else {

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenTributeCollectStarted_Init () {

    libMapM_gt_MMRavenTributeCollectStarted = TriggerCreate("libMapM_gt_MMRavenTributeCollectStarted_Func");

    TriggerEnable(libMapM_gt_MMRavenTributeCollectStarted, false);

    TriggerAddEventUnitAbility(libMapM_gt_MMRavenTributeCollectStarted, null, AbilityCommand("CaptureMacGuffin", 0), c_abilEffectStageChannel, false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Tribute Collect Canceled

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenTributeCollectCanceled_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_count;



    // Automatic Variable Declarations

    int autoC5D651B5_val;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((UnitGetType(EventUnitTargetUnit()) == "RavenLordTribute"))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    lv_count = MaxI((libCore_gf_IntegerStoredForUnit(EventUnitTargetUnit(), 1) - 1), 0);

    libCore_gf_StoreIntegerForUnit(EventUnitTargetUnit(), 1, lv_count);

    if ((lv_count == 0)) {

        libNtve_gf_TurnAnimationPropertiesOff(libNtve_gf_MainActorofUnit(EventUnitTargetUnit()), "Work");

    }



    autoC5D651B5_val = libGame_gf_TeamNumberOfPlayer(UnitGetOwner(EventUnit()));

    if (autoC5D651B5_val == libGame_gv_teamOrderIndex_C) {

        libNtve_gf_SendActorMessageToUnit(EventUnitTargetUnit(), "StatusDecrement TributeCaptureOrder");

    }

    else if (autoC5D651B5_val == libGame_gv_teamChaosIndex_C) {

        libNtve_gf_SendActorMessageToUnit(EventUnitTargetUnit(), "StatusDecrement TributeCaptureChaos");

    }

    else {

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenTributeCollectCanceled_Init () {

    libMapM_gt_MMRavenTributeCollectCanceled = TriggerCreate("libMapM_gt_MMRavenTributeCollectCanceled_Func");

    TriggerEnable(libMapM_gt_MMRavenTributeCollectCanceled, false);

    TriggerAddEventUnitAbility(libMapM_gt_MMRavenTributeCollectCanceled, null, AbilityCommand("CaptureMacGuffin", 0), c_unitAbilStageCancel, false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Tribute Collect Interrupted

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenTributeCollectInterrupted_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    int auto6A2ED71E_val;



    // Conditions

    if (testConds) {

        if (!((libMapM_gf_MapMechanicExistsOnMap(libMapM_gv_mMRavenMechanicName_C) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    auto6A2ED71E_val = libGame_gf_TeamNumberOfPlayer(UnitGetOwner(EventPlayerEffectUsedUnit(c_effectUnitCaster)));

    if (auto6A2ED71E_val == libGame_gv_teamOrderIndex_C) {

        libNtve_gf_SendActorMessageToUnit(UnitGroupUnit(libMapM_gv_mMRavenTributes, 1), "StatusDecrement TributeCaptureOrder");

    }

    else if (auto6A2ED71E_val == libGame_gv_teamChaosIndex_C) {

        libNtve_gf_SendActorMessageToUnit(UnitGroupUnit(libMapM_gv_mMRavenTributes, 1), "StatusDecrement TributeCaptureChaos");

    }

    else {

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenTributeCollectInterrupted_Init () {

    libMapM_gt_MMRavenTributeCollectInterrupted = TriggerCreate("libMapM_gt_MMRavenTributeCollectInterrupted_Func");

    TriggerAddEventPlayerEffectUsed(libMapM_gt_MMRavenTributeCollectInterrupted, c_playerAny, "CaptureMacguffinDummyDamageResponse");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Tribute Obtained

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenTributeObtained_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_collectedPlayer;

    int lv_collectedTeam;

    int lv_collectedTeamEnemy;

    unit lv_macGuffinUnit;

    int lv_teamIterator;

    string lv_macGuffinCount;

    int lv_regenGlobeOwner;

    point lv_regenGlobePoint;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_collectedPlayer = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);

    lv_collectedTeam = libGame_gf_TeamNumberOfPlayer(lv_collectedPlayer);

    lv_collectedTeamEnemy = libGame_gf_EnemyTeam(lv_collectedTeam);

    lv_macGuffinUnit = EventPlayerEffectUsedUnit(c_effectUnitTarget);

    lv_macGuffinCount = "";

    lv_regenGlobePoint = UnitGetPosition(lv_macGuffinUnit);



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((UnitGroupHasUnit(libMapM_gv_mMRavenTributes, lv_macGuffinUnit) == false)) {

        libNtve_gf_SendActorMessageToUnit(lv_macGuffinUnit, "Signal TributeOwnerNeutral");

        libNtve_gf_SendActorMessageToUnit(lv_macGuffinUnit, "StatusSet TributeOwnerChaos 0");

        libNtve_gf_SendActorMessageToUnit(lv_macGuffinUnit, "StatusSet TributeOwnerOrder 0");

        UnitKill(lv_macGuffinUnit);

        return true;

    }



    UnitGroupRemove(libMapM_gv_mMRavenTributes, lv_macGuffinUnit);

    libMapM_gv_mMRavenTributesCollected += 1;

    libGame_gf_SendEventMapCursedHollowTributePickedUp(lv_collectedPlayer, UnitGetPosition(lv_macGuffinUnit));

    libGame_gf_SendEventMapObjectiveCapturedByUnit(EventPlayerEffectUsedUnit(c_effectUnitCaster));

    libNtve_gf_SendActorMessageToUnit(lv_macGuffinUnit, "Signal TributeOwnerNeutral");

    libNtve_gf_SendActorMessageToUnit(lv_macGuffinUnit, "StatusSet TributeOwnerChaos 0");

    libNtve_gf_SendActorMessageToUnit(lv_macGuffinUnit, "StatusSet TributeOwnerOrder 0");

    UnitKill(lv_macGuffinUnit);

    libMapM_gv_mMRavenTeamStats[lv_collectedTeam].lv_triburteCollected += 1;

    libMapM_gv_mapMechanicUsedTracker[lv_collectedPlayer].lv_ravenTribute = true;

    libAIAI_gf_AITeamDelegateActivateDeactivateMapEvent(libAIAI_ge_AITeamDelegateActivateDeactivateMapToken_Deactivate);

    libAIAI_gf_AITeamDelegateAdjustMapEventProgressforTeam(1, lv_collectedTeam);

    StatEventCreate("TributeCollected");

    StatEventAddDataInt(StatEventLastCreated(), "Event", libMapM_gv_mMRavenTributesCollected);

    StatEventAddDataFixed(StatEventLastCreated(), "TeamID", lv_collectedTeam);

    StatEventSend(StatEventLastCreated());

    if ((lv_collectedTeam == 1)) {

        lv_regenGlobeOwner = libCore_gv_cOMPUTER_TeamOrder;

    }

    else {

        lv_regenGlobeOwner = libCore_gv_cOMPUTER_TeamChaos;

    }

    libNtve_gf_CreateUnitsWithDefaultFacing(1, "RegenGlobe", c_unitCreateIgnorePlacement, lv_regenGlobeOwner, lv_regenGlobePoint, null);

    lv_macGuffinCount = IntToString(libMapM_gv_mMRavenTeamStats[lv_teamIterator].lv_triburteCollected);

    if ((libMapM_gv_mMRavenTeamStats[lv_collectedTeam].lv_triburteCollected == libMapM_gf_MMRavenTributeThresholdAmount())) {

        libMapM_gf_MMRavenTributeCollectionThresholdReached(lv_collectedTeam);

    }

    else {

        libMapM_gf_MMRavenStartSpawnTimer5090();

        libMapM_gv_mMRavenTributeNextSpawnPoint = libMapM_gf_MMRavenRandomSpawnPoint();

        if ((libMapM_gv_mMRavenUseTributePreviews == true)) {

            TimerStart(libMapM_gv_mMRavenObjectivePreviewTimer, libMapM_gv_mMRavenObjectivePreviewShortDelay, false, c_timeGame);

        }



    }

    libGame_gf_DropLootBannerinSconce(UnitGroupUnit(UnitGroup("LootBannerSconce", c_playerAny, RegionCircle(UnitGetPosition(lv_macGuffinUnit), 8.0), UnitFilter(0, 0, 0, 0), 1), 1), libGame_gv_players[lv_collectedPlayer].lv_lootContent.lv_loot_Banner.lv_bannerID, lv_collectedPlayer, true);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenTributeObtained_Init () {

    libMapM_gt_MMRavenTributeObtained = TriggerCreate("libMapM_gt_MMRavenTributeObtained_Func");

    TriggerEnable(libMapM_gt_MMRavenTributeObtained, false);

    TriggerAddEventPlayerEffectUsed(libMapM_gt_MMRavenTributeObtained, c_playerAny, "CaptureMacGuffinCastComplete");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Curse Reapplication

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenCurseReapplication_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unit lv_structure;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_structure = EventPlayerEffectUsedUnit(c_effectUnitTarget);



    // Actions

    if (!runActions) {

        return true;

    }



    if ((TimerGetRemaining(libMapM_gv_mMRavenCurseTimer) > 0.0)) {

        UnitBehaviorAdd(lv_structure, "RavenLordsCurseStructures", lv_structure, 1);

        UnitBehaviorSetDuration(lv_structure, "RavenLordsCurseStructures", TimerGetRemaining(libMapM_gv_mMRavenCurseTimer));

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenCurseReapplication_Init () {

    libMapM_gt_MMRavenCurseReapplication = TriggerCreate("libMapM_gt_MMRavenCurseReapplication_Func");

    TriggerAddEventPlayerEffectUsed(libMapM_gt_MMRavenCurseReapplication, c_playerAny, "RavenCurseReapplicationCheckDummySet");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Curse Start Light Transition

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenCurseStartLightTransition_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    libGame_gf_SpecialLightingEventStart("StormRavenCourtCurseTransition", PlayerGroupAll(), 1.0);

    Wait(1.0, c_timeGame);

    libGame_gf_SpecialLightingEventStart("StormRavenCourtCurseFinal", PlayerGroupAll(), 2.0);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenCurseStartLightTransition_Init () {

    libMapM_gt_MMRavenCurseStartLightTransition = TriggerCreate("libMapM_gt_MMRavenCurseStartLightTransition_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Curse Finished

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenCurseFinished_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;

    int lv_cursedTeam;

    int lv_enemyTeam;

    int lv_cursedPlayer;



    // Automatic Variable Declarations

    unitgroup auto8A3C49B5_g;

    int auto8A3C49B5_u;

    unit auto8A3C49B5_var;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    SoundChannelMute(PlayerGroupAll(), c_soundCategoryAmbient, false);

    SoundStop(libMapM_gv_mMRavenCurseSound, true);

    SoundPlayForPlayer(SoundLink("Event_RavenCurse_CurseEnd", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal MM1Off");

    ActorSend(libMapM_gv_mapMechanicControllerActor, "Signal RainOff");

    if ((libMapM_gv_mMRavenTeamStats[1].lv_cursed == true)) {

        lv_cursedTeam = 1;

        lv_cursedPlayer = libCore_gv_cOMPUTER_TeamOrder;

        libMapM_gv_mMRavenTeamStats[libGame_gv_teamChaosIndex_C].lv_triburteCollected -= libMapM_gv_mMRavenTributeThreshold_C;

    }

    else if ((libMapM_gv_mMRavenTeamStats[2].lv_cursed == true)) {

        lv_cursedTeam = 2;

        lv_cursedPlayer = libCore_gv_cOMPUTER_TeamChaos;

        libMapM_gv_mMRavenTeamStats[libGame_gv_teamOrderIndex_C].lv_triburteCollected -= libMapM_gv_mMRavenTributeThreshold_C;

    }

    else if (true) {

        return true;

    }

    libMapM_gf_MMRavenObjectiveUIUpdateText();

    lv_enemyTeam = libGame_gf_EnemyTeam(lv_cursedTeam);

    if ((libGame_gv_gameOver == false)) {

        libMapM_gf_CalculateCurseSiegeDamageDone(lv_enemyTeam);

        libGame_gf_SendEventMapCursedHollowCurseEnds();

    }



    libMapM_gf_MMRavenTransmissionCurseEndsQ();

    SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);

    libSond_gf_SoundtrackPlayMapSoundtrackAsDefaultSoundtrackForAllPlayers();

    auto8A3C49B5_g = UnitGroup(null, lv_cursedPlayer, RegionEntireMap(), libCore_gv_filtersMinionsTownMinions, 0);

    auto8A3C49B5_u = UnitGroupCount(auto8A3C49B5_g, c_unitCountAll);

    for (;; auto8A3C49B5_u -= 1) {

        auto8A3C49B5_var = UnitGroupUnitFromEnd(auto8A3C49B5_g, auto8A3C49B5_u);

        if (auto8A3C49B5_var == null) { break; }

        libMapM_gf_MMRavenRemoveCurseEffectOnMinion(auto8A3C49B5_var);

    }

    libMapM_gv_mMRavenTeamStats[1].lv_cursed = false;

    libMapM_gv_mMRavenTeamStats[2].lv_cursed = false;

    libMapM_gv_mMRavenCurseLifted = true;

    libAIAI_gf_AITeamDelegateActivateDeactivateMapReward(libAIAI_ge_AITeamDelegateActivateDeactivateMapToken_Deactivate);

    libGame_gf_SpecialLightingEventEnd("StormRavenCourtCurseFinal", PlayerGroupAll(), 2.0);

    libMapM_gv_mMRavenTributeNextSpawnPoint = libMapM_gf_MMRavenRandomSpawnPoint();

    if ((libMapM_gv_mMRavenUseTributePreviews == true)) {

        TimerStart(libMapM_gv_mMRavenObjectivePreviewTimer, libMapM_gv_mMRavenObjectivePreviewLongDelay, false, c_timeGame);

    }



    Wait(libMapM_gv_mMRavenTributePostCurseWaitTime, c_timeGame);

    libMapM_gf_MMRavenStartSpawnTimer5090();

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenCurseFinished_Init () {

    libMapM_gt_MMRavenCurseFinished = TriggerCreate("libMapM_gt_MMRavenCurseFinished_Func");

    TriggerAddEventTimer(libMapM_gt_MMRavenCurseFinished, libMapM_gv_mMRavenCurseTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Objective UI Handler

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenObjectiveUIHandler_Func (bool testConds, bool runActions) {

    // Variable Declarations

    text lv_tipEffect;

    text lv_tip;

    text lv_tipCursed;

    int lv_indexTeam;

    int lv_indexTeamEnemy;

    int lv_state;

    int lv_lastState;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_state = libMapM_ge_MMRavenCurseState_Starting;

    lv_lastState = libMapM_ge_MMRavenCurseState_Starting;



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    lv_tipEffect = StringExternal("Param/Value/lib_MapM_E2282CCF");

    TextExpressionSetToken("Param/Expression/lib_MapM_A249BD62", "A", IntToText(libMapM_gv_mMRavenTributeThreshold_C));

    TextExpressionSetToken("Param/Expression/lib_MapM_A249BD62", "B", lv_tipEffect);

    lv_tip = TextExpressionAssemble("Param/Expression/lib_MapM_A249BD62");

    lv_tipCursed = lv_tipEffect;

    while (true) {

        if ((libMapM_gv_mMRavenCurseLifted == true)) {

            lv_state = libMapM_ge_MMRavenCurseState_Lifted;

            libUIUI_gf_MapMechanicsRavenCourtSetModeForTeam(libUIUI_ge_MapMechanicsRavenCourtModes_NoActivity, 0);

            Wait(8.0, c_timeGame);

            while (!((libMapM_gv_mMRavenCurseLifted == false))) {

                Wait(0.25, c_timeGame);

            }

            lv_lastState = lv_state;

        }

        else if ((libMapM_gf_MMRavenCurseStarted() == true)) {

            lv_state = libMapM_ge_MMRavenCurseState_Cursed;

            if ((libMapM_gv_mMRavenTeamStats[1].lv_cursed == true)) {

                lv_indexTeam = 1;

                lv_indexTeamEnemy = 2;

            }

            else {

                lv_indexTeam = 2;

                lv_indexTeamEnemy = 1;

            }

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsRavenCourtSetModeForTeam(libUIUI_ge_MapMechanicsRavenCourtModes_Curse, lv_indexTeamEnemy);

                libUIUI_gf_MapMechanicsRavenCourtSetTributeCountForTeam(0, lv_indexTeamEnemy);

            }



            libUIUI_gf_MapMechanicsRavenCourtSetRemainingCurseTimeForTeam(FixedToInt(TimerGetRemaining(libMapM_gv_mMRavenCurseTimer)), lv_indexTeamEnemy);

            lv_lastState = lv_state;

        }

        else if ((TimerGetRemaining(libMapM_gv_mMRavenTributeSpawnTimer) > 0.0)) {

            lv_state = libMapM_ge_MMRavenCurseState_TributeSpawning;

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsRavenCourtSetModeForTeam(libUIUI_ge_MapMechanicsRavenCourtModes_TributeSpawning, 0);

            }



            libUIUI_gf_MapMechanicsRavenCourtSetRemainingTributeSpawnTime(FixedToInt(TimerGetRemaining(libMapM_gv_mMRavenTributeSpawnTimer)));

            lv_lastState = lv_state;

        }

        else if ((UnitGroupCount(libMapM_gv_mMRavenTributes, c_unitCountAlive) > 0)) {

            lv_state = libMapM_ge_MMRavenCurseState_TributeSpawned;

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsRavenCourtSetModeForTeam(libUIUI_ge_MapMechanicsRavenCourtModes_TributeSpawned, 0);

            }



            lv_lastState = lv_state;

        }

        else if (true) {

            lv_state = libMapM_ge_MMRavenCurseState_NoActivity;

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsRavenCourtSetModeForTeam(libUIUI_ge_MapMechanicsRavenCourtModes_NoActivity, 0);

                libUIUI_gf_MapMechanicsRavenCourtShowHidePanel(true);

            }



            lv_lastState = lv_state;

        }

        libMapM_gf_MMRavenObjectiveUIUpdateText();

        Wait(0.25, c_timeGame);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenObjectiveUIHandler_Init () {

    libMapM_gt_MMRavenObjectiveUIHandler = TriggerCreate("libMapM_gt_MMRavenObjectiveUIHandler_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Disable Event

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenDisableEvent_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TimerPause(libMapM_gv_mMRavenStartTimer, true);

    TimerPause(libMapM_gv_mMRavenWarningTimer, true);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenDisableEvent_Init () {

    libMapM_gt_MMRavenDisableEvent = TriggerCreate("libMapM_gt_MMRavenDisableEvent_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Enable Event

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenEnableEvent_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    if ((TimerGetRemaining(libMapM_gv_mMRavenStartTimer) > 0.0)) {

        TimerPause(libMapM_gv_mMRavenStartTimer, false);

    }



    if ((TimerGetRemaining(libMapM_gv_mMRavenWarningTimer) > 0.0)) {

        TimerPause(libMapM_gv_mMRavenWarningTimer, false);

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenEnableEvent_Init () {

    libMapM_gt_MMRavenEnableEvent = TriggerCreate("libMapM_gt_MMRavenEnableEvent_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Debug (Start Warning)

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenDebugStartWarning_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }



        if (!(((TimerGetRemaining(libMapM_gv_mMRavenStartTimer) > 0.0) || (TimerGetRemaining(libMapM_gv_mMRavenWarningTimer) > 0.0)))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((TimerGetRemaining(libMapM_gv_mMRavenStartTimer) > 0.0)) {

        TimerStart(libMapM_gv_mMRavenStartTimer, 1.0, false, c_timeGame);

    }

    else {

        TimerStart(libMapM_gv_mMRavenWarningTimer, 1.0, false, c_timeGame);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenDebugStartWarning_Init () {

    libMapM_gt_MMRavenDebugStartWarning = TriggerCreate("libMapM_gt_MMRavenDebugStartWarning_Func");

    TriggerEnable(libMapM_gt_MMRavenDebugStartWarning, false);

    TriggerAddEventChatMessage(libMapM_gt_MMRavenDebugStartWarning, c_playerAny, "WARNINGSTART", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Debug (Start Elune -es)

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenDebugStartElunees_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TimerStart(libMapM_gv_mMRavenStartTimer, 1.0, false, c_timeGame);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenDebugStartElunees_Init () {

    libMapM_gt_MMRavenDebugStartElunees = TriggerCreate("libMapM_gt_MMRavenDebugStartElunees_Func");

    TriggerEnable(libMapM_gt_MMRavenDebugStartElunees, false);

    TriggerAddEventChatMessage(libMapM_gt_MMRavenDebugStartElunees, c_playerAny, "-es", true);

    TriggerAddEventChatMessage(libMapM_gt_MMRavenDebugStartElunees, c_playerAny, "EVENTSTART", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Debug (Start Next -en)

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenDebugStartNexten_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((TriggerIsEnabled(libMapM_gt_MMRavenStartSpawning) == true)) {

        TimerStart(libMapM_gv_mMRavenStartTimer, 1.0, false, c_timeGame);

        while (!((TriggerIsEnabled(libMapM_gt_MMRavenStartSpawning) == false))) {

            Wait(0.25, c_timeGame);

        }

    }



    TimerStart(libMapM_gv_mMRavenWarningTimer, 1.0, false, c_timeGame);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenDebugStartNexten_Init () {

    libMapM_gt_MMRavenDebugStartNexten = TriggerCreate("libMapM_gt_MMRavenDebugStartNexten_Func");

    TriggerEnable(libMapM_gt_MMRavenDebugStartNexten, false);

    TriggerAddEventChatMessage(libMapM_gt_MMRavenDebugStartNexten, c_playerAny, "-en", true);

    TriggerAddEventChatMessage(libMapM_gt_MMRavenDebugStartNexten, c_playerAny, "TRIBUTENEXT", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Raven Debug (Start Curse -ec)

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMRavenDebugStartCurseec_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((TriggerIsEnabled(libMapM_gt_MMRavenStartSpawning) == true)) {

        TimerStart(libMapM_gv_mMRavenStartTimer, 1.0, false, c_timeGame);

        while (!((TriggerIsEnabled(libMapM_gt_MMRavenStartSpawning) == false))) {

            Wait(0.25, c_timeGame);

        }

    }



    libMapM_gv_mMRavenTeamStats[1].lv_triburteCollected = (libMapM_gv_mMRavenTributeThreshold_C - 1);

    TimerStart(libMapM_gv_mMRavenWarningTimer, 1.0, false, c_timeGame);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMRavenDebugStartCurseec_Init () {

    libMapM_gt_MMRavenDebugStartCurseec = TriggerCreate("libMapM_gt_MMRavenDebugStartCurseec_Func");

    TriggerEnable(libMapM_gt_MMRavenDebugStartCurseec, false);

    TriggerAddEventChatMessage(libMapM_gt_MMRavenDebugStartCurseec, c_playerAny, "-ec", true);

    TriggerAddEventChatMessage(libMapM_gt_MMRavenDebugStartCurseec, c_playerAny, "TRIBUTELAST", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: Calculate Curse Siege Damage Done

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_CalculateCurseSiegeDamageDone_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    if ((libMapM_gv_mMRavenTeamStats[libGame_gv_teamOrderIndex_C].lv_cursed == true)) {

        libMapM_gf_CalculateCurseSiegeDamageDone(libGame_gv_teamOrderIndex_C);

    }

    else if ((libMapM_gv_mMRavenTeamStats[libGame_gv_teamChaosIndex_C].lv_cursed == true)) {

        libMapM_gf_CalculateCurseSiegeDamageDone(libGame_gv_teamChaosIndex_C);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_CalculateCurseSiegeDamageDone_Init () {

    libMapM_gt_CalculateCurseSiegeDamageDone = TriggerCreate("libMapM_gt_CalculateCurseSiegeDamageDone_Func");

    libGame_gf_GameOverEvent(libMapM_gt_CalculateCurseSiegeDamageDone);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Init

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonInit_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;



    // Automatic Variable Declarations

    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((libGame_gf_MapMechanicInitializationMechanicType() == libMapM_gv_mMGardensDragonMechanicName_C))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gv_mapMechanicsObserverCountLabelText = StringToText("");

    TriggerEnable(libMapM_gt_MMGardensDragonDebugCheatStartObelisksso, true);

    TriggerEnable(libMapM_gt_MMGardensDragonGateOpen, true);

    TriggerEnable(libMapM_gt_MMGardensDragonWarningTimerExpires, true);

    TriggerEnable(libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires, true);

    TriggerEnable(libMapM_gt_MMGardensDragonWarningTimerStart, true);

    TriggerEnable(libMapM_gt_MMGardensDragonDragonEventStarts, true);

    TriggerEnable(libMapM_gt_MMGardensDragonDragonEventEnds, true);

    TriggerEnable(libMapM_gt_MMGardensDragonTransformChannelFinish, true);

    TriggerEnable(libMapM_gt_MMGardensDragonDisableEvent, true);

    libGame_gf_SendMapSpecificAwardInitializeEventwithUserData(null, "Shriner");

    UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateHighlightable, false);

    UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateTargetable, false);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonInit_Init () {

    libMapM_gt_MMGardensDragonInit = TriggerCreate("libMapM_gt_MMGardensDragonInit_Func");

    libGame_gf_MapMechanicInitialization(libMapM_gt_MMGardensDragonInit);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Gate Open

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonGateOpen_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libMapM_gv_mMMapMechanicDisabled == false))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TimerStart(libMapM_gv_mMGardensDragonDragonTowerStartTimer, libMapM_gv_mMGardensDragonDragonTowerStartTime_C, false, c_timeGame);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonGateOpen_Init () {

    libMapM_gt_MMGardensDragonGateOpen = TriggerCreate("libMapM_gt_MMGardensDragonGateOpen_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonGateOpen, false);

    TriggerAddEventTimer(libMapM_gt_MMGardensDragonGateOpen, libGame_gv_openTheGatesTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Warning Timer Start

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonWarningTimerStart_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libMapM_gt_MMGardensDragonObjectiveUIHandler, true, false);

    libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_ObelisksWarning;

    TimerStart(libMapM_gv_mMGardensDragonDragonTowerWarningTimer, libMapM_gv_mMGardensDragonWarningTime_C, false, c_timeGame);

    TimerStart(libMapM_gv_mMGardensDragonDragonTowerGoalActivationTimer, (libMapM_gv_mMGardensDragonWarningTime_C - 5.0), false, c_timeGame);

    if ((libMapM_gv_mMDragonballsTransmissionShrinesRechargeFirstTime == true)) {

        libMapM_gv_mMDragonballsTransmissionShrinesRechargeFirstTime = false;

        libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ();

    }

    else {

        libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ();

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonWarningTimerStart_Init () {

    libMapM_gt_MMGardensDragonWarningTimerStart = TriggerCreate("libMapM_gt_MMGardensDragonWarningTimerStart_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonWarningTimerStart, false);

    TriggerAddEventTimer(libMapM_gt_MMGardensDragonWarningTimerStart, libMapM_gv_mMGardensDragonDragonTowerStartTimer);

    TriggerAddEventTimer(libMapM_gt_MMGardensDragonWarningTimerStart, libMapM_gv_mMGardensDragonDragonTowerRespawnTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Tower Goal Activation Timer Expires

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_obelisk;



    // Automatic Variable Declarations

    int auto52ED3A72_ae;

    const int auto52ED3A72_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    auto52ED3A72_ae = libMapM_gv_mMGardensDragonDragonTowerCount;

    lv_obelisk = 1;

    for ( ; ( (auto52ED3A72_ai >= 0 && lv_obelisk <= auto52ED3A72_ae) || (auto52ED3A72_ai < 0 && lv_obelisk >= auto52ED3A72_ae) ) ; lv_obelisk += auto52ED3A72_ai ) {

        AddUnitOfInterest(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit, 3.5, 5.0, "DefendDragonShrine", libNtve_ge_GoalTeam_Both, libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_captureBeaconIndex);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires_Init () {

    libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires = TriggerCreate("libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires, false);

    TriggerAddEventTimer(libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires, libMapM_gv_mMGardensDragonDragonTowerGoalActivationTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Warning Timer Expires

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonWarningTimerExpires_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;

    int lv_obelisk;

    int lv_p;

    const int lv_fontSize = 15;



    // Automatic Variable Declarations

    int autoE4D52634_ae;

    playergroup autoA3E49DEF_g;

    playergroup auto94A62BD7_g;

    playergroup auto1E05FCEC_g;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_ObelisksAvailable;

    if ((libMapM_gv_mMGardensDragonSpawnFirstTime == true)) {

        libMapM_gv_mMGardensDragonSpawnFirstTime = false;

        autoE4D52634_ae = libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C;

        lv_obelisk = 1;

        for ( ; lv_obelisk <= autoE4D52634_ae ; lv_obelisk += 1 ) {

            libUIUI_gf_AttachHelpButtonToUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit, libMapM_gt_MMHelpbuttonClicked, StringExternal("Param/Value/lib_MapM_C773195E"), 100, 110);

            autoA3E49DEF_g = libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer];

            lv_itPlayer = -1;

            while (true) {

                	lv_itPlayer = PlayerGroupNextPlayer(autoA3E49DEF_g, lv_itPlayer);

                	if (lv_itPlayer<0) { break; }

                	libUIUI_gf_ShowHideHelpButtonOnUnitForPlayer(lv_itPlayer, false, libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit);

            }

            auto94A62BD7_g = libCore_gv_activeHumanPlayers;

            lv_p = -1;

            while (true) {

                	lv_p = PlayerGroupNextPlayer(auto94A62BD7_g, lv_p);

                	if (lv_p<0) { break; }

                	if ((libMapM_gv_mapMechanicUsedTracker[lv_p].lv_dragonShrine == true)) {

                    libUIUI_gf_ShowHideHelpButtonOnUnitForPlayer(lv_p, false, libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit);

                }



            }

        }

        TriggerExecute(libMapM_gt_MMGardensDragonTurnOnDragonTowersFirstTime, true, false);

    }

    else {

        TriggerExecute(libMapM_gt_MMGardensDragonTurnOnDragonTowersAgain, true, false);

    }

    TextTagCreate(StringExternal("Param/Value/lib_MapM_60EE21E2"), lv_fontSize, UnitGetPosition(libMapM_gv_mMGardensDragonStatue), 0.0, true, false, PlayerGroupAll());

    libMapM_gv_mMGardensDragonStatueTextTag = TextTagLastCreated();

    TextTagAttachToUnit(TextTagLastCreated(), libMapM_gv_mMGardensDragonStatue, libMapM_gv_mMGardensDragonDragonStatueHelperTextTagHeightOffset_C);

    TextTagShow(TextTagLastCreated(), PlayerGroupAll(), true);

    TextTagShow(TextTagLastCreated(), libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], false);

    auto1E05FCEC_g = libCore_gv_activeHumanPlayers;

    lv_p = -1;

    while (true) {

        	lv_p = PlayerGroupNextPlayer(auto1E05FCEC_g, lv_p);

        	if (lv_p<0) { break; }

        	if ((libMapM_gv_mapMechanicUsedTracker[lv_p].lv_dragonStatue == true)) {

            TextTagShow(TextTagLastCreated(), libCore_gv_playerGroupFromPlayer[lv_p], false);

        }



    }

    TextTagCreate(StringExternal("Param/Value/lib_MapM_A60971D2"), lv_fontSize, UnitGetPosition(libMapM_gv_mMGardensDragonStatue), 0.0, true, false, PlayerGroupAll());

    libMapM_gv_mMGardensDragonStatueTextTagAllyOwned = TextTagLastCreated();

    TextTagAttachToUnit(TextTagLastCreated(), libMapM_gv_mMGardensDragonStatue, libMapM_gv_mMGardensDragonDragonStatueHelperTextTagHeightOffset_C);

    TextTagShow(TextTagLastCreated(), PlayerGroupAll(), false);

    TextTagCreate(StringExternal("Param/Value/lib_MapM_EEE97929"), lv_fontSize, UnitGetPosition(libMapM_gv_mMGardensDragonStatue), 0.0, true, false, PlayerGroupAll());

    libMapM_gv_mMGardensDragonStatueTextTagEnemyOwned = TextTagLastCreated();

    TextTagAttachToUnit(TextTagLastCreated(), libMapM_gv_mMGardensDragonStatue, libMapM_gv_mMGardensDragonDragonStatueHelperTextTagHeightOffset_C);

    TextTagShow(TextTagLastCreated(), PlayerGroupAll(), false);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonWarningTimerExpires_Init () {

    libMapM_gt_MMGardensDragonWarningTimerExpires = TriggerCreate("libMapM_gt_MMGardensDragonWarningTimerExpires_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonWarningTimerExpires, false);

    TriggerAddEventTimer(libMapM_gt_MMGardensDragonWarningTimerExpires, libMapM_gv_mMGardensDragonDragonTowerWarningTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Dragon Event Starts

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonDragonEventStarts_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_DragonRampaging;

    SoundChannelMute(PlayerGroupAll(), c_soundCategoryAmbient, true);

    SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);

    libSond_gf_SoundtrackApplyNewDefaultSoundtrackForPlayerGroup("Storm_Music_Dragonknight", PlayerGroupAll());

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonDragonEventStarts_Init () {

    libMapM_gt_MMGardensDragonDragonEventStarts = TriggerCreate("libMapM_gt_MMGardensDragonDragonEventStarts_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonDragonEventStarts, false);

    libGame_gf_MapDragonShireDragonActivated(libMapM_gt_MMGardensDragonDragonEventStarts);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Dragon Event Ends

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonDragonEventEnds_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_Idle;

    SoundChannelMute(PlayerGroupAll(), c_soundCategoryAmbient, false);

    SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);

    libSond_gf_SoundtrackPlayMapSoundtrackAsDefaultSoundtrackForAllPlayers();

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonDragonEventEnds_Init () {

    libMapM_gt_MMGardensDragonDragonEventEnds = TriggerCreate("libMapM_gt_MMGardensDragonDragonEventEnds_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonDragonEventEnds, false);

    libGame_gf_MapDragonShireDragonEnds(libMapM_gt_MMGardensDragonDragonEventEnds);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Turn On Dragon Towers First Time

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonTurnOnDragonTowersFirstTime_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_indexTeam;

    int lv_obelisk;

    int lv_player;



    // Automatic Variable Declarations

    int auto27701136_ae;

    const int auto27701136_ai = 1;

    int autoFF5452D1_ae;

    const int autoFF5452D1_ai = 1;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    auto27701136_ae = libMapM_gv_mMGardensDragonDragonTowerCount;

    lv_obelisk = 1;

    for ( ; ( (auto27701136_ai >= 0 && lv_obelisk <= auto27701136_ae) || (auto27701136_ai < 0 && lv_obelisk >= auto27701136_ae) ) ; lv_obelisk += auto27701136_ai ) {

        ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit), "SetMinimapVisibility 1");

        libGame_gf_SendEventMapDragonShireSpawned(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit);

        libGame_gf_CapturePointEnable(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_captureBeaconIndex);

        libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit, "Signal OwnerNeutral");

    }

    TriggerEnable(libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires, true);

    libMapM_gf_MMDragonballsTransmissionObelisksSpawnFirstQ();

    autoFF5452D1_ae = libMapM_gv_mMGardensDragonDragonTowerCount;

    lv_obelisk = 1;

    for ( ; ( (autoFF5452D1_ai >= 0 && lv_obelisk <= autoFF5452D1_ae) || (autoFF5452D1_ai < 0 && lv_obelisk >= autoFF5452D1_ae) ) ; lv_obelisk += autoFF5452D1_ai ) {

        libCore_gf_CreateMinimapPingStorm(PlayerGroupAll(), "StormAlert", UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit), ColorWithAlpha(100.00, 100.00, 0.00, 0.00), 6.0);

        ActorCreate(ActorScopeFromUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit), "UI_Game_Ping_Shrine_Ready", null, null, null);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonTurnOnDragonTowersFirstTime_Init () {

    libMapM_gt_MMGardensDragonTurnOnDragonTowersFirstTime = TriggerCreate("libMapM_gt_MMGardensDragonTurnOnDragonTowersFirstTime_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Turn On Dragon Towers Again

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonTurnOnDragonTowersAgain_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_p;

    int lv_dragontower;



    // Automatic Variable Declarations

    int autoC4CF07E2_ae;

    const int autoC4CF07E2_ai = 1;

    playergroup auto82B36A20_g;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires, true);

    UnitCreate(1, "VehicleDragon", c_unitCreateIgnorePlacement, 0, libMapM_gv_mMGardensDragonDragonKnightRespawnPoint, 270.0, null);

    libMapM_gv_mMGardensDragonStatue = UnitLastCreated();

    libMapM_gf_AddVehicle(libMapM_gv_mMGardensDragonStatue);

    UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateStatusBar, false);

    TimerPause(libMapM_gv_mMGardensDragonDragonKnightLifeTimer, true);

    libMapM_gf_MMDragonballsTransmissionObelisksSpawnRepeatQ();

    autoC4CF07E2_ae = libMapM_gv_mMGardensDragonDragonTowerCount;

    lv_dragontower = 1;

    for ( ; ( (autoC4CF07E2_ai >= 0 && lv_dragontower <= autoC4CF07E2_ae) || (autoC4CF07E2_ai < 0 && lv_dragontower >= autoC4CF07E2_ae) ) ; lv_dragontower += autoC4CF07E2_ai ) {

        UnitSetOwner(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit, libCore_gv_cOMPUTER_Neutral, true);

        ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit), "SetMinimapVisibility 1");

        libCore_gf_CreateMinimapPingStorm(PlayerGroupAll(), "StormWarning", UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit), ColorWithAlpha(100.00, 0.00, 0.00, 0.00), 3.0);

        ActorCreate(ActorScopeFromUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit), "UI_Game_Ping_Shrine_Ready", null, null, null);

        libGame_gf_CapturePointEnable(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_captureBeaconIndex);

        AddUnitOfInterest(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit, 3.5, 0.0, "DefendDragonShrine", libNtve_ge_GoalTeam_Both, libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_captureBeaconIndex);

        libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit, "Signal OwnerNeutral");

        auto82B36A20_g = PlayerGroupAll();

        lv_p = -1;

        while (true) {

            	lv_p = PlayerGroupNextPlayer(auto82B36A20_g, lv_p);

            	if (lv_p<0) { break; }

            	VisRevealArea(lv_p, RegionCircle(UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit), 0.75), 0.125, false);

        }

        libGame_gf_SendEventMapDragonShireSpawned(libMapM_gv_mMGardensDragonDragonTowers[lv_dragontower].lv_shrineUnit);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonTurnOnDragonTowersAgain_Init () {

    libMapM_gt_MMGardensDragonTurnOnDragonTowersAgain = TriggerCreate("libMapM_gt_MMGardensDragonTurnOnDragonTowersAgain_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Dragon Tower - Change Ownership Event Fires

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_index;

    int lv_owner;

    int lv_obelisk;

    int lv_p;



    // Automatic Variable Declarations

    int auto8EAED812_ae;

    int auto16B91710_val;

    playergroup autoDA72EB8E_g;



    // Variable Initialization

    lv_index = libGame_gf_CapturePointChangesOwnerCapturePointIndex();

    lv_owner = libGame_gf_CapturePointChangesOwnerOwner();



    // Actions

    if (!runActions) {

        return true;

    }



    auto8EAED812_ae = libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C;

    lv_obelisk = 1;

    for ( ; lv_obelisk <= auto8EAED812_ae ; lv_obelisk += 1 ) {

        if ((libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_captureBeaconIndex == lv_index)) {

            auto16B91710_val = lv_owner;

            if (auto16B91710_val == libCore_gv_cOMPUTER_TeamOrder) {

                libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership(lv_obelisk, libCore_gv_cOMPUTER_TeamOrder, libGame_gf_CapturePointChangesOwnerCapturingPlayers());

                libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit, "Signal OwnerOrder");

                libCore_gf_CreateMinimapPingStorm(PlayerGroupAll(), "StormAlert", UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit), ColorWithAlpha(100.00, 100.00, 0.00, 0.00), 5.0);

            }

            else if (auto16B91710_val == libCore_gv_cOMPUTER_TeamChaos) {

                libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership(lv_obelisk, libCore_gv_cOMPUTER_TeamChaos, libGame_gf_CapturePointChangesOwnerCapturingPlayers());

                libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit, "Signal OwnerChaos");

                libCore_gf_CreateMinimapPingStorm(PlayerGroupAll(), "StormAlert", UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit), ColorWithAlpha(100.00, 100.00, 0.00, 0.00), 5.0);

            }

            else if (auto16B91710_val == libCore_gv_cOMPUTER_Neutral) {

                libMapM_gf_MMGardensDragonChangeDragonballTowerOwnership(lv_obelisk, libCore_gv_cOMPUTER_Neutral, libGame_gf_CapturePointChangesOwnerCapturingPlayers());

                libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit, "Signal OwnerNeutral");

            }

            else {

            }

            if ((lv_owner != libCore_gv_cOMPUTER_Neutral)) {

                autoDA72EB8E_g = PlayerGroupAlliance(c_playerGroupAlly, lv_owner);

                lv_p = -1;

                while (true) {

                    	lv_p = PlayerGroupNextPlayer(autoDA72EB8E_g, lv_p);

                    	if (lv_p<0) { break; }

                    	if ((libNtve_gf_UnitInRegion(libGame_gv_players[lv_p].lv_heroUnit, RegionCircle(UnitGetPosition(libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit), libMapM_gv_mMGardensDragonDragonballTowerCaptureRadius_C)) == true)) {

                        libMapM_gv_mapMechanicUsedTracker[lv_p].lv_dragonShrine = true;

                        libUIUI_gf_ShowHideHelpButtonOnUnitForPlayer(lv_p, false, libMapM_gv_mMGardensDragonDragonTowers[lv_obelisk].lv_shrineUnit);

                    }



                }

            }



        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires_Init () {

    libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires = TriggerCreate("libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires, false);

    libGame_gf_CapturePointChangesOwner(libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Dragon Tower - Check Obelisk Status

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonDragonTowerCheckObeliskStatus_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_orderTowersOwned;

    int lv_chaosTowersOwned;

    int lv_towerIndex;



    // Automatic Variable Declarations

    const int autoC86FE021_ae = libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C;

    const int autoC86FE021_ai = 1;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_towerIndex = 1;

    for ( ; ( (autoC86FE021_ai >= 0 && lv_towerIndex <= autoC86FE021_ae) || (autoC86FE021_ai < 0 && lv_towerIndex >= autoC86FE021_ae) ) ; lv_towerIndex += autoC86FE021_ai ) {

        if ((UnitGetOwner(libMapM_gv_mMGardensDragonDragonTowers[lv_towerIndex].lv_shrineUnit) == libCore_gv_cOMPUTER_TeamOrder)) {

            lv_orderTowersOwned += 1;

        }



        if ((UnitGetOwner(libMapM_gv_mMGardensDragonDragonTowers[lv_towerIndex].lv_shrineUnit) == libCore_gv_cOMPUTER_TeamChaos)) {

            lv_chaosTowersOwned += 1;

        }



    }

    if (((lv_chaosTowersOwned == libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C) || (lv_orderTowersOwned == libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C))) {

        if ((lv_chaosTowersOwned == libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C)) {

            libMapM_gf_MMGardensDragonActivateStatueForTeam(libCore_gv_cOMPUTER_TeamChaos);

            libMapM_gf_MMDragonballsTransmissionDragonCapturableQ(libGame_gv_teamChaosIndex_C);

        }

        else {

            libMapM_gf_MMGardensDragonActivateStatueForTeam(libCore_gv_cOMPUTER_TeamOrder);

            libMapM_gf_MMDragonballsTransmissionDragonCapturableQ(libGame_gv_teamOrderIndex_C);

        }

    }

    else {

        if ((UnitGetOwner(libMapM_gv_mMGardensDragonStatue) != 0)) {

            libMapM_gf_MMGardensDragonDeactivateStatue(UnitGetOwner(libMapM_gv_mMGardensDragonStatue));

        }



    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonDragonTowerCheckObeliskStatus_Init () {

    libMapM_gt_MMGardensDragonDragonTowerCheckObeliskStatus = TriggerCreate("libMapM_gt_MMGardensDragonDragonTowerCheckObeliskStatus_Func");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Transform Channel Start

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonTransformChannelStart_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    UnitAbilitySpendExplicit(libMapM_gv_mMGardensDragonStatue, AbilityCommand("LeaveVehicle", 0), c_spendLocationAbility, 1.0, 1.0, 1.0, 1.0);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonTransformChannelStart_Init () {

    libMapM_gt_MMGardensDragonTransformChannelStart = TriggerCreate("libMapM_gt_MMGardensDragonTransformChannelStart_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonTransformChannelStart, false);

    TriggerAddEventUnitAbility(libMapM_gt_MMGardensDragonTransformChannelStart, null, AbilityCommand("UseVehicle", 0), c_abilEffectStageChannel, false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Transform Channel Finish

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonTransformChannelFinish_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itObelisk;

    fixed lv_duration;

    int lv_dragonPilotTeam;



    // Automatic Variable Declarations

    const int auto91990493_ae = libCore_gv_bALMaxPlayers;

    int auto91990493_var;

    int auto632F3216_ae;

    const int auto632F3216_ai = 1;



    // Variable Initialization

    lv_dragonPilotTeam = libGame_gf_TeamNumberOfPlayer(EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster));



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires, false);

    lv_duration = libMapM_gf_MMGardensDragonDragonDuration();

    libMapM_gv_mMGardensDragonDragonCaptures += 1;

    UnitBehaviorAdd(libMapM_gv_mMGardensDragonStatue, "VehicleDragonTimedLife", EventPlayerEffectUsedUnit(c_effectUnitCaster), 1);

    UnitBehaviorSetDuration(libMapM_gv_mMGardensDragonStatue, "VehicleDragonTimedLife", lv_duration);

    UnitBehaviorSetDurationRemaining(libMapM_gv_mMGardensDragonStatue, "VehicleDragonTimedLife", lv_duration);

    auto91990493_var = 1;

    for ( ; auto91990493_var <= auto91990493_ae; auto91990493_var += 1 ) {

        UnitSetStateForPlayer(libMapM_gv_mMGardensDragonStatue, c_unitStateTargetable, auto91990493_var, true);

    }

    libGame_gf_SendEventMapObjectiveCapturedByUnit(EventPlayerEffectUsedUnit(c_effectUnitCaster));

    libNtve_gf_UnitAbilityRemoveCooldown(libMapM_gv_mMGardensDragonStatue, "LeaveVehicle", "Abil/LeaveVehicle");

    UnitAbilityAddCooldown(libMapM_gv_mMGardensDragonStatue, "LeaveVehicle", "Abil/LeaveVehicle", 5.0);

    TimerPause(libMapM_gv_mMGardensDragonDragonStatueActiveReminderTimer, true);

    TimerStart(libMapM_gv_mMGardensDragonDragonKnightLifeTimer, lv_duration, false, c_timeGame);

    TriggerEnable(libMapM_gt_MMGardensDragonDragonKnightDiesorExpires, true);

    libMapM_gv_mMGardensDragonUnit = libGame_gv_players[EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster)].lv_activeVehicle;

    if ((libNtve_gf_UnitInRegion(libMapM_gv_mMGardensDragonUnit, RegionCircle(libMapM_gv_mMGardensDragonDragonKnightRespawnPoint, 1.0)) == true)) {

        UnitSetPosition(libMapM_gv_mMGardensDragonUnit, libMapM_gv_mMGardensDragonSpawnPoint, false);

    }



    UnitSetState(libMapM_gv_mMGardensDragonUnit, c_unitStateStatusBar, true);

    libMapM_gv_mMGardensDragonPlayer = EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster);

    StatEventCreate("DragonKnightActivated");

    StatEventAddDataInt(StatEventLastCreated(), "Event", libMapM_gv_mMGardensDragonDragonCaptures);

    StatEventAddDataFixed(StatEventLastCreated(), "TeamID", libGame_gf_TeamNumberOfPlayer(libMapM_gv_mMGardensDragonPlayer));

    StatEventAddDataFixed(StatEventLastCreated(), "GameTime", libUIUI_gf_HeroesGameTime());

    StatEventSend(StatEventLastCreated());

    RemoveUnitOfInterest(libMapM_gv_mMGardensDragonDragonTowers[1].lv_shrineUnit, "DefendDragonShrine", libNtve_ge_GoalTeam_Both);

    RemoveUnitOfInterest(libMapM_gv_mMGardensDragonDragonTowers[2].lv_shrineUnit, "DefendDragonShrine", libNtve_ge_GoalTeam_Both);

    RemoveUnitOfInterest(libMapM_gv_mMGardensDragonStatue, "ActivateDragonKnight", libAIAI_gf_ConvertIntegertoGoalTeam(lv_dragonPilotTeam));

    RemoveUnitOfInterest(libMapM_gv_mMGardensDragonStatue, "DefendDragonStatue", libAIAI_gf_ConvertIntegertoGoalTeam(libGame_gf_EnemyTeam(lv_dragonPilotTeam)));

    if ((libCore_gf_ActorStoredForUnit(libMapM_gv_mMGardensDragonUnit, 1) == null)) {

        libNtve_gf_AttachModelToUnit(libMapM_gv_mMGardensDragonUnit, "GardensDragonLight", "Ref_Center");

        libCore_gf_StoreActorForUnit(libMapM_gv_mMGardensDragonUnit, 1, libNtve_gf_ActorLastCreated());

    }



    auto632F3216_ae = libMapM_gv_mMGardensDragonDragonTowerCount;

    lv_itObelisk = 1;

    for ( ; ( (auto632F3216_ai >= 0 && lv_itObelisk <= auto632F3216_ae) || (auto632F3216_ai < 0 && lv_itObelisk >= auto632F3216_ae) ) ; lv_itObelisk += auto632F3216_ai ) {

        UnitSetOwner(libMapM_gv_mMGardensDragonDragonTowers[lv_itObelisk].lv_shrineUnit, libCore_gv_cOMPUTER_Neutral, true);

        UnitIssueOrder(libMapM_gv_mMGardensDragonDragonTowers[lv_itObelisk].lv_shrineUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);

        libGame_gf_CapturePointDisable(libMapM_gv_mMGardensDragonDragonTowers[lv_itObelisk].lv_captureBeaconIndex);

        ActorSend(libNtve_gf_MainActorofUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_itObelisk].lv_shrineUnit), "SetMinimapVisibility");

        libNtve_gf_SendActorMessageToUnit(libMapM_gv_mMGardensDragonDragonTowers[lv_itObelisk].lv_shrineUnit, "AnimBracketStop Capture");

        UnitStatusBarOverride(libMapM_gv_mMGardensDragonDragonTowers[lv_itObelisk].lv_shrineUnit, -1);

        TextTagDestroy(libMapM_gv_mMGardensDragonDragonTowers[lv_itObelisk].lv_helperText);

    }

    ActorScopeSend(ActorScopeFromActor(libMapM_gv_mMGardensDragonSoundRegionActor), "Signal StopSound");

    ActorRegionCreate(null, "DragonBeamEndRegion", libMapM_gv_mMGardensDragonSoundRegion);

    libGame_gf_SendEventMapDragonShireDragonActivated(libMapM_gv_mMGardensDragonStatue, libMapM_gv_mMGardensDragonPlayer);

    TextTagDestroy(libMapM_gv_mMGardensDragonStatueTextTag);

    TextTagDestroy(libMapM_gv_mMGardensDragonStatueTextTagAllyOwned);

    TextTagDestroy(libMapM_gv_mMGardensDragonStatueTextTagEnemyOwned);

    libMapM_gv_mapMechanicUsedTracker[EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster)].lv_dragonStatue = true;

    libGame_gf_DropLootBannerinSconce(UnitGroupUnit(UnitGroup("LootBannerSconce", c_playerAny, RegionCircle(UnitGetPosition(libMapM_gv_mMGardensDragonUnit), 8.0), UnitFilter(0, 0, 0, 0), 1), 1), libGame_gv_players[libMapM_gv_mMGardensDragonPlayer].lv_lootContent.lv_loot_Banner.lv_bannerID, libMapM_gv_mMGardensDragonPlayer, true);

    libMapM_gf_MMGardensDragonDragonHasEnteredArtHooks();

    libMapM_gf_MMDragonballsTransmissionDragonActiveQ(libGame_gf_TeamNumberOfPlayer(EventPlayerEffectUsedUnitOwner(c_effectPlayerCaster)));

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonTransformChannelFinish_Init () {

    libMapM_gt_MMGardensDragonTransformChannelFinish = TriggerCreate("libMapM_gt_MMGardensDragonTransformChannelFinish_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonTransformChannelFinish, false);

    TriggerAddEventPlayerEffectUsed(libMapM_gt_MMGardensDragonTransformChannelFinish, c_playerAny, "UseVehicleCastCompleteSet");

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Take Dragon Reminder Timer Expires

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonTakeDragonReminderTimerExpires_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_obelisk;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    if ((UnitGetOwner(libMapM_gv_mMGardensDragonStatue) == libCore_gv_cOMPUTER_TeamOrder)) {

        libCore_gf_CreateMinimapPingStormWithPlayerId(PlayerGroupAll(), "StormWarning", UnitGetPosition(libMapM_gv_mMGardensDragonStatue), ColorWithAlpha(0,0,0,0), 5.0, libCore_gv_cOMPUTER_TeamOrder);

    }

    else {

        libCore_gf_CreateMinimapPingStormWithPlayerId(PlayerGroupAll(), "StormWarning", UnitGetPosition(libMapM_gv_mMGardensDragonStatue), ColorWithAlpha(0,0,0,0), 5.0, libCore_gv_cOMPUTER_TeamChaos);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonTakeDragonReminderTimerExpires_Init () {

    libMapM_gt_MMGardensDragonTakeDragonReminderTimerExpires = TriggerCreate("libMapM_gt_MMGardensDragonTakeDragonReminderTimerExpires_Func");

    TriggerAddEventTimer(libMapM_gt_MMGardensDragonTakeDragonReminderTimerExpires, libMapM_gv_mMGardensDragonDragonStatueActiveReminderTimer);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Dragon Knight Dies or Expires

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonDragonKnightDiesorExpires_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unit lv_u;

    int lv_camp;

    int lv_i;

    int lv_player;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_player = UnitGetOwner(EventUnit());



    // Actions

    if (!runActions) {

        return true;

    }



    if ((lv_player > libCore_gv_bALMaxPlayers)) {

        lv_player = libMapM_gv_mMGardensDragonPlayer;

    }



    TimerStart(libMapM_gv_mMGardensDragonDragonTowerRespawnTimer, libMapM_gv_mMGardensDragonDragonTowerRespawnTime_C, false, c_timeGame);

    TimerStart(libMapM_gv_mMGardensDragonDragonKnightLifeTimer, 0.0, false, c_timeGame);

    libGame_gf_SendEventMapDragonShireDragonEnds();

    ActorSend(libCore_gf_ActorStoredForUnit(libMapM_gv_mMGardensDragonUnit, 1), "Destroy");

    libMapM_gf_MMGardensDragonDragonHasLeftArtHooks();

    Wait(0.5, c_timeGame);

    libMapM_gf_MMDragonballsTransmissionDragonExpireQ();

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonDragonKnightDiesorExpires_Init () {

    libMapM_gt_MMGardensDragonDragonKnightDiesorExpires = TriggerCreate("libMapM_gt_MMGardensDragonDragonKnightDiesorExpires_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonDragonKnightDiesorExpires, false);

    TriggerAddEventUnitDied(libMapM_gt_MMGardensDragonDragonKnightDiesorExpires, UnitRefFromVariable("libMapM_gv_mMGardensDragonUnit"));

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Objective UI Handler

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonObjectiveUIHandler_Func (bool testConds, bool runActions) {

    // Variable Declarations

    text lv_tip;

    int lv_indexTeam;

    int lv_indexTeamEnemy;

    int lv_state;

    int lv_lastState;



    // Automatic Variable Declarations

    int auto3C7A2C06_val;

    int auto01D05E00_val;



    // Variable Initialization

    lv_state = libMapM_ge_MMGardensDragonState_Idle;

    lv_lastState = libMapM_ge_MMGardensDragonState_Idle;



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    lv_tip = TextExpressionAssemble("Param/Expression/lib_MapM_EE88F2AF");

    while (true) {

        if ((libMapM_gv_mMGardensDragonCurrentState == libMapM_ge_MMGardensDragonState_DragonRampaging)) {

            lv_state = libMapM_ge_MMGardensDragonState_DragonRampaging;

            if ((libGame_gf_TeamNumberOfPlayer(UnitGetOwner(libMapM_gv_mMGardensDragonStatue)) == 1)) {

                lv_indexTeam = 1;

                lv_indexTeamEnemy = 2;

            }

            else {

                lv_indexTeam = 2;

                lv_indexTeamEnemy = 1;

            }

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsDragonShireSetUpDragonForTeam(libMapM_gv_mMGardensDragonUnit, lv_indexTeam);

                libUIUI_gf_MapMechanicsDragonShireSetMode(libUIUI_ge_MapMechanicsDragonShireModes_Dragon);

            }



            libUIUI_gf_MapMechanicsDragonShireSetRemainingDragonTime((FixedToInt(UnitBehaviorDuration(libMapM_gv_mMGardensDragonUnit, "VehicleDragonTimedLife")) + 1));

            lv_lastState = lv_state;

        }

        else if ((libMapM_gv_mMGardensDragonCurrentState == libMapM_ge_MMGardensDragonState_ObelisksWarning)) {

            lv_state = libMapM_ge_MMGardensDragonState_ObelisksWarning;

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsDragonShireSetMode(libUIUI_ge_MapMechanicsDragonShireModes_ShrineTimer);

                libUIUI_gf_MapMechanicsDragonShireShowHidePanel(true);

            }



            libUIUI_gf_MapMechanicsDragonShireSetRemainingShrineWarningTime(FixedToInt(TimerGetRemaining(libMapM_gv_mMGardensDragonDragonTowerWarningTimer)));

            lv_lastState = lv_state;

        }

        else if ((libMapM_gv_mMGardensDragonCurrentState == libMapM_ge_MMGardensDragonState_ObelisksAvailable)) {

            lv_state = libMapM_ge_MMGardensDragonState_ObelisksAvailable;

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsDragonShireSetMode(libUIUI_ge_MapMechanicsDragonShireModes_Shrines);

            }



            libUIUI_gf_MapMechanicsDragonShireSetMoonShrineOwner(0);

            libUIUI_gf_MapMechanicsDragonShireSetStarShrineOwner(0);

            auto3C7A2C06_val = UnitGetOwner(libMapM_gv_mMGardensDragonTowerMoon);

            if (auto3C7A2C06_val == libCore_gv_cOMPUTER_TeamOrder) {

                libUIUI_gf_MapMechanicsDragonShireSetMoonShrineOwner(libGame_gv_teamOrderIndex_C);

            }

            else if (auto3C7A2C06_val == libCore_gv_cOMPUTER_TeamChaos) {

                libUIUI_gf_MapMechanicsDragonShireSetMoonShrineOwner(libGame_gv_teamChaosIndex_C);

            }

            else {

            }

            auto01D05E00_val = UnitGetOwner(libMapM_gv_mMGardensDragonTowerStar);

            if (auto01D05E00_val == libCore_gv_cOMPUTER_TeamOrder) {

                libUIUI_gf_MapMechanicsDragonShireSetStarShrineOwner(libGame_gv_teamOrderIndex_C);

            }

            else if (auto01D05E00_val == libCore_gv_cOMPUTER_TeamChaos) {

                libUIUI_gf_MapMechanicsDragonShireSetStarShrineOwner(libGame_gv_teamChaosIndex_C);

            }

            else {

            }

            lv_lastState = lv_state;

        }

        else if ((libMapM_gv_mMGardensDragonCurrentState == libMapM_ge_MMGardensDragonState_Idle)) {

            lv_state = libMapM_ge_MMGardensDragonState_Idle;

            if ((lv_state != lv_lastState)) {

                libUIUI_gf_MapMechanicsDragonShireShowHidePanel(false);

            }



            lv_lastState = lv_state;

        }

        Wait(0.25, c_timeGame);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonObjectiveUIHandler_Init () {

    libMapM_gt_MMGardensDragonObjectiveUIHandler = TriggerCreate("libMapM_gt_MMGardensDragonObjectiveUIHandler_Func");

    TriggerAddEventChatMessage(libMapM_gt_MMGardensDragonObjectiveUIHandler, c_playerAny, "-eu", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon DisableEvent

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonDisableEvent_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if (((TimerGetRemaining(libMapM_gv_mMGardensDragonDragonTowerStartTimer) > 0.0) || (TimerGetRemaining(libMapM_gv_mMGardensDragonDragonTowerRespawnTimer) > 0.0))) {

        TimerPause(libMapM_gv_mMGardensDragonDragonTowerStartTimer, true);

        TimerPause(libMapM_gv_mMGardensDragonDragonTowerRespawnTimer, true);

        TriggerEnable(TriggerGetCurrent(), false);

        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MapM_B8BF3BE0"), true);

    }



    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonDisableEvent_Init () {

    libMapM_gt_MMGardensDragonDisableEvent = TriggerCreate("libMapM_gt_MMGardensDragonDisableEvent_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonDisableEvent, false);

    TriggerAddEventChatMessage(libMapM_gt_MMGardensDragonDisableEvent, c_playerAny, "DisableEvent", false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Debug Cheat (Start Obelisks -so)

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonDebugCheatStartObelisksso_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libMapM_gt_MMGardensDragonObjectiveUIHandler, true, false);

    libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_ObelisksWarning;

    TimerStart(libMapM_gv_mMGardensDragonDragonTowerWarningTimer, libMapM_gv_mMGardensDragonWarningTime_C, false, c_timeGame);

    TimerPause(libMapM_gv_mMGardensDragonDragonTowerStartTimer, true);

    TimerPause(libMapM_gv_mMGardensDragonDragonTowerGoalActivationTimer, true);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonDebugCheatStartObelisksso_Init () {

    libMapM_gt_MMGardensDragonDebugCheatStartObelisksso = TriggerCreate("libMapM_gt_MMGardensDragonDebugCheatStartObelisksso_Func");

    TriggerEnable(libMapM_gt_MMGardensDragonDebugCheatStartObelisksso, false);

    TriggerAddEventChatMessage(libMapM_gt_MMGardensDragonDebugCheatStartObelisksso, c_playerAny, "-so", true);

    TriggerAddEventChatMessage(libMapM_gt_MMGardensDragonDebugCheatStartObelisksso, c_playerAny, "EVENTSTART", true);

    TriggerAddEventChatMessage(libMapM_gt_MMGardensDragonDebugCheatStartObelisksso, c_playerAny, "eventstart", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Create Dragon

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonCreateDragon_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires, true);

    UnitCreate(1, "VehicleDragon", c_unitCreateIgnorePlacement, 0, UnitGetPosition(UnitGroupUnit(libGame_gv_players[EventPlayer()].lv_heroUnitGroup, 1)), 270.0, null);

    libMapM_gv_mMGardensDragonStatue = UnitLastCreated();

    UnitBehaviorAdd(UnitLastCreated(), "DragonKnightDontDie", UnitLastCreated(), 1);

    libMapM_gf_AddVehicle(libMapM_gv_mMGardensDragonStatue);

    UnitSetState(libMapM_gv_mMGardensDragonStatue, c_unitStateStatusBar, false);

    TimerPause(libMapM_gv_mMGardensDragonDragonKnightLifeTimer, true);

    libMapM_gf_MMGardensDragonActivateStatueForTeam(libGame_gf_ComputerPlayerInTeam(libGame_gf_TeamNumberOfPlayer(EventPlayer())));

    UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringExternal("Param/Value/lib_MapM_2F72E606"));

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonCreateDragon_Init () {

    libMapM_gt_MMGardensDragonCreateDragon = TriggerCreate("libMapM_gt_MMGardensDragonCreateDragon_Func");

    TriggerAddEventChatMessage(libMapM_gt_MMGardensDragonCreateDragon, c_playerAny, "-dragonknight", false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: MM Gardens Dragon Extend Life

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_MMGardensDragonExtendLife_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    UnitBehaviorSetDuration(libMapM_gv_mMGardensDragonStatue, "VehicleDragonTimedLife", -1.0);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_MMGardensDragonExtendLife_Init () {

    libMapM_gt_MMGardensDragonExtendLife = TriggerCreate("libMapM_gt_MMGardensDragonExtendLife_Func");

    TriggerAddEventChatMessage(libMapM_gt_MMGardensDragonExtendLife, c_playerAny, "-extendtimedlife", false);

}



//--------------------------------------------------------------------------------------------------

// Trigger: DEBUG - Add Vehicle

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DEBUGAddVehicle_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libCore_gv_dEBUGDebuggingEnabled == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gf_AddVehicle(UnitGroupClosestToPoint(UnitGroupSelected(1), CameraGetTarget(1)));

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DEBUGAddVehicle_Init () {

    libMapM_gt_DEBUGAddVehicle = TriggerCreate("libMapM_gt_DEBUGAddVehicle_Func");

    TriggerAddEventChatMessage(libMapM_gt_DEBUGAddVehicle, c_playerAny, "-addvehicle", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: DEBUG - Remove Vehicle

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DEBUGRemoveVehicle_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libCore_gv_dEBUGDebuggingEnabled == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gf_RemoveVehicle(UnitGroupClosestToPoint(UnitGroupSelected(1), CameraGetTarget(1)));

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DEBUGRemoveVehicle_Init () {

    libMapM_gt_DEBUGRemoveVehicle = TriggerCreate("libMapM_gt_DEBUGRemoveVehicle_Func");

    TriggerAddEventChatMessage(libMapM_gt_DEBUGRemoveVehicle, c_playerAny, "-removevehicle", true);

}



//--------------------------------------------------------------------------------------------------

// Trigger: DEBUG - Link Vehicle

//--------------------------------------------------------------------------------------------------

bool libMapM_gt_DEBUGLinkVehicle_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libCore_gv_dEBUGDebuggingEnabled == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libMapM_gf_LinkVehicleToVehicle(libMapM_gv_vehicle[StringToInt(StringWord(EventChatMessage(false), 2))].lv_unit_Vehicle, libMapM_gv_vehicle[StringToInt(StringWord(EventChatMessage(false), 3))].lv_unit_Vehicle);

    return true;

}



//--------------------------------------------------------------------------------------------------

void libMapM_gt_DEBUGLinkVehicle_Init () {

    libMapM_gt_DEBUGLinkVehicle = TriggerCreate("libMapM_gt_DEBUGLinkVehicle_Func");

    TriggerAddEventChatMessage(libMapM_gt_DEBUGLinkVehicle, c_playerAny, "-linkvehicle", false);

}



void libMapM_InitTriggers () {

    libMapM_gt_IncludeMapMechanics_Init();

    libMapM_gt_SummonerMinionLanerScaling_Init();

    libMapM_gt_DataJungleCampDefenderDoubloons_Init();

    libMapM_gt_DataJungleCampDefenderSiegeGiants_Init();

    libMapM_gt_DataJungleCampDefenderKnights_Init();

    libMapM_gt_DataJungleCampDefenderGraveGolem_Init();

    libMapM_gt_DataJungleCampMercSiegeGiants_Init();

    libMapM_gt_DataJungleCampMercOgres_Init();

    libMapM_gt_DataJungleCampMercGraveGolem_Init();

    libMapM_gt_DataJungleCampDefenderData_Init();

    libMapM_gt_DataJungleCampMercData_Init();

    libMapM_gt_InitializeJungleCamps_Init();

    libMapM_gt_StartJungleCampTimers_Init();

    libMapM_gt_JungleCreepCampRespawnTimerExpires_Init();

    libMapM_gt_JungleRespawnTimerTextTagCountdown_Init();

    libMapM_gt_JungleDefendersBeginFighting_Init();

    libMapM_gt_JungleDefendersEndFighting_Init();

    libMapM_gt_JungleAllDefendersKilled_Init();

    libMapM_gt_JungleHibernateCampsStart_Init();

    libMapM_gt_JungleHibernateCampsEnd_Init();

    libMapM_gt_JungleHibernateDefendersThatLeash_Init();

    libMapM_gt_JungleHibernateDefendersThatJustSpawned_Init();

    libMapM_gt_JungleCampOwnershipChange_Init();

    libMapM_gt_JungleMercLeaderDies_Init();

    libMapM_gt_JungleMercOgreShieldUsedOgre_Init();

    libMapM_gt_JungleMercOgreShieldUsedHero_Init();

    libMapM_gt_DEBUGJungleMercDamageDetection_Init();

    libMapM_gt_JungleSiegeGiantTaunt_Init();

    libMapM_gt_InitializeMapMechanics_Init();

    libMapM_gt_MMHelpbuttonClicked_Init();

    libMapM_gt_MMIntroCutsceneStart_Init();

    libMapM_gt_MMIntroCutsceneEnd_Init();

    libMapM_gt_MMIntroSkippable_Init();

    libMapM_gt_MMRepulseRegionPunchBehavior_Init();

    libMapM_gt_MMSafeRegionBehavior_Init();

    libMapM_gt_MMRemoveStackingCoreShieldMechanic_Init();

    libMapM_gt_EnableDisableMapEvent_Init();

    libMapM_gt_MMRavenCurseInit_Init();

    libMapM_gt_MMRavenCurseGateOpen_Init();

    libMapM_gt_MMRavenStartSpawning_Init();

    libMapM_gt_MMRavenSpawnTribute_Init();

    libMapM_gt_MMRavenObjectivePreviewTimerExpires_Init();

    libMapM_gt_MMRavenTributeCollectStarted_Init();

    libMapM_gt_MMRavenTributeCollectCanceled_Init();

    libMapM_gt_MMRavenTributeCollectInterrupted_Init();

    libMapM_gt_MMRavenTributeObtained_Init();

    libMapM_gt_MMRavenCurseReapplication_Init();

    libMapM_gt_MMRavenCurseStartLightTransition_Init();

    libMapM_gt_MMRavenCurseFinished_Init();

    libMapM_gt_MMRavenObjectiveUIHandler_Init();

    libMapM_gt_MMRavenDisableEvent_Init();

    libMapM_gt_MMRavenEnableEvent_Init();

    libMapM_gt_MMRavenDebugStartWarning_Init();

    libMapM_gt_MMRavenDebugStartElunees_Init();

    libMapM_gt_MMRavenDebugStartNexten_Init();

    libMapM_gt_MMRavenDebugStartCurseec_Init();

    libMapM_gt_CalculateCurseSiegeDamageDone_Init();

    libMapM_gt_MMGardensDragonInit_Init();

    libMapM_gt_MMGardensDragonGateOpen_Init();

    libMapM_gt_MMGardensDragonWarningTimerStart_Init();

    libMapM_gt_MMGardensDragonTowerGoalActivationTimerExpires_Init();

    libMapM_gt_MMGardensDragonWarningTimerExpires_Init();

    libMapM_gt_MMGardensDragonDragonEventStarts_Init();

    libMapM_gt_MMGardensDragonDragonEventEnds_Init();

    libMapM_gt_MMGardensDragonTurnOnDragonTowersFirstTime_Init();

    libMapM_gt_MMGardensDragonTurnOnDragonTowersAgain_Init();

    libMapM_gt_MMGardensDragonDragonTowerChangeOwnershipEventFires_Init();

    libMapM_gt_MMGardensDragonDragonTowerCheckObeliskStatus_Init();

    libMapM_gt_MMGardensDragonTransformChannelStart_Init();

    libMapM_gt_MMGardensDragonTransformChannelFinish_Init();

    libMapM_gt_MMGardensDragonTakeDragonReminderTimerExpires_Init();

    libMapM_gt_MMGardensDragonDragonKnightDiesorExpires_Init();

    libMapM_gt_MMGardensDragonObjectiveUIHandler_Init();

    libMapM_gt_MMGardensDragonDisableEvent_Init();

    libMapM_gt_MMGardensDragonDebugCheatStartObelisksso_Init();

    libMapM_gt_MMGardensDragonCreateDragon_Init();

    libMapM_gt_MMGardensDragonExtendLife_Init();

    libMapM_gt_DEBUGAddVehicle_Init();

    libMapM_gt_DEBUGRemoveVehicle_Init();

    libMapM_gt_DEBUGLinkVehicle_Init();

}



//--------------------------------------------------------------------------------------------------

// Library Initialization

//--------------------------------------------------------------------------------------------------

bool libMapM_InitLib_completed = false;



void libMapM_InitLib () {

    if (libMapM_InitLib_completed) {

        return;

    }



    libMapM_InitLib_completed = true;



    libMapM_InitLibraries();

    libMapM_InitVariables();

    libMapM_InitTriggers();

}



include "TriggerLibs/HeroesLib"

include "TriggerLibs/GameLib"

include "TriggerLibs/AILib"

include "TriggerLibs/UILib"

include "TriggerLibs/StartingExperienceLib"

include "TriggerLibs/SoundLib"

include "TriggerLibs/SupportLib"