# Elapsed AI Time

Grammar — Elapsed AI time
FlagsNative | Function

Returns how much AI time has gone by since the start of the map.

Returns — fixed

native fixed AIGetTime();

Category: AI / MiscCampaign / Functions

# Examples

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeAI.galaxy:120

        // 0 - 2  minutes at 1.0
        // 2 - 20 minutes ramp to 1.5
        if (AIGetTime() > 1200) {
            harvestBonus = 1.5;
        }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeAI.galaxy:123

            harvestBonus = 1.5;
        }
        else if (AIGetTime() > 120) {
            // (1200 - 120) = 1080,  1080*2 = 2160   (ie at 1200 seconds this will be (1200 - 120) / 2160 = 0.5)
            harvestBonus = 1.0 + ((AIGetTime() - 120) / 2160);

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeAI.galaxy:125

        else if (AIGetTime() > 120) {
            // (1200 - 120) = 1080,  1080*2 = 2160   (ie at 1200 seconds this will be (1200 - 120) / 2160 = 0.5)
            harvestBonus = 1.0 + ((AIGetTime() - 120) / 2160);
        }
    }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeAI.galaxy:130

    else if (diff == c_skirChInsane) {
        // 0 - 20 minutes ramp from 1.2 to 2.0
        if (AIGetTime() > 1200) {
            harvestBonus = 2.0;
        }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeAI.galaxy:134

        }
        else {
            harvestBonus = 1.2 + (AIGetTime() / 1500);
        }
    }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeBuildAI.galaxy:458

    //return e_buildType_Core;  // force a build type for testing

    if ( diff > c_skirHard && (AIGetTime() < 900 || AIHighLateGameUnderHeavyAttack(player)) ) {
        // higher difficulty scripts, have a limited selection on their initial transition to late game or when under attack
        

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeHighAI.galaxy:137

            goAttack = true;
        }
        if (AIGetTime() > 330) {
            goAttack = true;
        }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeHighAI.galaxy:185

                return true;
            }
            if (AIGetTime() > 120 && AIHasHumanAlly(player)) {
                return true;
            }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeHighAI.galaxy:220


void AIEarlyDefenseScouting (int player) {
    fixed time = AIGetTime();
    bool enableScouting = false;
    bool enableDefending = false;

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeHighAI.galaxy:435

void AIHighSetLateGameArmy (int player, int buildIndex) {
    AISetUserInt(player, c_currentBuildIndex, buildIndex);
    AISetUserInt(player, c_nextArmyTime, FixedToInt(AIGetTime()) + c_lateGameFrequency);
    AISetMainState(player, e_mainState_Late, e_mainSubState_Build);
}

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeHighAI.galaxy:443

//--------------------------------------------------------------------------------------------------
bool AIHighOpponentLikelyRushing (int player) {
    fixed time = AIGetTime();
    fixed selfArmySize;
    fixed enemyArmySize;

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeLowAI.galaxy:109

    int waveCount;
    int desiredArmyCount;
    if (AIGetTime() < timeOut) {
        return false;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeLowAI.galaxy:148

            AISetFlag(player, e_flagsScouting, true);
        }
        else if (AIGetTime() > 300) {
            AISetFlag(player, e_flagsScouting, true);
        }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeLowAI.galaxy:151

            AISetFlag(player, e_flagsScouting, true);
        }
        else if (AIGetTime() > 40 && AIHasHumanAlly(player)) {
            AISetFlag(player, e_flagsScouting, true);
        }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeLowAI.galaxy:158

    // coop attacker logic
    if (AIGetCoopFlag(player, c_coopWaveAttacker)) {
        if (AIGetTime() > 330) {
            if (AIState(player, e_attackState) == e_attackState_Wait) {
                AISetAttackState(player, e_attackState_Attack);

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeLowAI.galaxy:328

        // switching due to player request
        origStartTime = origEndTime - origDuration;
        origTimeElapsed = AIGetTime() - IntToFixed(origStartTime);
        if (origTimeElapsed > origDuration - 1) {
            origTimeElapsed = origDuration - 1;

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeLowAI.galaxy:363

    } else {
        // switching to next phase
        newEndTime = FixedToInt(AIGetTime()) + newDuration;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeWaveAI.galaxy:243


    leaderType = UnitGetType(leader);
    if ((leaderType == c_PU_Oracle) && (AILastAttack(leader) > (AIGetTime()-c_wasAttackedRecently))) {
        if (state != c_waveStateRetreat) {
DebugAIPlayerWave(player, "set divert = retreat to harass point");

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeWaveAI.galaxy:337


    // Don't clear obstructions in the first 10 minutes (leaves the AI too open to being rushed)
    if (AIGetTime() < 600) {
        return false;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeWaveAI.galaxy:484

    }

    if (AIGetNextDropTimeCheck(player) >= AIGetTime()) {
        // only check drop attacks every so often
        return false;

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeWaveAI.galaxy:489

    }

    AISetNextDropTimeCheck(player, AIGetTime() + c_dropCheckRollFreq);

    if (RandomInt(1,100) > c_dropAttackChance) {

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeWaveAI.galaxy:499

    }

    AISetNextDropTimeCheck(player, AIGetTime() + c_dropCheckAttackFreq);

    AISetAttackState(player, e_attackState_DropAttack);

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeWaveAI.galaxy:517

    int distEnemy;
    int distFriend;
    int delay = FixedToInt(AIGetTime()) + RandomInt(60, 90);

    AIWaveSetType(w, c_waveStateIdle, AIWaveTargetGatherMelee(player));

mods/core.sc2modbase.sc2data/TriggerLibs/MeleeWaveAI.galaxy:760

        count = AIWaveUnitCount(w) + AIWaveUnitCount(AIWaveGet(player, c_waveMain));

        if ((AIWaveGetTimeSinceRetreat(w) > 120) && (AIGetUserInt(player, c_delayNextAttack) < AIGetTime())) {            
            // if we're allowed to attack && we've waited at least 120 seonds after retreating, consider attacking

mods/core.sc2modbase.sc2data/TriggerLibs/SharedAI.galaxy:28

    bool suspectDanger = false;

    if (AIGetTime() > dangerTime) {
        // assume the enemy can make cloaked units after 10 minutes
        return true;

mods/core.sc2modbase.sc2data/TriggerLibs/SharedAI.galaxy:53

    bool suspectDanger = false;

    if (AIGetTime() > dangerTime) {
        // assume the enemy can make air units after 10 minutes
        return true;

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:837

    
    // if we're not under attack, don't try to merge
    if (AILastAttack(aiUnit) < (AIGetTime() - 4.0)) {
        return false;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:1609

    }

    if (AILastAttack(aiUnit) < (AIGetTime() - 4.0)) {
        return null;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:1651

    }

    if (AILastAttack(aiUnit) < (AIGetTime() - 3.0)) {
        return null;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:267


    // don't try if we've been attacked recently (taking damage interrupts it).
    if (AILastAttack(aiUnit) > (AIGetTime() - 4.0)) {
        return null;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:496

    
    // Don't jump if we're not taking damage
    if (AILastAttack(aiUnit) < (AIGetTime() - 3.0)) {
        return null;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1146

    if (!AIIsCampaign(player)) {
        if (AIPlayerDifficulty(player) >= c_skirHard_VH) {
            if (AIGetTime() > 900.0) {
                // bunkers aren't really useful after 15 minutes into a melee game
                // just salvage them if they aren't currently in use

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1571


    // if we haven't been attacked recently, don't use it
    if (AILastAttack(aiUnit) < (AIGetTime() - 4.0)) {
        return;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1747


    // Only transition liberators to ground mode one at a time, helps them spread out the targetting.
    if (g_liberatorLastGround[player] > (AIGetTime() - c_liberatorMinTargetTime)) {
        return;
    }

mods/core.sc2modbase.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1825

    OrderSetTargetPoint(ord, bestPoint);
    if (UnitOrderIsValid(aiUnit, ord)) {
        g_liberatorLastGround[player] = AIGetTime();
        AICast(aiUnit, ord, c_noMarker, c_castHold);
    }

mods/core.stormmodbase.stormdata/TriggerLibs/SharedAI.galaxy:28

    bool suspectDanger = false;

    if (AIGetTime() > dangerTime) {
        // assume the enemy can make cloaked units after 10 minutes
        return true;

mods/core.stormmodbase.stormdata/TriggerLibs/SharedAI.galaxy:53

    bool suspectDanger = false;

    if (AIGetTime() > dangerTime) {
        // assume the enemy can make air units after 10 minutes
        return true;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:170

    }
    
    if (AIGetTime() < 450) {
        if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 7) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:225

    AISetAttackStatus(player, c_PU_Zealot, 1, 1, c_continuousMerge);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:273

    AISetAttackStatus(player, c_PU_Zealot, 1, 999, c_continuousMerge);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PB_Gateway, c_techCountInProgressOrBetter) < 1) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:342

    }
    
    if (AIGetTime() < 510) {
        if (AITechCount(player, c_PB_Assimilator, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:409

    }
    
    if (AIGetTime() < 480) {
        if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:477

    AISetAttackStatus(player, c_PU_Stalker, 1, 8, c_continuousMerge);

    if (AIGetTime() < 510) {
        if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 11) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:537

    AISetAttackStatus(player, c_PU_DarkTemplar, 1, 3, c_continuousMerge);

    if (AIGetTime() < 420) {
        if (AITechCount(player, c_PU_DarkTemplar, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:584

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 270) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:645

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:713

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 390) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:170

    }
    
    if (AIGetTime() < 450) {
        if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 7) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:225

    AISetAttackStatus(player, c_PU_Zealot, 1, 1, c_continuousMerge);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:273

    AISetAttackStatus(player, c_PU_Zealot, 1, 999, c_continuousMerge);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PB_Gateway, c_techCountInProgressOrBetter) < 1) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:342

    }
    
    if (AIGetTime() < 510) {
        if (AITechCount(player, c_PB_Assimilator, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:409

    }
    
    if (AIGetTime() < 480) {
        if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:477

    AISetAttackStatus(player, c_PU_Stalker, 1, 8, c_continuousMerge);

    if (AIGetTime() < 510) {
        if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 11) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:537

    AISetAttackStatus(player, c_PU_DarkTemplar, 1, 3, c_continuousMerge);

    if (AIGetTime() < 420) {
        if (AITechCount(player, c_PU_DarkTemplar, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:584

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 270) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:645

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:713

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 390) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:771

        pickNewArmy = true;
    }
    else if (newArmyTime < FixedToInt(AIGetTime()) && !AIHighCurrentlyUnderHeavyAttack(player)) {
        // been using the previous army a while and not currently under attack, switch to a new one
        pickNewArmy = true;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:815

        AISetAttackState(player, e_attackState_Idle);

        delay = FixedToInt(AIGetTime()) + RandomInt(300, 420);
        AISetUserInt(player, c_delayNextAttack, delay);
    }

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:970

//--------------------------------------------------------------------------------------------------
void ProtossHDEmergencyDetectionAntiAir (int player) {
    if (AIGetTime() < 300) {
        return; // don't worry about anti-air or detection prior to 5 minutes (even if the player requests it)
    }

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:203

    }
    
    if (AIGetTime() < 450) {
        if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 7) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:258

    AISetAttackStatus(player, c_PU_Zealot, 1, 1, c_continuousMerge);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:306

    AISetAttackStatus(player, c_PU_Zealot, 1, 999, c_continuousMerge);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PB_Gateway, c_techCountInProgressOrBetter) < 1) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:375

    }
    
    if (AIGetTime() < 510) {
        if (AITechCount(player, c_PB_Assimilator, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:442

    }
    
    if (AIGetTime() < 480) {
        if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:510

    AISetAttackStatus(player, c_PU_Stalker, 1, 8, c_continuousMerge);

    if (AIGetTime() < 510) {
        if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 11) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:570

    AISetAttackStatus(player, c_PU_DarkTemplar, 1, 3, c_continuousMerge);

    if (AIGetTime() < 420) {
        if (AITechCount(player, c_PU_DarkTemplar, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:617

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 270) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:678

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:746

    AIScoutingEnableWithPreReq(player, 18, c_PU_Probe, 1, c_PB_Gateway, c_techCountCompleteOnly);

    if (AIGetTime() < 390) {
        if (AITechCount(player, c_PB_Nexus, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:151

    AISetAttackStatus(player, c_TU_Marine, 2, 9, c_continuousMerge);

    if (AIGetTime() < 300) {
        if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
             (AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:222

    AISetAttackStatus(player, c_TU_Reaper, 1, 3, c_continuousMerge);

    if (AIGetTime() < 390) {
        if (AITechCount(player, c_TU_Reaper, c_techCountCompleteOnly) < 4) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:266

    AISetAttackStatus(player, c_TU_Marine, 2, 9, c_continuousMerge);

    if (AIGetTime() < 300) {
        if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
             (AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:340

    }
    
    if (AIGetTime() < 450) {
        if (AITechCount(player, c_TU_Marauder, c_techCountInProgressOrBetter) < 6) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:415

    AISetAttackStatus(player, c_TU_Hellion, 1, 4, c_continuousMerge);

    if (AIGetTime() < 440) {
        if (AITechCount(player, c_TU_Hellion, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:492

    AISetAttackStatus(player, c_TU_SiegeTank, 1, 2, c_continuousMerge);

    if (AIGetTime() < 420) {
        if (AITechCount(player, c_TU_SiegeTank, c_techCountInProgressOrBetter) < 3) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:556

    AIScoutingEnableWithPreReq(player, 16, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 510) {
        if (AITechCount(player, c_TU_Banshee, c_techCountInProgressOrBetter) < 6) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:604

    AIScoutingEnableWithPreReq(player, 18, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 270) {
        if (AITechCount(player, c_TB_CommandCenter_Alias, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:656

    AIScoutingEnableWithPreReq(player, 18, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_TB_CommandCenter_Alias, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:723

    AIScoutingEnableWithPreReq(player, 18, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 360) {
        if (AITechCount(player, c_TR_SiegeTankSiege, c_techCountInProgressOrBetter) < 1) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:151

    AISetAttackStatus(player, c_TU_Marine, 2, 9, c_continuousMerge);

    if (AIGetTime() < 300) {
        if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
             (AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:222

    AISetAttackStatus(player, c_TU_Reaper, 1, 3, c_continuousMerge);

    if (AIGetTime() < 390) {
        if (AITechCount(player, c_TU_Reaper, c_techCountCompleteOnly) < 4) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:266

    AISetAttackStatus(player, c_TU_Marine, 2, 9, c_continuousMerge);

    if (AIGetTime() < 300) {
        if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
             (AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:340

    }
    
    if (AIGetTime() < 450) {
        if (AITechCount(player, c_TU_Marauder, c_techCountInProgressOrBetter) < 6) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:415

    AISetAttackStatus(player, c_TU_Hellion, 1, 4, c_continuousMerge);

    if (AIGetTime() < 440) {
        if (AITechCount(player, c_TU_Hellion, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:492

    AISetAttackStatus(player, c_TU_SiegeTank, 1, 2, c_continuousMerge);

    if (AIGetTime() < 420) {
        if (AITechCount(player, c_TU_SiegeTank, c_techCountInProgressOrBetter) < 3) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:556

    AIScoutingEnableWithPreReq(player, 16, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 510) {
        if (AITechCount(player, c_TU_Banshee, c_techCountInProgressOrBetter) < 6) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:604

    AIScoutingEnableWithPreReq(player, 18, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 270) {
        if (AITechCount(player, c_TB_CommandCenter_Alias, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:656

    AIScoutingEnableWithPreReq(player, 18, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 300) {
        if (AITechCount(player, c_TB_CommandCenter_Alias, c_techCountInProgressOrBetter) < 2) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHdVH.galaxy:723

    AIScoutingEnableWithPreReq(player, 18, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 360) {
        if (AITechCount(player, c_TR_SiegeTankSiege, c_techCountInProgressOrBetter) < 1) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHigh.galaxy:803

        pickNewArmy = true;
    }
    else if (newArmyTime < FixedToInt(AIGetTime()) && !AIHighCurrentlyUnderHeavyAttack(player)) {
        // been using the previous army a while and not currently under attack, switch to a new one
        pickNewArmy = true;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHigh.galaxy:847

        AISetAttackState(player, e_attackState_Idle);

        delay = FixedToInt(AIGetTime()) + RandomInt(300, 420);
        AISetUserInt(player, c_delayNextAttack, delay);
    }

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranHigh.galaxy:1056

//--------------------------------------------------------------------------------------------------
void TerranHDEmergencyDetectionAntiAir (int player) {
    if (AIGetTime() < 300) {
        return; // don't worry about anti-air or detection prior to 5 minutes (even if the player requests it)
    }

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranVyHd.galaxy:186

    AISetAttackStatus(player, c_TU_Marine, 2, 9, c_continuousMerge);

    if (AIGetTime() < 300) {
        if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
             (AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranVyHd.galaxy:257

    AISetAttackStatus(player, c_TU_Reaper, 1, 3, c_continuousMerge);

    if (AIGetTime() < 390) {
        if (AITechCount(player, c_TU_Reaper, c_techCountCompleteOnly) < 4) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranVyHd.galaxy:301

    AISetAttackStatus(player, c_TU_Marine, 2, 9, c_continuousMerge);

    if (AIGetTime() < 300) {
        if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
             (AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranVyHd.galaxy:375

    }
    
    if (AIGetTime() < 450) {
        if (AITechCount(player, c_TU_Marauder, c_techCountInProgressOrBetter) < 6) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranVyHd.galaxy:450

    AISetAttackStatus(player, c_TU_Hellion, 1, 4, c_continuousMerge);

    if (AIGetTime() < 440) {
        if (AITechCount(player, c_TU_Hellion, c_techCountInProgressOrBetter) < 5) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranVyHd.galaxy:527

    AISetAttackStatus(player, c_TU_SiegeTank, 1, 2, c_continuousMerge);

    if (AIGetTime() < 420) {
        if (AITechCount(player, c_TU_SiegeTank, c_techCountInProgressOrBetter) < 3) {
            return false;

mods/liberty.sc2modbase.sc2data/TriggerLibs/Terran/TerranVyHd.galaxy:591

    AIScoutingEnableWithPreReq(player, 16, c_TU_SCV, 1, c_TB_Barracks, c_techCountCompleteOnly);

    if (AIGetTime() < 510) {
        if (AITechCount(player, c_TU_Banshee, c_techCountInProgressOrBetter) < 6) {
            return false;