Skip to content

Instantly share code, notes, and snippets.

@tantalor
Created February 15, 2011 00:03
Show Gist options
  • Save tantalor/826840 to your computer and use it in GitHub Desktop.
Save tantalor/826840 to your computer and use it in GitHub Desktop.
Starcraft 2 counters for basic units (node)
var
ZERGLING = 'Zergling',
ROACH = 'Roach',
HYDRALISK = 'Hydralisk',
BANELING = 'Baneling',
MARINE = 'Marine',
HELLION = 'Hellion',
MARAUDER = 'Marauder',
REAPER = 'Reaper',
TANK = 'Siege Tank',
ZEALOT = 'Zealot',
SENTRY = 'Sentry',
STALKER = 'Stalker',
IMMORTAL = 'Immortal';
var
ZERG = 'Zerg',
TERRAN = 'Terran',
PROTOSS = 'Protoss';
var UNITS = {
ZERG: [ZERGLING, ROACH, HYDRALISK, BANELING],
TERRAN: [MARINE, HELLION, MARAUDER, REAPER, TANK],
PROTOSS: [ZEALOT, SENTRY, STALKER, IMMORTAL]
};
var
ARMORED = [ROACH, STALKER, MARAUDER, IMMORTAL, TANK],
LIGHT = [MARINE, HELLION, ZEALOT, HYDRALISK, ZERGLING, REAPER, SENTRY];
var BONUS = new Object();
BONUS[ROACH] = ARMORED;
BONUS[STALKER] = ARMORED;
BONUS[MARAUDER] = ARMORED;
BONUS[IMMORTAL] = ARMORED;
BONUS[TANK] = ARMORED;
BONUS[BANELING] = LIGHT;
BONUS[HELLION] = LIGHT;
BONUS[REAPER] = LIGHT;
var COUNTER = new Object();
COUNTER[ZERGLING] = [STALKER, MARAUDER, HYDRALISK, IMMORTAL, SENTRY],
COUNTER[ROACH] = [ZEALOT, BANELING, HELLION, ZEALOT],
COUNTER[HYDRALISK] = [],
COUNTER[BANELING] = [ZERGLING, MARINE, ZEALOT],
COUNTER[MARINE] = [MARAUDER, HYDRALISK, IMMORTAL],
COUNTER[HELLION] = [ZEALOT, ZERGLING, SENTRY],
COUNTER[MARAUDER] = [HELLION, ROACH, STALKER],
COUNTER[REAPER] = [ZEALOT, ZERGLING],
COUNTER[TANK] = [MARINE, HYDRALISK, ZERGLING, REAPER],
COUNTER[ZEALOT] = [MARAUDER, IMMORTAL, HYDRALISK],
COUNTER[STALKER] = [REAPER, HELLION, SENTRY],
COUNTER[SENTRY] = [],
COUNTER[IMMORTAL] = [STALKER, ROACH, TANK]
function weak_against (u) {
var units = [];
for (var v in COUNTER) {
if (COUNTER[v].contains(u)) {
units.push(v);
}
}
for (var v in BONUS) {
if (u !== v && BONUS[v].contains(u) && !COUNTER[u].contains(v)) {
units.splice(units.indexOf(v), 1, v+" (bonus)");
}
}
return units.sort().join(", ") || "None";
}
function strong_against (u) {
var units = COUNTER[u].concat();
if (u in BONUS) {
for (var i = 0; i < BONUS[u].length; i++) {
var v = BONUS[u][i];
units.splice(units.indexOf(v), 1, v+" (bonus)");
}
}
return units.sort().join(", ") || "None";
}
Array.prototype.contains = function (o) {
return this.indexOf(o) >= 0;
}
var sys = require('sys');
var print = function (s) { sys.print(s+"\n") };
for (var race in UNITS) {
print("# "+race);
for (var i = 0; i < UNITS[race].length; i++) {
var unit = UNITS[race][i];
print("## "+unit);
print(" * strong against: "+strong_against(unit));
print(" * weak against: "+weak_against(unit));
print("");
}
}

ZERG

Zergling

  • strong against: Hydralisk, Immortal, Marauder, Sentry, Stalker
  • weak against: Baneling (bonus), Hellion (bonus), Reaper (bonus), Siege Tank

Roach

  • strong against: Baneling, Hellion, Siege Tank (bonus), Zealot
  • weak against: Marauder (bonus), Siege Tank (bonus)

Hydralisk

  • strong against: None
  • weak against: Marine, Reaper (bonus), Siege Tank, Zergling

Baneling

  • strong against: Marine (bonus), Sentry (bonus), Zergling (bonus)
  • weak against: Roach

TERRAN

Marine

  • strong against: Hydralisk, Immortal, Marauder
  • weak against: Baneling (bonus), Reaper (bonus)

Hellion

  • strong against: Sentry (bonus), Zealot (bonus), Zergling (bonus)
  • weak against: Marauder, Reaper (bonus), Roach

Marauder

  • strong against: Hellion, Roach (bonus), Siege Tank (bonus)
  • weak against: Marine, Siege Tank (bonus), Zergling

Reaper

  • strong against: Sentry (bonus), Zealot (bonus)
  • weak against: Hellion (bonus), Siege Tank

Siege Tank

  • strong against: Hydralisk, Marine, Siege Tank (bonus), Zergling
  • weak against: Immortal (bonus)

PROTOSS

Zealot

  • strong against: Hydralisk, Immortal, Marauder
  • weak against: Baneling (bonus), Hellion (bonus), Reaper (bonus), Roach

Sentry

  • strong against: None
  • weak against: Hellion (bonus), Reaper (bonus), Zergling

Stalker

  • strong against: Hellion, Reaper, Siege Tank (bonus)
  • weak against: Marauder (bonus), Siege Tank (bonus), Zergling

Immortal

  • strong against: Roach (bonus), Siege Tank (bonus), Stalker (bonus)
  • weak against: Marauder (bonus), Marine, Zergling
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment