include "TriggerLibs/NativeLib"

include "TriggerLibs/HeroesLib_h"

include "TriggerLibs/GameLib_h"

include "TriggerLibs/MapMechanicsLib_h"

include "TriggerLibs/UILib_h"



include "TriggerLibs/StartingExperienceLib_h"



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

// Library: Starting Experience

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

// External Library Initialization

void libStEx_InitLibraries () {

    libNtve_InitVariables();

    libCore_InitVariables();

    libGame_InitVariables();

    libMapM_InitVariables();

    libUIUI_InitVariables();

}



// Variable Initialization

bool libStEx_InitVariables_completed = false;



void libStEx_InitVariables () {

    int init_i;

    int init_i1;

    int init_i2;



    if (libStEx_InitVariables_completed) {

        return;

    }



    libStEx_InitVariables_completed = true;



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

        libStEx_gv_sE_AbilityHighlightFlash[init_i] = c_invalidDialogControlId;

    }

    libStEx_gv_sE_HintMsgDialog = c_invalidDialogId;

    libStEx_gv_sE_HintMsgPanel = c_invalidDialogControlId;

    libStEx_gv_sE_HintMsgLabel = c_invalidDialogControlId;

    libStEx_gv_sE_VOMsgDialog = c_invalidDialogId;

    libStEx_gv_sE_VOMsgPanel = c_invalidDialogControlId;

    libStEx_gv_sE_VOMsgLabel = c_invalidDialogControlId;

    libStEx_gv_sE_VOPausedMsgDialog = c_invalidDialogId;

    libStEx_gv_sE_VOPausedMsgFramePanel = c_invalidDialogControlId;

    libStEx_gv_sE_VOPausedMsgPanel = c_invalidDialogControlId;

    libStEx_gv_sE_VOPausedMsgIcon = c_invalidDialogControlId;

    libStEx_gv_sE_VOPausedMsgLabel = c_invalidDialogControlId;

    libStEx_gv_sE_VOPausedMsgButton = c_invalidDialogControlId;

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

        libStEx_gv_mapCutsceneStrings[init_i] = "";

    }

    libStEx_gv_tutorialCinematicRestoreSelection = true;

    libStEx_gv_sEUnitGroupRemovedRing = UnitGroupEmpty();

    libStEx_gv_sEMMIntroPlayersWatching = PlayerGroupEmpty();

    libStEx_gv_sEMMIntroPlayersInitiallyWatching = PlayerGroupEmpty();

    libStEx_gv_sE_MoveMouseButton = libStEx_ge_MouseButton_RightButton;

    libStEx_gv_sE_FrozenUnits = UnitGroupEmpty();

    libStEx_gv_sE_TrainingModeTalentPanelFlashingImage = c_invalidDialogControlId;

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

        libStEx_gv_sE_TrainingModeTips[init_i].lv_iD = libStEx_ge_SE_TrainingModeTips_None;

        libStEx_gv_sE_TrainingModeTips[init_i].lv_vO = "TutorialVO|Line00568";

    }

    libStEx_gv_sE_TrainingModeTipDialog = c_invalidDialogId;

    libStEx_gv_objectives.lv_objectivePickOneTalent = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectivePickRemainingTalentsAndReady = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveTargetDummy = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveGraveGolemFight = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveMoshPitFight = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDefendKeep = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveEscapeHelpValla = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveEscapeKillJaina = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveRoamHitTenFirst = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDragonKnightCapture = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectiveTargetDummy = c_invalidObjectiveId;

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

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

            for (init_i2 = 0; init_i2 <= libCore_gv_talents_MaxModificationsPerTalent_C; init_i2 += 1) {

                libStEx_gv_talents_TalentChoices[init_i].lv_talentData[init_i1].lv_abilityModificationData[init_i2].lv_changeType = c_talentModificationNone;

                libStEx_gv_talents_TalentChoices[init_i].lv_talentData[init_i1].lv_abilityModificationData[init_i2].lv_catalog = c_gameCatalogUnit;

                libStEx_gv_talents_TalentChoices[init_i].lv_talentData[init_i1].lv_abilityModificationData[init_i2].lv_entry = "";

                libStEx_gv_talents_TalentChoices[init_i].lv_talentData[init_i1].lv_abilityModificationData[init_i2].lv_field = "";

                libStEx_gv_talents_TalentChoices[init_i].lv_talentData[init_i1].lv_abilityModificationData[init_i2].lv_stringReplacementValue = "";

                libStEx_gv_talents_TalentChoices[init_i].lv_talentData[init_i1].lv_abilityModificationData[init_i2].lv_catalogReplaceFrom = "";

                libStEx_gv_talents_TalentChoices[init_i].lv_talentData[init_i1].lv_abilityModificationData[init_i2].lv_catalogChangeTo = "";

            }

        }

    }

    libStEx_gv_tutorialVeteranPanel.lv_mainPanel = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_RespecButton = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_RespecButton2 = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_RetryButton = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_ReadyButton = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_challengeCompleteImage = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_challengeTitleFrame = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_challengeDescriptionLabel = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_countdownFrame = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_countdown3Image = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_countdown2Image = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_countdown1Image = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_countdownGoLabel = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_dummyPanel = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_dummyDamageLabel = c_invalidDialogControlId;

    libStEx_gv_tutorialVeteranPanel.lv_dummyDPSLabel = c_invalidDialogControlId;

    libStEx_gv_targetDummyDamageTimer = TimerCreate();

    libStEx_gv_targetDummyPeaceTimer = TimerCreate();

    libStEx_gv_queryDialogResult = libStEx_ge_QueryDialogResult__None;

    libStEx_gv_tutorialHeroBtnJaina = c_invalidDialogControlId;

    libStEx_gv_tutorialHeroBtnMuradin = c_invalidDialogControlId;

    libStEx_gv_tutorialHeroBtnTyrande = c_invalidDialogControlId;

}



// Presets

string libStEx_ge_SE_TrainingModeTips_Ident (int lp_val) {

         if (lp_val == libStEx_ge_SE_TrainingModeTips_None) { return "None"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_WatchTower) { return "WatchTower"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_MercCamps) { return "MercCamps"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_HealingFountain) { return "HealingFountain"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Experience) { return "Experience"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Gates) { return "Gates"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Ammo1) { return "Ammo1"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Ammo2) { return "Ammo2"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Bushes) { return "Bushes"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Hearthstone) { return "Hearthstone"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_HearthstoneUsed) { return "HearthstoneUsed"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Mount) { return "Mount"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Mana) { return "Mana"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Abilities) { return "Abilities"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Death1) { return "Death1"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Death2) { return "Death2"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Spacebar) { return "Spacebar"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Talents) { return "Talents"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_CoreShield) { return "CoreShield"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_Forts) { return "Forts"; }

    else if (lp_val == libStEx_ge_SE_TrainingModeTips_NewUserTip_Last) { return "NewUserTip_Last"; }

    return null;

}



// Functions

void libStEx_gf_HighlightCommandButton (bool lp_highlightUnhighlight, int lp_button) {

    // Automatic Variable Declarations

    int autoFA2999E1_val;



    // Implementation

    if ((libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] == c_invalidDialogControlId) && (lp_highlightUnhighlight == true)) {

        autoFA2999E1_val = lp_button;

        if (autoFA2999E1_val == libStEx_ge_TutorialCommandButton_Ability1) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel/TutorialArrow00");

            libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] = DialogControlLastCreated();

        }

        else if (autoFA2999E1_val == libStEx_ge_TutorialCommandButton_Ability2) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel/TutorialArrow01");

            libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] = DialogControlLastCreated();

        }

        else if (autoFA2999E1_val == libStEx_ge_TutorialCommandButton_Ability3) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel/TutorialArrow04");

            libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] = DialogControlLastCreated();

        }

        else if (autoFA2999E1_val == libStEx_ge_TutorialCommandButton_Heroic) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel/TutorialArrow05");

            libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] = DialogControlLastCreated();

        }

        else if (autoFA2999E1_val == libStEx_ge_TutorialCommandButton_Hearth) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel/TutorialArrow02");

            libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] = DialogControlLastCreated();

        }

        else if (autoFA2999E1_val == libStEx_ge_TutorialCommandButton_Mount) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel/TutorialArrow03");

            libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] = DialogControlLastCreated();

        }

        else {

        }

    }



    if ((libStEx_gv_sE_AbilityHighlightFlash[(lp_button)] == c_invalidDialogControlId)) {

        return ;

    }



    if ((lp_highlightUnhighlight == true)) {

        DialogControlSetVisible(libStEx_gv_sE_AbilityHighlightFlash[(lp_button)], PlayerGroupAll(), true);

    }

    else {

        DialogControlSetVisible(libStEx_gv_sE_AbilityHighlightFlash[(lp_button)], PlayerGroupAll(), false);

    }

}



void libStEx_gf_DisplayHintMessage (text lp_msg, bool lp_writeOut, fixed lp_writeOutDuration) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return ;

    }



    if ((libStEx_gv_sE_HintMsgDialog == c_invalidDialogId)) {

        DialogCreate(1500, 250, c_anchorBottom, 0, 290, false);

        libStEx_gv_sE_HintMsgDialog = DialogLastCreated();

        DialogSetImageVisible(DialogLastCreated(), false);

        DialogSetVisible(DialogLastCreated(), PlayerGroupAll(), true);

    }



    if ((libStEx_gv_sE_HintMsgPanel != c_invalidDialogControlId)) {

        DialogControlDestroy(libStEx_gv_sE_HintMsgPanel);

    }



    SoundPlay(SoundLink("UI_Tutorial01_Hint_Message_Display", -1), PlayerGroupAll(), 100.0, 0.0);

    SoundPlay(SoundLink("UI_Tutorial01_Text_Crawl", -1), PlayerGroupAll(), 100.0, 0.0);

    DialogControlCreateFromTemplate(libStEx_gv_sE_HintMsgDialog, c_triggerControlTypePanel, "TutorialUI/TutorialTextBoxTemplate");

    libStEx_gv_sE_HintMsgPanel = DialogControlLastCreated();

    DialogControlSendAnimationEvent(DialogControlLastCreated(), PlayerGroupAll(), "TriggerTutorialDialogAnim");

    DialogControlHookup(DialogControlLastCreated(), c_triggerControlTypeLabel, "Text");

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), lp_msg, PlayerGroupAll());

    libNtve_gf_SetDialogItemTextWriteout(DialogControlLastCreated(), lp_writeOut, PlayerGroupAll());

    libNtve_gf_SetDialogItemTextWriteoutDuration(DialogControlLastCreated(), libStEx_gv_sE_MsgWriteOutDuration, PlayerGroupAll());

    libStEx_gv_sE_HintMsgLabel = DialogControlLastCreated();

}



void libStEx_gf_ClearHintMessage () {

    // Automatic Variable Declarations

    // Implementation

    if ((libStEx_gv_sE_HintMsgPanel != c_invalidDialogControlId)) {

        DialogControlFadeTransparency(libStEx_gv_sE_HintMsgPanel, PlayerGroupAll(), 2.0, 100.0);

        DialogControlDestroy(libStEx_gv_sE_HintMsgPanel);

        libStEx_gv_sE_HintMsgPanel = c_invalidDialogControlId;

    }



}



trigger auto_libStEx_gf_DisplayVOMessage_Trigger = null;

text auto_libStEx_gf_DisplayVOMessage_lp_msg;

fixed auto_libStEx_gf_DisplayVOMessage_lp_duration;

bool auto_libStEx_gf_DisplayVOMessage_lp_writeOut;



void libStEx_gf_DisplayVOMessage (text lp_msg, fixed lp_duration, bool lp_writeOut) {

    auto_libStEx_gf_DisplayVOMessage_lp_msg = lp_msg;

    auto_libStEx_gf_DisplayVOMessage_lp_duration = lp_duration;

    auto_libStEx_gf_DisplayVOMessage_lp_writeOut = lp_writeOut;



    if (auto_libStEx_gf_DisplayVOMessage_Trigger == null) {

        auto_libStEx_gf_DisplayVOMessage_Trigger = TriggerCreate("auto_libStEx_gf_DisplayVOMessage_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_DisplayVOMessage_Trigger, false, false);

}



bool auto_libStEx_gf_DisplayVOMessage_TriggerFunc (bool testConds, bool runActions) {

    text lp_msg = auto_libStEx_gf_DisplayVOMessage_lp_msg;

    fixed lp_duration = auto_libStEx_gf_DisplayVOMessage_lp_duration;

    bool lp_writeOut = auto_libStEx_gf_DisplayVOMessage_lp_writeOut;



    // Variable Declarations

    int lv_localPanel;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_localPanel = c_invalidDialogControlId;



    // Implementation

    if ((libGame_gv_gameOver == true)) {

        return true;

    }



    if ((libStEx_gv_sE_VOMsgDialog == c_invalidDialogId)) {

        DialogCreate(1500, 250, c_anchorBottom, 0, 150, false);

        libStEx_gv_sE_VOMsgDialog = DialogLastCreated();

        DialogSetImageVisible(DialogLastCreated(), false);

        DialogSetVisible(DialogLastCreated(), PlayerGroupAll(), true);

    }

    else {

        DialogSetPosition(libStEx_gv_sE_VOMsgDialog, c_anchorBottom, 0, 150);

    }

    if ((libStEx_gv_sE_VOMsgPanel != c_invalidDialogControlId)) {

        DialogControlSetVisible(libStEx_gv_sE_VOMsgPanel, PlayerGroupAll(), false);

        libStEx_gv_sE_VOMsgPanel = c_invalidDialogControlId;

    }



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

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

    DialogControlCreateFromTemplate(libStEx_gv_sE_VOMsgDialog, c_triggerControlTypePanel, "TutorialUI/TutorialTextBoxTemplate");

    libStEx_gv_sE_VOMsgPanel = DialogControlLastCreated();

    lv_localPanel = DialogControlLastCreated();

    DialogControlSendAnimationEvent(DialogControlLastCreated(), PlayerGroupAll(), "TriggerTutorialDialogAnim");

    DialogControlHookup(libStEx_gv_sE_VOMsgPanel, c_triggerControlTypeLabel, "Text");

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), lp_msg, PlayerGroupAll());

    libNtve_gf_SetDialogItemTextWriteout(DialogControlLastCreated(), lp_writeOut, PlayerGroupAll());

    libNtve_gf_SetDialogItemTextWriteoutDuration(DialogControlLastCreated(), libStEx_gv_sE_MsgWriteOutDuration, PlayerGroupAll());

    Wait(lp_duration, c_timeGame);

    DialogControlFadeTransparency(lv_localPanel, PlayerGroupAll(), 1.0, 100.0);

    Wait(1.0, c_timeGame);

    if ((libStEx_gv_sE_VOMsgPanel == lv_localPanel)) {

        libStEx_gv_sE_VOMsgPanel = c_invalidDialogControlId;

    }



    DialogControlDestroy(lv_localPanel);

    return true;

}



trigger auto_libStEx_gf_DisplayVOMessageAtTop_Trigger = null;

text auto_libStEx_gf_DisplayVOMessageAtTop_lp_msg;

fixed auto_libStEx_gf_DisplayVOMessageAtTop_lp_duration;

bool auto_libStEx_gf_DisplayVOMessageAtTop_lp_writeOut;



void libStEx_gf_DisplayVOMessageAtTop (text lp_msg, fixed lp_duration, bool lp_writeOut) {

    auto_libStEx_gf_DisplayVOMessageAtTop_lp_msg = lp_msg;

    auto_libStEx_gf_DisplayVOMessageAtTop_lp_duration = lp_duration;

    auto_libStEx_gf_DisplayVOMessageAtTop_lp_writeOut = lp_writeOut;



    if (auto_libStEx_gf_DisplayVOMessageAtTop_Trigger == null) {

        auto_libStEx_gf_DisplayVOMessageAtTop_Trigger = TriggerCreate("auto_libStEx_gf_DisplayVOMessageAtTop_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_DisplayVOMessageAtTop_Trigger, false, false);

}



bool auto_libStEx_gf_DisplayVOMessageAtTop_TriggerFunc (bool testConds, bool runActions) {

    text lp_msg = auto_libStEx_gf_DisplayVOMessageAtTop_lp_msg;

    fixed lp_duration = auto_libStEx_gf_DisplayVOMessageAtTop_lp_duration;

    bool lp_writeOut = auto_libStEx_gf_DisplayVOMessageAtTop_lp_writeOut;



    // Variable Declarations

    int lv_localPanel;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_localPanel = c_invalidDialogControlId;



    // Implementation

    libStEx_gf_DisplayVOMessage(lp_msg, lp_duration, lp_writeOut);

    if ((libStEx_gv_sE_VOMsgDialog != c_invalidDialogId)) {

        DialogSetPosition(libStEx_gv_sE_VOMsgDialog, c_anchorTop, 0, 75);

    }



    return true;

}



void libStEx_gf_ClearVOMessage () {

    // Automatic Variable Declarations

    // Implementation

    if ((libStEx_gv_sE_VOMsgPanel != c_invalidDialogControlId)) {

        DialogControlFadeTransparency(libStEx_gv_sE_VOMsgPanel, PlayerGroupAll(), 0.0, 100.0);

        libStEx_gv_sE_VOMsgPanel = c_invalidDialogControlId;

    }



}



void libStEx_gf_DisplayVOMessageGamePaused (text lp_msg, int lp_icon, bool lp_writeOut) {

    // Variable Declarations

    int lv_localPanel;

    int lv_itCamp;



    // Automatic Variable Declarations

    int autoF2B4B23C_val;



    // Variable Initialization

    lv_localPanel = c_invalidDialogControlId;



    // Implementation

    if (((libStEx_gv_automation_Debug == true) || (GameIsTestMap(true) == true))) {

        return ;

    }



    if ((libStEx_gv_sE_HintMsgPanel != c_invalidDialogControlId)) {

        DialogControlSetVisible(libStEx_gv_sE_HintMsgPanel, PlayerGroupAll(), false);

    }



    SoundChannelMute(PlayerGroupAll(), c_soundCategoryDoodad, true);

    SoundChannelMute(PlayerGroupAll(), c_soundCategoryUser2, true);

    SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 0.0, 0.25);

    Wait(0.25, c_timeGame);

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

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

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

    autoF2B4B23C_val = lp_icon;

    if (autoF2B4B23C_val == libStEx_ge_SE_VOMessageType_tribute) {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogTribute");

    }

    else if (autoF2B4B23C_val == libStEx_ge_SE_VOMessageType_tower) {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogTower");

    }

    else if (autoF2B4B23C_val == libStEx_ge_SE_VOMessageType_mount) {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogMount");

    }

    else if (autoF2B4B23C_val == libStEx_ge_SE_VOMessageType_level) {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogLevelup");

    }

    else if (autoF2B4B23C_val == libStEx_ge_SE_VOMessageType_globe) {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogGlobe");

    }

    else if (autoF2B4B23C_val == libStEx_ge_SE_VOMessageType_fountain) {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogFountain");

    }

    else if (autoF2B4B23C_val == libStEx_ge_SE_VOMessageType_ammo) {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogAmmo");

    }

    else {

        UIShowCustomDialogWithTemplate(PlayerGroupAll(), libNtve_ge_CustomDialogType_c_customDialogTypeMessage, null, lp_msg, true, "TutorialUI/TutorialTextBoxPausedDialogTemplate");

    }

    Wait(0.125, c_timeGame);

    SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 100.0, 2.0);

    if ((libStEx_gv_sE_HintMsgPanel != c_invalidDialogControlId)) {

        DialogControlSetVisible(libStEx_gv_sE_HintMsgPanel, PlayerGroupAll(), true);

    }



}



void libStEx_gf_ClearVOMessageGamePaused (int lp_player) {

    // Variable Declarations

    int lv_itCamp;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    if (((libStEx_gv_automation_Debug == true) || (GameIsTestMap(true) == true))) {

        return ;

    }



    SoundPlay(SoundLink("UI_Tutorial01_VO_Message_Paused_Clear", -1), libCore_gv_playerGroupFromPlayer[libStEx_gv_sE_Player], 100.0, 0.0);

    SoundChannelMute(PlayerGroupAll(), c_soundCategoryDoodad, false);

    SoundChannelMute(PlayerGroupAll(), c_soundCategoryUser2, false);

    SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 100.0, 2.0);

}



bool libStEx_gf_PlayerIsInCombat (int lp_player) {

    // Variable Declarations

    fixed lv_combatTime;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    if ((libNtve_gf_PlayerInCinematicMode(lp_player) == true)) {

        return false;

    }



    lv_combatTime = MaxF(PlayerGetPropertyFixed(lp_player, c_playerPropDamageTakenTime), PlayerGetPropertyFixed(lp_player, c_playerPropDamageDealtTime));

    lv_combatTime = (TimerGetElapsed(libGame_gv_gobalTimer) - lv_combatTime);

    return (lv_combatTime < 3.0);

}



bool libStEx_gf_PlayerIsBeingAttacked () {

    // Variable Declarations

    fixed lv_combatTime;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    if ((libNtve_gf_PlayerInCinematicMode(1) == true)) {

        return false;

    }



    lv_combatTime = PlayerGetPropertyFixed(1, c_playerPropDamageTakenTime);

    lv_combatTime = (TimerGetElapsed(libGame_gv_gobalTimer) - lv_combatTime);

    return (lv_combatTime < 3.0);

}



bool libStEx_gf_PlayerIsAttacking () {

    // Variable Declarations

    fixed lv_combatTime;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    if ((libNtve_gf_PlayerInCinematicMode(1) == true)) {

        return false;

    }



    lv_combatTime = PlayerGetPropertyFixed(1, c_playerPropDamageDealtTime);

    lv_combatTime = (TimerGetElapsed(libGame_gv_gobalTimer) - lv_combatTime);

    return (lv_combatTime < 3.0);

}



void libStEx_gf_MapCutsceneAdd (string lp_cutscene1Name, string lp_cutscene2Name, string lp_orderCutsceneFile, string lp_chaosCutsceneFile) {

    // Automatic Variable Declarations

    // Implementation

    libStEx_gv_mapCutsceneStrings[1] = lp_cutscene1Name;

    libStEx_gv_mapCutsceneStrings[2] = lp_cutscene2Name;

    libStEx_gv_mapCutsceneFiles[1] = lp_orderCutsceneFile;

    libStEx_gv_mapCutsceneFiles[2] = lp_chaosCutsceneFile;

}



bool libStEx_gf_TutorialCameraLocked () {

    // Automatic Variable Declarations

    // Implementation

    return libStEx_gv_sETutorialCameraLocked;

}



void libStEx_gf_DisplayCameraLockNotificationText (bool lp_lockUnlock, int lp_player) {

    // Variable Declarations

    text lv_label;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    if ((lp_lockUnlock == true)) {

        lv_label = StringExternal("Param/Value/lib_StEx_AFF24376");

        SoundPlayForPlayer(SoundLink("UI_Game_Camera_Locked", -1), c_maxPlayers, libCore_gv_playerGroupFromPlayer[lp_player], 100.0, 0.0);

    }

    else {

        lv_label = StringExternal("Param/Value/lib_StEx_4C9338EF");

        SoundPlayForPlayer(SoundLink("UI_Game_Camera_Unlocked", -1), c_maxPlayers, libCore_gv_playerGroupFromPlayer[lp_player], 100.0, 0.0);

    }

    DialogControlHookupStandard(c_triggerControlTypeLabel, "UIContainer/ConsoleUIContainer/CameraLockChanges");

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), lv_label, libCore_gv_playerGroupFromPlayer[lp_player]);

    DialogControlFadeTransparency(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], 0.0, 0.0);

    DialogControlSetEnabled(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], false);

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

}



void libStEx_gf_LockUnlockTutorialCamera (bool lp_lockUnlock) {

    // Automatic Variable Declarations

    // Implementation

    if ((lp_lockUnlock == false)) {

        libStEx_gv_sETutorialCameraLocked = false;

        PlayerOptionOverride(1, "camerafollow", "0");

    }

    else {

        libStEx_gv_sETutorialCameraLocked = true;

        PlayerOptionOverride(1, "camerafollow", "1");

    }

}



void libStEx_gf_RestoreTutorialCameraLockSetting () {

    // Automatic Variable Declarations

    // Implementation

    if ((libStEx_gv_sETutorialCameraLocked == true)) {

        PlayerOptionOverride(1, "camerafollow", "1");

    }

    else {

        PlayerOptionOverride(1, "camerafollow", "0");

    }

}



void libStEx_gf_TurnCinematicCameraOnOff (int lp_player, bool lp_onOff) {

    // Automatic Variable Declarations

    int auto756E83E4_val;



    // Implementation

    if ((libStEx_gv_simpleCinematic_CameraLocked2[lp_player] == lp_onOff)) {

        return ;

    }



    libStEx_gv_simpleCinematic_CameraLocked2[lp_player] = lp_onOff;

    if ((lp_onOff == true)) {

        PlayerOptionOverride(lp_player, "camerafollow", "0");

        CameraLockInput(lp_player, true);

    }

    else {

        auto756E83E4_val = libCore_gv_sYSGameMode;

        if (auto756E83E4_val == libCore_ge_GameModes_Tutorial1Deprecated) {

            if ((libStEx_gv_sETutorialCameraLocked == true)) {

                libStEx_gf_LockUnlockTutorialCamera(true);

            }

            else {

                libStEx_gf_LockUnlockTutorialCamera(false);

            }

        }

        else if (auto756E83E4_val == libCore_ge_GameModes_Tutorial1) {

            PlayerOptionOverride(lp_player, "camerafollow", null);

        }

        else {

            PlayerOptionOverride(lp_player, "camerafollow", null);

        }

        CameraLockInput(lp_player, false);

    }

}



void libStEx_gf_CinematicModeTutorial (bool lp_onOff, playergroup lp_players, fixed lp_duration) {

    // Variable Declarations

    playergroup lv_validPlayers;

    int lv_itPlayer;

    unit lv_itUnit;

    int lv_deathStunFrame;



    // Automatic Variable Declarations

    playergroup autoDD6E9A98_g;

    playergroup auto7CFBEC26_g;

    playergroup auto0202F0E6_g;

    unitgroup autoF771BC5C_g;

    int autoF771BC5C_u;

    unitgroup autoB61E6A86_g;

    int autoB61E6A86_u;

    playergroup auto6C8C05E5_g;

    playergroup auto797452B9_g;



    // Variable Initialization

    lv_validPlayers = PlayerGroupEmpty();

    lv_deathStunFrame = c_invalidDialogControlId;



    // Implementation

    lv_validPlayers = PlayerGroupCopy(lp_players);

    if ((lp_onOff == true)) {

        auto7CFBEC26_g = lv_validPlayers;

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(auto7CFBEC26_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	if ((libNtve_gf_PlayerInCinematicMode(lv_itPlayer) == true)) {

                PlayerGroupRemove(lv_validPlayers, lv_itPlayer);

            }



        }

        if ((PlayerGroupCount(lv_validPlayers) == 0)) {

            return ;

        }



    }

    else {

        autoDD6E9A98_g = lv_validPlayers;

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(autoDD6E9A98_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	if ((libNtve_gf_PlayerInCinematicMode(lv_itPlayer) == false)) {

                PlayerGroupRemove(lv_validPlayers, lv_itPlayer);

            }



        }

        if ((PlayerGroupCount(lv_validPlayers) == 0)) {

            return ;

        }



    }

    libNtve_gf_CinematicMode(lp_onOff, lv_validPlayers, lp_duration);

    if ((lp_onOff == true)) {

        UISetFrameVisible(lv_validPlayers, c_syncFrameTypeTextTag, false);

        if ((libCore_gv_sYSGameMode != libCore_ge_GameModes_TutorialVeteran)) {

            UnitGroupClear(libStEx_gv_sEUnitGroupRemovedRing);

            autoB61E6A86_g = UnitGroup(null, c_playerAny, RegionEntireMap(), libCore_gv_filtersHeroic, 0);

            autoB61E6A86_u = UnitGroupCount(autoB61E6A86_g, c_unitCountAll);

            for (;; autoB61E6A86_u -= 1) {

                lv_itUnit = UnitGroupUnitFromEnd(autoB61E6A86_g, autoB61E6A86_u);

                if (lv_itUnit == null) { break; }

                if ((UnitHasBehavior2(lv_itUnit, "VideoDebug") == false)) {

                    UnitGroupAdd(libStEx_gv_sEUnitGroupRemovedRing, lv_itUnit);

                    UnitBehaviorAddPlayer(lv_itUnit, "VideoDebug", UnitGetOwner(lv_itUnit), 1);

                }



            }

        }



        auto6C8C05E5_g = lv_validPlayers;

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(auto6C8C05E5_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	if ((lv_itPlayer <= libCore_gv_bALMaxPlayers) && (libGame_gv_players[lv_itPlayer].lv_heroUnit != null)) {

                PlayerCreateEffectUnit(lv_itPlayer, "GodRayDestroyPersistent", libGame_gv_players[lv_itPlayer].lv_heroUnit);

            }



        }

        auto797452B9_g = lv_validPlayers;

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(auto797452B9_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	libNtve_gf_StoreUnitSelection(lv_itPlayer, libNtve_ge_UnitSelectionStoreOption_ClearUnitSelection);

        }

        if (((libCore_gv_sYSGameMode == libCore_ge_GameModes_Tutorial1Deprecated) || (libCore_gv_sYSGameMode == libCore_ge_GameModes_Tutorial1))) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/FullscreenUpperContainer/ChatBar");

            DialogControlSetPosition(DialogControlLastCreated(), PlayerGroupAll(), c_anchorBottom, 0, 10);

        }



        SetHeroLeaderPanelEnabled(false);

    }

    else {

        if ((libStEx_gv_tutorialCinematicRestoreSelection == true)) {

            auto0202F0E6_g = lv_validPlayers;

            lv_itPlayer = -1;

            while (true) {

                	lv_itPlayer = PlayerGroupNextPlayer(auto0202F0E6_g, lv_itPlayer);

                	if (lv_itPlayer<0) { break; }

                	libNtve_gf_RestoreUnitSelection(lv_itPlayer);

            }

        }



        if ((libCore_gv_sYSGameMode != libCore_ge_GameModes_TutorialVeteran)) {

            autoF771BC5C_g = libStEx_gv_sEUnitGroupRemovedRing;

            autoF771BC5C_u = UnitGroupCount(autoF771BC5C_g, c_unitCountAll);

            for (;; autoF771BC5C_u -= 1) {

                lv_itUnit = UnitGroupUnitFromEnd(autoF771BC5C_g, autoF771BC5C_u);

                if (lv_itUnit == null) { break; }

                UnitBehaviorRemovePlayer(lv_itUnit, "VideoDebug", UnitGetOwner(lv_itUnit), 1);

            }

            UnitGroupClear(libStEx_gv_sEUnitGroupRemovedRing);

        }



        UISetFrameVisible(lv_validPlayers, c_syncFrameTypeTextTag, true);

        if ((libCore_gv_sYSGameMode == libCore_ge_GameModes_Tutorial1Deprecated)) {

            UISetHotkeyAllowed(PlayerGroupAll(), c_hotkeyCameraFollow, false);

        }



        if (((libCore_gv_sYSGameMode == libCore_ge_GameModes_Tutorial1Deprecated) || (libCore_gv_sYSGameMode == libCore_ge_GameModes_Tutorial1) || (libCore_gv_sYSGameMode == libCore_ge_GameModes_TutorialMapMechanics) || (libCore_gv_sYSGameMode == libCore_ge_GameModes_TutorialVeteran))) {

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/HeroDeathStunFrame");

            lv_deathStunFrame = DialogControlLastCreated();

            DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/FullscreenUpperContainer/ChatBar");

            DialogControlSetPositionRelative(DialogControlLastCreated(), PlayerGroupAll(), c_anchorBottom, lv_deathStunFrame, c_anchorTop, 0, 0);

        }



        if ((libCore_gv_sYSGameMode != libCore_ge_GameModes_Tutorial1Deprecated) && (libCore_gv_sYSGameMode != libCore_ge_GameModes_TutorialVeteran)) {

            SetHeroLeaderPanelEnabled(true);

        }



    }

}



void libStEx_gf_SemiCinematicModeTutorial (bool lp_onOff, fixed lp_period) {

    // Automatic Variable Declarations

    // Implementation

    if ((lp_onOff == true)) {

        libStEx_gf_TurnCinematicCameraOnOff(1, true);

        libStEx_gf_FreezeUnfreezeAllUnits(libStEx_ge_FreezeOptions_Freeze);

        UISetCursorVisible(PlayerGroupAll(), false);

        DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsolePanel/GameHudBackFill");

        DialogControlFadeTransparency(DialogControlLastCreated(), PlayerGroupAll(), lp_period, 100.0);

        DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel");

        DialogControlFadeTransparency(DialogControlLastCreated(), PlayerGroupAll(), lp_period, 100.0);

    }

    else {

        libStEx_gf_TurnCinematicCameraOnOff(1, false);

        libStEx_gf_FreezeUnfreezeAllUnits(libStEx_ge_FreezeOptions_Unfrezze);

        UISetCursorVisible(PlayerGroupAll(), true);

        DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsolePanel/GameHudBackFill");

        DialogControlFadeTransparency(DialogControlLastCreated(), PlayerGroupAll(), lp_period, 0.0);

        DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer/ConsoleUIContainer/CommandPanel");

        DialogControlFadeTransparency(DialogControlLastCreated(), PlayerGroupAll(), lp_period, 0.0);

    }

}



void libStEx_gf_GlobalCinematicSettingTutorial (bool lp_onOff) {

    // Automatic Variable Declarations

    // Implementation

    libNtve_gf_GlobalCinematicSetting(lp_onOff);

    if ((lp_onOff == false)) {

        GameSetSpeedLocked(true);

    }



}



text libStEx_gf_CameraLockHotkeyText () {

    // Automatic Variable Declarations

    // Implementation

    if ((libCore_gv_sYSGameMode == libCore_ge_GameModes_Tutorial1Deprecated)) {

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

    }

    else {

        TextExpressionSetToken("Param/Expression/lib_StEx_FD910C68", "A", StringExternal("Param/Value/lib_StEx_E5D4F3E4"));

        return TextExpressionAssemble("Param/Expression/lib_StEx_FD910C68");

    }

}



trigger auto_libStEx_gf_CinematicFade_Trigger = null;

bool auto_libStEx_gf_CinematicFade_lp_fadeIn;

fixed auto_libStEx_gf_CinematicFade_lp_duration;

color auto_libStEx_gf_CinematicFade_lp_color;

int auto_libStEx_gf_CinematicFade_lp_player;



void libStEx_gf_CinematicFade (bool lp_fadeIn, fixed lp_duration, color lp_color, int lp_player) {

    auto_libStEx_gf_CinematicFade_lp_fadeIn = lp_fadeIn;

    auto_libStEx_gf_CinematicFade_lp_duration = lp_duration;

    auto_libStEx_gf_CinematicFade_lp_color = lp_color;

    auto_libStEx_gf_CinematicFade_lp_player = lp_player;



    if (auto_libStEx_gf_CinematicFade_Trigger == null) {

        auto_libStEx_gf_CinematicFade_Trigger = TriggerCreate("auto_libStEx_gf_CinematicFade_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_CinematicFade_Trigger, false, false);

}



bool auto_libStEx_gf_CinematicFade_TriggerFunc (bool testConds, bool runActions) {

    bool lp_fadeIn = auto_libStEx_gf_CinematicFade_lp_fadeIn;

    fixed lp_duration = auto_libStEx_gf_CinematicFade_lp_duration;

    color lp_color = auto_libStEx_gf_CinematicFade_lp_color;

    int lp_player = auto_libStEx_gf_CinematicFade_lp_player;



    // Variable Declarations

    int lv_control;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_control = c_invalidDialogControlId;



    // Implementation

    DialogControlHookupStandard(c_triggerControlTypeImage, "FadeImagePlayer");

    lv_control = DialogControlLastCreated();

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

    libNtve_gf_SetDialogItemColor(DialogControlLastCreated(), lp_color, libCore_gv_playerGroupFromPlayer[lp_player]);

    if ((lp_fadeIn == true)) {

        DialogControlFadeTransparency(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], 0.0, 0.0);

        DialogControlFadeTransparency(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], lp_duration, 100.0);

        Wait(lp_duration, c_timeGame);

        DialogControlSetVisible(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], false);

    }

    else {

        DialogControlFadeTransparency(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], 0.0, 100.0);

        DialogControlFadeTransparency(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[lp_player], lp_duration, 0.0);

    }

    return true;

}



playergroup libStEx_gf_MapMechanicIntroPlayers () {

    // Automatic Variable Declarations

    // Implementation

    return libStEx_gv_sEMMIntroPlayersWatching;

}



void libStEx_gf_SetMapMechanicTutorialCallback (trigger lp_callback) {

    // Automatic Variable Declarations

    // Implementation

    libStEx_gv_sEMMIntroCallback = lp_callback;

}



void libStEx_gf_SetMapMechanicTutorialCallbackPrepareCleanup (trigger lp_callbackPrepare, trigger lp_callbackCleanup) {

    // Automatic Variable Declarations

    // Implementation

    libStEx_gv_sEMMIntroCallbackPrepare = lp_callbackPrepare;

    libStEx_gv_sEMMIntroCallbackCleanup = lp_callbackCleanup;

}



trigger auto_libStEx_gf_PlayMapMechanicTutorial_Trigger = null;



void libStEx_gf_PlayMapMechanicTutorial () {

    if (auto_libStEx_gf_PlayMapMechanicTutorial_Trigger == null) {

        auto_libStEx_gf_PlayMapMechanicTutorial_Trigger = TriggerCreate("auto_libStEx_gf_PlayMapMechanicTutorial_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_PlayMapMechanicTutorial_Trigger, false, false);

}



bool auto_libStEx_gf_PlayMapMechanicTutorial_TriggerFunc (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;

    int lv_itCutscene;

    int lv_heroModelPickedCount;

    const int lv_heroModelPickedTotalCount_C = 4;

    string lv_heroModel;

    actor[lv_heroModelPickedTotalCount_C + 1] lv_heroActors;

    playergroup lv_players;

    playergroup lv_playersModelGood;

    int lv_playerHeroIndex;

    int lv_itIndex;

    playergroup lv_playersFinished;

    string[11] lv_availableHero;

    int lv_itAvailableHeroIndex;

    string[11] lv_usedHero;

    int lv_usedHeroCount;

    int lv_itUsedHeroIndex;

    bool lv_heroUsed;

    string lv_filter;



    // Automatic Variable Declarations

    const int autoD146BB97_ae = libCore_gv_bALMaxPlayers;

    const int autoD146BB97_ai = 1;

    const int auto5AA971D1_ae = libCore_gv_bALMaxTeams;

    const int auto5AA971D1_ai = 1;

    playergroup auto90121117_g;

    playergroup autoC85A5C0E_g;

    const int auto94DB76D7_ae = 4;

    const int auto94DB76D7_ai = 1;

    int auto3D71EA53_ae;

    const int auto3D71EA53_ai = 1;

    playergroup auto0AC6F8C5_g;

    playergroup auto8B09191C_g;

    int autoAB371E74_ae;

    const int autoAB371E74_ai = 1;



    // Variable Initialization

    lv_players = PlayerGroupEmpty();

    lv_playersModelGood = PlayerGroupEmpty();

    lv_playersFinished = PlayerGroupEmpty();

    lv_filter = "";



    // Implementation

    if (((libCore_gv_mAPMapStringID == "") || (libCore_gv_sYSGameMode != libCore_ge_GameModes_Normal))) {

        return true;

    }

    else {

        if ((libMapM_gf_MapMechanicExistsOnMap("BattlefieldOfEternity") == true)) {

            libStEx_gf_MapCutsceneAdd("Cutscenes\\\\Tutorial_BattlefieldOfEternity", "", "Cutscenes\\Tutorial_BattlefieldOfEternity.StormCutscene", "Cutscenes\\Tutorial_BattlefieldOfEternity.StormCutscene");

        }

        else {

            if ((libMapM_gf_MapMechanicExistsOnMap("BlackheartsBay") == true)) {

                libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_BlackheartsBay.StormCutscene", "Cutscenes\\Tutorial_BlackheartsBay_other.StormCutscene", "Cutscenes\\Tutorial_BlackheartsBay.StormCutscene", "Cutscenes\\Tutorial_BlackheartsBay_other.StormCutscene");

            }

            else {

                if ((libMapM_gf_MapMechanicExistsOnMap("HoldOut") == true)) {

                    libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_BraxisHoldout", "", "Cutscenes\\Tutorial_BraxisHoldout.StormCutscene", "Cutscenes\\Tutorial_BraxisHoldout.StormCutscene");

                }

                else {

                    if ((libMapM_gf_MapMechanicExistsOnMap("CursedHollow") == true)) {

                        libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_CursedHollow.StormCutscene", "Cutscenes\\Tutorial_CursedHollow_other.StormCutscene", "Cutscenes\\Tutorial_CursedHollow.StormCutscene", "Cutscenes\\Tutorial_CursedHollow_other.StormCutscene");

                    }

                    else {

                        if ((libMapM_gf_MapMechanicExistsOnMap("DragonShire") == true)) {

                            libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_Dragonshire.StormCutscene", "Cutscenes\\Tutorial_Dragonshire_other.StormCutscene", "Cutscenes\\Tutorial_Dragonshire.StormCutscene", "Cutscenes\\Tutorial_Dragonshire_other.StormCutscene");

                        }

                        else {

                            if ((libMapM_gf_MapMechanicExistsOnMap("GardenOfTerror") == true)) {

                                libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_GardenOfTerror.StormCutscene", "Cutscenes\\Tutorial_GardenOfTerror_other.StormCutscene", "Cutscenes\\Tutorial_GardenOfTerror.StormCutscene", "Cutscenes\\Tutorial_GardenOfTerror_other.StormCutscene");

                            }

                            else {

                                if ((libMapM_gf_MapMechanicExistsOnMap("HauntedMines") == true)) {

                                    libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_HauntedMines.StormCutscene", "Cutscenes\\Tutorial_HauntedMines_other.StormCutscene", "Cutscenes\\Tutorial_HauntedMines.StormCutscene", "Cutscenes\\Tutorial_HauntedMines_other.StormCutscene");

                                }

                                else {

                                    if ((libMapM_gf_MapMechanicExistsOnMap("InfernalShrines") == true)) {

                                        libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_InfernalShrines", "", "Cutscenes\\Tutorial_InfernalShrines.StormCutscene", "Cutscenes\\Tutorial_InfernalShrines.StormCutscene");

                                    }

                                    else {

                                        if ((libMapM_gf_MapMechanicExistsOnMap("SkyTemple") == true)) {

                                            libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_SkyTemple.StormCutscene", "", "Cutscenes\\Tutorial_SkyTemple.StormCutscene", "Cutscenes\\Tutorial_SkyTemple.StormCutscene");

                                        }

                                        else {

                                            if ((libMapM_gf_MapMechanicExistsOnMap("TombOfTheSpiderQueen") == true)) {

                                                libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_TombOfTheSpiderQueen", "", "Cutscenes\\Tutorial_TombOfTheSpiderQueen.StormCutscene", "Cutscenes\\Tutorial_TombOfTheSpiderQueen.StormCutscene");

                                            }

                                            else {

                                                if ((libMapM_gf_MapMechanicExistsOnMap("TowersOfDoom") == true)) {

                                                    libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_TowersOfDoom", "", "Cutscenes\\Tutorial_TowersOfDoom.StormCutscene", "Cutscenes\\Tutorial_TowersOfDoom.StormCutscene");

                                                }

                                                else {

                                                    if ((libMapM_gf_MapMechanicExistsOnMap("WarheadJunction") == true)) {

                                                        libStEx_gf_MapCutsceneAdd("Cutscenes\\Tutorial_WarheadJunction", "", ("Cutscenes\\Tutorial_WarheadJunction.StormCutscene"), ("Cutscenes\\Tutorial_WarheadJunction.StormCutscene"));

                                                    }



                                                }

                                            }

                                        }

                                    }

                                }

                            }

                        }

                    }

                }

            }

        }

    }

    if (((libStEx_gv_mapCutsceneFiles[1] == null) || (libStEx_gv_mapCutsceneFiles[2] == null))) {

        return true;

    }



    PlayerGroupClear(libStEx_gv_sEMMIntroPlayersWatching);

    PlayerGroupClear(libStEx_gv_sEMMIntroPlayersInitiallyWatching);

    lv_itPlayer = 1;

    for ( ; ( (autoD146BB97_ai >= 0 && lv_itPlayer <= autoD146BB97_ae) || (autoD146BB97_ai < 0 && lv_itPlayer >= autoD146BB97_ae) ) ; lv_itPlayer += autoD146BB97_ai ) {

        if ((PlayerStatus(lv_itPlayer) != c_playerStatusUnused) && (PlayerType(lv_itPlayer) == c_playerTypeUser)) {

            if (((libStEx_gf_InTrainingMode() == true) || (libStEx_gf_InPracticeMode() == true))) {

                PlayerGroupAdd(libStEx_gv_sEMMIntroPlayersWatching, lv_itPlayer);

                PlayerGroupAdd(libStEx_gv_sEMMIntroPlayersInitiallyWatching, lv_itPlayer);

            }



        }



    }

    if ((PlayerGroupCount(libStEx_gv_sEMMIntroPlayersWatching) <= 0)) {

        return true;

    }



    if ((libStEx_gf_GameIsSinglePlayer() == true)) {

        libGame_gv_heroSpawnReady = false;

    }



    lv_itCutscene = 1;

    for ( ; ( (auto5AA971D1_ai >= 0 && lv_itCutscene <= auto5AA971D1_ae) || (auto5AA971D1_ai < 0 && lv_itCutscene >= auto5AA971D1_ae) ) ; lv_itCutscene += auto5AA971D1_ai ) {

        if ((libStEx_gv_mapCutsceneStrings[lv_itCutscene] != "")) {

            PreloadAsset(libStEx_gv_mapCutsceneStrings[lv_itCutscene], false);

        }



    }

    auto90121117_g = libStEx_gv_sEMMIntroPlayersWatching;

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(auto90121117_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	libStEx_gf_CinematicFade(false, 0.0, Color(0.00, 0.00, 0.00), lv_itPlayer);

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

    }

    while (!((libGame_gv_heroPickDone == true))) {

        Wait(0.0625, c_timeGame);

    }

    libNtve_gf_AddPlayerGroupToPlayerGroup(libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamOrderIndex_C, false), lv_players);

    libNtve_gf_AddPlayerGroupToPlayerGroup(libGame_gf_PlayersOnTeamHeroes(libGame_gv_teamChaosIndex_C, false), lv_players);

    autoC85A5C0E_g = lv_players;

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(autoC85A5C0E_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	if ((libGame_gv_players[lv_itPlayer].lv_heroIndex > 0) && (libGame_gv_players[lv_itPlayer].lv_heroData.lv_heroCatalogLink != null) && (CatalogFieldValueGet(c_gameCatalogHero, libGame_gv_players[lv_itPlayer].lv_heroData.lv_heroCatalogLink, "Flags[ExcludeFromMapIntro]", c_playerAny) != "1")) {

            PlayerGroupAdd(lv_playersModelGood, lv_itPlayer);

        }



    }

    while (true) {

        if (((lv_heroModelPickedCount >= lv_heroModelPickedTotalCount_C) || (PlayerGroupCount(lv_playersModelGood) == 0))) {

            break;

        }



        lv_itPlayer = PlayerGroupPlayer(lv_playersModelGood, RandomInt(1, PlayerGroupCount(lv_playersModelGood)));

        lv_playerHeroIndex = lv_itPlayer;

        PlayerGroupRemove(lv_playersModelGood, lv_itPlayer);

        lv_heroModel = (CatalogFieldValueGet(c_gameCatalogHero, libGame_gv_players[lv_itPlayer].lv_heroData.lv_heroCatalogLink, "Model", c_playerAny));

        if ((lv_heroModel != null)) {

            lv_heroModelPickedCount += 1;

            lv_usedHero[lv_heroModelPickedCount] = libGame_gv_players[lv_itPlayer].lv_heroData.lv_heroCatalogLink;

            libNtve_gf_CreateModelAtPoint(lv_heroModel, RegionGetBoundsMax(RegionPlayableMap()));

            lv_heroActors[lv_heroModelPickedCount] = libNtve_gf_ActorLastCreated();

            ActorSend(libNtve_gf_ActorLastCreated(), "ExternalFinderAdd");

            ActorSend(libNtve_gf_ActorLastCreated(), (("AliasAdd HeroModel_" + IntToString(lv_heroModelPickedCount))));

        }



    }

    if ((lv_heroModelPickedCount < lv_heroModelPickedTotalCount_C)) {

        lv_availableHero[1] = "Raynor";

        lv_availableHero[2] = "Tyrael";

        lv_availableHero[3] = "DemonHunter";

        lv_availableHero[4] = "Arthas";

        lv_itAvailableHeroIndex = 1;

        lv_usedHeroCount = lv_heroModelPickedCount;

        lv_itAvailableHeroIndex = 1;

        for ( ; ( (auto94DB76D7_ai >= 0 && lv_itAvailableHeroIndex <= auto94DB76D7_ae) || (auto94DB76D7_ai < 0 && lv_itAvailableHeroIndex >= auto94DB76D7_ae) ) ; lv_itAvailableHeroIndex += auto94DB76D7_ai ) {

            lv_heroUsed = false;

            auto3D71EA53_ae = lv_usedHeroCount;

            lv_itUsedHeroIndex = 1;

            for ( ; ( (auto3D71EA53_ai >= 0 && lv_itUsedHeroIndex <= auto3D71EA53_ae) || (auto3D71EA53_ai < 0 && lv_itUsedHeroIndex >= auto3D71EA53_ae) ) ; lv_itUsedHeroIndex += auto3D71EA53_ai ) {

                if ((lv_usedHero[lv_itUsedHeroIndex] == lv_availableHero[lv_itAvailableHeroIndex])) {

                    lv_heroUsed = true;

                    break;

                }



            }

            if ((lv_heroUsed == true)) {

                continue;

            }



            lv_heroModel = (CatalogFieldValueGet(c_gameCatalogHero, lv_availableHero[lv_itAvailableHeroIndex], "Model", c_playerAny));

            if ((lv_heroModel != null)) {

                lv_heroModelPickedCount += 1;

                libNtve_gf_CreateModelAtPoint(lv_heroModel, RegionGetBoundsMax(RegionPlayableMap()));

                lv_heroActors[lv_heroModelPickedCount] = libNtve_gf_ActorLastCreated();

                ActorSend(libNtve_gf_ActorLastCreated(), "ExternalFinderAdd");

                ActorSend(libNtve_gf_ActorLastCreated(), (("AliasAdd HeroModel_" + IntToString(lv_heroModelPickedCount))));

                if ((lv_heroModelPickedCount >= lv_heroModelPickedTotalCount_C)) {

                    break;

                }



            }



        }

    }



    if ((libStEx_gv_sEMMIntroCallback != null)) {

        TriggerExecute(libStEx_gv_sEMMIntroCallback, true, false);

    }



    if ((libStEx_gv_sEMMIntroCallbackPrepare != null)) {

        TriggerExecute(libStEx_gv_sEMMIntroCallbackPrepare, true, false);

    }



    auto0AC6F8C5_g = libStEx_gv_sEMMIntroPlayersWatching;

    lv_itPlayer = -1;

    while (true) {

        	lv_itPlayer = PlayerGroupNextPlayer(auto0AC6F8C5_g, lv_itPlayer);

        	if (lv_itPlayer<0) { break; }

        	if ((libGame_gf_TeamNumberOfPlayer(lv_itPlayer) == libGame_gv_teamChaosIndex_C)) {

            libMapM_gf_PlayMapMechanicIntroForPlayer(lv_itPlayer, libStEx_gv_mapCutsceneFiles[2], lv_filter);

        }

        else {

            libMapM_gf_PlayMapMechanicIntroForPlayer(lv_itPlayer, libStEx_gv_mapCutsceneFiles[1], lv_filter);

        }

    }

    TriggerExecute(libStEx_gt_SEMMHideHeroes, true, false);

    while (true) {

        PlayerGroupClear(lv_playersFinished);

        auto8B09191C_g = libStEx_gv_sEMMIntroPlayersWatching;

        lv_itPlayer = -1;

        while (true) {

            	lv_itPlayer = PlayerGroupNextPlayer(auto8B09191C_g, lv_itPlayer);

            	if (lv_itPlayer<0) { break; }

            	if ((libMapM_gf_MapMechanicIntroFinished(lv_itPlayer) == true)) {

                PlayerGroupAdd(lv_playersFinished, lv_itPlayer);

            }



        }

        if ((PlayerGroupCount(lv_playersFinished) > 0)) {

            libNtve_gf_RemovePlayerGroupFromPlayerGroup(lv_playersFinished, libStEx_gv_sEMMIntroPlayersWatching);

            if ((libStEx_gv_sEMMIntroCallbackCleanup != null)) {

                TriggerExecute(libStEx_gv_sEMMIntroCallbackCleanup, true, false);

            }



        }



        if ((PlayerGroupCount(libStEx_gv_sEMMIntroPlayersWatching) == 0)) {

            break;

        }



        Wait(0.0625, c_timeGame);

    }

    libGame_gv_heroSpawnReady = true;

    autoAB371E74_ae = lv_heroModelPickedCount;

    lv_itIndex = 1;

    for ( ; ( (autoAB371E74_ai >= 0 && lv_itIndex <= autoAB371E74_ae) || (autoAB371E74_ai < 0 && lv_itIndex >= autoAB371E74_ae) ) ; lv_itIndex += autoAB371E74_ai ) {

        ActorSend(lv_heroActors[lv_itIndex], "Destroy Immediate");

    }

    return true;

}



void libStEx_gf_SetMapStartupVideo (string lp_movie) {

    // Automatic Variable Declarations

    // Implementation

    libStEx_gv_tradeShowMovieLink = lp_movie;

}



string libStEx_gf_HotkeyProfile_MouseButtonImage (int lp_mouseButton) {

    // Automatic Variable Declarations

    int auto22816B09_val;



    // Implementation

    auto22816B09_val = lp_mouseButton;

    if (auto22816B09_val == libStEx_ge_MouseButton_LeftButton) {

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

    }

    else if (auto22816B09_val == libStEx_ge_MouseButton_RightButton) {

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

    }

    else {

    }

    return null;

}



text libStEx_gf_HotkeyProfile_MouseButtonImageStringTag (int lp_mouseButton, int lp_width, int lp_height) {

    // Variable Declarations

    text lv_value;

    int lv_width_L;

    int lv_height_L;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    lv_width_L = lp_width;

    lv_height_L = lp_height;

    if ((lv_width_L <= 0)) {

        lv_width_L = libStEx_gv_sEC_MouseButtonWidth;

    }



    if ((lv_height_L <= 0)) {

        lv_height_L = libStEx_gv_sEC_MouseButtonHeight;

    }



    TextExpressionSetToken("Param/Expression/lib_StEx_1B0DBA0D", "A", StringToText((libStEx_gf_HotkeyProfile_MouseButtonImage(lp_mouseButton))));

    TextExpressionSetToken("Param/Expression/lib_StEx_1B0DBA0D", "B", IntToText(lv_width_L));

    TextExpressionSetToken("Param/Expression/lib_StEx_1B0DBA0D", "C", IntToText(lv_height_L));

    lv_value = TextExpressionAssemble("Param/Expression/lib_StEx_1B0DBA0D");

    return lv_value;

}



text libStEx_gf_HotkeyProfile_MouseButtonText (int lp_mouseButton) {

    // Automatic Variable Declarations

    int auto6D367A5D_val;



    // Implementation

    auto6D367A5D_val = lp_mouseButton;

    if (auto6D367A5D_val == libStEx_ge_MouseButton_LeftButton) {

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

    }

    else if (auto6D367A5D_val == libStEx_ge_MouseButton_RightButton) {

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

    }

    else {

    }

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

}



int libStEx_gf_HotkeyProfile_SmartCommandMouseButton (int lp_player) {

    // Automatic Variable Declarations

    // Implementation

    return libStEx_gv_sE_MoveMouseButton;

}



void libStEx_gf_HotkeyProfile_SetSmartCommandMouseButton (int lp_player, int lp_button) {

    // Variable Declarations

    string lv_profile;



    // Automatic Variable Declarations

    int autoDC44CD62_val;



    // Variable Initialization

    lv_profile = "";



    // Implementation

    libStEx_gv_sE_MoveMouseButton = lp_button;

    autoDC44CD62_val = lp_button;

    if (autoDC44CD62_val == libStEx_ge_MouseButton_LeftButton) {

        lv_profile = libStEx_gv_sEC_HotkeyProfile_LeftClick;

    }

    else if (autoDC44CD62_val == libStEx_ge_MouseButton_RightButton) {

        lv_profile = libStEx_gv_sEC_HotkeyProfile_RightClick;

    }

    else {

        lv_profile = libStEx_gv_sEC_HotkeyProfile_RightClick;

    }

    UISetHotkeyProfile(libCore_gv_playerGroupFromPlayer[lp_player], lv_profile);

}



void libStEx_gf_HotkeyProfile_LoadSmartCommandMouseButtonProfile (int lp_player) {

    // Automatic Variable Declarations

    string auto000E9E93_val;



    // Implementation

    auto000E9E93_val = PlayerGetHotkeyProfile(lp_player);

    if (auto000E9E93_val == libStEx_gv_sEC_HotkeyProfile_LeftClick) {

        libStEx_gv_sE_MoveMouseButton = libStEx_ge_MouseButton_LeftButton;

    }

    else if (auto000E9E93_val == libStEx_gv_sEC_HotkeyProfile_RightClick) {

        libStEx_gv_sE_MoveMouseButton = libStEx_ge_MouseButton_RightButton;

    }

    else {

        libStEx_gv_sE_MoveMouseButton = libStEx_ge_MouseButton_RightButton;

    }

}



void libStEx_gf_FreezeUnfreezeAllUnits (int lp_freezeOptions) {

    // Variable Declarations

    unit lv_indexUnit;

    int lv_indexPlayer;



    // Automatic Variable Declarations

    unitgroup auto272E39FD_g;

    int auto272E39FD_u;

    const int autoA8B89EDC_ae = libCore_gv_bALMaxPlayers;

    const int autoA8B89EDC_ai = 1;

    unitgroup autoB6CD080F_g;

    int autoB6CD080F_u;

    const int auto834CCB86_ae = libCore_gv_bALMaxPlayers;

    const int auto834CCB86_ai = 1;



    // Variable Initialization



    // Implementation

    if ((lp_freezeOptions == libStEx_ge_FreezeOptions_Freeze)) {

        libStEx_gv_sE_FreezeUnitsGameTimerUnpaused = true;

        TimerPause(libGame_gv_gameTimer, true);

        UnitPauseAll(true);

        libStEx_gv_sE_FrozenUnits = UnitGroup(null, c_playerAny, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

        autoB6CD080F_g = libStEx_gv_sE_FrozenUnits;

        autoB6CD080F_u = UnitGroupCount(autoB6CD080F_g, c_unitCountAll);

        for (;; autoB6CD080F_u -= 1) {

            lv_indexUnit = UnitGroupUnitFromEnd(autoB6CD080F_g, autoB6CD080F_u);

            if (lv_indexUnit == null) { break; }

            libNtve_gf_SendActorMessageToUnit(lv_indexUnit, "AnimSetPausedAll");

        }

        lv_indexPlayer = 1;

        for ( ; ( (auto834CCB86_ai >= 0 && lv_indexPlayer <= auto834CCB86_ae) || (auto834CCB86_ai < 0 && lv_indexPlayer >= auto834CCB86_ae) ) ; lv_indexPlayer += auto834CCB86_ai ) {

            if ((libGame_gv_players[lv_indexPlayer].lv_heroUnit != null)) {

                libNtve_gf_SendActorMessageToUnit(libGame_gv_players[lv_indexPlayer].lv_heroUnit, "AnimSetPausedAll 0");

            }



        }

        libGame_gf_MinionPauseUnpauseMinionSystem(true);

    }

    else {

        if ((libStEx_gv_sE_FreezeUnitsGameTimerUnpaused == true)) {

            TimerPause(libGame_gv_gameTimer, false);

            libStEx_gv_sE_FreezeUnitsGameTimerUnpaused = false;

        }



        UnitPauseAll(false);

        auto272E39FD_g = libStEx_gv_sE_FrozenUnits;

        auto272E39FD_u = UnitGroupCount(auto272E39FD_g, c_unitCountAll);

        for (;; auto272E39FD_u -= 1) {

            lv_indexUnit = UnitGroupUnitFromEnd(auto272E39FD_g, auto272E39FD_u);

            if (lv_indexUnit == null) { break; }

            libNtve_gf_SendActorMessageToUnit(lv_indexUnit, "AnimSetPausedAll 0");

        }

        lv_indexPlayer = 1;

        for ( ; ( (autoA8B89EDC_ai >= 0 && lv_indexPlayer <= autoA8B89EDC_ae) || (autoA8B89EDC_ai < 0 && lv_indexPlayer >= autoA8B89EDC_ae) ) ; lv_indexPlayer += autoA8B89EDC_ai ) {

            if ((libGame_gv_players[lv_indexPlayer].lv_heroUnit != null)) {

                UnitXPGainEnable(libGame_gv_players[lv_indexPlayer].lv_heroUnit, null, true);

            }



        }

        libGame_gf_MinionPauseUnpauseMinionSystem(false);

    }

}



void libStEx_gf_FreezeUnfreezeUnit (int lp_freezeOptions, unit lp_target) {

    // Automatic Variable Declarations

    // Implementation

    if ((lp_freezeOptions == libStEx_ge_FreezeOptions_Freeze)) {

        UnitGroupAdd(libStEx_gv_sE_FrozenUnits, lp_target);

        libNtve_gf_PauseUnit(lp_target, true);

        libNtve_gf_SendActorMessageToUnit(lp_target, "AnimSetPausedAll");

    }

    else {

        UnitGroupRemove(libStEx_gv_sE_FrozenUnits, lp_target);

        libNtve_gf_PauseUnit(lp_target, false);

        libNtve_gf_SendActorMessageToUnit(lp_target, "AnimSetPausedAll 0");

    }

}



void libStEx_gf_SetTrainingMode (bool lp_mode) {

    // Automatic Variable Declarations

    // Implementation

    libStEx_gv_sE_TrainingMode = lp_mode;

}



bool libStEx_gf_InTrainingMode () {

    // Automatic Variable Declarations

    // Implementation

    if ((libStEx_gv_sE_TrainingMode == true)) {

        return true;

    }



    return libStEx_gf_InPracticeMode();

}



bool libStEx_gf_InPracticeMode () {

    // Automatic Variable Declarations

    // Implementation

    if ((libCore_gv_sYSGameMode != libCore_ge_GameModes_Normal)) {

        return false;

    }



    return GameIsPractice();

}



void libStEx_gf_SE_ShowHideTalentPortraitFlashingImage (bool lp_showHide) {

    // Automatic Variable Declarations

    // Implementation

    if ((libStEx_gv_sE_TrainingModeTalentPanelFlashingImage == c_invalidDialogControlId)) {

        DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer\\ConsolePanel\\TutorialPortraitHighlight");

        libStEx_gv_sE_TrainingModeTalentPanelFlashingImage = DialogControlLastCreated();

    }



    DialogControlSetVisible(libStEx_gv_sE_TrainingModeTalentPanelFlashingImage, PlayerGroupAll(), lp_showHide);

}



int libStEx_gf_SE_TrainingModeTipCount () {

    // Automatic Variable Declarations

    // Implementation

    return ((libStEx_ge_SE_TrainingModeTips_NewUserTip_Last) - 1);

}



void libStEx_gf_SE_TrainingModeTipSetDisplayed (int lp_tip) {

    // Variable Declarations

    string lv_bankKey;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_bankKey = "";



    // Implementation

    libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes += 1;

    lv_bankKey = (libStEx_gv_sE_TrainingModeBankkey_Tip_C + IntToString((lp_tip)));

    BankValueSetFromInt(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey, libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes);

    BankSave(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank);

}



bool libStEx_gf_SE_TrainingModeTipIsOld (int lp_tip) {

    // Automatic Variable Declarations

    int autoAE3162CA_val;



    // Implementation

    autoAE3162CA_val = lp_tip;

    if (autoAE3162CA_val == libStEx_ge_SE_TrainingModeTips_Talents) {

        return (libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes > 20);

    }

    else if (autoAE3162CA_val == libStEx_ge_SE_TrainingModeTips_Mana) {

        return (libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes > 3);

    }

    else if (autoAE3162CA_val == libStEx_ge_SE_TrainingModeTips_Mount) {

        return (libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes > 40);

    }

    else if (autoAE3162CA_val == libStEx_ge_SE_TrainingModeTips_Hearthstone) {

        return (libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes > 2);

    }

    else if (autoAE3162CA_val == libStEx_ge_SE_TrainingModeTips_HealingFountain) {

        return (libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes > 3);

    }

    else {

    }

    return (libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_doneTimes > 0);

}



trigger auto_libStEx_gf_SE_TrainingModeTipDisplay_Trigger = null;

int auto_libStEx_gf_SE_TrainingModeTipDisplay_lp_tip;



void libStEx_gf_SE_TrainingModeTipDisplay (int lp_tip) {

    auto_libStEx_gf_SE_TrainingModeTipDisplay_lp_tip = lp_tip;



    if (auto_libStEx_gf_SE_TrainingModeTipDisplay_Trigger == null) {

        auto_libStEx_gf_SE_TrainingModeTipDisplay_Trigger = TriggerCreate("auto_libStEx_gf_SE_TrainingModeTipDisplay_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_SE_TrainingModeTipDisplay_Trigger, false, false);

}



bool auto_libStEx_gf_SE_TrainingModeTipDisplay_TriggerFunc (bool testConds, bool runActions) {

    int lp_tip = auto_libStEx_gf_SE_TrainingModeTipDisplay_lp_tip;



    // Automatic Variable Declarations

    // Implementation

    if ((libStEx_gv_sE_TrainingModeTipDialog != c_invalidDialogId)) {

        DialogDestroy(libStEx_gv_sE_TrainingModeTipDialog);

        libStEx_gv_sE_TrainingModeTipDialog = c_invalidDialogId;

    }



    libStEx_gv_sE_TrainingModeTipDisplaying = true;

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

    DialogCreate(1000, 100, c_anchorBottom, 0, 160, true);

    libStEx_gv_sE_TrainingModeTipDialog = DialogLastCreated();

    DialogSetImageVisible(DialogLastCreated(), false);

    TextExpressionSetToken("Param/Expression/lib_StEx_9B5ACB60", "A", libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_description);

    libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 200, 50, c_anchorCenter, 50, 50, TextExpressionAssemble("Param/Expression/lib_StEx_9B5ACB60"), ColorWithAlpha(0,0,0,0), false, 2.0);

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

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

    libStEx_gf_SE_TrainingModeTipPlayTransmission(lp_tip);

    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

    DialogControlFadeTransparency(DialogControlLastCreated(), libCore_gv_playerGroupFromPlayer[libStEx_gv_sE_Player], 2.0, 100.0);

    Wait(2.0, c_timeGame);

    DialogDestroy(DialogLastCreated());

    libStEx_gv_sE_TrainingModeTipDialog = c_invalidDialogId;

    Wait(5.0, c_timeGame);

    libStEx_gv_sE_TrainingModeTipDisplaying = false;

    return true;

}



trigger auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_Trigger = null;

int auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_lp_tip;



void libStEx_gf_SE_TrainingModeTipPlayTransmission (int lp_tip) {

    auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_lp_tip = lp_tip;



    if (auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_Trigger == null) {

        auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_Trigger = TriggerCreate("auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_Trigger, false, false);

}



bool auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_TriggerFunc (bool testConds, bool runActions) {

    int lp_tip = auto_libStEx_gf_SE_TrainingModeTipPlayTransmission_lp_tip;



    // Automatic Variable Declarations

    // Implementation

    Wait(1.0, c_timeGame);

    TriggerQueueEnter();

    libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Speech, PlayerGroupAll());

    libCore_gf_SendTransmissionCampaign(null, libStEx_gv_sE_TrainingModeTips[(lp_tip)].lv_vO, c_transmissionDurationAdd, 0.0, true, libCore_ge_TransmissionPortraitOptioins_HidePortraitAfter, libCore_ge_TransmissionCueSoundOptions_DefaultCueSoundBehavior);

    libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Game, PlayerGroupAll());

    TriggerQueueExit();

    return true;

}



void libStEx_gf_SE_TrainingModeTipBushesSendActorMessageToBushes (string lp_message, region lp_area) {

    // Automatic Variable Declarations

    // Implementation

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_Docks_Curtain");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_Curtain");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_Docks_Curtain_Grass");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_CyberWorld_Curtain");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_Docks_CurtainLarge");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_CurtainLarge");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_Docks_CurtainLarge_Grass");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_CyberWorld_CurtainLarge");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_RavenCourt_CurtainLarge");

    libCore_gf_SendActorMessageToDoodadsInRegion(lp_message, lp_area, "Storm_Doodad_KingsCrest_RavenCourt_Curtain");

}



void libStEx_gf_TutorialPlayerHitsReadyButton (trigger t) {

    // Automatic Variable Declarations

    // Implementation

    TriggerAddEventGeneric(t, libStEx_gv_eventID_TutorialPlayerHitsReadyButton_C);

}



void libStEx_gf_SendEventTutorialPlayerHitsReadyButton () {

    // Automatic Variable Declarations

    // Implementation

    TriggerSendEvent(libStEx_gv_eventID_TutorialPlayerHitsReadyButton_C);

}



void libStEx_gf_TutorialPlayerHitsRetryButton (trigger t) {

    // Automatic Variable Declarations

    // Implementation

    TriggerAddEventGeneric(t, libStEx_gv_eventID_TutorialPlayerHitsRetryButton_C);

}



void libStEx_gf_SendEventTutorialPlayerHitsRetryButton () {

    // Automatic Variable Declarations

    // Implementation

    TriggerSendEvent(libStEx_gv_eventID_TutorialPlayerHitsRetryButton_C);

}



void libStEx_gf_TutorialPlayerHitsRespecButton (trigger t) {

    // Automatic Variable Declarations

    // Implementation

    TriggerAddEventGeneric(t, libStEx_gv_eventID_TutorialPlayerHitsRespecButton_C);

}



void libStEx_gf_SendEventTutorialPlayerHitsRespecButton () {

    // Automatic Variable Declarations

    // Implementation

    TriggerSendEvent(libStEx_gv_eventID_TutorialPlayerHitsRespecButton_C);

}



void libStEx_gf_TutorialPlayerReachedDamageGoalOnTargetDummy (trigger t) {

    // Automatic Variable Declarations

    // Implementation

    TriggerAddEventGeneric(t, libStEx_gv_eventID_TutorialPlayerReachedDamageGoalOnTargetDummy_C);

}



void libStEx_gf_SendEventTutorialPlayerReachedDamageGoalOnTargetDummy () {

    // Automatic Variable Declarations

    // Implementation

    TriggerSendEvent(libStEx_gv_eventID_TutorialPlayerReachedDamageGoalOnTargetDummy_C);

}



void libStEx_gf_TutorialPlayerKilledStage1Boss (trigger t) {

    // Automatic Variable Declarations

    // Implementation

    TriggerAddEventGeneric(t, libStEx_gv_eventID_TutorialPlayerKilledStage1Boss_C);

}



void libStEx_gf_SendEventTutorialPlayerKilledStage1Boss () {

    // Automatic Variable Declarations

    // Implementation

    TriggerSendEvent(libStEx_gv_eventID_TutorialPlayerKilledStage1Boss_C);

}



trigger auto_libStEx_gf_TVActivateUtherAI_Trigger = null;

unit auto_libStEx_gf_TVActivateUtherAI_lp_uther;

unit auto_libStEx_gf_TVActivateUtherAI_lp_valla;

unit auto_libStEx_gf_TVActivateUtherAI_lp_boss;



void libStEx_gf_TVActivateUtherAI (unit lp_uther, unit lp_valla, unit lp_boss) {

    auto_libStEx_gf_TVActivateUtherAI_lp_uther = lp_uther;

    auto_libStEx_gf_TVActivateUtherAI_lp_valla = lp_valla;

    auto_libStEx_gf_TVActivateUtherAI_lp_boss = lp_boss;



    if (auto_libStEx_gf_TVActivateUtherAI_Trigger == null) {

        auto_libStEx_gf_TVActivateUtherAI_Trigger = TriggerCreate("auto_libStEx_gf_TVActivateUtherAI_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_TVActivateUtherAI_Trigger, false, false);

}



bool auto_libStEx_gf_TVActivateUtherAI_TriggerFunc (bool testConds, bool runActions) {

    unit lp_uther = auto_libStEx_gf_TVActivateUtherAI_lp_uther;

    unit lp_valla = auto_libStEx_gf_TVActivateUtherAI_lp_valla;

    unit lp_boss = auto_libStEx_gf_TVActivateUtherAI_lp_boss;



    // Variable Declarations

    unit lv_currentTargetOfBoss;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    while ((UnitIsAlive(lp_uther) == true) && (UnitIsAlive(lp_valla) == true) && (UnitIsAlive(lp_boss) == true)) {

        lv_currentTargetOfBoss = OrderGetTargetUnit(UnitOrder(lp_boss, 0));

        if ((UnitIsValid(lv_currentTargetOfBoss) == true)) {

            if ((UnitGetPropertyFixed(lv_currentTargetOfBoss, c_unitPropLifePercent, c_unitPropCurrent) > 80.0) && (UnitGetPropertyFixed(lp_uther, c_unitPropEnergyPercent, c_unitPropCurrent) > 50.0)) {

                UnitIssueOrder(lp_uther, OrderTargetingUnit(AbilityCommand("UtherHammerOfJustice", 0), lp_boss), c_orderQueueAddToFront);

            }



            if ((UnitGetPropertyFixed(lv_currentTargetOfBoss, c_unitPropLifePercent, c_unitPropCurrent) < 80.0)) {

                UnitIssueOrder(lp_uther, OrderTargetingUnit(AbilityCommand("UtherHolyLight", 0), lv_currentTargetOfBoss), c_orderQueueAddToFront);

            }



            Wait(0.25, c_timeGame);

            if ((UnitIsValid(lv_currentTargetOfBoss) == true) && (UnitGetPropertyFixed(lv_currentTargetOfBoss, c_unitPropLifePercent, c_unitPropCurrent) < 80.0)) {

                UnitIssueOrder(lp_uther, OrderTargetingPoint(AbilityCommand("UtherHolyRadiance", 0), UnitGetPosition(lv_currentTargetOfBoss)), c_orderQueueAddToFront);

            }



            Wait(0.25, c_timeGame);

        }



        Wait(0.25, c_timeGame);

    }

    return true;

}



void libStEx_gf_ActivateDamageforUnit (unit lp_unit) {

    // Automatic Variable Declarations

    // Implementation

    libNtve_gf_MakeUnitInvulnerable(lp_unit, false);

    libNtve_gf_ChangeUnitDamage(lp_unit, libNtve_ge_UnitDamageTakenDealt_Damage_Take, libNtve_ge_UnitDamageChangeOption_Full);

    libNtve_gf_ChangeUnitDamage(lp_unit, libNtve_ge_UnitDamageTakenDealt_Damage_Deal, libNtve_ge_UnitDamageChangeOption_Full);

}



void libStEx_gf_SwaptoNewHeroforPlayer (int lp_playerNumber, string lp_hero, int lp_desiredLevel) {

    // Automatic Variable Declarations

    // Implementation

    libUIUI_gf_UIDebugPanelSpawnOrSwapHeroForPlayer(libCore_gf_GetIndexFromHero(lp_hero), 1, 0, libCore_gf_GetTotalXPForLevel(lp_desiredLevel), lp_playerNumber, 1);

    UnitIssueOrder(libGame_gv_players[lp_playerNumber].lv_heroUnit, Order(AbilityCommand("move", 2)), c_orderQueueReplace);

    libNtve_gf_ChangeUnitDamage(libGame_gv_players[lp_playerNumber].lv_heroUnit, libNtve_ge_UnitDamageTakenDealt_Damage_Take, libNtve_ge_UnitDamageChangeOption_No);

}



void libStEx_gf_ResetHeroUnitforPlayer (int lp_player) {

    // Variable Declarations

    unit lv_itUnit;



    // Automatic Variable Declarations

    unitgroup autoA925B367_g;

    int autoA925B367_u;



    // Variable Initialization



    // Implementation

    if ((TimerGetRemaining(libGame_gv_players[lp_player].lv_respawnTimer) > 0.0)) {

        libGame_gf_HeroDeathUpdateRespawnTimer(lp_player, 0.0625);

        libNtve_gf_WaitForTimer(libGame_gv_players[lp_player].lv_respawnTimer, 0.0, false);

    }



    UnitSetPropertyFixed(libGame_gv_players[lp_player].lv_heroUnit, c_unitPropLifePercent, 100.0);

    UnitSetPropertyFixed(libGame_gv_players[lp_player].lv_heroUnit, c_unitPropEnergyPercent, 100.0);

    UnitSetPosition(libGame_gv_players[lp_player].lv_heroUnit, libGame_gv_players[lp_player].lv_spawnPoint, false);

    UnitSetFacing(libGame_gv_players[lp_player].lv_heroUnit, PointGetFacing(libGame_gv_players[lp_player].lv_spawnPoint), 0.0);

    UnitIssueOrder(libGame_gv_players[lp_player].lv_heroUnit, Order(AbilityCommand("move", 2)), c_orderQueueReplace);

    UnitBehaviorRemove(libGame_gv_players[lp_player].lv_heroUnit, "HealingFountainCooldown", 1);

    libCore_gf_ClearAllNonpermanentBehaviorsonUnit(libGame_gv_players[lp_player].lv_heroUnit);

    UnitClearCooldowns(libGame_gv_players[lp_player].lv_heroUnit, true);

    autoA925B367_g = UnitGroup(null, lp_player, RegionEntireMap(), UnitFilter(0, (1 << (c_targetFilterSummoned - 32)), (1 << c_targetFilterAlly) | (1 << c_targetFilterNeutral) | (1 << c_targetFilterEnemy) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

    autoA925B367_u = UnitGroupCount(autoA925B367_g, c_unitCountAll);

    for (;; autoA925B367_u -= 1) {

        lv_itUnit = UnitGroupUnitFromEnd(autoA925B367_g, autoA925B367_u);

        if (lv_itUnit == null) { break; }

        UnitKill(lv_itUnit);

    }

    libGame_gf_HeroRefreshCooldowns(lp_player, true);

    libNtve_gf_ChangeUnitDamage(libGame_gv_players[lp_player].lv_heroUnit, libNtve_ge_UnitDamageTakenDealt_Damage_Take, libNtve_ge_UnitDamageChangeOption_No);

    libNtve_gf_MakeUnitInvulnerable(libGame_gv_players[lp_player].lv_heroUnit, false);

    UnitCreateEffectUnit(libGame_gv_players[lp_player].lv_heroUnit, "DryadAbolishMagicRemoveCCsTarget", libGame_gv_players[lp_player].lv_heroUnit);

}



void libStEx_gf_ResetUnit (unit lp_targetUnit) {

    // Automatic Variable Declarations

    // Implementation

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

    UnitSetPropertyFixed(lp_targetUnit, c_unitPropLifePercent, 100.0);

    UnitSetPropertyFixed(lp_targetUnit, c_unitPropEnergyPercent, 100.0);

    UnitCreateEffectUnit(lp_targetUnit, "DryadAbolishMagicRemoveCCsTarget", lp_targetUnit);

}



trigger auto_libStEx_gf_ClearUltimateEvolutionClone_Trigger = null;



void libStEx_gf_ClearUltimateEvolutionClone () {

    if (auto_libStEx_gf_ClearUltimateEvolutionClone_Trigger == null) {

        auto_libStEx_gf_ClearUltimateEvolutionClone_Trigger = TriggerCreate("auto_libStEx_gf_ClearUltimateEvolutionClone_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_ClearUltimateEvolutionClone_Trigger, false, false);

}



bool auto_libStEx_gf_ClearUltimateEvolutionClone_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    if ((libGame_gv_players[libStEx_gv_pLAYER_01_USER].lv_activeVehicle != null)) {

        libNtve_gf_MakeUnitInvulnerable(libGame_gv_players[libStEx_gv_pLAYER_01_USER].lv_activeVehicle, true);

    }



    Wait(2.0, c_timeGame);

    if ((libGame_gv_players[libStEx_gv_pLAYER_01_USER].lv_activeVehicle != null)) {

        UnitKill(libGame_gv_players[libStEx_gv_pLAYER_01_USER].lv_activeVehicle);

    }



    return true;

}



void libStEx_gf_LevelUpPlayer (int lp_player, int lp_level) {

    // Automatic Variable Declarations

    // Implementation

    libGame_gf_GrantXPToPlayer((libCore_gf_GetTotalXPForLevel(lp_level) - UnitGetPropertyFixed(libGame_gv_players[lp_player].lv_heroUnit, c_unitPropXP, c_unitPropCurrent)), lp_player, libGame_ge_XPSources_Debug);

}



void libStEx_gf_RespecPlayer (int lp_player, bool lp_message) {

    // Automatic Variable Declarations

    // Implementation

    libGame_gf_TalentsRespecHeroForPlayer(lp_player);

    libStEx_gf_ResetHeroUnitforPlayer(lp_player);

    ShowTalentPanel(libCore_gv_playerGroupFromPlayer[lp_player], true, 1);

    Wait(0.0625, c_timeGame);

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

    if ((lp_message == true)) {

        UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringExternal("Param/Value/lib_StEx_A4EE4078"));

    }



}



bool libStEx_gf_PlayerPickedAllTalents () {

    // Variable Declarations

    int lv_itChoice;



    // Automatic Variable Declarations

    const int auto585F4F9F_ae = libCore_gv_talents_MaxTiers_C;

    const int auto585F4F9F_ai = 1;



    // Variable Initialization



    // Implementation

    lv_itChoice = 1;

    for ( ; ( (auto585F4F9F_ai >= 0 && lv_itChoice <= auto585F4F9F_ae) || (auto585F4F9F_ai < 0 && lv_itChoice >= auto585F4F9F_ae) ) ; lv_itChoice += auto585F4F9F_ai ) {

        if ((libGame_gv_talents_TalentChoices[libStEx_gv_pLAYER_01_USER][lv_itChoice].lv_selection <= 0) && (libStEx_gf_PlayerTalentTierEnabled(lv_itChoice) == true)) {

            return false;

        }



    }

    return true;

}



void libStEx_gf_StorePlayerTalents () {

    // Variable Declarations

    int lv_itTier;



    // Automatic Variable Declarations

    const int autoE62AC3C4_ae = libCore_gv_talents_MaxTiers_C;

    const int autoE62AC3C4_ai = 1;



    // Variable Initialization



    // Implementation

    lv_itTier = 1;

    for ( ; ( (autoE62AC3C4_ai >= 0 && lv_itTier <= autoE62AC3C4_ae) || (autoE62AC3C4_ai < 0 && lv_itTier >= autoE62AC3C4_ae) ) ; lv_itTier += autoE62AC3C4_ai ) {

        libStEx_gv_talents_TalentChoices[lv_itTier].lv_selection = libGame_gv_talents_TalentChoices[libStEx_gv_pLAYER_01_USER][lv_itTier].lv_selection;

    }

}



bool libStEx_gf_PlayerTalentTierEnabled (int lp_tier) {

    // Variable Declarations

    int lv_team;

    int lv_playerLevel;

    int lv_tierUnlocked;



    // Automatic Variable Declarations

    // Variable Initialization



    // Implementation

    lv_playerLevel = UnitLevel(libGame_gv_players[libStEx_gv_pLAYER_01_USER].lv_heroUnit);

    if ((lv_playerLevel >= libGame_gv_players[libStEx_gv_pLAYER_01_USER].lv_talents_TierLevels[lp_tier].lv_level) && (GetTalentTierEnabled(lp_tier) == true)) {

        return true;

    }



    return false;

}



void libStEx_gf_RestorePlayerTalents () {

    // Variable Declarations

    int lv_itTier;

    int lv_numPreviousTalents;

    int lv_currentTier;



    // Automatic Variable Declarations

    const int auto4871E4B0_ae = libCore_gv_talents_MaxTiers_C;

    const int auto4871E4B0_ai = 1;



    // Variable Initialization

    lv_numPreviousTalents = -1;



    // Implementation

    lv_itTier = 1;

    for ( ; ( (auto4871E4B0_ai >= 0 && lv_itTier <= auto4871E4B0_ae) || (auto4871E4B0_ai < 0 && lv_itTier >= auto4871E4B0_ae) ) ; lv_itTier += auto4871E4B0_ai ) {

        ShowTalentPanel(libCore_gv_playerGroupFromPlayer[libStEx_gv_pLAYER_01_USER], true, lv_itTier);

        TalentTreeSetSelectedHeroTalentTree(libStEx_gv_pLAYER_01_USER, (libStEx_gv_talents_TalentChoices[lv_itTier].lv_selection + lv_numPreviousTalents));

        libGame_gf_TalentsChooseTalentForPlayer(lv_itTier, libStEx_gv_talents_TalentChoices[lv_itTier].lv_selection, libStEx_gv_pLAYER_01_USER);

        if ((libStEx_gv_talents_TalentChoices[lv_itTier].lv_selection <= 0)) {

            if ((libStEx_gf_PlayerTalentTierEnabled(lv_itTier) == true)) {

                lv_currentTier = lv_itTier;

            }

            else {

                lv_currentTier = (lv_itTier - 1);

            }

            break;

        }



        lv_numPreviousTalents += libGame_gv_talents_TalentChoices[libStEx_gv_pLAYER_01_USER][lv_itTier].lv_numberOfTalentsForThisTier;

    }

    ShowTalentPanel(libCore_gv_playerGroupFromPlayer[libStEx_gv_pLAYER_01_USER], true, lv_currentTier);

    ShowTalentPanel(libCore_gv_playerGroupFromPlayer[libStEx_gv_pLAYER_01_USER], false, lv_currentTier);

}



void libStEx_gf_TutorialVeteranShowHideDummyPanel (bool lp_showHide) {

    // Automatic Variable Declarations

    // Implementation

    DialogControlSetVisible(libStEx_gv_tutorialVeteranPanel.lv_dummyPanel, PlayerGroupAll(), false);

}



void libStEx_gf_TutorialVeteranShowHideRetryButton (bool lp_showHide) {

    // Automatic Variable Declarations

    // Implementation

    DialogControlSetVisible(libStEx_gv_tutorialVeteranPanel.lv_RetryButton, PlayerGroupAll(), lp_showHide);

}



void libStEx_gf_TutorialVeteranShowHideReadyButton (bool lp_showHide) {

    // Automatic Variable Declarations

    // Implementation

    DialogControlSetVisible(libStEx_gv_tutorialVeteranPanel.lv_ReadyButton, PlayerGroupAll(), lp_showHide);

}



void libStEx_gf_TutorialVeteranShowHideRespecButton (bool lp_showHide) {

    // Automatic Variable Declarations

    // Implementation

    DialogControlSetVisible(libStEx_gv_tutorialVeteranPanel.lv_RespecButton, PlayerGroupAll(), lp_showHide);

    if ((lp_showHide == false)) {

        libStEx_gf_TutorialVeteranFlashRespecButton(false);

    }



}



void libStEx_gf_TutorialVeteranFlashRespecButton (bool lp_showHide) {

    // Automatic Variable Declarations

    // Implementation

    if ((lp_showHide == true)) {

        if ((libStEx_gv_tutorialVeteranPanelFlashing == true)) {

            return ;

        }



        libStEx_gv_tutorialVeteranPanelFlashing = true;

        TriggerExecute(libStEx_gt_TutorialVeteranFlashRespecButtonInternal, true, false);

    }

    else {

        if ((libStEx_gv_tutorialVeteranPanelFlashing == false)) {

            return ;

        }



        libStEx_gv_tutorialVeteranPanelFlashing = false;

    }

}



void libStEx_gf_SetTargetDummyGlobalVariable (unit lp_targetDummy) {

    // Automatic Variable Declarations

    // Implementation

    libStEx_gv_targetDummyUnit = lp_targetDummy;

    libStEx_gv_targetDummyLocation = UnitGetPosition(libStEx_gv_targetDummyUnit);

}



trigger auto_libStEx_gf_TargetDummyReset_Trigger = null;



void libStEx_gf_TargetDummyReset () {

    if (auto_libStEx_gf_TargetDummyReset_Trigger == null) {

        auto_libStEx_gf_TargetDummyReset_Trigger = TriggerCreate("auto_libStEx_gf_TargetDummyReset_TriggerFunc");

    }



    TriggerExecute(auto_libStEx_gf_TargetDummyReset_Trigger, false, false);

}



bool auto_libStEx_gf_TargetDummyReset_TriggerFunc (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Implementation

    UnitSetPropertyFixed(libStEx_gv_targetDummyUnit, c_unitPropLifePercent, 100.0);

    libNtve_gf_ChangeUnitDamage(libStEx_gv_targetDummyUnit, libNtve_ge_UnitDamageTakenDealt_Damage_Take, libNtve_ge_UnitDamageChangeOption_No);

    libStEx_gf_TutorialVeteranShowHideDummyPanel(false);

    TriggerEnable(libStEx_gt_TargetDummyTakesDamage, false);

    return true;

}



void libStEx_gf_TargetDummyStart () {

    // Automatic Variable Declarations

    // Implementation

    libNtve_gf_ChangeUnitDamage(libStEx_gv_targetDummyUnit, libNtve_ge_UnitDamageTakenDealt_Damage_Take, libNtve_ge_UnitDamageChangeOption_Full);

    TriggerEnable(libStEx_gt_TargetDummyTakesDamage, true);

}



bool libStEx_gf_QueryForYesNo (text lp_question) {

    // Automatic Variable Declarations

    // Implementation

    UIShowCustomDialog(libCore_gv_playerGroupFromPlayer[libStEx_gv_pLAYER_01_USER], libNtve_ge_CustomDialogType_c_customDialogTypeQuery, StringExternal("Param/Value/lib_StEx_DCBF9B21"), lp_question, true);

    Wait(0.125, c_timeGame);

    if ((libStEx_gv_queryDialogResult == libStEx_ge_QueryDialogResult_Yes)) {

        return true;

    }



    return false;

}



fixed libStEx_gf_DataConversationSoundDuration (string lp_line, fixed lp_duration) {

    // Automatic Variable Declarations

    // Implementation

    if ((lp_duration > 0.0)) {

        return lp_duration;

    }



    return SoundLengthSync(SoundLink(ConversationDataGetSound(lp_line, false), c_soundIndexAny));

}



void libStEx_gf_CinematicModeTutorial2 (bool lp_onOff, playergroup lp_players, fixed lp_duration) {

    // Automatic Variable Declarations

    // Implementation

    libStEx_gf_CinematicModeTutorial(lp_onOff, lp_players, lp_duration);

}



void libStEx_gf_SetAllSoundChannelVolumesStandardTiming (int lp_mode, playergroup lp_players) {

    // Automatic Variable Declarations

    // Implementation

    libCore_gf_SetAllSoundChannelVolumesStandardTiming(lp_mode, lp_players);

    if ((lp_mode == libNtve_ge_VolumeChannelMode_Speech)) {

        SoundChannelSetVolume(lp_players, c_soundCategoryUser17, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser18, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser19, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser20, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser22, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser23, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser27, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser28, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser30, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser32, 30.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser33, 30.0, 1.0);

    }

    else {

        SoundChannelSetVolume(lp_players, c_soundCategoryUser17, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser18, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser19, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser20, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser22, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser23, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser27, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser28, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser30, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser32, 100.0, 1.0);

        SoundChannelSetVolume(lp_players, c_soundCategoryUser33, 100.0, 1.0);

    }

}



bool libStEx_gf_IsthisanAutomatedPlaythrough () {

    // Automatic Variable Declarations

    // Implementation

    if (((libStEx_gv_automation_Debug == true) || ((GameIsTestMap(true) == true) && ((GameTestConfigType() == 5) || (GameTestConfigType() == 6) || (GameTestConfigType() == 7))))) {

        return true;

    }



    return false;

}



bool libStEx_gf_TargetLocationIsGood (point lp_locationTarget, point lp_locationFrom) {

    // Automatic Variable Declarations

    // Implementation

    if (((PathingType(lp_locationTarget) == c_pathingUnpathable) || (PathingType(lp_locationTarget) != c_pathingGround))) {

        return false;

    }



    if ((lp_locationFrom != null) && ((PointPathingCliffLevel(lp_locationTarget) != PointPathingCliffLevel(lp_locationFrom)) || (CrossCliff(lp_locationFrom, lp_locationTarget) == true))) {

        return false;

    }



    return true;

}



void libStEx_gf_RestoreUnit (unit lp_unit) {

    // Automatic Variable Declarations

    // Implementation

    UnitClearCooldowns(lp_unit, false);

    UnitSetPropertyFixed(lp_unit, c_unitPropLifePercent, 100.0);

    UnitSetPropertyFixed(lp_unit, c_unitPropEnergyPercent, 100.0);

    UnitSetPropertyFixed(lp_unit, c_unitPropShieldsPercent, 100.0);

}



void libStEx_gf_MoveUnit (unit lp_unit, point lp_targetLocation, bool lp_blend) {

    // Automatic Variable Declarations

    // Implementation

    UnitSetPosition(lp_unit, lp_targetLocation, lp_blend);

    UnitSetFacing(lp_unit, PointGetFacing(lp_targetLocation), 0.0);

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

}



bool libStEx_gf_GameIsSinglePlayer () {

    // Variable Declarations

    int lv_itPlayer;

    int lv_count;



    // Automatic Variable Declarations

    const int autoC8AF2A66_ae = libCore_gv_bALMaxPlayers;

    const int autoC8AF2A66_ai = 1;



    // Variable Initialization



    // Implementation

    lv_itPlayer = 1;

    for ( ; ( (autoC8AF2A66_ai >= 0 && lv_itPlayer <= autoC8AF2A66_ae) || (autoC8AF2A66_ai < 0 && lv_itPlayer >= autoC8AF2A66_ae) ) ; lv_itPlayer += autoC8AF2A66_ai ) {

        if ((PlayerStatus(lv_itPlayer) == c_playerStatusActive) && (PlayerType(lv_itPlayer) == c_playerTypeUser)) {

            lv_count += 1;

        }



    }

    return (lv_count == 1);

}



string libStEx_gf_TutorialHero () {

    // Variable Declarations

    int lv_label;



    // Automatic Variable Declarations

    int auto8B88B8A9_val;



    // Variable Initialization

    lv_label = c_invalidDialogControlId;



    // Implementation

    if ((libStEx_gv_tutorialHero != null) && (libStEx_gv_tutorialHero != libCore_gv_heroes_RandomHeroID)) {

        return libStEx_gv_tutorialHero;

    }



    libStEx_gv_tutorialHero = PlayerHero(libStEx_gv_pLAYER_01_USER);

    if (((libStEx_gv_tutorialHero == null) || (libStEx_gv_tutorialHero == libCore_gv_heroes_RandomHeroID))) {

        if (((libStEx_gv_automation_Debug == true) || (GameIsTestMap(true) == true))) {

            auto8B88B8A9_val = GameTestConfigType();

            if (auto8B88B8A9_val == 5) {

                libStEx_gv_tutorialHero = "Muradin";

            }

            else if (auto8B88B8A9_val == 6) {

                libStEx_gv_tutorialHero = "Jaina";

            }

            else if (auto8B88B8A9_val == 7) {

                libStEx_gv_tutorialHero = "Tyrande";

            }

            else {

                libStEx_gv_tutorialHero = "Muradin";

            }

            return libStEx_gv_tutorialHero;

        }



        UISetCursorVisible(PlayerGroupAll(), true);

        DialogCreate(500, 400, c_anchorCenter, 0, 0, true);

        DialogSetFullscreen(DialogLastCreated(), true);

        DialogSetImageVisible(DialogLastCreated(), false);

        libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 1000, 50, c_anchorTop, 0, 400, StringExternal("Param/Value/lib_StEx_31549B6D"), ColorWithAlpha(0,0,0,0), false, 2.0);

        lv_label = DialogControlLastCreated();

        libNtve_gf_SetDialogItemStyle(DialogControlLastCreated(), "Storm_Map_Large_Bold_Centered", PlayerGroupAll());

        DialogControlCreateFromTemplate(DialogLastCreated(), c_triggerControlTypeButton, "StandardTemplates/StandardButtonSmallTemplate");

        libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_1F3189D1"), PlayerGroupAll());

        libStEx_gv_tutorialHeroBtnJaina = DialogControlLastCreated();

        DialogControlSetPositionRelative(DialogControlLastCreated(), PlayerGroupAll(), c_anchorTop, lv_label, c_anchorBottom, 0, 50);

        DialogControlCreateFromTemplate(DialogLastCreated(), c_triggerControlTypeButton, "StandardTemplates/StandardButtonSmallTemplate");

        libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_32598B9C"), PlayerGroupAll());

        libStEx_gv_tutorialHeroBtnMuradin = DialogControlLastCreated();

        DialogControlSetPositionRelative(DialogControlLastCreated(), PlayerGroupAll(), c_anchorTop, libStEx_gv_tutorialHeroBtnJaina, c_anchorBottom, 0, 20);

        DialogControlCreateFromTemplate(DialogLastCreated(), c_triggerControlTypeButton, "StandardTemplates/StandardButtonSmallTemplate");

        libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_C880FFA9"), PlayerGroupAll());

        libStEx_gv_tutorialHeroBtnTyrande = DialogControlLastCreated();

        DialogControlSetPositionRelative(DialogControlLastCreated(), PlayerGroupAll(), c_anchorTop, libStEx_gv_tutorialHeroBtnMuradin, c_anchorBottom, 0, 20);

        DialogSetVisible(DialogLastCreated(), PlayerGroupAll(), true);

        TriggerEnable(libStEx_gt_TutorialHeroSelected, true);

        while (!((libStEx_gv_tutorialHero != null) && (libStEx_gv_tutorialHero != libCore_gv_heroes_RandomHeroID))) {

            Wait(0.0625, c_timeGame);

        }

        DialogSetVisible(DialogLastCreated(), PlayerGroupAll(), false);

        UISetCursorVisible(PlayerGroupAll(), false);

    }



    return libStEx_gv_tutorialHero;

}



void libStEx_gf_TutorialHeroTalentRecommendation () {

    // Automatic Variable Declarations

    string auto8F850C63_val;



    // Implementation

    auto8F850C63_val = libStEx_gf_TutorialHero();

    if (auto8F850C63_val == "Jaina") {

        SetTalentHighlighted("JainaFrostbiteLingeringChill", true);

        SetTalentHighlighted("JainaFrostbiteArcaneIntellect", true);

        SetTalentHighlighted("JainaConeOfColdIceFloes", true);

        SetTalentHighlighted("JainaHeroicSummonWaterElemental", true);

        SetTalentHighlighted("JainaBlizzardStormFront", true);

        SetTalentHighlighted("JainaBlizzardSnowstorm", true);

        SetTalentHighlighted("JainaSummonWaterElementalWintermute", true);

    }

    else if (auto8F850C63_val == "Muradin") {

        SetTalentHighlighted("MuradinCombatStyleThirdWind", true);

        SetTalentHighlighted("MuradinMasteryThunderburn", true);

        SetTalentHighlighted("MuradinMasteryDwarfTossHeavyImpact", true);

        SetTalentHighlighted("MuradinHeroicAbilityAvatar", true);

        SetTalentHighlighted("MuradinBronzebeardRage", true);

        SetTalentHighlighted("MuradinMasteryDwarfTossDwarfLaunch", true);

        SetTalentHighlighted("MuradinMasteryAvatarUnstoppableForce", true);

    }

    else if (auto8F850C63_val == "Tyrande") {

        SetTalentHighlighted("TyrandeMarkofMending", true);

        SetTalentHighlighted("TyrandeMasteryLunarBlaze", true);

        SetTalentHighlighted("TyrandeMoonlitArrows", true);

        SetTalentHighlighted("TyrandeHuntressFury", true);

        SetTalentHighlighted("TyrandeHeroicAbilityStarfall", true);

        SetTalentHighlighted("TyrandeMasteryLightofEluneQuickeningBlessing", true);

        SetTalentHighlighted("TyrandeMasteryStarfallCelestialWrath", true);

    }

    else {

    }

}



void libStEx_gf_AddInGameTip (int lp_tip) {

    // Automatic Variable Declarations

    int autoD6B947EF_val;



    // Implementation

    autoD6B947EF_val = lp_tip;

    if (autoD6B947EF_val == libStEx_ge_InGameTip_Abilities) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_0CE727AE"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_E19BA64B"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_abilities.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_Experience) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_0737CA73"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_45CA47BF"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_xp.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_BattlegroundMechanics) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_97C55EC6"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_C7FB4256"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_map_mechanic.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_Healing) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_B60E19F5"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_3896CC49"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_healing.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_Hearthstone) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_2E35BAF5"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_3682D851"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_hearthstone.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_HeroicAbilities) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_80505C32"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_37DF965F"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_heroic.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_MercenaryCamps) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_FDD67387"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_52663342"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_mercs.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_Mounts) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_99089475"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_741B5677"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_mount.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_Talent) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_7F8B70CB"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_BF002365"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_talents.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_Tower) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_EE76EC22"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_3DF27B85"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_tower.dds");

    }

    else if (autoD6B947EF_val == libStEx_ge_InGameTip_Watchtowers) {

        HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/lib_StEx_DA082888"), libNtve_ge_TipType_NormalTip), StringExternal("Param/Value/lib_StEx_266E5468"), StringToText(""), "Assets\\Textures\\storm_ui_tutorial_help_watch_tower.dds");

    }

    else {

    }

}



void libStEx_gf_AddAllInGameTips (bool lp_checkCondition) {

    // Automatic Variable Declarations

    // Implementation

    if ((lp_checkCondition == true)) {

        return ;

    }



    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Experience);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Talent);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Abilities);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_HeroicAbilities);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Mounts);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Hearthstone);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Healing);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Tower);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_Watchtowers);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_MercenaryCamps);

    libStEx_gf_AddInGameTip(libStEx_ge_InGameTip_BattlegroundMechanics);

}



// Triggers

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

// Trigger: #Include Starting Experience

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

bool libStEx_gt_IncludeStartingExperience_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    return true;

}



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

void libStEx_gt_IncludeStartingExperience_Init () {

    libStEx_gt_IncludeStartingExperience = TriggerCreate("libStEx_gt_IncludeStartingExperience_Func");

}



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

// Trigger: SE_VOPausedMessageClosed

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

bool libStEx_gt_SE_VOPausedMessageClosed_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((EventDialogControl() == libStEx_gv_sE_VOPausedMsgButton))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gf_ClearVOMessageGamePaused(EventPlayer());

    return true;

}



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

void libStEx_gt_SE_VOPausedMessageClosed_Init () {

    libStEx_gt_SE_VOPausedMessageClosed = TriggerCreate("libStEx_gt_SE_VOPausedMessageClosed_Func");

    TriggerEnable(libStEx_gt_SE_VOPausedMessageClosed, false);

    TriggerAddEventDialogControl(libStEx_gt_SE_VOPausedMessageClosed, c_playerAny, c_invalidDialogControlId, c_triggerControlEventTypeClick);

}



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

// Trigger: SEMMHideHeroes

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

bool libStEx_gt_SEMMHideHeroes_Func (bool testConds, bool runActions) {

    int init_i;



    // Variable Declarations

    int lv_itPlayerInIntro;

    int lv_itPlayer;

    playergroup lv_playersInIntro;

    playergroup lv_playersFinished;

    unit lv_itHero;

    unitgroup[libCore_gv_bALMaxPlayers + 1] lv_heroessHidden;



    // Automatic Variable Declarations

    playergroup autoF2FBC528_g;

    const int autoFBBE4B3F_ae = libCore_gv_bALMaxPlayers;

    const int autoFBBE4B3F_ai = 1;

    unitgroup auto68063C19_g;

    int auto68063C19_u;

    playergroup auto57D4A7F3_g;

    playergroup autoD7DBDC57_g;

    unitgroup auto24AF5347_g;

    int auto24AF5347_u;



    // Variable Initialization

    lv_playersInIntro = PlayerGroupEmpty();

    lv_playersFinished = PlayerGroupEmpty();

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

        lv_heroessHidden[init_i] = UnitGroupEmpty();

    }



    // Actions

    if (!runActions) {

        return true;

    }



    lv_playersInIntro = PlayerGroupCopy(libStEx_gv_sEMMIntroPlayersWatching);

    while (true) {

        autoF2FBC528_g = lv_playersInIntro;

        lv_itPlayerInIntro = -1;

        while (true) {

            	lv_itPlayerInIntro = PlayerGroupNextPlayer(autoF2FBC528_g, lv_itPlayerInIntro);

            	if (lv_itPlayerInIntro<0) { break; }

            	lv_itPlayer = 1;

            for ( ; ( (autoFBBE4B3F_ai >= 0 && lv_itPlayer <= autoFBBE4B3F_ae) || (autoFBBE4B3F_ai < 0 && lv_itPlayer >= autoFBBE4B3F_ae) ) ; lv_itPlayer += autoFBBE4B3F_ai ) {

                auto68063C19_g = libGame_gv_players[lv_itPlayer].lv_heroUnitGroup;

                auto68063C19_u = UnitGroupCount(auto68063C19_g, c_unitCountAll);

                for (;; auto68063C19_u -= 1) {

                    lv_itHero = UnitGroupUnitFromEnd(auto68063C19_g, auto68063C19_u);

                    if (lv_itHero == null) { break; }

                    if ((UnitGroupHasUnit(lv_heroessHidden[lv_itPlayerInIntro], lv_itHero) == false)) {

                        UnitGroupAdd(lv_heroessHidden[lv_itPlayerInIntro], lv_itHero);

                        ActorScopeSend(ActorScopeFromUnit(lv_itHero), (("SetFilterPlayers " + IntToString(lv_itPlayerInIntro))));

                    }



                }

            }

        }

        PlayerGroupClear(lv_playersFinished);

        auto57D4A7F3_g = lv_playersInIntro;

        lv_itPlayerInIntro = -1;

        while (true) {

            	lv_itPlayerInIntro = PlayerGroupNextPlayer(auto57D4A7F3_g, lv_itPlayerInIntro);

            	if (lv_itPlayerInIntro<0) { break; }

            	if ((libMapM_gf_MapMechanicIntroFinished(lv_itPlayerInIntro) == true)) {

                PlayerGroupAdd(lv_playersFinished, lv_itPlayerInIntro);

            }



        }

        autoD7DBDC57_g = lv_playersFinished;

        lv_itPlayerInIntro = -1;

        while (true) {

            	lv_itPlayerInIntro = PlayerGroupNextPlayer(autoD7DBDC57_g, lv_itPlayerInIntro);

            	if (lv_itPlayerInIntro<0) { break; }

            	auto24AF5347_g = lv_heroessHidden[lv_itPlayerInIntro];

            auto24AF5347_u = UnitGroupCount(auto24AF5347_g, c_unitCountAll);

            for (;; auto24AF5347_u -= 1) {

                lv_itHero = UnitGroupUnitFromEnd(auto24AF5347_g, auto24AF5347_u);

                if (lv_itHero == null) { break; }

                ActorScopeSend(ActorScopeFromUnit(lv_itHero), (("SetFilterPlayers " + IntToString(lv_itPlayerInIntro) + " Clear")));

            }

            UnitGroupClear(lv_heroessHidden[lv_itPlayerInIntro]);

        }

        libNtve_gf_RemovePlayerGroupFromPlayerGroup(lv_playersFinished, lv_playersInIntro);

        if ((PlayerGroupCount(lv_playersInIntro) == 0)) {

            break;

        }



        Wait(0.25, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SEMMHideHeroes_Init () {

    libStEx_gt_SEMMHideHeroes = TriggerCreate("libStEx_gt_SEMMHideHeroes_Func");

}



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

// Trigger: Training Mode Init

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

bool libStEx_gt_TrainingModeInit_Func (bool testConds, bool runActions) {

    // Variable Declarations

    string lv_bankKey;

    unit lv_itUnitToHideMinimap;

    int lv_itPlayer;



    // Automatic Variable Declarations

    unitgroup auto2AF5D1CA_g;

    int auto2AF5D1CA_u;



    // Variable Initialization

    lv_bankKey = "";



    // Actions

    if (!runActions) {

        return true;

    }



    if ((libStEx_gf_InTrainingMode() == false) && (libStEx_gf_InPracticeMode() == false)) {

        return true;

    }



    if ((libStEx_gf_GameIsSinglePlayer() == false)) {

        return true;

    }



    if (((libStEx_gv_sE_Player < 1) || (libStEx_gv_sE_Player > libCore_gv_bALMaxPlayers))) {

        return true;

    }



    libStEx_gv_sE_Team = libGame_gf_TeamNumberOfPlayer(libStEx_gv_sE_Player);

    if ((libMapM_gf_PrimaryMapMechanic() == "")) {

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

        auto2AF5D1CA_u = UnitGroupCount(auto2AF5D1CA_g, c_unitCountAll);

        for (;; auto2AF5D1CA_u -= 1) {

            lv_itUnitToHideMinimap = UnitGroupUnitFromEnd(auto2AF5D1CA_g, auto2AF5D1CA_u);

            if (lv_itUnitToHideMinimap == null) { break; }

            libNtve_gf_SendActorMessageToUnit(lv_itUnitToHideMinimap, "SetMinimapVisibility");

            libNtve_gf_SendActorMessageToUnit(lv_itUnitToHideMinimap, "SetMinimapVisibilityAlways");

            UnitSetState(lv_itUnitToHideMinimap, c_unitStateHighlightable, false);

        }

    }



    TriggerExecute(libStEx_gt_SE_TrainingModeReferenceCardDisplay, true, false);

    TriggerExecute(libStEx_gt_SE_TrainingModeTipInitData, true, false);

    TriggerEnable(libStEx_gt_SE_TrainingModeTipDebugModeOnOff, true);

    TriggerEnable(libStEx_gt_SE_TrainingModeTalentStart, true);

    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_WatchTower) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipWatchTower, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_HealingFountain) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana, true);

        TriggerEnable(libStEx_gt_SE_TrainingModeTipHealingFountainDrinking, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Experience) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipExperience, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Forts) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipForts, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Gates) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipGates, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Mana) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Ammo1) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipAmmunition1, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Bushes) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipBushes, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_MercCamps) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipMercCamps, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Hearthstone) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Mount) == false) && (libGame_gv_players[libStEx_gv_sE_Player].lv_heroData.lv_usesMounts == true)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipMount, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Abilities) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipAbilities, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Death1) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipDeath1, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Spacebar) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipSpacebar, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Talents) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipTalents, true);

    }



    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_CoreShield) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipCore, true);

    }



    return true;

}



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

void libStEx_gt_TrainingModeInit_Init () {

    libStEx_gt_TrainingModeInit = TriggerCreate("libStEx_gt_TrainingModeInit_Func");

}



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

// Trigger: Training Mode Bank Init

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

bool libStEx_gt_TrainingModeBankInit_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;

    string lv_bankKey;

    int lv_itNewUserTip;



    // Automatic Variable Declarations

    const int autoF8F6748A_ae = libCore_gv_bALMaxPlayers;

    const int autoF8F6748A_ai = 1;

    int auto6F0AEFF1_ae;

    const int auto6F0AEFF1_ai = 1;



    // Variable Initialization

    lv_bankKey = "";



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    libStEx_gv_sE_Player = 0;

    if ((libStEx_gf_GameIsSinglePlayer() == true)) {

        lv_itPlayer = 1;

        for ( ; ( (autoF8F6748A_ai >= 0 && lv_itPlayer <= autoF8F6748A_ae) || (autoF8F6748A_ai < 0 && lv_itPlayer >= autoF8F6748A_ae) ) ; lv_itPlayer += autoF8F6748A_ai ) {

            if ((PlayerStatus(lv_itPlayer) == c_playerStatusActive) && (PlayerType(lv_itPlayer) == c_playerTypeUser)) {

                libStEx_gv_sE_Player = lv_itPlayer;

                break;

            }



        }

    }



    lv_bankKey = libStEx_gv_sE_TrainingModeBankkey_RefCard_C;

    if ((BankKeyExists(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey) == true)) {

        libStEx_gv_sE_TrainingModeRefCardTimes = BankValueGetAsInt(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey);

    }

    else {

        libStEx_gv_sE_TrainingModeRefCardTimes = 0;

        BankValueSetFromInt(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey, libStEx_gv_sE_TrainingModeRefCardTimes);

    }

    TriggerExecute(libStEx_gt_SE_TrainingModeTipInitData, true, false);

    if ((libStEx_gv_sE_Player > 0)) {

        lv_bankKey = libStEx_gv_sE_TrainingModeBankkey_OnOff_C;

        if ((BankKeyExists(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey) == true)) {

            libStEx_gv_sE_TrainingMode = BankValueGetAsFlag(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey);

        }

        else {

            libStEx_gv_sE_TrainingMode = false;

            BankValueSetFromFlag(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey, libStEx_gv_sE_TrainingMode);

        }

        auto6F0AEFF1_ae = libStEx_gf_SE_TrainingModeTipCount();

        lv_itNewUserTip = 1;

        for ( ; ( (auto6F0AEFF1_ai >= 0 && lv_itNewUserTip <= auto6F0AEFF1_ae) || (auto6F0AEFF1_ai < 0 && lv_itNewUserTip >= auto6F0AEFF1_ae) ) ; lv_itNewUserTip += auto6F0AEFF1_ai ) {

            lv_bankKey = (libStEx_gv_sE_TrainingModeBankkey_Tip_C + IntToString((libStEx_gv_sE_TrainingModeTips[lv_itNewUserTip].lv_iD)));

            if ((BankKeyExists(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey) == true)) {

                libStEx_gv_sE_TrainingModeTips[lv_itNewUserTip].lv_doneTimes = BankValueGetAsInt(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey);

            }

            else {

                libStEx_gv_sE_TrainingModeTips[lv_itNewUserTip].lv_doneTimes = 0;

                BankValueSetFromInt(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey, libStEx_gv_sE_TrainingModeTips[lv_itNewUserTip].lv_doneTimes);

            }

        }

        lv_bankKey = libStEx_gv_sE_TrainingModeBankkey_Talent_C;

        if ((BankKeyExists(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey) == true)) {

            libStEx_gv_sE_TrainingModeTalentTaught = BankValueGetAsFlag(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey);

        }

        else {

            libStEx_gv_sE_TrainingModeTalentTaught = false;

            BankValueSetFromFlag(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey, libStEx_gv_sE_TrainingModeTalentTaught);

        }

    }



    return true;

}



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

void libStEx_gt_TrainingModeBankInit_Init () {

    libStEx_gt_TrainingModeBankInit = TriggerCreate("libStEx_gt_TrainingModeBankInit_Func");

}



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

// Trigger: SE_TrainingMode Talents Ready

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

bool libStEx_gt_SE_TrainingModeTalentsReady_Func (bool testConds, bool runActions) {

    // Variable Declarations

    string lv_bankKey;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_bankKey = "";



    // Conditions

    if (testConds) {

        if (!((libGame_gf_HeroLevelUpPlayer() == libStEx_gv_sE_Player))) {

            return false;

        }



        if (!((libGame_gv_teams[libStEx_gv_sE_Team].lv_teamLevel == 1))) {

            return false;

        }



        if (!((libGame_gv_talents_ActiveChoiceTierForPlayer[libStEx_gv_sE_Player] > 0))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    libStEx_gv_sE_TrainingModeTalentTaught = true;

    lv_bankKey = libStEx_gv_sE_TrainingModeBankkey_Talent_C;

    BankValueSetFromFlag(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey, libStEx_gv_sE_TrainingModeTalentTaught);

    BankSave(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank);

    libGame_gv_xPTrickleEnabled = false;

    TriggerExecute(libStEx_gt_SE_TrainingModeTalentsSuggestToOpenPanelQ, true, false);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTalentsReady_Init () {

    libStEx_gt_SE_TrainingModeTalentsReady = TriggerCreate("libStEx_gt_SE_TrainingModeTalentsReady_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTalentsReady, false);

    libGame_gf_HeroLevelUp(libStEx_gt_SE_TrainingModeTalentsReady);

}



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

// Trigger: SE_TrainingMode Talents Suggest To Open Panel Q

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

bool libStEx_gt_SE_TrainingModeTalentsSuggestToOpenPanelQ_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(libStEx_gt_SE_TrainingModeTalentsPanelOpened, true);

    if ((TimerGetElapsed(libGame_gv_gameTimer) == 0.0)) {

        libGame_gv_gateTimerReady = false;

        if ((TimerIsPaused(libGame_gv_openTheGatesTimer) == false)) {

            TimerPause(libGame_gv_openTheGatesTimer, true);

            libStEx_gv_sE_TrainingModeTalentTeachingOpenTheGateTimerPaused = true;

        }



        TriggerQueueEnter();

        if ((libStEx_gv_sE_TrainingModeTalentPanelOpened == false)) {

            Wait(1.0, c_timeGame);

            libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Speech, PlayerGroupAll());

            libCore_gf_SendTransmissionCampaign(null, "TutorialVO|Line00561", c_transmissionDurationAdd, 0.0, false, libCore_ge_TransmissionPortraitOptioins_DontShowPortrait, libCore_ge_TransmissionCueSoundOptions_DefaultCueSoundBehavior);

            Wait(6.5, c_timeGame);

            if ((libStEx_gv_sE_TrainingModeTalentPanelOpened == false)) {

                libStEx_gf_SE_ShowHideTalentPortraitFlashingImage(true);

                libCore_gf_SendTransmissionCampaign(null, "TutorialVO|Line00562", c_transmissionDurationAdd, 0.0, false, libCore_ge_TransmissionPortraitOptioins_DontShowPortrait, libCore_ge_TransmissionCueSoundOptions_DefaultCueSoundBehavior);

                Wait(2.5, c_timeGame);

                if ((libStEx_gv_sE_TrainingModeTalentPanelOpened == false)) {

                    libStEx_gf_DisplayHintMessage(StringExternal("Param/Value/lib_StEx_26D54DC7"), true, 1.0);

                }



                TransmissionWait(TransmissionLastSent(), 0.0);

            }



            libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Game, PlayerGroupAll());

        }



        TriggerQueueExit();

    }



    return true;

}



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

void libStEx_gt_SE_TrainingModeTalentsSuggestToOpenPanelQ_Init () {

    libStEx_gt_SE_TrainingModeTalentsSuggestToOpenPanelQ = TriggerCreate("libStEx_gt_SE_TrainingModeTalentsSuggestToOpenPanelQ_Func");

}



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

// Trigger: SE_TrainingMode Talents Panel Opened

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

bool libStEx_gt_SE_TrainingModeTalentsPanelOpened_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    libStEx_gf_SE_ShowHideTalentPortraitFlashingImage(false);

    libStEx_gv_sE_TrainingModeTalentPanelOpened = true;

    CameraLockInput(libStEx_gv_sE_Player, true);

    CameraPan(libStEx_gv_sE_Player, UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), 1.0, -1, 10.0, false);

    libStEx_gf_FreezeUnfreezeAllUnits(libStEx_ge_FreezeOptions_Freeze);

    libNtve_gf_MakeUnitUncommandable(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, true);

    TriggerEnable(libStEx_gt_SE_TrainingModeTalentsPicked, true);

    TransmissionClearGroup(PlayerGroupSingle(libStEx_gv_sE_Player));

    if ((libStEx_gv_sE_HintMsgPanel != c_invalidDialogControlId)) {

        DialogControlSetVisible(libStEx_gv_sE_HintMsgPanel, PlayerGroupAll(), true);

    }



    TriggerExecute(libStEx_gt_SE_TrainingModeTalentsPanelFlashTalents, true, false);

    TriggerQueueEnter();

    if ((libStEx_gv_sE_TrainingModeTalentPicked == false)) {

        libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Speech, PlayerGroupAll());

        libCore_gf_SendTransmissionCampaign(null, "TutorialVO|Line00563", c_transmissionDurationAdd, 0.0, true, libCore_ge_TransmissionPortraitOptioins_DontShowPortrait, libCore_ge_TransmissionCueSoundOptions_DefaultCueSoundBehavior);

        libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Game, PlayerGroupAll());

    }



    TriggerQueueExit();

    return true;

}



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

void libStEx_gt_SE_TrainingModeTalentsPanelOpened_Init () {

    libStEx_gt_SE_TrainingModeTalentsPanelOpened = TriggerCreate("libStEx_gt_SE_TrainingModeTalentsPanelOpened_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTalentsPanelOpened, false);

    TriggerAddEventHeroTalentTreeSelectionPanelShown(libStEx_gt_SE_TrainingModeTalentsPanelOpened, c_playerAny);

}



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

// Trigger: SE_TrainingMode Talents Panel - Flash Talents

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

bool libStEx_gt_SE_TrainingModeTalentsPanelFlashTalents_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer\\ConsoleUIContainer\\FloatingCombatUnitSelectionPanel\\UnitStatusFrame0\\HeroTalentTreeSelectionPanel\\TalentTreePanel\\TutorialTalentHighlight");

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

    while (!((libStEx_gv_sE_TrainingModeTalentPicked == true))) {

        Wait(0.5, c_timeGame);

    }

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTalentsPanelFlashTalents_Init () {

    libStEx_gt_SE_TrainingModeTalentsPanelFlashTalents = TriggerCreate("libStEx_gt_SE_TrainingModeTalentsPanelFlashTalents_Func");

}



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

// Trigger: SE_TrainingMode Talents Picked

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

bool libStEx_gt_SE_TrainingModeTalentsPicked_Func (bool testConds, bool runActions) {

    // Variable Declarations

    string lv_bankKey;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_bankKey = "";



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    libStEx_gv_sE_TrainingModeTalentPicked = true;

    CameraLockInput(libStEx_gv_sE_Player, false);

    TransmissionClearGroup(PlayerGroupSingle(libStEx_gv_sE_Player));

    if ((libStEx_gv_sE_HintMsgPanel != c_invalidDialogControlId)) {

        DialogControlSetVisible(libStEx_gv_sE_HintMsgPanel, PlayerGroupAll(), true);

    }



    SetTalentTreePauseGameWhenSelectionPanelShown(true);

    CinematicMode(PlayerGroupAll(), false, 0.0);

    libStEx_gf_FreezeUnfreezeAllUnits(libStEx_ge_FreezeOptions_Unfrezze);

    libGame_gv_xPTrickleEnabled = true;

    libNtve_gf_MakeUnitUncommandable(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, false);

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

    Wait(1.0, c_timeGame);

    TriggerExecute(libStEx_gt_SE_TrainingModeTalentsPickedTransmissionQ, true, false);

    Wait(1.0, c_timeGame);

    if ((libStEx_gv_sE_TrainingModeTalentTeachingOpenTheGateTimerPaused == true)) {

        TimerPause(libGame_gv_openTheGatesTimer, false);

    }



    libGame_gv_gateTimerReady = true;

    SetTalentTreeSelectionPanelDismissAllowed(true);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTalentsPicked_Init () {

    libStEx_gt_SE_TrainingModeTalentsPicked = TriggerCreate("libStEx_gt_SE_TrainingModeTalentsPicked_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTalentsPicked, false);

    TriggerAddEventHeroTalentTreeSelected(libStEx_gt_SE_TrainingModeTalentsPicked, c_playerAny);

}



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

// Trigger: SE_TrainingMode Talents Picked Transmission Q

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

bool libStEx_gt_SE_TrainingModeTalentsPickedTransmissionQ_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    TriggerQueueEnter();

    libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Speech, PlayerGroupAll());

    libCore_gf_SendTransmissionCampaign(null, "TutorialVO|Line00593", c_transmissionDurationAdd, 0.0, true, libCore_ge_TransmissionPortraitOptioins_DontShowPortrait, libCore_ge_TransmissionCueSoundOptions_DefaultCueSoundBehavior);

    libCore_gf_SendTransmissionCampaign(null, "TutorialVO|Line00564", c_transmissionDurationAdd, 0.0, true, libCore_ge_TransmissionPortraitOptioins_DontShowPortrait, libCore_ge_TransmissionCueSoundOptions_DefaultCueSoundBehavior);

    libCore_gf_SetAllSoundChannelVolumesStandardTiming(libNtve_ge_VolumeChannelMode_Game, PlayerGroupAll());

    TriggerQueueExit();

    libStEx_gv_sE_TrainingModeTalentPanelOpened = false;

    return true;

}



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

void libStEx_gt_SE_TrainingModeTalentsPickedTransmissionQ_Init () {

    libStEx_gt_SE_TrainingModeTalentsPickedTransmissionQ = TriggerCreate("libStEx_gt_SE_TrainingModeTalentsPickedTransmissionQ_Func");

}



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

// Trigger: SE_TrainingMode Talent Start

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

bool libStEx_gt_SE_TrainingModeTalentStart_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    SetTalentTreePauseGameWhenSelectionPanelShown(true);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTalentStart_Init () {

    libStEx_gt_SE_TrainingModeTalentStart = TriggerCreate("libStEx_gt_SE_TrainingModeTalentStart_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTalentStart, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTalentStart, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingMode Reference Card Display

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

bool libStEx_gt_SE_TrainingModeReferenceCardDisplay_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itPlayer;

    bool lv_heroSpawned;

    string lv_bankKey;



    // Automatic Variable Declarations

    const int autoB5550F23_ae = libCore_gv_bALMaxPlayers;

    const int autoB5550F23_ai = 1;



    // Variable Initialization

    lv_bankKey = "";



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    while (!((TimerGetDuration(libGame_gv_openTheGatesTimer) > 0.0) && (TimerGetRemaining(libGame_gv_openTheGatesTimer) <= 22.0))) {

        Wait(0.5, c_timeGame);

    }

    while (true) {

        lv_itPlayer = 1;

        for ( ; ( (autoB5550F23_ai >= 0 && lv_itPlayer <= autoB5550F23_ae) || (autoB5550F23_ai < 0 && lv_itPlayer >= autoB5550F23_ae) ) ; lv_itPlayer += autoB5550F23_ai ) {

            if ((UnitIsAlive(libGame_gv_players[lv_itPlayer].lv_heroUnit) == true)) {

                lv_heroSpawned = true;

                break;

            }



        }

        if ((lv_heroSpawned == true)) {

            break;

        }



        Wait(1.0, c_timeGame);

    }

    Wait(2.0, c_timeGame);

    if ((libStEx_gf_InTrainingMode() == true)) {

        libStEx_gv_sE_TrainingModeRefCardTimes += 1;

        lv_bankKey = libStEx_gv_sE_TrainingModeBankkey_RefCard_C;

        BankValueSetFromInt(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank, libStEx_gv_sE_TrainingModeBankSection_C, lv_bankKey, libStEx_gv_sE_TrainingModeRefCardTimes);

        BankSave(libGame_gv_players[libStEx_gv_sE_Player].lv_bankData.lv_bank);

    }



    libUIUI_gf_AddTutorialReferenceItemPreset(libUIUI_ge_TutorialReferenceItem_Move);

    libUIUI_gf_AddTutorialReferenceItemPreset(libUIUI_ge_TutorialReferenceItem_Attack);

    libUIUI_gf_AddTutorialReferenceItemPreset(libUIUI_ge_TutorialReferenceItem_Abilities);

    libUIUI_gf_AddTutorialReferenceItemPreset(libUIUI_ge_TutorialReferenceItem_Mount);

    libUIUI_gf_AddTutorialReferenceItemPreset(libUIUI_ge_TutorialReferenceItem_Camera);

    if ((libStEx_gv_sE_TrainingModeRefCardTimes >= libStEx_gv_sE_TrainingModeRefCardTimesMax_C)) {

        DialogControlSetVisible(libUIUI_gv_tutorialReferencePanel, PlayerGroupAll(), false);

        DialogControlSetVisible(libUIUI_gv_tutorialReferenceShowHelp, PlayerGroupAll(), true);

    }



    return true;

}



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

void libStEx_gt_SE_TrainingModeReferenceCardDisplay_Init () {

    libStEx_gt_SE_TrainingModeReferenceCardDisplay = TriggerCreate("libStEx_gt_SE_TrainingModeReferenceCardDisplay_Func");

}



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

// Trigger: SE_TrainingModeTip Init Data

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

bool libStEx_gt_SE_TrainingModeTipInitData_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);

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Abilities)].lv_iD = libStEx_ge_SE_TrainingModeTips_Abilities;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Abilities)].lv_name = StringExternal("Param/Value/lib_StEx_44414396");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Abilities)].lv_description = StringExternal("Param/Value/lib_StEx_D36B2FCF");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Abilities)].lv_vO = "TutorialVO|Line00568";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Bushes)].lv_iD = libStEx_ge_SE_TrainingModeTips_Bushes;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Bushes)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Bushes)].lv_description = StringExternal("Param/Value/lib_StEx_D9433DF9");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Bushes)].lv_vO = "TutorialVO|Line00570";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_CoreShield)].lv_iD = libStEx_ge_SE_TrainingModeTips_CoreShield;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_CoreShield)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_CoreShield)].lv_description = StringExternal("Param/Value/lib_StEx_93C5656C");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_CoreShield)].lv_vO = "TutorialVO|Line00571";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death1)].lv_iD = libStEx_ge_SE_TrainingModeTips_Death1;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death1)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death1)].lv_description = StringExternal("Param/Value/lib_StEx_E3B176AC");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death1)].lv_vO = "TutorialVO|Line00572";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death2)].lv_iD = libStEx_ge_SE_TrainingModeTips_Death2;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death2)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death2)].lv_description = StringExternal("Param/Value/lib_StEx_9BBA30FD");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Death2)].lv_vO = "TutorialVO|Line00573";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Experience)].lv_iD = libStEx_ge_SE_TrainingModeTips_Experience;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Experience)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Experience)].lv_description = StringExternal("Param/Value/lib_StEx_C4306643");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Experience)].lv_vO = "TutorialVO|Line00580";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Forts)].lv_iD = libStEx_ge_SE_TrainingModeTips_Forts;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Forts)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Forts)].lv_description = StringExternal("Param/Value/lib_StEx_53947FF6");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Forts)].lv_vO = "TutorialVO|Line00581";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Gates)].lv_iD = libStEx_ge_SE_TrainingModeTips_Gates;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Gates)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Gates)].lv_description = StringExternal("Param/Value/lib_StEx_42ED54A0");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Gates)].lv_vO = "TutorialVO|Line00574";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HealingFountain)].lv_iD = libStEx_ge_SE_TrainingModeTips_HealingFountain;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HealingFountain)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HealingFountain)].lv_description = StringExternal("Param/Value/lib_StEx_5FB0A15F");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HealingFountain)].lv_vO = "TutorialVO|Line00582";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Hearthstone)].lv_iD = libStEx_ge_SE_TrainingModeTips_Hearthstone;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Hearthstone)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Hearthstone)].lv_description = StringExternal("Param/Value/lib_StEx_7FA8863D");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Hearthstone)].lv_vO = "TutorialVO|Line00583";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HearthstoneUsed)].lv_iD = libStEx_ge_SE_TrainingModeTips_HearthstoneUsed;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HearthstoneUsed)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HearthstoneUsed)].lv_description = StringExternal("Param/Value/lib_StEx_8CBED564");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_HearthstoneUsed)].lv_vO = "TutorialVO|Line00584";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mana)].lv_iD = libStEx_ge_SE_TrainingModeTips_Mana;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mana)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mana)].lv_description = StringExternal("Param/Value/lib_StEx_500B9D83");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mana)].lv_vO = "TutorialVO|Line00588";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_MercCamps)].lv_iD = libStEx_ge_SE_TrainingModeTips_MercCamps;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_MercCamps)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_MercCamps)].lv_description = StringExternal("Param/Value/lib_StEx_15B05B80");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_MercCamps)].lv_vO = "TutorialVO|Line00605";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mount)].lv_iD = libStEx_ge_SE_TrainingModeTips_Mount;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mount)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mount)].lv_description = StringExternal("Param/Value/lib_StEx_DEBAB952");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Mount)].lv_vO = "TutorialVO|Line00576";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Spacebar)].lv_iD = libStEx_ge_SE_TrainingModeTips_Spacebar;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Spacebar)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Spacebar)].lv_description = StringExternal("Param/Value/lib_StEx_F98F289B");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Spacebar)].lv_vO = "TutorialVO|Line00577";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Talents)].lv_iD = libStEx_ge_SE_TrainingModeTips_Talents;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Talents)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Talents)].lv_description = StringExternal("Param/Value/lib_StEx_38391ADB");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_Talents)].lv_vO = "TutorialVO|Line00578";

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_WatchTower)].lv_iD = libStEx_ge_SE_TrainingModeTips_WatchTower;

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_WatchTower)].lv_name = StringToText("");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_WatchTower)].lv_description = StringExternal("Param/Value/lib_StEx_90394BFA");

    libStEx_gv_sE_TrainingModeTips[(libStEx_ge_SE_TrainingModeTips_WatchTower)].lv_vO = "TutorialVO|Line00579";

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipInitData_Init () {

    libStEx_gt_SE_TrainingModeTipInitData = TriggerCreate("libStEx_gt_SE_TrainingModeTipInitData_Func");

}



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

// Trigger: SE_TrainingModeTipAbilities

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

bool libStEx_gt_SE_TrainingModeTipAbilities_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    TriggerEnable(libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed, true);

    Wait(120.0, c_timeGame);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsBeingAttacked() == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            TriggerEnable(libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed, false);

            libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Abilities);

            libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Abilities);

            Wait(180.0, c_timeGame);

        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipAbilities_Init () {

    libStEx_gt_SE_TrainingModeTipAbilities = TriggerCreate("libStEx_gt_SE_TrainingModeTipAbilities_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipAbilities, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipAbilities, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipAbilitiesQWERUsed

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

bool libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((EventPlayer() == libStEx_gv_sE_Player))) {

            return false;

        }



        if (!((libGame_gv_gameOver == false))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    TriggerStop(libStEx_gt_SE_TrainingModeTipAbilities);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed_Init () {

    libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed = TriggerCreate("libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed, false);

    TriggerAddEventKeyPressed(libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed, c_playerAny, c_keyQ, true, c_keyModifierStateExclude, c_keyModifierStateExclude, c_keyModifierStateIgnore);

    TriggerAddEventKeyPressed(libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed, c_playerAny, c_keyW, true, c_keyModifierStateExclude, c_keyModifierStateExclude, c_keyModifierStateIgnore);

    TriggerAddEventKeyPressed(libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed, c_playerAny, c_keyE, true, c_keyModifierStateExclude, c_keyModifierStateExclude, c_keyModifierStateIgnore);

    TriggerAddEventKeyPressed(libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed, c_playerAny, c_keyR, true, c_keyModifierStateExclude, c_keyModifierStateExclude, c_keyModifierStateIgnore);

}



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

// Trigger: SE_TrainingModeTipAmmunition 1

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

bool libStEx_gt_SE_TrainingModeTipAmmunition1_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_towers;

    unit lv_itTower;



    // Automatic Variable Declarations

    unitgroup auto1125102F_g;

    int auto1125102F_u;



    // Variable Initialization

    lv_towers = UnitGroupEmpty();



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    lv_towers = UnitGroupAlliance(libStEx_gv_sE_Player, c_unitAllianceEnemy, RegionEntireMap(), UnitFilter((1 << c_targetFilterTower) | (1 << c_targetFilterStructure), 0, (1 << c_targetFilterCreep) | (1 << c_targetFilterImmuneToSkillshots) | (1 << c_targetFilterMissile) | (1 << c_targetFilterItem), (1 << (c_targetFilterStasis - 32)) | (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterInvulnerable - 32)) | (1 << (c_targetFilterOrdersPaused - 32))), 0);

    if ((libNtve_gf_UnitGroupIsDead(lv_towers) == true)) {

        return true;

    }



    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsBeingAttacked() == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            auto1125102F_g = lv_towers;

            auto1125102F_u = UnitGroupCount(auto1125102F_g, c_unitCountAll);

            for (;; auto1125102F_u -= 1) {

                lv_itTower = UnitGroupUnitFromEnd(auto1125102F_g, auto1125102F_u);

                if (lv_itTower == null) { break; }

                if ((UnitGetPropertyFixed(lv_itTower, c_unitPropEnergy, c_unitPropCurrent) == 0.0) && (DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), UnitGetPosition(lv_itTower)) < 12.0)) {

                    libCore_gf_AttachReticleEffectAndTextTagOnUnit(libCore_ge_ReticleType_Enemy, libCore_ge_ReticleSize_Medium, StringToText(""), lv_itTower, "Ref_Center");

                    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Ammo1);

                    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Ammo1);

                    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                    libNtve_gf_KillModel(libNtve_gf_ActorLastCreated());

                    return true;

                }



            }

        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipAmmunition1_Init () {

    libStEx_gt_SE_TrainingModeTipAmmunition1 = TriggerCreate("libStEx_gt_SE_TrainingModeTipAmmunition1_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipAmmunition1, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipAmmunition1, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipBushes

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

bool libStEx_gt_SE_TrainingModeTipBushes_Func (bool testConds, bool runActions) {

    // Variable Declarations

    region lv_area;



    // Automatic Variable Declarations

    const int auto69DED0F3_n = 5;

    int auto69DED0F3_i;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[1].lv_heroUnit) == true) && (libStEx_gf_PlayerIsInCombat(1) == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            if ((UnitHasBehavior2(libGame_gv_players[1].lv_heroUnit, "ShrubStatusController") == true) && (UnitBehaviorEnabled(libGame_gv_players[1].lv_heroUnit, "ShrubStatusController") == true) && (UnitBehaviorCount(libGame_gv_players[1].lv_heroUnit, "ShrubStatusController") > 0)) {

                libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Bushes);

                libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Bushes);

                lv_area = RegionCircle(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), 12.0);

                libStEx_gf_SE_TrainingModeTipBushesSendActorMessageToBushes("HaloSetColor 255,255,0", lv_area);

                for (auto69DED0F3_i = 1; auto69DED0F3_i <= auto69DED0F3_n; auto69DED0F3_i += 1) {

                    libStEx_gf_SE_TrainingModeTipBushesSendActorMessageToBushes("HaloStart", lv_area);

                    Wait(0.4, c_timeGame);

                    libStEx_gf_SE_TrainingModeTipBushesSendActorMessageToBushes("HaloStop", lv_area);

                    Wait(0.7, c_timeGame);

                }

                libStEx_gf_SE_TrainingModeTipBushesSendActorMessageToBushes("HaloClearColor", lv_area);

                return true;

            }



        }



        Wait(0.25, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipBushes_Init () {

    libStEx_gt_SE_TrainingModeTipBushes = TriggerCreate("libStEx_gt_SE_TrainingModeTipBushes_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipBushes, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipBushes, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipCore

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

bool libStEx_gt_SE_TrainingModeTipCore_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    const int auto92CE80BB_n = 8;

    int auto92CE80BB_i;



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    for (auto92CE80BB_i = 1; auto92CE80BB_i <= auto92CE80BB_n; auto92CE80BB_i += 1) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), UnitGetPosition(libGame_gv_teams[libGame_gf_EnemyTeam(libStEx_gv_sE_Team)].lv_core)) < 12.0) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            libCore_gf_AttachReticleEffectAndTextTagOnUnit(libCore_ge_ReticleType_Enemy, libCore_ge_ReticleSize_Medium, StringToText(""), libGame_gv_teams[libGame_gf_EnemyTeam(libStEx_gv_sE_Team)].lv_core, "Ref_Center");

            libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Forts);

            libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Forts);

            Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

            libNtve_gf_KillModel(libNtve_gf_ActorLastCreated());

            return true;

        }



        Wait(0.5, c_timeGame);

    }

    TriggerEnable(TriggerGetCurrent(), true);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipCore_Init () {

    libStEx_gt_SE_TrainingModeTipCore = TriggerCreate("libStEx_gt_SE_TrainingModeTipCore_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipCore, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipCore, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipDeath1

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

bool libStEx_gt_SE_TrainingModeTipDeath1_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libGame_gf_HeroKilledPlayer() == libStEx_gv_sE_Player))) {

            return false;

        }



        if (!((libGame_gv_gameOver == false))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Death1);

    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Death1);

    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

    TriggerEnable(libStEx_gt_SE_TrainingModeTipDeath2, true);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipDeath1_Init () {

    libStEx_gt_SE_TrainingModeTipDeath1 = TriggerCreate("libStEx_gt_SE_TrainingModeTipDeath1_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipDeath1, false);

    libGame_gf_HeroKilled(libStEx_gt_SE_TrainingModeTipDeath1);

}



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

// Trigger: SE_TrainingModeTipDeath2

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

bool libStEx_gt_SE_TrainingModeTipDeath2_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libGame_gf_HeroKilledPlayer() == libStEx_gv_sE_Player))) {

            return false;

        }



        if (!((libGame_gv_gameOver == false))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Death2);

    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Death2);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipDeath2_Init () {

    libStEx_gt_SE_TrainingModeTipDeath2 = TriggerCreate("libStEx_gt_SE_TrainingModeTipDeath2_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipDeath2, false);

    libGame_gf_HeroKilled(libStEx_gt_SE_TrainingModeTipDeath2);

}



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

// Trigger: SE_TrainingModeTipExperience

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

bool libStEx_gt_SE_TrainingModeTipExperience_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libGame_gf_HeroLevelUpPlayer() == libStEx_gv_sE_Player))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsBeingAttacked() == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false) && ((libNtve_gf_UnitGroupIsDead(UnitGroup(libCore_gf_DataMinionUnitTypeFromPreset(libCore_ge_MinionTypes_Footmen), libGame_gf_ComputerPlayerInTeam(libGame_gf_EnemyTeam(libStEx_gv_sE_Team)), RegionCircle(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), 8.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1)) == false) || (libNtve_gf_UnitGroupIsDead(UnitGroup(libCore_gf_DataMinionUnitTypeFromPreset(libCore_ge_MinionTypes_Wizard), libGame_gf_ComputerPlayerInTeam(libGame_gf_EnemyTeam(libStEx_gv_sE_Team)), RegionCircle(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), 8.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1)) == false) || (libNtve_gf_UnitGroupIsDead(UnitGroup(libCore_gf_DataMinionUnitTypeFromPreset(libCore_ge_MinionTypes_Ranged), libGame_gf_ComputerPlayerInTeam(libGame_gf_EnemyTeam(libStEx_gv_sE_Team)), RegionCircle(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), 8.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1)) == false))) {

            libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Experience);

            libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Experience);

            return true;

        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipExperience_Init () {

    libStEx_gt_SE_TrainingModeTipExperience = TriggerCreate("libStEx_gt_SE_TrainingModeTipExperience_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipExperience, false);

    libGame_gf_HeroLevelUp(libStEx_gt_SE_TrainingModeTipExperience);

}



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

// Trigger: SE_TrainingModeTipForts

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

bool libStEx_gt_SE_TrainingModeTipForts_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_forts;



    // Automatic Variable Declarations

    const int autoE83221F0_n = 8;

    int autoE83221F0_i;



    // Variable Initialization

    lv_forts = UnitGroupEmpty();



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    for (autoE83221F0_i = 1; autoE83221F0_i <= autoE83221F0_n; autoE83221F0_i += 1) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[1].lv_heroUnit) == true) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            lv_forts = UnitGroup("TownTownHallL2", libGame_gf_ComputerPlayerInTeam(libGame_gf_EnemyTeam(libStEx_gv_sE_Team)), RegionCircle(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), 10.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

            if ((libNtve_gf_UnitGroupIsDead(lv_forts) == true)) {

                lv_forts = UnitGroup("TownTownHallL3", libGame_gf_ComputerPlayerInTeam(libGame_gf_EnemyTeam(libStEx_gv_sE_Team)), RegionCircle(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), 10.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

            }



            if ((libNtve_gf_UnitGroupIsDead(lv_forts) == false)) {

                libCore_gf_AttachReticleEffectAndTextTagOnUnit(libCore_ge_ReticleType_Enemy, libCore_ge_ReticleSize_Medium, StringToText(""), UnitGroupUnit(lv_forts, 1), "Ref_Center");

                libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Forts);

                libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Forts);

                Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                libNtve_gf_KillModel(libNtve_gf_ActorLastCreated());

                return true;

            }



        }



        Wait(0.5, c_timeGame);

    }

    TriggerEnable(TriggerGetCurrent(), true);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipForts_Init () {

    libStEx_gt_SE_TrainingModeTipForts = TriggerCreate("libStEx_gt_SE_TrainingModeTipForts_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipForts, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipForts, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipGates

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

bool libStEx_gt_SE_TrainingModeTipGates_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_gates;

    int lv_itTown;

    int lv_itTownStructures;

    unit lv_itGate;



    // Automatic Variable Declarations

    int auto05588EDB_ae;

    const int auto05588EDB_ai = 1;

    int autoCA607DED_ae;

    const int autoCA607DED_ai = 1;

    unitgroup autoBDCF1F76_g;

    int autoBDCF1F76_u;



    // Variable Initialization

    lv_gates = UnitGroupEmpty();



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    auto05588EDB_ae = libGame_gv_townTownCount;

    lv_itTown = 1;

    for ( ; ( (auto05588EDB_ai >= 0 && lv_itTown <= auto05588EDB_ae) || (auto05588EDB_ai < 0 && lv_itTown >= auto05588EDB_ae) ) ; lv_itTown += auto05588EDB_ai ) {

        if ((libGame_gv_townTownData[lv_itTown].lv_owner != libGame_gf_ComputerPlayerInTeam(libGame_gf_EnemyTeam(libStEx_gv_sE_Team)))) {

            continue;

        }



        autoCA607DED_ae = libGame_gv_townTownData[lv_itTown].lv_structureCount;

        lv_itTownStructures = 1;

        for ( ; ( (autoCA607DED_ai >= 0 && lv_itTownStructures <= autoCA607DED_ae) || (autoCA607DED_ai < 0 && lv_itTownStructures >= autoCA607DED_ae) ) ; lv_itTownStructures += autoCA607DED_ai ) {

            if ((UnitTypeTestFlag(UnitGetType(libGame_gv_townTownData[lv_itTown].lv_structureUnits[lv_itTownStructures]), c_unitFlagTownStructureGate) == true)) {

                UnitGroupAdd(lv_gates, libGame_gv_townTownData[lv_itTown].lv_structureUnits[lv_itTownStructures]);

            }



        }

    }

    if ((libNtve_gf_UnitGroupIsDead(lv_gates) == true)) {

        return true;

    }



    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsBeingAttacked() == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            autoBDCF1F76_g = lv_gates;

            autoBDCF1F76_u = UnitGroupCount(autoBDCF1F76_g, c_unitCountAll);

            for (;; autoBDCF1F76_u -= 1) {

                lv_itGate = UnitGroupUnitFromEnd(autoBDCF1F76_g, autoBDCF1F76_u);

                if (lv_itGate == null) { break; }

                if ((DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), UnitGetPosition(lv_itGate)) < 3.0)) {

                    libCore_gf_AttachReticleEffectAndTextTagOnUnit(libCore_ge_ReticleType_Enemy, libCore_ge_ReticleSize_Medium, StringToText(""), lv_itGate, "Ref_Center");

                    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Gates);

                    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Gates);

                    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                    libNtve_gf_KillModel(libNtve_gf_ActorLastCreated());

                    return true;

                }



            }

        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipGates_Init () {

    libStEx_gt_SE_TrainingModeTipGates = TriggerCreate("libStEx_gt_SE_TrainingModeTipGates_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipGates, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipGates, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipHearthstone/Healing Fountain/Mana

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

bool libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_healingFountains;

    unit lv_itHealingFountain;



    // Automatic Variable Declarations

    unitgroup auto00B49A0C_g;

    int auto00B49A0C_u;



    // Variable Initialization

    lv_healingFountains = UnitGroupEmpty();



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_HealingFountain) == false)) {

        TriggerEnable(libStEx_gt_SE_TrainingModeTipHealingFountainDrinking, false);

        lv_healingFountains = UnitGroup("TownMoonwellL2", libGame_gf_ComputerPlayerInTeam(libStEx_gv_sE_Team), RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

        UnitGroupAddUnitGroup(lv_healingFountains, UnitGroup("TownMoonwellL3", libGame_gf_ComputerPlayerInTeam(libStEx_gv_sE_Team), RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0));

    }



    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_HealingFountain) == false) && (libStEx_gv_sE_TrainingModeTipHealingFountainDid == false)) {

            if ((UnitIsAlive(libGame_gv_players[1].lv_heroUnit) == true) && (UnitGetPropertyFixed(libGame_gv_players[1].lv_heroUnit, c_unitPropLifePercent, c_unitPropCurrent) < 60.0) && (UnitHasBehavior2(libGame_gv_players[1].lv_heroUnit, "HealingFountainCooldown") == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

                if ((libStEx_gv_sE_TrainingModeTipHealingFountainReticle == null)) {

                    auto00B49A0C_g = lv_healingFountains;

                    auto00B49A0C_u = UnitGroupCount(auto00B49A0C_g, c_unitCountAll);

                    for (;; auto00B49A0C_u -= 1) {

                        lv_itHealingFountain = UnitGroupUnitFromEnd(auto00B49A0C_g, auto00B49A0C_u);

                        if (lv_itHealingFountain == null) { break; }

                        if ((DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), UnitGetPosition(lv_itHealingFountain)) < 14.0)) {

                            libCore_gf_AttachReticleEffectAndTextTagOnUnit(libCore_ge_ReticleType_MainObjective, libCore_ge_ReticleSize_Medium, StringToText(""), lv_itHealingFountain, "Ref_Center");

                            libStEx_gv_sE_TrainingModeTipHealingFountainReticle = libNtve_gf_ActorLastCreated();

                            TriggerEnable(libStEx_gt_SE_TrainingModeTipHealingFountainUsed, true);

                            break;

                        }



                    }

                }



                libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_HealingFountain);

                libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_HealingFountain);

                Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                if ((libStEx_gv_sE_TrainingModeTipHealingFountainReticle != null)) {

                    TriggerEnable(libStEx_gt_SE_TrainingModeTipHealingFountainUsed, false);

                    libNtve_gf_KillModel(libStEx_gv_sE_TrainingModeTipHealingFountainReticle);

                    libStEx_gv_sE_TrainingModeTipHealingFountainReticle = null;

                }



                Wait(360.0, c_timeGame);

            }



        }



        if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Hearthstone) == false) && (libStEx_gv_sE_TrainingModeTipHearthstoneDid == false)) {

            if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsBeingAttacked() == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false) && (UnitGetPropertyFixed(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, c_unitPropLifePercent, c_unitPropCurrent) < 40.0)) {

                libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Hearthstone);

                libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Hearthstone);

                libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_HearthstoneUsed);

                libStEx_gf_HighlightCommandButton(true, libStEx_ge_TutorialCommandButton_Hearth);

                TriggerEnable(libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton, true);

                Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                libStEx_gf_HighlightCommandButton(false, libStEx_ge_TutorialCommandButton_Hearth);

                libStEx_gv_sE_TrainingModeTipHearthstoneDid = true;

                TriggerExecute(libStEx_gt_SE_TrainingModeTipHearthstoneTeachingExpires, true, false);

                Wait(360.0, c_timeGame);

            }



        }



        if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Mana) == false) && (libStEx_gv_sE_TrainingModeTipManaDid == false)) {

            if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gv_sE_TrainingModeTipDisplaying == false) && (UnitHasBehavior2(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, "NotManaUserDummy") == false) && (UnitGetPropertyFixed(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, c_unitPropEnergyPercent, c_unitPropCurrent) < 30.0)) {

                libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Mana);

                libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Mana);

                Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                libStEx_gv_sE_TrainingModeTipManaDid = true;

                TriggerExecute(libStEx_gt_SE_TrainingModeTipManaTeachingExpires, true, false);

                Wait(240.0, c_timeGame);

            }



        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana_Init () {

    libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana = TriggerCreate("libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipHearthstoneTeachingExpires

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

bool libStEx_gt_SE_TrainingModeTipHearthstoneTeachingExpires_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    Wait(180.0, c_timeGame);

    libStEx_gv_sE_TrainingModeTipHearthstoneDid = false;

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipHearthstoneTeachingExpires_Init () {

    libStEx_gt_SE_TrainingModeTipHearthstoneTeachingExpires = TriggerCreate("libStEx_gt_SE_TrainingModeTipHearthstoneTeachingExpires_Func");

}



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

// Trigger: SE_TrainingModeTipManaTeachingExpires

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

bool libStEx_gt_SE_TrainingModeTipManaTeachingExpires_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    Wait(60.0, c_timeGame);

    libStEx_gv_sE_TrainingModeTipManaDid = false;

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipManaTeachingExpires_Init () {

    libStEx_gt_SE_TrainingModeTipManaTeachingExpires = TriggerCreate("libStEx_gt_SE_TrainingModeTipManaTeachingExpires_Func");

}



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

// Trigger: SE_TrainingModeTipHearthstoneUnhighlightButton

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

bool libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libGame_gv_gameOver == false))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    libStEx_gf_HighlightCommandButton(false, libStEx_ge_TutorialCommandButton_Hearth);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton_Init () {

    libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton = TriggerCreate("libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton, false);

    TriggerAddEventUnitAbility(libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton, UnitRefFromVariable("libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit"), AbilityCommand("Hearthstone", 0), c_abilEffectStageCast, false);

}



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

// Trigger: SE_TrainingModeTipHealingFountainUsed

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

bool libStEx_gt_SE_TrainingModeTipHealingFountainUsed_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libGame_gv_gameOver == false))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    if ((libStEx_gv_sE_TrainingModeTipHealingFountainReticle != null)) {

        libNtve_gf_KillModel(libStEx_gv_sE_TrainingModeTipHealingFountainReticle);

        libStEx_gv_sE_TrainingModeTipHealingFountainReticle = null;

    }



    return true;

}



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

void libStEx_gt_SE_TrainingModeTipHealingFountainUsed_Init () {

    libStEx_gt_SE_TrainingModeTipHealingFountainUsed = TriggerCreate("libStEx_gt_SE_TrainingModeTipHealingFountainUsed_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipHealingFountainUsed, false);

    TriggerAddEventUnitAbility(libStEx_gt_SE_TrainingModeTipHealingFountainUsed, UnitRefFromVariable("libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit"), AbilityCommand("FountainDrink", 0), c_unitAbilStageExecute, false);

}



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

// Trigger: SE_TrainingModeTipHealingFountainDrinking

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

bool libStEx_gt_SE_TrainingModeTipHealingFountainDrinking_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_HealingFountain);

            libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_HealingFountain);

            return true;

        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipHealingFountainDrinking_Init () {

    libStEx_gt_SE_TrainingModeTipHealingFountainDrinking = TriggerCreate("libStEx_gt_SE_TrainingModeTipHealingFountainDrinking_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipHealingFountainDrinking, false);

    TriggerAddEventUnitAbility(libStEx_gt_SE_TrainingModeTipHealingFountainDrinking, UnitRefFromVariable("libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit"), AbilityCommand("FountainDrink", 0), c_unitAbilStageExecute, false);

}



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

// Trigger: SE_TrainingModeTipMercCamps

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

bool libStEx_gt_SE_TrainingModeTipMercCamps_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_towers;

    int lv_itCamp;



    // Automatic Variable Declarations

    int auto5C5FA041_ae;

    const int auto5C5FA041_ai = 1;



    // Variable Initialization

    lv_towers = UnitGroupEmpty();



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsInCombat(1) == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            auto5C5FA041_ae = libMapM_gv_jungleNumberOfCreepCamps;

            lv_itCamp = 1;

            for ( ; ( (auto5C5FA041_ai >= 0 && lv_itCamp <= auto5C5FA041_ae) || (auto5C5FA041_ai < 0 && lv_itCamp >= auto5C5FA041_ae) ) ; lv_itCamp += auto5C5FA041_ai ) {

                if ((libMapM_gv_jungleCreepCamps[lv_itCamp].lv_aIState == libMapM_ge_JungleCampStates_Idle) && (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampType != libMapM_ge_JungleCampTypes_DoubloonCamp) && (libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampType != libMapM_ge_JungleCampTypes_DoubloonSmallCamp) && (DistanceBetweenPoints(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampCaptainSpawnPoint, UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit)) < 12.0)) {

                    libCore_gf_CreateReticleEffectAndTextTagAtPoint(libCore_ge_ReticleType_BonusObjective, libCore_ge_ReticleSize_Large, null, libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampCaptainSpawnPoint);

                    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_MercCamps);

                    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_MercCamps);

                    VisRevealArea(libStEx_gv_sE_Player, RegionCircle(libMapM_gv_jungleCreepCamps[lv_itCamp].lv_mapDataCampCaptainSpawnPoint, 8.0), libStEx_gv_sE_TrainingModeTipDuration_C, false);

                    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                    libNtve_gf_KillModel(libNtve_gf_ActorLastCreated());

                    return true;

                }



            }

        }



        Wait(0.25, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipMercCamps_Init () {

    libStEx_gt_SE_TrainingModeTipMercCamps = TriggerCreate("libStEx_gt_SE_TrainingModeTipMercCamps_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipMercCamps, false);

}



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

// Trigger: SE_TrainingModeTipMount

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

bool libStEx_gt_SE_TrainingModeTipMount_Func (bool testConds, bool runActions) {

    // Variable Declarations

    point lv_originalLoc;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsInCombat(1) == false) && (libGame_gf_MountEnabled(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && ((UnitHasBehavior2(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, "Mounted") == false) || (UnitBehaviorEnabled(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, "Mounted") == false) || (UnitBehaviorCount(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit, "Mounted") == 0))) {

            if ((lv_originalLoc == null)) {

                lv_originalLoc = UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit);

            }

            else {

                if ((libStEx_gv_sE_TrainingModeTipDisplaying == false) && (DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), lv_originalLoc) > 25.0)) {

                    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Mount);

                    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Mount);

                    libStEx_gf_HighlightCommandButton(true, libStEx_ge_TutorialCommandButton_Mount);

                    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                    libStEx_gf_HighlightCommandButton(false, libStEx_ge_TutorialCommandButton_Mount);

                    Wait(120.0, c_timeGame);

                    lv_originalLoc = null;

                    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Mount) == true)) {

                        return true;

                    }



                }



            }

        }

        else {

            lv_originalLoc = null;

        }

        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipMount_Init () {

    libStEx_gt_SE_TrainingModeTipMount = TriggerCreate("libStEx_gt_SE_TrainingModeTipMount_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipMount, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipMount, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipMountUnhighlightButton

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

bool libStEx_gt_SE_TrainingModeTipMountUnhighlightButton_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    libStEx_gf_HighlightCommandButton(false, libStEx_ge_TutorialCommandButton_Mount);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipMountUnhighlightButton_Init () {

    libStEx_gt_SE_TrainingModeTipMountUnhighlightButton = TriggerCreate("libStEx_gt_SE_TrainingModeTipMountUnhighlightButton_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipMountUnhighlightButton, false);

    TriggerAddEventUnitAbility(libStEx_gt_SE_TrainingModeTipMountUnhighlightButton, UnitRefFromVariable("libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit"), AbilityCommand("Mount", 0), c_abilEffectStageCast, false);

}



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

// Trigger: SE_TrainingModeTipSpacebar

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

bool libStEx_gt_SE_TrainingModeTipSpacebar_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_watchTowers;

    unit lv_itWatchTower;

    bool lv_cameraOff;

    timer lv_cameraOffTimer;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_watchTowers = UnitGroupEmpty();

    lv_cameraOffTimer = TimerCreate();



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(30.0, c_timeGame);

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((lv_cameraOff == false)) {

            if ((DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), CameraGetTarget(libStEx_gv_sE_Player)) > 12.0)) {

                lv_cameraOff = true;

                TimerStart(lv_cameraOffTimer, 6.0, false, c_timeGame);

            }



        }

        else {

            if ((DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), CameraGetTarget(libStEx_gv_sE_Player)) < 6.0)) {

                lv_cameraOff = false;

                TimerPause(lv_cameraOffTimer, true);

            }



        }

        if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsBeingAttacked() == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false) && (lv_cameraOff == true) && (TimerGetRemaining(lv_cameraOffTimer) == 0.0)) {

            libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Spacebar);

            libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Spacebar);

            lv_cameraOff = false;

            Wait(120.0, c_timeGame);

        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipSpacebar_Init () {

    libStEx_gt_SE_TrainingModeTipSpacebar = TriggerCreate("libStEx_gt_SE_TrainingModeTipSpacebar_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipSpacebar, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipSpacebar, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipTalents

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

bool libStEx_gt_SE_TrainingModeTipTalents_Func (bool testConds, bool runActions) {

    // Variable Declarations

    fixed lv_availableTime;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    TriggerEnable(libStEx_gt_SE_TrainingModeTipTalentsPanelOpened, true);

    TriggerEnable(libStEx_gt_SE_TrainingModeTipTalentsPanelClosed, true);

    libStEx_gv_sE_TrainingModeTalentPanelOpened = false;

    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((libGame_gv_talents_ActiveChoiceTierForPlayer[1] > 0)) {

            if ((lv_availableTime > 0.0)) {

                if ((UnitIsAlive(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit) == true) && (libStEx_gf_PlayerIsBeingAttacked() == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false) && ((GameGetMissionTime() - lv_availableTime) > 15.0) && (libStEx_gv_sE_TrainingModeTalentPanelOpened == false)) {

                    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_Talents);

                    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_Talents);

                    libStEx_gf_SE_ShowHideTalentPortraitFlashingImage(true);

                    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                    Wait(120.0, c_timeGame);

                    lv_availableTime = 0.0;

                    if ((libStEx_gf_SE_TrainingModeTipIsOld(libStEx_ge_SE_TrainingModeTips_Talents) == true)) {

                        return true;

                    }



                }



            }

            else {

                lv_availableTime = GameGetMissionTime();

            }

        }

        else {

            lv_availableTime = 0.0;

        }

        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipTalents_Init () {

    libStEx_gt_SE_TrainingModeTipTalents = TriggerCreate("libStEx_gt_SE_TrainingModeTipTalents_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipTalents, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipTalents, libGame_gv_openTheGatesTimer);

}



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

// Trigger: SE_TrainingModeTipTalentsPanelOpened

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

bool libStEx_gt_SE_TrainingModeTipTalentsPanelOpened_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gf_SE_ShowHideTalentPortraitFlashingImage(false);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipTalentsPanelOpened_Init () {

    libStEx_gt_SE_TrainingModeTipTalentsPanelOpened = TriggerCreate("libStEx_gt_SE_TrainingModeTipTalentsPanelOpened_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipTalentsPanelOpened, false);

    TriggerAddEventHeroTalentTreeSelectionPanelShown(libStEx_gt_SE_TrainingModeTipTalentsPanelOpened, c_playerAny);

}



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

// Trigger: SE_TrainingModeTipTalentsPanelClosed

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

bool libStEx_gt_SE_TrainingModeTipTalentsPanelClosed_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gf_SE_ShowHideTalentPortraitFlashingImage(false);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipTalentsPanelClosed_Init () {

    libStEx_gt_SE_TrainingModeTipTalentsPanelClosed = TriggerCreate("libStEx_gt_SE_TrainingModeTipTalentsPanelClosed_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipTalentsPanelClosed, false);

    TriggerAddEventHeroTalentTreeSelectionPanelHidden(libStEx_gt_SE_TrainingModeTipTalentsPanelClosed, c_playerAny);

}



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

// Trigger: SE_TrainingModeTipWatchTower

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

bool libStEx_gt_SE_TrainingModeTipWatchTower_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unitgroup lv_watchTowers;

    unit lv_itWatchTower;



    // Automatic Variable Declarations

    unitgroup autoB26AF25F_g;

    int autoB26AF25F_u;



    // Variable Initialization

    lv_watchTowers = UnitGroupEmpty();



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    Wait(2.0, c_timeGame);

    lv_watchTowers = UnitGroup("XelNagaWatchTower", c_playerAny, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);

    if ((libNtve_gf_UnitGroupIsDead(lv_watchTowers) == true)) {

        return true;

    }



    while (true) {

        if ((libGame_gv_gameOver == true)) {

            return true;

        }



        if ((UnitIsAlive(libGame_gv_players[1].lv_heroUnit) == true) && (libStEx_gf_PlayerIsInCombat(1) == false) && (libStEx_gv_sE_TrainingModeTipDisplaying == false)) {

            autoB26AF25F_g = lv_watchTowers;

            autoB26AF25F_u = UnitGroupCount(autoB26AF25F_g, c_unitCountAll);

            for (;; autoB26AF25F_u -= 1) {

                lv_itWatchTower = UnitGroupUnitFromEnd(autoB26AF25F_g, autoB26AF25F_u);

                if (lv_itWatchTower == null) { break; }

                if ((DistanceBetweenPoints(UnitGetPosition(libGame_gv_players[libStEx_gv_sE_Player].lv_heroUnit), UnitGetPosition(lv_itWatchTower)) < 12.0)) {

                    libCore_gf_AttachReticleEffectAndTextTagOnUnit(libCore_ge_ReticleType_BonusObjective, libCore_ge_ReticleSize_Large, StringToText(""), lv_itWatchTower, "Ref_Center");

                    TextTagSetFogVisibility(TextTagLastCreated(), c_visTypeMask);

                    libStEx_gf_SE_TrainingModeTipDisplay(libStEx_ge_SE_TrainingModeTips_WatchTower);

                    libStEx_gf_SE_TrainingModeTipSetDisplayed(libStEx_ge_SE_TrainingModeTips_WatchTower);

                    Wait(libStEx_gv_sE_TrainingModeTipDuration_C, c_timeGame);

                    libNtve_gf_KillModel(libNtve_gf_ActorLastCreated());

                    TextTagDestroy(TextTagLastCreated());

                    return true;

                }



            }

        }



        Wait(0.5, c_timeGame);

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipWatchTower_Init () {

    libStEx_gt_SE_TrainingModeTipWatchTower = TriggerCreate("libStEx_gt_SE_TrainingModeTipWatchTower_Func");

    TriggerEnable(libStEx_gt_SE_TrainingModeTipWatchTower, false);

    TriggerAddEventTimer(libStEx_gt_SE_TrainingModeTipWatchTower, libGame_gv_jungleWatchTowerStartTimer);

}



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

// Trigger: SE_TrainingModeTipDebugEnable

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

bool libStEx_gt_SE_TrainingModeTipDebugEnable_Func (bool testConds, bool runActions) {

    // Variable Declarations

    int lv_itTip;



    // Automatic Variable Declarations

    int autoB8CCE432_ae;

    const int autoB8CCE432_ai = 1;



    // Variable Initialization



    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gf_SetTrainingMode(true);

    autoB8CCE432_ae = libStEx_gf_SE_TrainingModeTipCount();

    lv_itTip = 1;

    for ( ; ( (autoB8CCE432_ai >= 0 && lv_itTip <= autoB8CCE432_ae) || (autoB8CCE432_ai < 0 && lv_itTip >= autoB8CCE432_ae) ) ; lv_itTip += autoB8CCE432_ai ) {

        libStEx_gv_sE_TrainingModeTips[lv_itTip].lv_doneTimes = 0;

    }

    TriggerExecute(libStEx_gt_TrainingModeInit, true, false);

    TriggerExecute(libStEx_gt_SE_TrainingModeReferenceCardDisplay, false, false);

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipDebugEnable_Init () {

    libStEx_gt_SE_TrainingModeTipDebugEnable = TriggerCreate("libStEx_gt_SE_TrainingModeTipDebugEnable_Func");

    TriggerAddEventChatMessage(libStEx_gt_SE_TrainingModeTipDebugEnable, c_playerAny, "-SETE", true);

}



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

// Trigger: SE_TrainingModeTipDebugModeOn/Off

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

bool libStEx_gt_SE_TrainingModeTipDebugModeOnOff_Func (bool testConds, bool runActions) {

    // Variable Declarations

    string lv_bankKey;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_bankKey = "";



    // Conditions

    if (testConds) {

        if (!((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    if ((libStEx_gv_sE_TrainingMode == true)) {

        libStEx_gv_sE_TrainingMode = false;

        ConsoleCommand("variable skirmishpractice 0", true, true);

        UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringExternal("Param/Value/lib_StEx_9AB613F3"));

    }

    else {

        libStEx_gv_sE_TrainingMode = true;

        ConsoleCommand("variable skirmishpractice 1", true, true);

        UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringExternal("Param/Value/lib_StEx_983D18D2"));

    }

    return true;

}



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

void libStEx_gt_SE_TrainingModeTipDebugModeOnOff_Init () {

    libStEx_gt_SE_TrainingModeTipDebugModeOnOff = TriggerCreate("libStEx_gt_SE_TrainingModeTipDebugModeOnOff_Func");

    TriggerAddEventChatMessage(libStEx_gt_SE_TrainingModeTipDebugModeOnOff, c_playerAny, "TRAININGMODE", false);

    TriggerAddEventChatMessage(libStEx_gt_SE_TrainingModeTipDebugModeOnOff, c_playerAny, "-TM", false);

}



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

// Trigger: DebugEncounter

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

bool libStEx_gt_DebugEncounter_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gv_encounterActive = true;

    return true;

}



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

void libStEx_gt_DebugEncounter_Init () {

    libStEx_gt_DebugEncounter = TriggerCreate("libStEx_gt_DebugEncounter_Func");

    TriggerAddEventChatMessage(libStEx_gt_DebugEncounter, c_playerAny, "inencounter", true);

}



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

// Trigger: DEBUG - DPS Cheat

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

bool libStEx_gt_DEBUGDPSCheat_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libCore_gv_dEBUGDebuggingEnabled == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gv_encounterActive = true;

    TriggerExecute(libStEx_gt_ObjectiveTargetDummyCreate, true, false);

    return true;

}



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

void libStEx_gt_DEBUGDPSCheat_Init () {

    libStEx_gt_DEBUGDPSCheat = TriggerCreate("libStEx_gt_DEBUGDPSCheat_Func");

    TriggerAddEventChatMessage(libStEx_gt_DEBUGDPSCheat, c_playerAny, "-dpsobj", true);

}



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

// Trigger: Player Hits Retry During DPS Meter Objective

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

bool libStEx_gt_PlayerHitsRetryDuringDPSMeterObjective_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((libStEx_gv_objectives.lv_objectiveTargetDummy != c_invalidObjectiveId))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    UnitSetPosition(libGame_gv_players[1].lv_heroUnit, libStEx_gv_vallaRetryLocation, false);

    UnitSetFacing(libGame_gv_players[1].lv_heroUnit, 349.82, 0.0);

    UnitIssueOrder(libGame_gv_players[1].lv_heroUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);

    UnitSetPosition(libGame_gv_players[2].lv_heroUnit, libStEx_gv_utherRetryLocation, false);

    UnitSetFacing(libGame_gv_players[2].lv_heroUnit, 308.75, 0.0);

    UnitIssueOrder(libGame_gv_players[2].lv_heroUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);

    return true;

}



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

void libStEx_gt_PlayerHitsRetryDuringDPSMeterObjective_Init () {

    libStEx_gt_PlayerHitsRetryDuringDPSMeterObjective = TriggerCreate("libStEx_gt_PlayerHitsRetryDuringDPSMeterObjective_Func");

    libStEx_gf_TutorialPlayerHitsRetryButton(libStEx_gt_PlayerHitsRetryDuringDPSMeterObjective);

}



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

// Trigger: Objective Talent Create

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

bool libStEx_gt_ObjectiveTalentCreate_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_5B6142CE"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectivePickOneTalent = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveTalentCreate_Init () {

    libStEx_gt_ObjectiveTalentCreate = TriggerCreate("libStEx_gt_ObjectiveTalentCreate_Func");

}



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

// Trigger: Objective Talent Complete

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

bool libStEx_gt_ObjectiveTalentComplete_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);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectivePickOneTalent, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectivePickOneTalent);

    libStEx_gv_objectives.lv_objectivePickOneTalent = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveTalentComplete_Init () {

    libStEx_gt_ObjectiveTalentComplete = TriggerCreate("libStEx_gt_ObjectiveTalentComplete_Func");

}



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

// Trigger: Objective Challenge Ready Create

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

bool libStEx_gt_ObjectiveChallengeReadyCreate_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_8287F3F2"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectivePickRemainingTalentsAndReady = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveChallengeReadyCreate_Init () {

    libStEx_gt_ObjectiveChallengeReadyCreate = TriggerCreate("libStEx_gt_ObjectiveChallengeReadyCreate_Func");

}



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

// Trigger: Objective Challenge Ready Complete

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

bool libStEx_gt_ObjectiveChallengeReadyComplete_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    ObjectiveSetState(libStEx_gv_objectives.lv_objectivePickRemainingTalentsAndReady, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectivePickRemainingTalentsAndReady);

    libStEx_gv_objectives.lv_objectivePickRemainingTalentsAndReady = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveChallengeReadyComplete_Init () {

    libStEx_gt_ObjectiveChallengeReadyComplete = TriggerCreate("libStEx_gt_ObjectiveChallengeReadyComplete_Func");

}



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

// Trigger: Objective Target Dummy Create

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

bool libStEx_gt_ObjectiveTargetDummyCreate_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_F74901E6"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveTargetDummy = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_5555D85A"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveTargetDummyCreate_Init () {

    libStEx_gt_ObjectiveTargetDummyCreate = TriggerCreate("libStEx_gt_ObjectiveTargetDummyCreate_Func");

}



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

// Trigger: Objective Target Dummy Complete

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

bool libStEx_gt_ObjectiveTargetDummyComplete_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveTargetDummyCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveTargetDummy, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveTargetDummy);

    libStEx_gv_objectives.lv_objectiveTargetDummy = c_invalidObjectiveId;

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive);

    libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveTargetDummyComplete_Init () {

    libStEx_gt_ObjectiveTargetDummyComplete = TriggerCreate("libStEx_gt_ObjectiveTargetDummyComplete_Func");

}



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

// Trigger: Objective Target Dummy Fail

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

bool libStEx_gt_ObjectiveTargetDummyFail_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveTargetDummyCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveTargetDummy, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive, c_objectiveStateFailed);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveTargetDummy);

    libStEx_gv_objectives.lv_objectiveTargetDummy = c_invalidObjectiveId;

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive);

    libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveTargetDummyFail_Init () {

    libStEx_gt_ObjectiveTargetDummyFail = TriggerCreate("libStEx_gt_ObjectiveTargetDummyFail_Func");

}



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

// Trigger: Objective Grave Golem Fight Create

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

bool libStEx_gt_ObjectiveGraveGolemFightCreate_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_9BB8C802"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveGraveGolemFight = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_934B8C2E"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveGraveGolemFightCreate_Init () {

    libStEx_gt_ObjectiveGraveGolemFightCreate = TriggerCreate("libStEx_gt_ObjectiveGraveGolemFightCreate_Func");

}



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

// Trigger: Objective Grave Golem Fight Complete

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

bool libStEx_gt_ObjectiveGraveGolemFightComplete_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveGraveGolemFightCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveGraveGolemFight, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveGraveGolemFight);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive);

    libStEx_gv_objectives.lv_objectiveGraveGolemFight = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveGraveGolemFightComplete_Init () {

    libStEx_gt_ObjectiveGraveGolemFightComplete = TriggerCreate("libStEx_gt_ObjectiveGraveGolemFightComplete_Func");

}



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

// Trigger: Objective Grave Golem Fight Fail

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

bool libStEx_gt_ObjectiveGraveGolemFightFail_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveGraveGolemFightCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveGraveGolemFight, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive, c_objectiveStateFailed);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveGraveGolemFight);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive);

    libStEx_gv_objectives.lv_objectiveGraveGolemFight = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveGraveGolemFightUtherMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveGraveGolemFightFail_Init () {

    libStEx_gt_ObjectiveGraveGolemFightFail = TriggerCreate("libStEx_gt_ObjectiveGraveGolemFightFail_Func");

}



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

// Trigger: Objective Mosh Pit Fight Create

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

bool libStEx_gt_ObjectiveMoshPitFightCreate_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_3D982619"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveMoshPitFight = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_2115A74F"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveMoshPitFightCreate_Init () {

    libStEx_gt_ObjectiveMoshPitFightCreate = TriggerCreate("libStEx_gt_ObjectiveMoshPitFightCreate_Func");

}



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

// Trigger: Objective Mosh Pit Fight Complete

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

bool libStEx_gt_ObjectiveMoshPitFightComplete_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveMoshPitFightCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveMoshPitFight, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive, c_objectiveStateCompleted);

    Wait(3.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveMoshPitFight);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive);

    libStEx_gv_objectives.lv_objectiveMoshPitFight = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveMoshPitFightComplete_Init () {

    libStEx_gt_ObjectiveMoshPitFightComplete = TriggerCreate("libStEx_gt_ObjectiveMoshPitFightComplete_Func");

}



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

// Trigger: Objective Mosh Pit Fight Fail

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

bool libStEx_gt_ObjectiveMoshPitFightFail_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveMoshPitFightCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveMoshPitFight, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive, c_objectiveStateFailed);

    Wait(3.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveMoshPitFight);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive);

    libStEx_gv_objectives.lv_objectiveMoshPitFight = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveMoshPitTeamMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveMoshPitFightFail_Init () {

    libStEx_gt_ObjectiveMoshPitFightFail = TriggerCreate("libStEx_gt_ObjectiveMoshPitFightFail_Func");

}



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

// Trigger: Objective Defend the Keep Create

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

bool libStEx_gt_ObjectiveBossFightCreate2_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);

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

    TextExpressionSetToken("Param/Expression/lib_StEx_96525700", "A", StringExternal("Param/Value/lib_StEx_F497BCEA"));

    TextExpressionSetToken("Param/Expression/lib_StEx_96525700", "B", IntToText(libStEx_gv__1D_WaveTotal_C));

    ObjectiveCreateForPlayers(TextExpressionAssemble("Param/Expression/lib_StEx_96525700"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveDefendKeep = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_B1611DE6"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveBossFightCreate2_Init () {

    libStEx_gt_ObjectiveBossFightCreate2 = TriggerCreate("libStEx_gt_ObjectiveBossFightCreate2_Func");

}



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

// Trigger: Objective Defend the Keep Update

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

bool libStEx_gt_ObjectiveBossFightComplete12_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate2, true, false);

    TextExpressionSetToken("Param/Expression/lib_StEx_F0599696", "A", IntToText((libStEx_gv__1D_WaveCurrent - 1)));

    TextExpressionSetToken("Param/Expression/lib_StEx_F0599696", "B", IntToText(libStEx_gv__1D_WaveTotal_C));

    ObjectiveSetName(libStEx_gv_objectives.lv_objectiveDefendKeep, TextExpressionAssemble("Param/Expression/lib_StEx_F0599696"));

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete12_Init () {

    libStEx_gt_ObjectiveBossFightComplete12 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete12_Func");

}



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

// Trigger: Objective Defend the Keep Complete

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

bool libStEx_gt_ObjectiveBossFightComplete3_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate2, true, false);

    TextExpressionSetToken("Param/Expression/lib_StEx_97CE0701", "A", IntToText(libStEx_gv__1D_WaveTotal_C));

    TextExpressionSetToken("Param/Expression/lib_StEx_97CE0701", "B", IntToText(libStEx_gv__1D_WaveTotal_C));

    ObjectiveSetName(libStEx_gv_objectives.lv_objectiveDefendKeep, TextExpressionAssemble("Param/Expression/lib_StEx_97CE0701"));

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDefendKeep, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDefendKeep);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive);

    libStEx_gv_objectives.lv_objectiveDefendKeep = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete3_Init () {

    libStEx_gt_ObjectiveBossFightComplete3 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete3_Func");

}



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

// Trigger: Objective Defend the Keep Fail

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

bool libStEx_gt_ObjectiveBossFightComplete4_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate2, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDefendKeep, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive, c_objectiveStateFailed);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDefendKeep);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive);

    libStEx_gv_objectives.lv_objectiveDefendKeep = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDefendKeepVallaMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete4_Init () {

    libStEx_gt_ObjectiveBossFightComplete4 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete4_Func");

}



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

// Trigger: Objective Roaming Create

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

bool libStEx_gt_ObjectiveRoamingCreate_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_A4E6E86C"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveRoamHitTenFirst = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_F954A660"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveRoamingCreate_Init () {

    libStEx_gt_ObjectiveRoamingCreate = TriggerCreate("libStEx_gt_ObjectiveRoamingCreate_Func");

}



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

// Trigger: Objective Roaming Complete

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

bool libStEx_gt_ObjectiveRoamingComplete_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveRoamingCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveRoamHitTenFirst, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveRoamHitTenFirst);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive);

    libStEx_gv_objectives.lv_objectiveRoamHitTenFirst = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveRoamingComplete_Init () {

    libStEx_gt_ObjectiveRoamingComplete = TriggerCreate("libStEx_gt_ObjectiveRoamingComplete_Func");

}



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

// Trigger: Objective Roaming Fail

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

bool libStEx_gt_ObjectiveRoamingFail_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveRoamingCreate, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveRoamHitTenFirst, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive, c_objectiveStateFailed);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveRoamHitTenFirst);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive);

    libStEx_gv_objectives.lv_objectiveRoamHitTenFirst = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveRoamZeratulMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveRoamingFail_Init () {

    libStEx_gt_ObjectiveRoamingFail = TriggerCreate("libStEx_gt_ObjectiveRoamingFail_Func");

}



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

// Trigger: Objective Escape Help Valla Create

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

bool libStEx_gt_ObjectiveBossFightCreate3_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_FCEF18C3"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveEscapeKillJaina = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_EB15632E"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveEscapeHelpValla = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_D21A9342"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveBossFightCreate3_Init () {

    libStEx_gt_ObjectiveBossFightCreate3 = TriggerCreate("libStEx_gt_ObjectiveBossFightCreate3_Func");

}



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

// Trigger: Objective Escape Help Valla Complete

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

bool libStEx_gt_ObjectiveBossFightComplete5_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate3, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveEscapeHelpValla, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive, c_objectiveStateCompleted);

    if ((ObjectiveGetState(libStEx_gv_objectives.lv_objectiveEscapeKillJaina) != c_objectiveStateCompleted)) {

        ObjectiveSetState(libStEx_gv_objectives.lv_objectiveEscapeKillJaina, c_objectiveStateFailed);

    }



    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveEscapeHelpValla);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveEscapeKillJaina);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive);

    libStEx_gv_objectives.lv_objectiveEscapeHelpValla = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveEscapeKillJaina = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete5_Init () {

    libStEx_gt_ObjectiveBossFightComplete5 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete5_Func");

}



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

// Trigger: Objective Escape Kill Jaina Complete

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

bool libStEx_gt_ObjectiveBossFightComplete11_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate3, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveEscapeKillJaina, c_objectiveStateCompleted);

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete11_Init () {

    libStEx_gt_ObjectiveBossFightComplete11 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete11_Func");

}



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

// Trigger: Objective Escape Help Valla Fail

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

bool libStEx_gt_ObjectiveBossFightComplete6_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate3, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveEscapeHelpValla, c_objectiveStateFailed);

    if ((ObjectiveGetState(libStEx_gv_objectives.lv_objectiveEscapeKillJaina) != c_objectiveStateCompleted)) {

        ObjectiveSetState(libStEx_gv_objectives.lv_objectiveEscapeKillJaina, c_objectiveStateFailed);

    }



    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive, c_objectiveStateFailed);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveEscapeHelpValla);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveEscapeKillJaina);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive);

    libStEx_gv_objectives.lv_objectiveEscapeHelpValla = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveEscapeKillJaina = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveEscapeAbathurMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete6_Init () {

    libStEx_gt_ObjectiveBossFightComplete6 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete6_Func");

}



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

// Trigger: Objective Soak 13 First Create

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

bool libStEx_gt_ObjectiveBossFightCreate5_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_233D9013"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_4E800969"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveBossFightCreate5_Init () {

    libStEx_gt_ObjectiveBossFightCreate5 = TriggerCreate("libStEx_gt_ObjectiveBossFightCreate5_Func");

}



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

// Trigger: Objective Soak 13 First Complete

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

bool libStEx_gt_ObjectiveBossFightComplete9_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate5, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive);

    libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete9_Init () {

    libStEx_gt_ObjectiveBossFightComplete9 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete9_Func");

}



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

// Trigger: Objective Soak 13 First Fail

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

bool libStEx_gt_ObjectiveBossFightComplete10_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate5, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive, c_objectiveStateFailed);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive);

    libStEx_gv_objectives.lv_objectiveSoakHitThirteenFirst = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveSoakAbathurMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete10_Init () {

    libStEx_gt_ObjectiveBossFightComplete10 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete10_Func");

}



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

// Trigger: Objective Team Fight Create

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

bool libStEx_gt_ObjectiveBossFightCreate4_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);

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

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_0213A6F1"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveDragonKnightCapture = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_6ED354A6"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive = ObjectiveLastCreated();

    ObjectiveCreateForPlayers(StringExternal("Param/Value/lib_StEx_E439ACF7"), StringToText(""), c_objectiveStateActive, true, PlayerGroupSingle(libStEx_gv_pLAYER_01_USER));

    libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive = ObjectiveLastCreated();

    Wait(2.0, c_timeReal);

    return true;

}



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

void libStEx_gt_ObjectiveBossFightCreate4_Init () {

    libStEx_gt_ObjectiveBossFightCreate4 = TriggerCreate("libStEx_gt_ObjectiveBossFightCreate4_Func");

}



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

// Trigger: Objective Team Fight Complete

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

bool libStEx_gt_ObjectiveBossFightComplete7_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate4, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDragonKnightCapture, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive, c_objectiveStateCompleted);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive, c_objectiveStateCompleted);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDragonKnightCapture);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive);

    libStEx_gv_objectives.lv_objectiveDragonKnightCapture = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete7_Init () {

    libStEx_gt_ObjectiveBossFightComplete7 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete7_Func");

}



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

// Trigger: Objective Team Fight Fail

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

bool libStEx_gt_ObjectiveBossFightComplete8_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    TriggerExecute(libStEx_gt_ObjectiveBossFightCreate4, true, false);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDragonKnightCapture, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive, c_objectiveStateFailed);

    ObjectiveSetState(libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive, c_objectiveStateFailed);

    Wait(2.0, c_timeReal);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDragonKnightCapture);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive);

    ObjectiveDestroy(libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive);

    libStEx_gv_objectives.lv_objectiveDragonKnightCapture = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDragonKnightAllyMustSurvive = c_invalidObjectiveId;

    libStEx_gv_objectives.lv_objectiveDragonKnightAbathurMustSurvive = c_invalidObjectiveId;

    return true;

}



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

void libStEx_gt_ObjectiveBossFightComplete8_Init () {

    libStEx_gt_ObjectiveBossFightComplete8 = TriggerCreate("libStEx_gt_ObjectiveBossFightComplete8_Func");

}



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

// Trigger: Player Hits Ready

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

bool libStEx_gt_PlayerHitsReady_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((EventDialogControl() == libStEx_gv_tutorialVeteranPanel.lv_ReadyButton))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gf_SendEventTutorialPlayerHitsReadyButton();

    return true;

}



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

void libStEx_gt_PlayerHitsReady_Init () {

    libStEx_gt_PlayerHitsReady = TriggerCreate("libStEx_gt_PlayerHitsReady_Func");

    TriggerAddEventDialogControl(libStEx_gt_PlayerHitsReady, c_playerAny, c_invalidDialogControlId, c_triggerControlEventTypeClick);

}



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

// Trigger: Player Hits Respec

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

bool libStEx_gt_PlayerHitsRespec_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((EventDialogControl() == libStEx_gv_tutorialVeteranPanel.lv_RespecButton))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    SetTalentTreeSelectionPanelAutoShow(true);

    libStEx_gf_SendEventTutorialPlayerHitsRespecButton();

    libStEx_gf_TutorialVeteranFlashRespecButton(false);

    libStEx_gf_RespecPlayer(EventPlayer(), true);

    return true;

}



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

void libStEx_gt_PlayerHitsRespec_Init () {

    libStEx_gt_PlayerHitsRespec = TriggerCreate("libStEx_gt_PlayerHitsRespec_Func");

    TriggerAddEventDialogControl(libStEx_gt_PlayerHitsRespec, c_playerAny, c_invalidDialogControlId, c_triggerControlEventTypeClick);

}



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

// Trigger: Player Hits Retry

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

bool libStEx_gt_PlayerHitsRetry_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Conditions

    if (testConds) {

        if (!((EventDialogControl() == libStEx_gv_tutorialVeteranPanel.lv_RetryButton))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    libStEx_gf_ResetHeroUnitforPlayer(1);

    libStEx_gf_ResetHeroUnitforPlayer(2);

    libStEx_gf_TutorialVeteranShowHideRetryButton(false);

    libStEx_gf_SendEventTutorialPlayerHitsRetryButton();

    return true;

}



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

void libStEx_gt_PlayerHitsRetry_Init () {

    libStEx_gt_PlayerHitsRetry = TriggerCreate("libStEx_gt_PlayerHitsRetry_Func");

    TriggerAddEventDialogControl(libStEx_gt_PlayerHitsRetry, c_playerAny, c_invalidDialogControlId, c_triggerControlEventTypeClick);

}



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

// Trigger: Tutorial Veteran Panel Initialize

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

bool libStEx_gt_TutorialVeteranPanelInitialize_Func (bool testConds, bool runActions) {

    int init_i;



    // Variable Declarations

    int lv_parent;

    int[6] lv_panels;

    int lv_currentPanelLayer;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_parent = c_invalidDialogControlId;

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

        lv_panels[init_i] = c_invalidDialogControlId;

    }



    // Actions

    if (!runActions) {

        return true;

    }



    DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer");

    lv_parent = DialogControlLastCreated();

    DialogControlCreateInPanelFromTemplate(lv_parent, c_triggerControlTypePanel, "TutorialUI/TutorialVeteranUITemplate");

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

    lv_currentPanelLayer += 1;

    lv_panels[lv_currentPanelLayer] = DialogControlLastCreated();

    libStEx_gv_tutorialVeteranPanel.lv_mainPanel = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeButton, "RespecTalentsButton");

    libStEx_gv_tutorialVeteranPanel.lv_RespecButton = DialogControlLastCreated();

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

    libNtve_gf_SetDialogItemStyle(DialogControlLastCreated(), "StandardGlueButtonSmallLeft", PlayerGroupAll());

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_2FCA9E13"), PlayerGroupAll());

    DialogControlHookup(libStEx_gv_tutorialVeteranPanel.lv_RespecButton, c_triggerControlTypeImage, "FlashImage");

    libStEx_gv_tutorialVeteranPanel.lv_RespecButton2 = DialogControlLastCreated();

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

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeButton, "StartButton");

    libStEx_gv_tutorialVeteranPanel.lv_ReadyButton = DialogControlLastCreated();

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

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_EC1A42F4"), PlayerGroupAll());

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeButton, "RestartButton");

    libStEx_gv_tutorialVeteranPanel.lv_RetryButton = DialogControlLastCreated();

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    libNtve_gf_SetDialogItemStyle(DialogControlLastCreated(), "StandardGlueButtonSmallLeft", PlayerGroupAll());

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_00324BFC"), PlayerGroupAll());

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeImage, "ChallengeComplete");

    libStEx_gv_tutorialVeteranPanel.lv_challengeCompleteImage = DialogControlLastCreated();

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypePanel, "ChallengeTitleFrame");

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    libStEx_gv_tutorialVeteranPanel.lv_challengeTitleFrame = DialogControlLastCreated();

    lv_currentPanelLayer += 1;

    lv_panels[lv_currentPanelLayer] = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeLabel, "ChallengeDescriptionLabel");

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    libStEx_gv_tutorialVeteranPanel.lv_challengeDescriptionLabel = DialogControlLastCreated();

    lv_currentPanelLayer -= 1;

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypePanel, "CountdownFrame");

    libStEx_gv_tutorialVeteranPanel.lv_countdownFrame = DialogControlLastCreated();

    lv_currentPanelLayer += 1;

    lv_panels[lv_currentPanelLayer] = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeImage, "Countdown3Image");

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    libStEx_gv_tutorialVeteranPanel.lv_countdown3Image = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeImage, "Countdown2Image");

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    libStEx_gv_tutorialVeteranPanel.lv_countdown2Image = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeImage, "Countdown1Image");

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    libStEx_gv_tutorialVeteranPanel.lv_countdown1Image = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeLabel, "CountdownGoLabel");

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    libStEx_gv_tutorialVeteranPanel.lv_countdownGoLabel = DialogControlLastCreated();

    lv_currentPanelLayer -= 1;

    DialogControlCreateInPanelFromTemplate(lv_parent, c_triggerControlTypePanel, "TutorialUI/DummyUITemplate");

    DialogControlSetPositionRelative(DialogControlLastCreated(), PlayerGroupAll(), c_anchorBottomRight, lv_parent, c_anchorBottomRight, -15, -350);

    DialogControlSetVisible(DialogControlLastCreated(), PlayerGroupAll(), false);

    lv_currentPanelLayer += 1;

    lv_panels[lv_currentPanelLayer] = DialogControlLastCreated();

    libStEx_gv_tutorialVeteranPanel.lv_dummyPanel = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeLabel, "TitleLabel");

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_7FF599CA"), PlayerGroupAll());

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeLabel, "DamageTitle");

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_5519F823"), PlayerGroupAll());

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeLabel, "DamageLabel");

    libStEx_gv_tutorialVeteranPanel.lv_dummyDamageLabel = DialogControlLastCreated();

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeLabel, "DPSTitle");

    libNtve_gf_SetDialogItemText(DialogControlLastCreated(), StringExternal("Param/Value/lib_StEx_F0E86AD4"), PlayerGroupAll());

    DialogControlHookup(lv_panels[lv_currentPanelLayer], c_triggerControlTypeLabel, "DPSLabel");

    libStEx_gv_tutorialVeteranPanel.lv_dummyDPSLabel = DialogControlLastCreated();

    lv_currentPanelLayer -= 1;

    return true;

}



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

void libStEx_gt_TutorialVeteranPanelInitialize_Init () {

    libStEx_gt_TutorialVeteranPanelInitialize = TriggerCreate("libStEx_gt_TutorialVeteranPanelInitialize_Func");

}



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

// Trigger: TutorialVeteran Flash Respec Button Internal

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

bool libStEx_gt_TutorialVeteranFlashRespecButtonInternal_Func (bool testConds, bool runActions) {

    // Variable Declarations

    fixed lv_fadeIn_C;

    fixed lv_fadeOut_C;



    // Automatic Variable Declarations

    // Variable Initialization

    lv_fadeIn_C = 0.5;

    lv_fadeOut_C = 0.4;



    // Conditions

    if (testConds) {

        if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {

            return false;

        }

    }



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    DialogControlSendAnimationEvent(libStEx_gv_tutorialVeteranPanel.lv_RespecButton, PlayerGroupAll(), "FlashRespecStart");

    while (!((libStEx_gv_tutorialVeteranPanelFlashing == false))) {

        Wait(0.125, c_timeGame);

    }

    DialogControlSendAnimationEvent(libStEx_gv_tutorialVeteranPanel.lv_RespecButton, PlayerGroupAll(), "FlashRespecStop");

    TriggerEnable(TriggerGetCurrent(), true);

    return true;

}



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

void libStEx_gt_TutorialVeteranFlashRespecButtonInternal_Init () {

    libStEx_gt_TutorialVeteranFlashRespecButtonInternal = TriggerCreate("libStEx_gt_TutorialVeteranFlashRespecButtonInternal_Func");

}



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

// Trigger: Target Dummy Initialize

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

bool libStEx_gt_TargetDummyInitialize_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);

    return true;

}



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

void libStEx_gt_TargetDummyInitialize_Init () {

    libStEx_gt_TargetDummyInitialize = TriggerCreate("libStEx_gt_TargetDummyInitialize_Func");

}



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

// Trigger: Target Dummy Takes Damage

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

bool libStEx_gt_TargetDummyTakesDamage_Func (bool testConds, bool runActions) {

    // Variable Declarations

    fixed lv_damage;



    // Automatic Variable Declarations

    const int auto1BF86ED6_n = 40;

    int auto1BF86ED6_i;



    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_damage = (UnitGetPropertyFixed(libStEx_gv_targetDummyUnit, c_unitPropLifeMax, c_unitPropCurrent) - UnitGetPropertyFixed(libStEx_gv_targetDummyUnit, c_unitPropLife, c_unitPropCurrent));

    if ((lv_damage > libStEx_gv_targetDummyDamage)) {

        libStEx_gv_targetDummyDamage = lv_damage;

        if ((libStEx_gv_targetDummyDamageTimerStarted == false)) {

            TimerStart(libStEx_gv_targetDummyDamageTimer, c_timerDurationInfinite, false, c_timeGame);

            libStEx_gv_targetDummyDamageTimerStarted = true;

        }



        TimerStart(libStEx_gv_targetDummyPeaceTimer, c_timerDurationInfinite, false, c_timeGame);

        libStEx_gv_targetDummyPeaceTimerStarted = true;

        libNtve_gf_SetDialogItemText(libStEx_gv_tutorialVeteranPanel.lv_dummyDamageLabel, FormatNumber(FixedToInt(lv_damage)), PlayerGroupAll());

        if ((TimerGetElapsed(libStEx_gv_targetDummyDamageTimer) == 0)) {

            libNtve_gf_SetDialogItemText(libStEx_gv_tutorialVeteranPanel.lv_dummyDPSLabel, FormatNumber(FixedToInt(lv_damage)), PlayerGroupAll());

        }

        else {

            libNtve_gf_SetDialogItemText(libStEx_gv_tutorialVeteranPanel.lv_dummyDPSLabel, FormatNumber(FixedToInt((lv_damage / TimerGetElapsed(libStEx_gv_targetDummyDamageTimer)))), PlayerGroupAll());

        }

        libStEx_gf_TutorialVeteranShowHideDummyPanel(true);

    }

    else {

        if ((libStEx_gv_targetDummyPeaceTimerStarted == true)) {

            if ((TimerGetElapsed(libStEx_gv_targetDummyPeaceTimer) >= 120.0)) {

                libNtve_gf_StopTimer(libStEx_gv_targetDummyPeaceTimer);

                libStEx_gv_targetDummyPeaceTimerStarted = false;

                UnitSetPropertyFixed(libStEx_gv_targetDummyUnit, c_unitPropLifePercent, 100.0);

                TextTagCreate(StringExternal("Param/Value/lib_StEx_D432837B"), 24, PointWithOffset(UnitGetPosition(libStEx_gv_targetDummyUnit), 0.0, 1.0), 1.0, true, false, PlayerGroupAll());

                TextTagSetTime(TextTagLastCreated(), c_textTagTimeDuration, 2.0);

                TextTagSetVelocity(TextTagLastCreated(), 2.0, 90.0);

                libStEx_gv_targetDummyDamage = 0.0;

                if ((libStEx_gv_targetDummyDamageTimerStarted == true)) {

                    TimerPause(libStEx_gv_targetDummyDamageTimer, true);

                    libStEx_gv_targetDummyDamageTimerStarted = false;

                }



                for (auto1BF86ED6_i = 1; auto1BF86ED6_i <= auto1BF86ED6_n; auto1BF86ED6_i += 1) {

                    if ((libStEx_gv_targetDummyDamageTimerStarted == true)) {

                        return true;

                    }



                    Wait(0.125, c_timeGame);

                }

                libStEx_gf_TutorialVeteranShowHideDummyPanel(false);

            }



        }



    }

    return true;

}



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

void libStEx_gt_TargetDummyTakesDamage_Init () {

    libStEx_gt_TargetDummyTakesDamage = TriggerCreate("libStEx_gt_TargetDummyTakesDamage_Func");

    TriggerEnable(libStEx_gt_TargetDummyTakesDamage, false);

    TriggerAddEventTimePeriodic(libStEx_gt_TargetDummyTakesDamage, 0.25, c_timeGame);

}



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

// Trigger: Target Dummy Dies

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

bool libStEx_gt_TargetDummyDies_Func (bool testConds, bool runActions) {

    // Variable Declarations

    actor lv_eggactor;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    libNtve_gf_CreateModelAtPoint("MurkyRespawnEgg", libStEx_gv_targetDummyLocation);

    lv_eggactor = libNtve_gf_ActorLastCreated();

    ActorSend(lv_eggactor, "AnimBracketStart Spell IGNORE Spell,A Spell,A,End 0 -1.000000 AsDuration");

    ActorSend(lv_eggactor, "Create Murky_EggRespawn_Start");

    ActorSend(lv_eggactor, "ModelSwap MurkyRespawnEggEaster");

    Wait(5.0, c_timeGame);

    libNtve_gf_KillModel(lv_eggactor);

    libNtve_gf_CreateUnitsWithDefaultFacing(1, "TargetHeroDummy", 0, libGame_gf_ComputerPlayerInTeam(libGame_gv_teamChaosIndex_C), libStEx_gv_targetDummyLocation, null);

    libStEx_gv_targetDummyUnit = UnitLastCreated();

    libStEx_gf_TutorialVeteranShowHideDummyPanel(false);

    TriggerEnable(TriggerGetCurrent(), true);

    return true;

}



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

void libStEx_gt_TargetDummyDies_Init () {

    libStEx_gt_TargetDummyDies = TriggerCreate("libStEx_gt_TargetDummyDies_Func");

    TriggerAddEventUnitDied(libStEx_gt_TargetDummyDies, UnitRefFromVariable("libStEx_gv_targetDummyUnit"));

}



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

// Trigger: Query Dialog Choice Made

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

bool libStEx_gt_QueryDialogChoiceMade_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    // Actions

    if (!runActions) {

        return true;

    }



    if ((EventCustomDialogResult() == libNtve_ge_CustomDialogResult_c_customDialogResultYes)) {

        libStEx_gv_queryDialogResult = libStEx_ge_QueryDialogResult_Yes;

    }

    else {

        libStEx_gv_queryDialogResult = libStEx_ge_QueryDialogResult_No;

    }

    return true;

}



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

void libStEx_gt_QueryDialogChoiceMade_Init () {

    libStEx_gt_QueryDialogChoiceMade = TriggerCreate("libStEx_gt_QueryDialogChoiceMade_Func");

    TriggerAddEventCustomDialogDismissed(libStEx_gt_QueryDialogChoiceMade, c_playerAny, libNtve_ge_CustomDialogResult_c_customDialogResultAny);

}



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

// Trigger: Tutorial Hero Selected

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

bool libStEx_gt_TutorialHeroSelected_Func (bool testConds, bool runActions) {

    // Automatic Variable Declarations

    int autoB37FBF04_val;



    // Actions

    if (!runActions) {

        return true;

    }



    TriggerEnable(TriggerGetCurrent(), false);

    autoB37FBF04_val = EventDialogControl();

    if (autoB37FBF04_val == libStEx_gv_tutorialHeroBtnJaina) {

        libStEx_gv_tutorialHero = "Jaina";

    }

    else if (autoB37FBF04_val == libStEx_gv_tutorialHeroBtnMuradin) {

        libStEx_gv_tutorialHero = "Muradin";

    }

    else if (autoB37FBF04_val == libStEx_gv_tutorialHeroBtnTyrande) {

        libStEx_gv_tutorialHero = "Tyrande";

    }

    else {

    }

    return true;

}



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

void libStEx_gt_TutorialHeroSelected_Init () {

    libStEx_gt_TutorialHeroSelected = TriggerCreate("libStEx_gt_TutorialHeroSelected_Func");

    TriggerEnable(libStEx_gt_TutorialHeroSelected, false);

    TriggerAddEventDialogControl(libStEx_gt_TutorialHeroSelected, c_playerAny, c_invalidDialogControlId, c_triggerControlEventTypeClick);

}



void libStEx_InitTriggers () {

    libStEx_gt_IncludeStartingExperience_Init();

    libStEx_gt_SE_VOPausedMessageClosed_Init();

    libStEx_gt_SEMMHideHeroes_Init();

    libStEx_gt_TrainingModeInit_Init();

    libStEx_gt_TrainingModeBankInit_Init();

    libStEx_gt_SE_TrainingModeTalentsReady_Init();

    libStEx_gt_SE_TrainingModeTalentsSuggestToOpenPanelQ_Init();

    libStEx_gt_SE_TrainingModeTalentsPanelOpened_Init();

    libStEx_gt_SE_TrainingModeTalentsPanelFlashTalents_Init();

    libStEx_gt_SE_TrainingModeTalentsPicked_Init();

    libStEx_gt_SE_TrainingModeTalentsPickedTransmissionQ_Init();

    libStEx_gt_SE_TrainingModeTalentStart_Init();

    libStEx_gt_SE_TrainingModeReferenceCardDisplay_Init();

    libStEx_gt_SE_TrainingModeTipInitData_Init();

    libStEx_gt_SE_TrainingModeTipAbilities_Init();

    libStEx_gt_SE_TrainingModeTipAbilitiesQWERUsed_Init();

    libStEx_gt_SE_TrainingModeTipAmmunition1_Init();

    libStEx_gt_SE_TrainingModeTipBushes_Init();

    libStEx_gt_SE_TrainingModeTipCore_Init();

    libStEx_gt_SE_TrainingModeTipDeath1_Init();

    libStEx_gt_SE_TrainingModeTipDeath2_Init();

    libStEx_gt_SE_TrainingModeTipExperience_Init();

    libStEx_gt_SE_TrainingModeTipForts_Init();

    libStEx_gt_SE_TrainingModeTipGates_Init();

    libStEx_gt_SE_TrainingModeTipHearthstoneHealingFountainMana_Init();

    libStEx_gt_SE_TrainingModeTipHearthstoneTeachingExpires_Init();

    libStEx_gt_SE_TrainingModeTipManaTeachingExpires_Init();

    libStEx_gt_SE_TrainingModeTipHearthstoneUnhighlightButton_Init();

    libStEx_gt_SE_TrainingModeTipHealingFountainUsed_Init();

    libStEx_gt_SE_TrainingModeTipHealingFountainDrinking_Init();

    libStEx_gt_SE_TrainingModeTipMercCamps_Init();

    libStEx_gt_SE_TrainingModeTipMount_Init();

    libStEx_gt_SE_TrainingModeTipMountUnhighlightButton_Init();

    libStEx_gt_SE_TrainingModeTipSpacebar_Init();

    libStEx_gt_SE_TrainingModeTipTalents_Init();

    libStEx_gt_SE_TrainingModeTipTalentsPanelOpened_Init();

    libStEx_gt_SE_TrainingModeTipTalentsPanelClosed_Init();

    libStEx_gt_SE_TrainingModeTipWatchTower_Init();

    libStEx_gt_SE_TrainingModeTipDebugEnable_Init();

    libStEx_gt_SE_TrainingModeTipDebugModeOnOff_Init();

    libStEx_gt_DebugEncounter_Init();

    libStEx_gt_DEBUGDPSCheat_Init();

    libStEx_gt_PlayerHitsRetryDuringDPSMeterObjective_Init();

    libStEx_gt_ObjectiveTalentCreate_Init();

    libStEx_gt_ObjectiveTalentComplete_Init();

    libStEx_gt_ObjectiveChallengeReadyCreate_Init();

    libStEx_gt_ObjectiveChallengeReadyComplete_Init();

    libStEx_gt_ObjectiveTargetDummyCreate_Init();

    libStEx_gt_ObjectiveTargetDummyComplete_Init();

    libStEx_gt_ObjectiveTargetDummyFail_Init();

    libStEx_gt_ObjectiveGraveGolemFightCreate_Init();

    libStEx_gt_ObjectiveGraveGolemFightComplete_Init();

    libStEx_gt_ObjectiveGraveGolemFightFail_Init();

    libStEx_gt_ObjectiveMoshPitFightCreate_Init();

    libStEx_gt_ObjectiveMoshPitFightComplete_Init();

    libStEx_gt_ObjectiveMoshPitFightFail_Init();

    libStEx_gt_ObjectiveBossFightCreate2_Init();

    libStEx_gt_ObjectiveBossFightComplete12_Init();

    libStEx_gt_ObjectiveBossFightComplete3_Init();

    libStEx_gt_ObjectiveBossFightComplete4_Init();

    libStEx_gt_ObjectiveRoamingCreate_Init();

    libStEx_gt_ObjectiveRoamingComplete_Init();

    libStEx_gt_ObjectiveRoamingFail_Init();

    libStEx_gt_ObjectiveBossFightCreate3_Init();

    libStEx_gt_ObjectiveBossFightComplete5_Init();

    libStEx_gt_ObjectiveBossFightComplete11_Init();

    libStEx_gt_ObjectiveBossFightComplete6_Init();

    libStEx_gt_ObjectiveBossFightCreate5_Init();

    libStEx_gt_ObjectiveBossFightComplete9_Init();

    libStEx_gt_ObjectiveBossFightComplete10_Init();

    libStEx_gt_ObjectiveBossFightCreate4_Init();

    libStEx_gt_ObjectiveBossFightComplete7_Init();

    libStEx_gt_ObjectiveBossFightComplete8_Init();

    libStEx_gt_PlayerHitsReady_Init();

    libStEx_gt_PlayerHitsRespec_Init();

    libStEx_gt_PlayerHitsRetry_Init();

    libStEx_gt_TutorialVeteranPanelInitialize_Init();

    libStEx_gt_TutorialVeteranFlashRespecButtonInternal_Init();

    libStEx_gt_TargetDummyInitialize_Init();

    libStEx_gt_TargetDummyTakesDamage_Init();

    libStEx_gt_TargetDummyDies_Init();

    libStEx_gt_QueryDialogChoiceMade_Init();

    libStEx_gt_TutorialHeroSelected_Init();

}



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

// Library Initialization

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

bool libStEx_InitLib_completed = false;



void libStEx_InitLib () {

    if (libStEx_InitLib_completed) {

        return;

    }



    libStEx_InitLib_completed = true;



    libStEx_InitLibraries();

    libStEx_InitVariables();

    libStEx_InitTriggers();

}



include "TriggerLibs/HeroesLib"

include "TriggerLibs/GameLib"

include "TriggerLibs/MapMechanicsLib"

include "TriggerLibs/UILib"