# Substring

Grammar — Substring(s, start, end)
FlagsNative | Function

Pulls a substring by character start to end count.

# Arguments

  • string — String
  • int — Start
  • int — End

Returns — string

native string StringSub(string s, int start, int end);

Category: String / Substrings

# Examples

campaigns/liberty.sc2campaignbase.sc2maps/maps/campaign/tarcade.sc2map/MapScript.galaxy:5662


    lv_scaleString = CatalogFieldValueGet(c_gameCatalogModel, "SS_TerraTron", "ScaleMin", 1);
    lv_scaleString = StringSub(lv_scaleString, 1, 6);
    gv_terraTronScale = StringToFixed(lv_scaleString);
    lv_bounds = gf_GetCameraBoundary();

campaigns/liberty.sc2campaignbase.sc2maps/maps/campaign/tstory01.sc2map/MapScript.galaxy:7965

    lv_states = libCamp_gf_StoryModeRoomStates();
    lv_index = gf_RoomStatesIndex(lp_stateType, lp_room);
    return StringEqual(StringSub(lv_states, lv_index, lv_index), "1", c_stringCase);
}

campaigns/liberty.sc2campaign/base.sc2maps/maps/campaign/tarcade.sc2mapMapScript.galaxy:5662


    lv_scaleString = CatalogFieldValueGet(c_gameCatalogModel, "SS_TerraTron", "ScaleMin", 1);
    lv_scaleString = StringSub(lv_scaleString, 1, 6);
    gv_terraTronScale = StringToFixed(lv_scaleString);
    lv_bounds = gf_GetCameraBoundary();

campaigns/liberty.sc2campaign/base.sc2maps/maps/campaign/tstory01.sc2mapMapScript.galaxy:7965

    lv_states = libCamp_gf_StoryModeRoomStates();
    lv_index = gf_RoomStatesIndex(lp_stateType, lp_room);
    return StringEqual(StringSub(lv_states, lv_index, lv_index), "1", c_stringCase);
}

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:10295

            lv_indexMissionRequired = libCamp_gv_tS_MapID[autoB7DB84CF_i];
            lv_indexString += 1;
            libCamp_gv_tS_DebugProgressMissionPathEarly[(lv_indexMissionCurrent)][(lv_indexMissionRequired)] = (StringSub(lv_pathString, lv_indexString, lv_indexString) == "1");
            autoB7DB84CF_i = autoB7DB84CF_i + 1;
        }

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:10329

            lv_indexMissionRequired = libCamp_gv_tS_MapID[auto0273F2C3_i];
            lv_indexString += 1;
            libCamp_gv_tS_DebugProgressMissionPathAverage[(lv_indexMissionCurrent)][(lv_indexMissionRequired)] = (StringSub(lv_pathString, lv_indexString, lv_indexString) == "1");
            auto0273F2C3_i = auto0273F2C3_i + 1;
        }

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:10363

            lv_indexMissionRequired = libCamp_gv_tS_MapID[autoBE2F9D4A_i];
            lv_indexString += 1;
            libCamp_gv_tS_DebugProgressMissionPathLate[(lv_indexMissionCurrent)][(lv_indexMissionRequired)] = (StringSub(lv_pathString, lv_indexString, lv_indexString) == "1");
            autoBE2F9D4A_i = autoBE2F9D4A_i + 1;
        }

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:11258

            lv_indexMerc = libCamp_gv_tS_MercID[auto9F46E8A4_i];
            lv_indexString += 1;
            libCamp_gv_tS_DebugBuyTechMercEarly[(lv_indexMission)][(lv_indexMerc)] = (StringSub(lv_secretString, lv_indexString, lv_indexString) == "1");
            auto9F46E8A4_i = auto9F46E8A4_i + 1;
        }

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:11265

        for ( ; ( (autoCB97E23C_ai >= 0 && lv_indexTech <= autoCB97E23C_ae) || (autoCB97E23C_ai < 0 && lv_indexTech >= autoCB97E23C_ae) ) ; lv_indexTech += autoCB97E23C_ai ) {
            lv_indexString += 1;
            libCamp_gv_tS_DebugBuyTechPurchasableEarly[(lv_indexMission)][lv_indexTech] = (StringSub(lv_secretString, lv_indexString, lv_indexString) == "1");
        }
        autoF4A57F40_i = autoF4A57F40_i + 1;

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:11301

            lv_indexMerc = libCamp_gv_tS_MercID[auto4B4AE7FD_i];
            lv_indexString += 1;
            libCamp_gv_tS_DebugBuyTechMercAverage[(lv_indexMission)][(lv_indexMerc)] = (StringSub(lv_secretString, lv_indexString, lv_indexString) == "1");
            auto4B4AE7FD_i = auto4B4AE7FD_i + 1;
        }

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:11308

        for ( ; ( (autoC3EB3099_ai >= 0 && lv_indexTech <= autoC3EB3099_ae) || (autoC3EB3099_ai < 0 && lv_indexTech >= autoC3EB3099_ae) ) ; lv_indexTech += autoC3EB3099_ai ) {
            lv_indexString += 1;
            libCamp_gv_tS_DebugBuyTechPurchasableAverage[(lv_indexMission)][lv_indexTech] = (StringSub(lv_secretString, lv_indexString, lv_indexString) == "1");
        }
        auto69EA1826_i = auto69EA1826_i + 1;

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:11344

            lv_indexMerc = libCamp_gv_tS_MercID[auto3A9D14E8_i];
            lv_indexString += 1;
            libCamp_gv_tS_DebugBuyTechMercLate[(lv_indexMission)][(lv_indexMerc)] = (StringSub(lv_secretString, lv_indexString, lv_indexString) == "1");
            auto3A9D14E8_i = auto3A9D14E8_i + 1;
        }

campaigns/libertystory.sc2campaignbase.sc2data/TriggerLibs/CampaignLib.galaxy:11351

        for ( ; ( (auto081AA389_ai >= 0 && lv_indexTech <= auto081AA389_ae) || (auto081AA389_ai < 0 && lv_indexTech >= auto081AA389_ae) ) ; lv_indexTech += auto081AA389_ai ) {
            lv_indexString += 1;
            libCamp_gv_tS_DebugBuyTechPurchasableLate[(lv_indexMission)][lv_indexTech] = (StringSub(lv_secretString, lv_indexString, lv_indexString) == "1");
        }
        auto722F357B_i = auto722F357B_i + 1;

campaigns/swarmstory.sc2campaignbase.sc2data/TriggerLibs/SwarmCampaignLib.galaxy:18543

        lv_missionInitial = libSwaC_gf_ZS_MissionInitial(libSwaC_gf_CurrentMap());
        if ((StringLength(libSwaC_gv_zSX_CamStatsMisisonOrder) > 0)) {
            lv_lastLocation = StringSub(libSwaC_gv_zSX_CamStatsMisisonOrder, StringLength(libSwaC_gv_zSX_CamStatsMisisonOrder), StringLength(libSwaC_gv_zSX_CamStatsMisisonOrder));
        }
        else {

campaigns/swarmstory.sc2campaignbase.sc2data/TriggerLibs/SwarmCampaignLib.galaxy:22950


    TriggerEnable(TriggerGetCurrent(), false);
    auto64400101_val = StringSub(EventChatMessage(false), 6, 6);
    if (auto64400101_val == "z") {
        libSwaC_gf_ZS_ArmyCustomEvolutionUIEnter("Zergling");

campaigns/swarmstory.sc2campaignbase.sc2data/TriggerLibs/SwarmCampaignLib.galaxy:23738

    // Automatic Variable Declarations
    // Variable Initialization
    lv_bookmark = StringSub(EventChatMessage(false), 8, StringLength(EventChatMessage(false)));

    // Conditions

campaigns/voidstory.sc2campaignbase.sc2data/TriggerLibs/VoidCampaignLib.galaxy:10233

    // Automatic Variable Declarations
    // Variable Initialization
    lv_bookmark = StringSub(EventChatMessage(false), 8, StringLength(EventChatMessage(false)));

    // Conditions

campaigns/voidstory.sc2campaignbase.sc2data/TriggerLibs/VoidCampaignStoryLib.galaxy:432

            for ( ; ( (autoD142832C_ai >= 0 && lv_indexChild <= autoD142832C_ae) || (autoD142832C_ai < 0 && lv_indexChild >= autoD142832C_ae) ) ; lv_indexChild += autoD142832C_ai ) {
                lv_childStr = CatalogFieldValueGet(c_gameCatalogConversation, lp_conversation, "Groups[" + IntToString(lv_indexGroup) + "].Children[" + IntToString(lv_indexChild) + "]", c_playerAny);
                if ((StringSub(lv_childStr, 1, 5) == "Group")) {
                    libVCST_gf_PS_DebugStoryPreviewGroupRecursive(lp_conversation, lv_childStr);
                }

campaigns/voidstory.sc2campaignbase.sc2data/TriggerLibs/VoidCampaignStoryLib.galaxy:435

                    libVCST_gf_PS_DebugStoryPreviewGroupRecursive(lp_conversation, lv_childStr);
                }
                else if ((StringSub(lv_childStr, 1, 4) == "Line")) {
                    libVCST_gf_PS_DebugStoryPreviewLine(lp_conversation, lv_childStr);
                }

campaigns/voidstory.sc2campaignbase.sc2data/TriggerLibs/VoidCampaignUILib.galaxy:6141

    // Automatic Variable Declarations
    // Variable Initialization
    lv_iD = StringToInt(StringSub(EventChatMessage(false), 10, 10));

    // Conditions

mods/heroesbrawlmods/arenamodemods/arenamode.stormmodbase.stormdata/LibAREN.galaxy:2571

    // Automatic Variable Declarations
    // Variable Initialization
    lv_submapIndex = StringToInt(StringSub(EventChatMessage(false), 8, 8));
    lv_sectionIndex = StringToInt(StringSub(EventChatMessage(false), 9, 9));
    lv_emitterIndex = StringToInt(StringSub(EventChatMessage(false), 10, 10));

mods/heroesbrawlmods/arenamodemods/arenamode.stormmodbase.stormdata/LibAREN.galaxy:2572

    // Variable Initialization
    lv_submapIndex = StringToInt(StringSub(EventChatMessage(false), 8, 8));
    lv_sectionIndex = StringToInt(StringSub(EventChatMessage(false), 9, 9));
    lv_emitterIndex = StringToInt(StringSub(EventChatMessage(false), 10, 10));
    lv_killingTeam = StringToInt(StringSub(EventChatMessage(false), 12, 12));

mods/heroesbrawlmods/arenamodemods/arenamode.stormmodbase.stormdata/LibAREN.galaxy:2573

    lv_submapIndex = StringToInt(StringSub(EventChatMessage(false), 8, 8));
    lv_sectionIndex = StringToInt(StringSub(EventChatMessage(false), 9, 9));
    lv_emitterIndex = StringToInt(StringSub(EventChatMessage(false), 10, 10));
    lv_killingTeam = StringToInt(StringSub(EventChatMessage(false), 12, 12));
    lv_actorID = "";

mods/heroesbrawlmods/arenamodemods/arenamode.stormmodbase.stormdata/LibAREN.galaxy:2574

    lv_sectionIndex = StringToInt(StringSub(EventChatMessage(false), 9, 9));
    lv_emitterIndex = StringToInt(StringSub(EventChatMessage(false), 10, 10));
    lv_killingTeam = StringToInt(StringSub(EventChatMessage(false), 12, 12));
    lv_actorID = "";

mods/heroesbrawlmods/arenamodemods/arenamode.stormmodbase.stormdata/LibAREN.galaxy:2620

    // Automatic Variable Declarations
    // Variable Initialization
    lv_killingTeam = StringToInt(StringSub(EventChatMessage(false), 11, 11));

    // Conditions

mods/heroesbrawlmods/arenamodemods/arenamode.stormmodbase.stormdata/LibAREN.galaxy:2660


    // Variable Initialization
    lv_submapIndex = StringToInt(StringSub(EventChatMessage(false), 14, 14));

    // Conditions

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:1902


    if ((StringLength(lv_chatString) >= 13)) {
        lv_heroName = StringSub(lv_chatString, 13, StringLength(lv_chatString));
        lv_hero = (lv_heroName);
    }

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2060

    }

    if ((StringSub(lv_chatString, 13, 13) == "0")) {
        lv_player = StringToInt(StringSub(lv_chatString, 12, 13));
    }

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2061


    if ((StringSub(lv_chatString, 13, 13) == "0")) {
        lv_player = StringToInt(StringSub(lv_chatString, 12, 13));
    }
    else {

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2064

    }
    else {
        lv_player = StringToInt(StringSub(lv_chatString, 12, 12));
    }
    if ((StringSub(lv_chatString, 13, 13) == "0")) {

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2066

        lv_player = StringToInt(StringSub(lv_chatString, 12, 12));
    }
    if ((StringSub(lv_chatString, 13, 13) == "0")) {
        lv_roleString = StringSub(lv_chatString, 15, StringLength(lv_chatString));
    }

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2067

    }
    if ((StringSub(lv_chatString, 13, 13) == "0")) {
        lv_roleString = StringSub(lv_chatString, 15, StringLength(lv_chatString));
    }
    else {

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2070

    }
    else {
        lv_roleString = StringSub(lv_chatString, 14, StringLength(lv_chatString));
    }
    lv_roleString = StringCase(lv_roleString, false);

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2144

    }

    if ((StringSub(lv_chatString, 13, 13) == "0")) {
        lv_player = StringToInt(StringSub(lv_chatString, 12, 13));
        lv_chatString = StringSub(lv_chatString, 15, StringLength(lv_chatString));

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2145


    if ((StringSub(lv_chatString, 13, 13) == "0")) {
        lv_player = StringToInt(StringSub(lv_chatString, 12, 13));
        lv_chatString = StringSub(lv_chatString, 15, StringLength(lv_chatString));
    }

mods/heroesbrawlmods/heroselectionmods/ingameheroselection.stormmodbase.stormdata/LibIGHS.galaxy:2146

    if ((StringSub(lv_chatString, 13, 13) == "0")) {
        lv_player = StringToInt(StringSub(lv_chatString, 12, 13));
        lv_chatString = StringSub(lv_chatString, 15, StringLength(lv_chatString));
    }
    else {

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/HeroesLib.galaxy:2676

    lv_fullColorString = CatalogFieldValueGet(c_gameCatalogGameUI, "Dflt", "OverrideColors[" + lp_overrideColor + "].Value[0]", lp_player);
    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);
    lv_rString = StringSub(lv_fullColorString, 1, (lv_commaPosition - 1));
    lv_fullColorString = StringSub(lv_fullColorString, (lv_commaPosition + 1), StringLength(lv_fullColorString));
    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/HeroesLib.galaxy:2677

    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);
    lv_rString = StringSub(lv_fullColorString, 1, (lv_commaPosition - 1));
    lv_fullColorString = StringSub(lv_fullColorString, (lv_commaPosition + 1), StringLength(lv_fullColorString));
    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);
    lv_gString = StringSub(lv_fullColorString, 1, (lv_commaPosition - 1));

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/HeroesLib.galaxy:2679

    lv_fullColorString = StringSub(lv_fullColorString, (lv_commaPosition + 1), StringLength(lv_fullColorString));
    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);
    lv_gString = StringSub(lv_fullColorString, 1, (lv_commaPosition - 1));
    lv_fullColorString = StringSub(lv_fullColorString, (lv_commaPosition + 1), StringLength(lv_fullColorString));
    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/HeroesLib.galaxy:2680

    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);
    lv_gString = StringSub(lv_fullColorString, 1, (lv_commaPosition - 1));
    lv_fullColorString = StringSub(lv_fullColorString, (lv_commaPosition + 1), StringLength(lv_fullColorString));
    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);
    lv_bString = StringSub(lv_fullColorString, 1, (lv_commaPosition - 1));

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/HeroesLib.galaxy:2682

    lv_fullColorString = StringSub(lv_fullColorString, (lv_commaPosition + 1), StringLength(lv_fullColorString));
    lv_commaPosition = StringFind(lv_fullColorString, ",", c_stringCase);
    lv_bString = StringSub(lv_fullColorString, 1, (lv_commaPosition - 1));
    lv_r = (StringToFixed(lv_rString) * 100.0);
    lv_g = (StringToFixed(lv_gString) * 100.0);

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/SupportLib.galaxy:4464


    if ((libSprt_gv_soundRepeatActive == true)) {
        lv_delay = StringToFixed(StringSub(EventChatMessage(false), 19, 20));
        TriggerDebugOutput(1, (StringExternal("Param/Value/lib_Sprt_973E5B42") + (FixedToText(lv_delay, c_fixedPrecisionAny) + StringExternal("Param/Value/lib_Sprt_3F1EBAED"))), true);
        libSprt_gv_soundRepeatDelay = lv_delay;

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/SupportLib.galaxy:8401

    }

    if ((TriggerIsEnabled(libSprt_gt_DEBUGDPSTracker) == false) && ((StringSub(EventChatMessage(false), 13, 14) == "") || (StringSub(EventChatMessage(false), 13, 14) == "0"))) {
        TriggerDebugOutput(1, StringExternal("Param/Value/lib_Sprt_F79A7687"), true);
        return true;

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/SupportLib.galaxy:8401

    }

    if ((TriggerIsEnabled(libSprt_gt_DEBUGDPSTracker) == false) && ((StringSub(EventChatMessage(false), 13, 14) == "") || (StringSub(EventChatMessage(false), 13, 14) == "0"))) {
        TriggerDebugOutput(1, StringExternal("Param/Value/lib_Sprt_F79A7687"), true);
        return true;

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/SupportLib.galaxy:8418

            TriggerEnable(libSprt_gt_DEBUGDPSTrackerTimerExpires, true);
            TriggerDebugOutput(1, StringExternal("Param/Value/lib_Sprt_4721DE54"), true);
            libSprt_gv_dEBUGDPSTrackerTrackingInterval = StringToFixed(StringSub(EventChatMessage(false), 13, 14));
            TextExpressionSetToken("Param/Expression/lib_Sprt_05C0C86B", "A", StringExternal("Param/Value/lib_Sprt_A026A1A1"));
            TextExpressionSetToken("Param/Expression/lib_Sprt_05C0C86B", "B", FixedToText(libSprt_gv_dEBUGDPSTrackerTrackingInterval, c_fixedPrecisionAny));

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/UILib.galaxy:1020

    // Implementation
    if ((TimerGetRemaining(libGame_gv_openTheGatesTimer) > 0.0)) {
        TextExpressionSetToken("Param/Expression/lib_UIUI_60CC3C9D", "A", StringToText(StringSub(libCore_gf_GetTimeStamp(TimerGetRemaining(libGame_gv_openTheGatesTimer)), 1, 5)));
        lv_timeLabelText = TextExpressionAssemble("Param/Expression/lib_UIUI_60CC3C9D");
    }

mods/heroesdata.stormmodbase.stormdata/TriggerLibs/UILib.galaxy:1024

    }
    else {
        lv_timeLabelText = StringToText(StringSub(libCore_gf_GetTimeStamp((TimerGetElapsed(libGame_gv_gameTimer)+libSprt_gf_DebugGameTimeDelta()*60)), 1, 5));
    }
    libNtve_gf_SetDialogItemText(libUIUI_gv_uIObserverUI.lv_observerTimer, lv_timeLabelText, libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer]);

mods/heroesmapmods/battlegroundmapmods/battlefieldofeternity.stormmodbase.stormdata/LibMLBD.galaxy:3132

    }

    auto1E503F1D_val = StringSub(EventChatMessage(false), 5, StringLength(EventChatMessage(false)));
    if (auto1E503F1D_val == "start") {
        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MLBD_C19F8B58"), true);

mods/heroesmapmods/battlegroundmapmods/skytemple.stormmodbase.stormdata/LibMLCP.galaxy:3420

    }

    lv_time = StringSub(EventChatMessage(false), 5, 6);
    libGame_gv_scalingTicks = StringToInt(StringWord(EventChatMessage(false), 2));
    UIDisplayMessage(PlayerGroupAll(), c_messageAreaDebug, (StringExternal("Param/Value/lib_MLCP_2D9B987D") + StringToText(lv_time) + StringExternal("Param/Value/lib_MLCP_FCDA683F")));

mods/heroesmapmods/battlegroundmapmods/skytemple.stormmodbase.stormdata/LibMLCP.galaxy:3462

    Wait(0.0625, c_timeGame);
    libNtve_gf_CreateUnitsWithDefaultFacing(1, "LuxoriaTemple", c_unitCreateIgnorePlacement, 1, lv_spawnPoint, null);
    if ((StringSub(EventChatMessage(false), 7, 7) == "1")) {
        UnitBehaviorAdd(UnitLastCreated(), "LuxoriaTempleStage1", UnitLastCreated(), 1);
    }

mods/heroesmapmods/battlegroundmapmods/towersofdoom.stormmodbase.stormdata/LibMTOD.galaxy:3603

    }

    auto9F79D6A4_val = StringSub(EventChatMessage(false), 10, 10);
    if (auto9F79D6A4_val == "1") {
        if ((libMTOD_gv_mMToDTowns[1].lv_fortUnit != null)) {

mods/heroesmapmods/battlegroundmapmods/volskayamechanics.stormmodbase.stormdata/LibVLSK.galaxy:2202


    // Variable Initialization
    lv_team = StringToInt(StringSub(EventChatMessage(false), 11, 11));

    // Conditions

mods/liberty.sc2modbase.sc2data/TriggerLibs/LibertyLib.galaxy:508

        lv_positionFromRight = ((lv_numberLength + 1) - lv_i);
        if ((ModI(lv_positionFromRight, 3) == 0)) {
            lv_placeValue = StringToInt(StringSub(IntToString(lp_number), lv_i, lv_i));
            if ((lv_placeValue != 0)) {
                lv_numberOfSoundsToPlay += 1;

mods/liberty.sc2modbase.sc2data/TriggerLibs/LibertyLib.galaxy:519


        if ((ModI((lv_positionFromRight + 1), 3) == 0)) {
            lv_placeValue = StringToInt(StringSub(IntToString(lp_number), lv_i, (lv_i + 1)));
            if ((lv_placeValue > 0)) {
                if ((lv_placeValue < 20)) {

mods/liberty.sc2modbase.sc2data/TriggerLibs/LibertyLib.galaxy:526

                }
                else {
                    lv_tensPlace = StringToInt(StringSub(IntToString(lv_placeValue), 1, 1));
                    lv_onesPlace = StringToInt(StringSub(IntToString(lv_placeValue), 2, 2));
                    lv_numberOfSoundsToPlay += 1;

mods/liberty.sc2modbase.sc2data/TriggerLibs/LibertyLib.galaxy:527

                else {
                    lv_tensPlace = StringToInt(StringSub(IntToString(lv_placeValue), 1, 1));
                    lv_onesPlace = StringToInt(StringSub(IntToString(lv_placeValue), 2, 2));
                    lv_numberOfSoundsToPlay += 1;
                    lv_soundsToPlay[lv_numberOfSoundsToPlay] = lv_soundReferenceArrayTens[lv_tensPlace];

mods/liberty.sc2modbase.sc2data/TriggerLibs/LibertyLib.galaxy:538


        if ((lv_positionFromRight == 4)) {
            lv_placeValue = StringToInt(StringSub(IntToString(lp_number), lv_i, lv_i));
            if ((lv_numberLength == 4)) {
                lv_numberOfSoundsToPlay += 1;

mods/liberty.sc2modbase.sc2data/TriggerLibs/LibertyLib.galaxy:545


            if ((lv_numberLength == 7)) {
                lv_placeValue = StringToInt(StringSub(IntToString(lp_number), 2, 4));
                if ((lv_placeValue > 0)) {
                    lv_numberOfSoundsToPlay += 1;

mods/liberty.sc2modbase.sc2data/TriggerLibs/LibertyLib.galaxy:560

        if ((lv_positionFromRight == 7)) {
            if ((lv_numberLength == 7)) {
                lv_placeValue = StringToInt(StringSub(IntToString(lp_number), lv_i, lv_i));
                lv_numberOfSoundsToPlay += 1;
                lv_soundsToPlay[lv_numberOfSoundsToPlay] = lv_soundReferenceArray119[lv_placeValue];

mods/missionpacks/novacampaign.sc2modbase.sc2data/LibNCST.galaxy:377

            for ( ; ( (autoD142832C_ai >= 0 && lv_indexChild <= autoD142832C_ae) || (autoD142832C_ai <= 0 && lv_indexChild >= autoD142832C_ae) ) ; lv_indexChild += autoD142832C_ai ) {
                lv_childStr = CatalogFieldValueGet(c_gameCatalogConversation, lp_conversation, "Groups[" + IntToString(lv_indexGroup) + "].Children[" + IntToString(lv_indexChild) + "]", c_playerAny);
                if ((StringSub(lv_childStr, 1, 5) == "Group")) {
                    libNCST_gf_NS_DebugStoryPreviewGroupRecursive(lp_conversation, lv_childStr);
                }

mods/missionpacks/novacampaign.sc2modbase.sc2data/LibNCST.galaxy:380

                    libNCST_gf_NS_DebugStoryPreviewGroupRecursive(lp_conversation, lv_childStr);
                }
                else if ((StringSub(lv_childStr, 1, 4) == "Line")) {
                    libNCST_gf_NS_DebugStoryPreviewLine(lp_conversation, lv_childStr);
                }

mods/starcoop/starcoop.sc2modbase.sc2data/LibCOMU.galaxy:5946

        }

        if (!((StringSub(EventChatMessage(false), 1, 7) == "brutal+"))) {
            return false;
        }

mods/voidprologue.sc2modbase.sc2data/LibA3DDD02B.galaxy:9864

    }

    CutsceneGoToBookmark(libA3DDD02B_gv_pP_CurrentCampaignCutscene, StringSub(EventChatMessage(false), 5, 200));
    return true;
}

mods/warcoop/warcoopdata.sc2modbase.sc2data/TriggerLibs/WarCoopData.galaxy:415

    lv_charindex = 1;
    for ( ; ( (auto3A50006D_ai >= 0 && lv_charindex <= auto3A50006D_ae) || (auto3A50006D_ai < 0 && lv_charindex >= auto3A50006D_ae) ) ; lv_charindex += auto3A50006D_ai ) {
        lv_character = StringSub(lp_string, lv_charindex, lv_charindex);
        if (((StringCompare(lv_character, "0", c_stringCase) < 0) || (StringCompare(lv_character, "9", c_stringCase) > 0))) {
            return false;

mods/warcoop/warcoopdata.sc2modbase.sc2data/TriggerLibs/WarCoopData.galaxy:543

    lv_firstdelimiterindex = StringFind(lv_sentence, lp_delimiter, c_stringCase);
    while ((lv_firstdelimiterindex == 1) && (StringLength(lv_sentence) > 0)) {
        lv_sentence = StringSub(lv_sentence, (lv_delimiterlength + 1), StringLength(lv_sentence));
        lv_firstdelimiterindex = StringFind(lv_sentence, lp_delimiter, c_stringCase);
    }

mods/warcoop/warcoopdata.sc2modbase.sc2data/TriggerLibs/WarCoopData.galaxy:550

    }
    else {
        return StringSub(lv_sentence, 1, (lv_firstdelimiterindex - 1));
    }
}

mods/warcoop/warcoopdata.sc2modbase.sc2data/TriggerLibs/WarCoopData.galaxy:569


    // Implementation
    return StringSub(lp_sentence, lv_remainderstringstart, lv_sentencelength);
}