# Tech Count
Grammar — Get the number of units of type unitType in progress/made by player player using mask countMask|TechTreeCountType
Flags —Native
|Function
Returns the number of units of the specified unit type that are in progress/made by a player. Includes units in AI queues.
# Arguments
int
— Playerstring
<gamelink::Unit> — UnitTypeint
<preset::TechTreeCountType> — Count Mask
Returns — int
native int AITechCount(
int player,
string aliasType,
int countMask,
);
# Related
Category: AI Advanced / Construction / Functions
- Get Default Build Flags
- Player Has Resources —
bool
— AIHasRes - Tech Count —
int
— AITechCount - Known Unit Count —
int
— AIKnownUnitCount - Get AI Suggested Build Loc —
point
— AIGetBuildingPlacement
# Examples
mods/core.sc2mod — base.sc2data/TriggerLibs/AI.galaxy:575
void AISetStockAlias (int player, int count, string makeType, string aliasType) {
count = count - AITechCount(player, aliasType, c_techCountQueuedOrBetter);
if (count > 0) {
AISetStock(player, count + AITechCount(player, makeType, c_techCountQueuedOrBetter), makeType);
mods/core.sc2mod — base.sc2data/TriggerLibs/AI.galaxy:577
count = count - AITechCount(player, aliasType, c_techCountQueuedOrBetter);
if (count > 0) {
AISetStock(player, count + AITechCount(player, makeType, c_techCountQueuedOrBetter), makeType);
}
}
mods/core.sc2mod — base.sc2data/TriggerLibs/AI.galaxy:582
void AISetStockFree (int player, int count, string makeType, string prereq) {
if (AITechCount(player, prereq, c_techCountCompleteOnly) > 0) {
AISetStock( player, count, makeType );
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeAI.galaxy:244
//--------------------------------------------------------------------------------------------------
void AISetStockAll (int player, string source, int max, string what) {
int make = AITechCount(player, what, c_techCountCompleteOnly)
+ 2 * AITechCount(player, source, c_techCountCompleteOnly);
if (make > max) {
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeAI.galaxy:245
void AISetStockAll (int player, string source, int max, string what) {
int make = AITechCount(player, what, c_techCountCompleteOnly)
+ 2 * AITechCount(player, source, c_techCountCompleteOnly);
if (make > max) {
make = max;
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeAI.galaxy:407
}
want = AITechCount(player, what, c_techCountInProgressOrBetter) + 1;
if (want >= count) {
want = count;
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeBuildAI.galaxy:464
specialChance = 0;
mixedChance = 0;
if (AITechCount(player, c_ZB_Hive, c_techCountCompleteOnly) > 0) {
airChance = AIMeleeDiffSelect(player, 0, 0, 0, 0, 0, 0, 20, 20, 20, 25, 25 );
highTechChance = AIMeleeDiffSelect(player, 0, 0, 0, 0, 0, 0, 20, 20, 20, 25, 25 );
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeBuildAI.galaxy:472
specialChance = 0;
mixedChance = 0;
if (AITechCount(player, c_PB_RoboticsFacility, c_techCountCompleteOnly) > 0) {
highTechChance = AIMeleeDiffSelect(player, 0, 0, 0, 0, 0, 0, 20, 20, 20, 25, 25 );
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeBuildAI.galaxy:479
specialChance = 0;
mixedChance = 0;
if (AITechCount(player, c_TB_Factory, c_techCountCompleteOnly) >= 2) { // only going to have 2 if going mech, so stay mostly mech
highTechChance = AIMeleeDiffSelect(player, 0, 0, 0, 0, 0, 0, 70, 70, 70, 75, 75 );
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:107
// can already make this counter without any new buildings/tech
countMinDesired = 3 + AITechCount(player, what, c_techCountInProgressOrBetter);
countMinDesired = FixedToInt(countMinDesired * multiplier);
if (countMinDesired > countTotal) {
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:130
void AISetAttackStatus (int player, string what, int minAlly, int minSelf, bool merge) {
int numWhat = AITechCount(player, what, c_techCountCompleteOnly);
bool goAttack = false;
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:199
}
AISetFlag(player, e_flagsScouting, AITechCount(player, scout, c_techCountCompleteOnly) >= scoutCount);
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:210
}
if (AITechCount(player, scout, c_techCountCompleteOnly) >= scoutCount) {
if (AITechCount(player, preReq, state) >= count) {
enableScouting = true;
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:211
if (AITechCount(player, scout, c_techCountCompleteOnly) >= scoutCount) {
if (AITechCount(player, preReq, state) >= count) {
enableScouting = true;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:325
fixed defenseEval = 0;
if (AITechCount(player, c_ZB_Hatchery_Alias, c_techCountQueuedOrBetter) >= 2) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:362
fixed defenseEval = 0;
if (AITechCount(player, c_PB_Nexus, c_techCountQueuedOrBetter) >= 2) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeHighAI.galaxy:399
fixed defenseEval = 0;
if (AITechCount(player, c_TB_CommandCenter_Alias, c_techCountQueuedOrBetter) >= 2) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeLowAI.galaxy:428
fixed defenseEval = 0;
if (AITechCount(player, c_TU_SCV, c_techCountQueuedOrBetter) < 14) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeLowAI.galaxy:431
return false;
}
if (AITechCount(player, c_TB_CommandCenter_Alias, c_techCountQueuedOrBetter) >= 2) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeLowAI.galaxy:570
fixed defenseEval = 0;
if (AITechCount(player, c_ZU_Drone, c_techCountQueuedOrBetter) < 13) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeLowAI.galaxy:573
return false;
}
if (AITechCount(player, c_ZB_Hatchery_Alias, c_techCountQueuedOrBetter) >= 2) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeLowAI.galaxy:712
fixed defenseEval = 0;
if (AITechCount(player, c_PU_Probe, c_techCountQueuedOrBetter) < 14) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/MeleeLowAI.galaxy:715
return false;
}
if (AITechCount(player, c_PB_Nexus, c_techCountQueuedOrBetter) >= 2) {
return false;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:948
}
if (AITechCount(player, c_PR_WarpGateResearch, c_techCountCompleteOnly) == 0) {
return;
}
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:1050
return;
}
if (AITechCount(player, c_PB_Pylon, c_techCountCompleteOnly) < 1) {
// wait until we have a pylon to use chronoboost
return;
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1604
}
if (AITechCount(player, c_TR_CycloneDamage, c_techCountCompleteOnly) == 1) {
// LockOn is lower damage without this upgrade and should only be used to attack air by default
// (for AI at least use since we won't take advantage of the movement ability)
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:166
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Zealot, c_techCountCompleteOnly) >= 2) {
AISetAttackStatus(player, c_PU_Stalker, 1, 3, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:171
if (AIGetTime() < 450) {
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 7) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:226
if (AIGetTime() < 300) {
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) < 5) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:274
if (AIGetTime() < 300) {
if (AITechCount(player, c_PB_Gateway, c_techCountInProgressOrBetter) < 1) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:338
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Zealot, c_techCountCompleteOnly) >= 2) {
AISetAttackStatus(player, c_PU_Stalker, 1, 8, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:343
if (AIGetTime() < 510) {
if (AITechCount(player, c_PB_Assimilator, c_techCountInProgressOrBetter) < 2) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:405
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) >= 5) {
AISetAttackStatus(player, c_PU_Immortal, 1, 2, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:410
if (AIGetTime() < 480) {
if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) < 5) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:415
}
if (AITechCount(player, c_PU_Immortal, c_techCountCompleteOnly) >= 1) {
AISetAttackStatus(player, c_PU_Stalker, 2, 5, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossChIn.galaxy:478
if (AIGetTime() < 510) {
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 11) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossEasy.galaxy:20
if (buildType != e_buildType_Air) {
if (AITechCount(player, c_PB_CyberneticsCore, c_techCountCompleteOnly) > 0) {
AISetStock( player, 1, c_PR_WarpGateResearch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:20
if (buildType != e_buildType_Air) {
if (AITechCount(player, c_PB_CyberneticsCore, c_techCountCompleteOnly) > 0) {
AISetStock( player, 1, c_PR_WarpGateResearch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:28
AISetStock( player, 1, c_PR_GroundWeapons1 );
AISetStock( player, 1, c_PR_GroundArmor1 );
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) >= 8) {
AISetStock( player, 1, c_PR_ZealotCharge );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:31
AISetStock( player, 1, c_PR_ZealotCharge );
}
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_StalkerBlink );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:47
if (phase >= c_ldPhaseFinal) {
if (AITechCount(player, c_PU_Colossus, c_techCountInProgressOrBetter) >= 2) {
AISetStock( player, 1, c_PR_ColossusRange );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:50
AISetStock( player, 1, c_PR_ColossusRange );
}
if (AITechCount(player, c_PU_HighTemplar, c_techCountInProgressOrBetter) >= 1) {
AISetStock( player, 1, c_PR_HighTemplarPsiStorm );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:53
AISetStock( player, 1, c_PR_HighTemplarPsiStorm );
}
if (AITechCount(player, c_PU_Sentry, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_SentryHallucination );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:59
AISetStock( player, 1, c_PR_GroundArmor3 );
AISetStock( player, 1, c_PR_Shields3 );
if (AITechCount(player, c_PU_Phoenix, c_techCountInProgressOrBetter) >= 4) {
AISetStock( player, 1, c_PR_PhoenixRange );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:62
AISetStock( player, 1, c_PR_PhoenixRange );
}
if (AITechCount(player, c_PU_Carrier, c_techCountInProgressOrBetter) >= 1) {
AISetStock( player, 1, c_PR_CarrierLaunch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:84
AISetStock( player, 1, c_PR_ObserverSpeed );
AISetStock( player, 1, c_PR_WarpPrismSpeed );
if (AITechCount(player, c_PU_Phoenix, c_techCountInProgressOrBetter) >= 4) {
AISetStock( player, 1, c_PR_PhoenixRange );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHard.galaxy:87
AISetStock( player, 1, c_PR_PhoenixRange );
}
if (AITechCount(player, c_PU_Carrier, c_techCountInProgressOrBetter) >= 1) {
AISetStock( player, 1, c_PR_CarrierLaunch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:166
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Zealot, c_techCountCompleteOnly) >= 2) {
AISetAttackStatus(player, c_PU_Stalker, 1, 3, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:171
if (AIGetTime() < 450) {
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 7) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:226
if (AIGetTime() < 300) {
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) < 5) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:274
if (AIGetTime() < 300) {
if (AITechCount(player, c_PB_Gateway, c_techCountInProgressOrBetter) < 1) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:338
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Zealot, c_techCountCompleteOnly) >= 2) {
AISetAttackStatus(player, c_PU_Stalker, 1, 8, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:343
if (AIGetTime() < 510) {
if (AITechCount(player, c_PB_Assimilator, c_techCountInProgressOrBetter) < 2) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:405
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) >= 5) {
AISetAttackStatus(player, c_PU_Immortal, 1, 2, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:410
if (AIGetTime() < 480) {
if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) < 5) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:415
}
if (AITechCount(player, c_PU_Immortal, c_techCountCompleteOnly) >= 1) {
AISetAttackStatus(player, c_PU_Stalker, 2, 5, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHdVH.galaxy:478
if (AIGetTime() < 510) {
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 11) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:330
// choose either 4-gate or gate-robo to defend
if (AITechCount(player, c_PB_RoboticsFacility, c_techCountInProgressOrBetter) > 0) {
return e_hdBuildIndex_POpenTiming_GateImmortal;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:339
if (AIHighCurrentlyUnderHeavyAttack(player)) {
if (AIGetUserInt(player, c_currentBuildIndex) == e_hdBuildIndex_POpenTiming_DTRush) {
if (AITechCount(player, c_PB_DarkShrine, c_techCountInProgressOrBetter) <= 0) {
// unless we're close to getting dt, switch to four gate
return e_hdBuildIndex_POpenTiming_FourGate;
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:345
}
else if (AIGetUserInt(player, c_currentBuildIndex) == e_hdBuildIndex_POpenTiming_StalkerBlink) {
if (AITechCount(player, c_PR_StalkerBlink, c_techCountInProgressOrBetter) <= 0) {
// unless we're close to getting blink, switch to four gate
return e_hdBuildIndex_POpenTiming_FourGate;
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:368
// choose either 4-gate or gate-robo to defend
if (AITechCount(player, c_PB_RoboticsFacility, c_techCountInProgressOrBetter) > 0) {
return e_hdBuildIndex_POpenTiming_GateImmortal;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:395
// choose either 4-gate or gate-robo to defend
if (AITechCount(player, c_PB_RoboticsFacility, c_techCountInProgressOrBetter) > 0) {
return e_hdBuildIndex_POpenTiming_GateImmortal;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:411
if (currentExactBuild == e_hdBuildIndex_PMidPower_GateVoidPhoenix) {
if (AITechCount(player, c_PB_Stargate, c_techCountInProgressOrBetter) > 0) {
// allowed to keep this build
return e_buildType_Invalid;
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:417
}
else if (currentExactBuild == e_hdBuildIndex_PMidPower_GateAir) {
if (AITechCount(player, c_PB_Stargate, c_techCountInProgressOrBetter) > 0) {
// allowed to keep this build
return e_buildType_Invalid;
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:423
}
else if (currentExactBuild == e_hdBuildIndex_PMidPower_GateColossi) {
if (AITechCount(player, c_PB_RoboticsBay, c_techCountInProgressOrBetter) > 0 &&
AITechCount(player, c_PB_RoboticsFacility, c_techCountInProgressOrBetter) > 0) {
// allowed to keep this build
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:424
else if (currentExactBuild == e_hdBuildIndex_PMidPower_GateColossi) {
if (AITechCount(player, c_PB_RoboticsBay, c_techCountInProgressOrBetter) > 0 &&
AITechCount(player, c_PB_RoboticsFacility, c_techCountInProgressOrBetter) > 0) {
// allowed to keep this build
return e_buildType_Invalid;
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossHigh.galaxy:539
else if (currentLateGame == e_buildType_Air) {
if (!AIEnemyBuildingsOnlyOnOtherIslands(player)) {
if (AITechCount(player, c_PB_Stargate, c_techCountCompleteOnly) < 2) {
needsNewBuild = true;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:20
if (buildType != e_buildType_Air) {
if (AITechCount(player, c_PB_CyberneticsCore, c_techCountCompleteOnly) > 0) {
AISetStock( player, 1, c_PR_WarpGateResearch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:28
AISetStock( player, 1, c_PR_GroundWeapons1 );
AISetStock( player, 1, c_PR_GroundArmor1 );
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) >= 8) {
AISetStock( player, 1, c_PR_ZealotCharge );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:31
AISetStock( player, 1, c_PR_ZealotCharge );
}
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_StalkerBlink );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:47
if (phase >= c_ldPhaseFinal) {
if (AITechCount(player, c_PU_Colossus, c_techCountInProgressOrBetter) >= 2) {
AISetStock( player, 1, c_PR_ColossusRange );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:50
AISetStock( player, 1, c_PR_ColossusRange );
}
if (AITechCount(player, c_PU_HighTemplar, c_techCountInProgressOrBetter) >= 1) {
AISetStock( player, 1, c_PR_HighTemplarPsiStorm );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:56
AISetStock( player, 1, c_PR_GroundArmor3 );
AISetStock( player, 1, c_PR_Shields3 );
if (AITechCount(player, c_PU_Phoenix, c_techCountInProgressOrBetter) >= 4) {
AISetStock( player, 1, c_PR_PhoenixRange );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:59
AISetStock( player, 1, c_PR_PhoenixRange );
}
if (AITechCount(player, c_PU_Carrier, c_techCountInProgressOrBetter) >= 1) {
AISetStock( player, 1, c_PR_CarrierLaunch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:81
AISetStock( player, 1, c_PR_ObserverSpeed );
AISetStock( player, 1, c_PR_WarpPrismSpeed );
if (AITechCount(player, c_PU_Phoenix, c_techCountInProgressOrBetter) >= 4) {
AISetStock( player, 1, c_PR_PhoenixRange );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:84
AISetStock( player, 1, c_PR_PhoenixRange );
}
if (AITechCount(player, c_PU_Carrier, c_techCountInProgressOrBetter) >= 1) {
AISetStock( player, 1, c_PR_CarrierLaunch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMdHd.galaxy:97
AISetStock( player, 1, c_PR_Shields3 );
AISetStock( player, 1, c_PR_WarpGateResearch );
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_ZealotCharge );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMedi.galaxy:20
if (buildType != e_buildType_Air) {
if (AITechCount(player, c_PB_CyberneticsCore, c_techCountCompleteOnly) > 0) {
AISetStock( player, 1, c_PR_WarpGateResearch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMedi.galaxy:36
if (phase >= c_ldPhaseFinal) {
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_ZealotCharge );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMedi.galaxy:39
AISetStock( player, 1, c_PR_ZealotCharge );
}
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_StalkerBlink );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMedi.galaxy:67
if (phase >= c_ldPhaseFinal) {
if (AITechCount(player, c_PU_Phoenix, c_techCountInProgressOrBetter) >= 4) {
AISetStock( player, 1, c_PR_PhoenixRange );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMedi.galaxy:70
AISetStock( player, 1, c_PR_PhoenixRange );
}
if (AITechCount(player, c_PU_Carrier, c_techCountInProgressOrBetter) >= 1) {
AISetStock( player, 1, c_PR_CarrierLaunch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMedi.galaxy:77
AISetStock( player, 1, c_PR_Shields3 );
AISetStock( player, 1, c_PR_WarpGateResearch );
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_ZealotCharge );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossMedi.galaxy:80
AISetStock( player, 1, c_PR_ZealotCharge );
}
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) >= 6) {
AISetStock( player, 1, c_PR_StalkerBlink );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyEy.galaxy:20
if (buildType != e_buildType_Air) {
if (AITechCount(player, c_PB_CyberneticsCore, c_techCountCompleteOnly) > 0) {
AISetStock( player, 1, c_PR_WarpGateResearch );
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:199
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Zealot, c_techCountCompleteOnly) >= 2) {
AISetAttackStatus(player, c_PU_Stalker, 1, 3, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:204
if (AIGetTime() < 450) {
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 7) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:259
if (AIGetTime() < 300) {
if (AITechCount(player, c_PU_Zealot, c_techCountInProgressOrBetter) < 5) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:307
if (AIGetTime() < 300) {
if (AITechCount(player, c_PB_Gateway, c_techCountInProgressOrBetter) < 1) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:371
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Zealot, c_techCountCompleteOnly) >= 2) {
AISetAttackStatus(player, c_PU_Stalker, 1, 8, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:376
if (AIGetTime() < 510) {
if (AITechCount(player, c_PB_Assimilator, c_techCountInProgressOrBetter) < 2) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:438
AISetAttackStatus(player, c_PU_Zealot, 2, 999, c_continuousMerge);
AISetAttackStatus(player, c_PU_Stalker, 2, 999, c_continuousMerge);
if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) >= 5) {
AISetAttackStatus(player, c_PU_Immortal, 1, 2, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:443
if (AIGetTime() < 480) {
if (AITechCount(player, c_PU_Stalker, c_techCountCompleteOnly) < 5) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:448
}
if (AITechCount(player, c_PU_Immortal, c_techCountCompleteOnly) >= 1) {
AISetAttackStatus(player, c_PU_Stalker, 2, 5, c_continuousMerge);
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Protoss/ProtossVyHd.galaxy:511
if (AIGetTime() < 510) {
if (AITechCount(player, c_PU_Stalker, c_techCountInProgressOrBetter) < 11) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:152
if (AIGetTime() < 300) {
if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
(AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {
// wait for 9 to be done and 3 more queued
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:153
if (AIGetTime() < 300) {
if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
(AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {
// wait for 9 to be done and 3 more queued
return false;
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:223
if (AIGetTime() < 390) {
if (AITechCount(player, c_TU_Reaper, c_techCountCompleteOnly) < 4) {
return false;
}
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:267
if (AIGetTime() < 300) {
if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
(AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {
// wait for 9 to be done and 3 more queued
mods/liberty.sc2mod — base.sc2data/TriggerLibs/Terran/TerranChIn.galaxy:268
if (AIGetTime() < 300) {
if ( (AITechCount(player, c_TU_Marine, c_techCountCompleteOnly) < 9) ||
(AITechCount(player, c_TU_Marine, c_techCountInProgressOrBetter) < 12) ) {
// wait for 9 to be done and 3 more queued
return false;