use utf8;
use strict;
+my $V = v5.0.11;
my $RT = 1.4; # real-time speed factor to faster
my $hots = do 'sc-units-hots.inc.pl' or die $!;
for my $row (@{$hots}) {
ref $row eq 'HASH' or next;
for ($row, @{ $row->{special} }, @{ $row->{upgrade} }) {
- $_ *= $RT for $_->{speed};
- $_ /= $RT for $_->{build}, $_->{warp} // ();
- $_->{cooldown} /= $RT for @{ $_->{attack} // [] };
+ $_ *= $RT for $_->{speed} // ();
+ $_ /= $RT for $_->{build} // (), $_->{transform} // (), $_->{warp} // (), $_->{cooldown} // ();
+ $_->{cooldown} and $_->{cooldown} /= $RT for @{ $_->{attack} // [] };
}
$unit{ lc $row->{name} =~ tr/ /_/r } = $row;
}
[
-'patch 4.1.4',
+sprintf('patch %vd', $V),
# protoss
$unit{probe},
+
$unit{photon_cannon},
-$unit{mothership},
-$unit{nexus},
-$unit{zealot},
-$unit{sentry},
-$unit{stalker},
+
+{
+ %{ $unit{mothership} },
+ speed => 2.62,
+ special => [
+ $unit{mothership}->{special}->[0], # cf
+ $unit{mothership}->{special}->[1], # mr
+ {
+ %{ $unit{mothership}->{special}->[2] }, # tw
+ desc => $V lt v4.11.0 ? 'create a temporal field which slows ground units by 50%'
+ : 'create a temporal field which slows ground and air units by 50%',
+ },
+ ],
+},
+
+{
+ %{ $unit{nexus} },
+ attack => [],
+ energy => 50,
+ capacity => 200,
+ special => [
+ $unit{nexus}->{special}->[0], # chrono boost
+ {
+ name => $V lt v4.7.1 ? 'Mass Recall' : 'Strategic Recall',
+ abbr => 'sr',
+ desc => 'recalls units owned by the player in the target area to the Nexus',
+ cost => 50,
+ cooldown => $V lt v4.7.1 || $V ge v4.10.1 ? 130 : 85,
+ radius => $V lt v4.7.1 ? 6.5 : 2.5,
+ duration => 3.6, # +.7 warp in
+ },
+ $V lt v4.12.0 ? () : {
+ name => 'Battery Overcharge',
+ abbr => 'bo',
+ desc => sprintf(
+ 'increase target Shield Battery restoration rate by %d%% and function without consuming energy for 14s',
+ $V ge v5.0.11 ? 50 : 100,
+ ),
+ cost => 50,
+ duration => 14,
+ cooldown => 60, # shared by all nexuses
+ range => 8, # within any friendly nexus
+ },
+ ],
+},
+
+{
+ %{ $unit{zealot} },
+ special => [
+ {
+ name => 'Charge',
+ abbr => 'ch',
+ desc => 'on attack, increases movement speed to 8.47 for 2.5s and deals 8 damage on hit',
+ min => 100, # changed in 3.14.0
+ gas => 100,
+ build => 100,
+ speed => .5,
+ range => 4,
+ duration => 2.5,
+ cooldown => 7,
+ },
+ ],
+ upgrade => [
+ {
+ name => 'Charge',
+ speed => $V lt v4.11.0 ? .98 : 1.57,
+ },
+ ],
+},
+
+{
+ %{ $unit{sentry} },
+ build => $V ge v5.0.11 ? 22.9 : 26.4,
+ speed => $V ge v5.0.11 ? 3.5 : 3.15,
+ special => [
+ $unit{sentry}->{special}->[0], # ff
+ {
+ %{ $unit{sentry}->{special}->[1] }, # gs
+ radius => $V lt v4.7.1 ? 4 : 4.5,
+ },
+ {
+ %{ $unit{sentry}->{special}->[2] }, # hl
+ cost => $V lt v4.7.1 ? 100 : 75,
+ },
+ ],
+},
+
+{
+ %{ $unit{stalker} },
+ attack => [
+ {
+ %{ $unit{stalker}->{attack}->[0] }, # particle disruptors
+ damage => 13,
+ bonus => {
+ armored => 5,
+ -armored => 1,
+ },
+ cooldown => 1.34,
+ },
+ ],
+},
+
{
race => 'protoss',
cat => 'gateway',
name => 'Adept',
+ pop => 2,
+ min => 100,
+ gas => 25,
+ build => $V lt v4.8.2 ? 27 : 30,
+ warp => 20,
+ size => 1,
+ cargo => 2,
+ armor => 1,
+ hp => 70,
+ shield => 70,
+ attr => {
+ light => 1,
+ organic => 1,
+ },
+ attack => [
+ {
+ anti => 1,
+ name => undef, #TODO
+ damage => 10,
+ upgrade => 1,
+ bonus => {
+ light => 12,
+ -light => 1,
+ },
+ type => 'projectile', #XXX: assumption
+ cooldown => 1.61,
+ range => 4,
+ },
+ ],
+ speed => 3.5,
+ sight => 9,
+ special => [
+ {
+ name => 'Psionic Transfer',
+ abbr => 'pt',
+ desc => 'project shade, teleport after 7s',
+ cooldown => 11,
+
+ alt => 'Shade',
+ build => 0,
+ size => 0,
+ cargo => 0,
+ hp => -1,
+ attack => [], #TODO: indicate diff from parent
+ speed => 5, #XXX: faster than 3.5
+ range => 7, #XXX: calculate from speed
+ sight => 4,
+ },
+ ],
+ upgrade => [
+ {
+ name => 'Resonating Glaives',
+ min => 100,
+ gas => 100,
+ build => 100,
+ attack => [
+ {
+ cooldown => $V lt v4.11.0 || $V ge v4.11.3 ? -.5 : -.6, # +45%/60%
+ },
+ ],
+ },
+ ],
},
-$unit{high_templar},
-$unit{dark_templar},
+
+{
+ %{ $unit{high_templar} },
+ speed => $V ge v5.0.11 ? 2.82 : 2.63,
+ attack => [
+ {
+ anti => 1,
+ name => '?', #XXX
+ damage => 4,
+ upgrade => 1,
+ cooldown => 1.25,
+ range => 6,
+ },
+ ],
+ special => [
+ {
+ $unit{high_templar}->{special}->[0], # fb
+ range => $V lt v4.12.0 ? 9 : 10,
+ },
+ $unit{high_templar}->{special}->[1], # ps
+ ],
+},
+
+{
+ %{ $unit{dark_templar} },
+ special => [
+ $unit{dark_templar}->{special}->[0], # cl
+ {
+ name => 'Shadow Stride',
+ abbr => 'bl',
+ desc => sprintf('teleport to visible location, %.2fs attack delay afterwards', $V ge v5.0.11 ? .71 : .75),
+ min => 100,
+ gas => 100,
+ build => $V lt v4.7.1 ? 121 : 100,
+ range => 8,
+ cooldown => $V lt v4.7.1 ? 21 : 14,
+ },
+ ],
+},
+
$unit{archon},
-$unit{observer},
-$unit{warp_prism},
+
+{
+ %{ $unit{observer} },
+ speed => $V ge v5.0.11 ? 2.82 : $V lt v4.8.2 || $V ge v4.11.0 ? 2.63 : 3.01,
+ size => $V ge v5.0.11 ? 1.1 : 1,
+ special => [
+ $unit{observer}->{special}->[0], # cloak
+ {
+ name => 'Surveillance Mode',
+ abbr => 'sm',
+ desc => 'gain 25% vision while immobilized',
+ speed => 0,
+ sight => 2.75, # +25%
+ transform => .54,
+ },
+ ],
+},
+
+{
+ %{ $unit{warp_prism} },
+ hp => 80,
+ min => $V lt v4.10.1 ? 200 : 250,
+ range => $V lt v4.10.1 ? 6 : 5, # pickup
+ upgrade => [
+ {
+ %{ $unit{warp_prism}->{special}->[0] }, # gravitic drive
+ speed => 1.23,
+ },
+ ],
+},
+
$unit{immortal},
-$unit{colossus},
+
+{
+ %{ $unit{colossus} },
+ attack => [
+ {
+ %{ $unit{colossus}->{attack}->[0] }, # thermal lances
+ damage => 10,
+ upgrade => 1,
+ bonus => {
+ light => 5,
+ -light => 1,
+ },
+# cooldown => 1.18, #XXX
+ },
+ ],
+},
+
{
race => 'protoss',
cat => 'robotic',
name => 'Disruptor',
+ pop => 3,
+ min => 150,
+ gas => 150,
+ build => 36,
+ size => 1,
+ cargo => 4,
+ armor => 1,
+ hp => 100,
+ shield => 100,
+ attr => {
+ armored => 1,
+ mech => 1,
+ },
+ attack => [
+ {
+ anti => 1,
+ name => 'Purification Nova',
+ damage => 145,
+ bonus => {
+ shields => 55,
+ },
+ type => 'trans', #TODO: indicate
+ splash => $V ge v5.0.11 ? 1.375 : 1.5,
+ cooldown => 14.3,
+ range => 13, # 2s
+ },
+ ],
+ speed => 3.15,
+ sight => 9,
},
+
$unit{phoenix},
-$unit{void_ray},
-$unit{oracle},
-$unit{tempest},
-$unit{carrier},
+
+{
+ %{ $unit{void_ray} },
+ min => $V lt v5.0.9 && $V ge v5.0.2 ? 200 : 250,
+ speed => $V lt v5.0.2 ? 3.5 : 3.85,
+ build => $V lt v5.0.9 && $V ge v5.0.2 ? 37 : 43,
+ upgrade => [
+ {
+ name => 'Flux Vanes',
+ min => 100,
+ gas => 100,
+ build => 57,
+ speed => $V lt v5.0.2 ? 1.15 : .798,
+ },
+ ],
+},
+
+{
+ %{ $unit{oracle} },
+ build => 37,
+ attr => {
+ $V lt v4.8.2 ? 'light' : 'armored' => 1,
+ mech => 1,
+ psionic => 1,
+ flying => 1,
+ },
+ attack => [
+ {
+ %{ $unit{oracle}->{attack}->[0] }, # pulsar beam
+ bonus => {
+ light => 7,
+ },
+ },
+ ],
+ special => [
+ {
+ name => 'Revelation',
+ abbr => 'rv',
+ desc => 'hit enemy units and buildings are revealed for ½ minute',
+ cost => $V lt v4.12.0 ? 50 : 25,
+ range => 9,
+ cooldown => $V lt v4.12.0 ? 2 : 10,
+ duration => $V lt v4.12.0 ? 30 : $V lt v5.0.2 ? 15 : 20,
+ radius => 6,
+ detect => 1,
+ },
+ {
+ name => 'Stasis Ward',
+ abbr => 'sw',
+ desc => 'places ward for 170s',
+ cost => 50,
+ range => 6,
+ build => 3.58,
+ duration => 170,
+ alt => 'Stasis Ward',
+ hp => 30,
+ shield => 30,
+ armor => 0,
+ attr => {
+ light => 1,
+ structure => 1,
+ },
+ sight => 0,
+ speed => 0,
+ special => [
+ {
+ name => 'Permanent Cloak',
+ abbr => 'cl',
+ desc => 'cloaked at all times',
+ duration => -1,
+ },
+ {
+ name => 'Stasis Trap',
+ abbr => 'st',
+ desc => 'triggered by nearby ground units, trapping them for 21½s',
+ },
+ ],
+ },
+ ],
+},
+
+{
+ %{ $unit{tempest} },
+ hp => $V lt v4.7.1 ? 300 : $V lt v4.11.0 ? 150 : 200,
+ shield => $V lt v4.7.1 ? 150 : $V lt v4.11.0 ? 125 : 100,
+ min => $V lt v4.7.1 ? 300 : 250,
+ gas => $V lt v4.7.1 ? 200 : 175,
+ pop => $V lt v4.7.1 ? 6 : 5,
+ speed => $V lt v4.7.1 ? 2.63 : $V lt v4.8.2 ? 3.5 : 3.15,
+ attack => [
+ {
+ %{ $unit{tempest}->{attack}->[0] }, # kinetic overload
+ bonus => {
+ massive => 22,
+ -massive => 2,
+ },
+ range => $V lt v4.11.0 ? 15 : 14,
+ },
+ {
+ %{ $unit{tempest}->{attack}->[1] }, # resonance coil
+ bonus => {
+ structure => 0,
+ },
+ damage => 40,
+ upgrade => 4,
+ },
+ ],
+ upgrade => [
+ $V lt v5.0.2 ? () : {
+ name => 'Tectonic Destabilizers',
+ attack => [
+ {},
+ {
+ bonus => {
+ structure => 40,
+ },
+ },
+ ],
+ min => 150,
+ gas => 150,
+ build => 100,
+ },
+ ],
+},
+
+{
+ %{ $unit{carrier} },
+ hp => $V lt v4.7.1 ? 250 : 300,
+ build => $V lt v4.7.1 ? 86 : 64,
+ special => [
+ {
+ %{ $unit{carrier}->{special}->[0] }, # interceptor
+ min => 5,
+ build => $V lt v4.7.1 ? 6 : $V lt v4.10.1 ? 11 : 9,
+ },
+ ],
+ $V lt v4.7.1 ? () : (upgrade => []), # remove Graviton Catapult
+},
# terran
$unit{mule},
$unit{missile_turret},
$unit{planetary_fortress},
+
$unit{marine},
-$unit{marauder},
-$unit{reaper},
-$unit{ghost},
-$unit{hellion},
-$unit{hellbat},
-$unit{widow_mine},
-$unit{siege_tank},
+
+{
+ %{ $unit{marauder} },
+ attack => [
+ {
+ %{ $unit{marauder}->{attack}->[0] }, # punisher grenades
+ count => $V lt v4.3.0 ? 2 : 1,
+ damage => $V lt v4.3.0 ? 5 : 10,
+ upgrade => 1,
+ bonus => {
+ armored => $V lt v4.3.0 ? 5 : 10,
+ -armored => $V lt v4.3.0 ? 0 : 1,
+ },
+ },
+ ],
+},
+
+{
+ %{ $unit{reaper} },
+ build => 32,
+},
+
+{
+ %{ $unit{ghost} },
+ min => 150,
+ gas => 125,
+ speed => 3.94,
+ special => [
+ {
+ # replaces Sniper Round
+ name => 'Steady Targeting',
+ abbr => 'st',
+ desc => '170 damage ignoring armor to a biological unit after 1.43s without damage',
+ cost => 50,
+ range => 10, # kept until 14
+ duration => 1.43,
+ },
+ {
+ %{ $unit{ghost}->{special}->[1] }, # emp round
+ radius => $V ge v5.0.11 ? 1.75 : $V lt v4.10.1 ? 1.5 : 2,
+ },
+ $unit{ghost}->{special}->[2], # cloak
+ $unit{ghost}->{special}->[3], # tac nuke strike
+ ],
+ upgrade => [
+ $V ge v5.0.11 || $V lt v4.10.1 ? () : {
+ name => 'Enhanced Shockwaves',
+ min => 150,
+ gas => 150,
+ build => 79,
+ special => [
+ {},
+ { radius => .5 }, # emp
+ {},
+ {},
+ ],
+ },
+ ],
+},
+
+{
+ %{ $unit{hellion} },
+ attack => [
+ {
+ %{ $unit{hellion}->{attack}->[0] }, # infernal flamethrower
+ bonus => {
+ light => 5,
+ -light => 0,
+ },
+ },
+ ],
+ #TODO smart servos
+},
+
+{
+ %{ $unit{hellbat} },
+ special => [
+ $unit{hellbat}->{special}->[0], # Hellion Mode
+ {
+ name => 'Smart Servos',
+ min => 100,
+ gas => 100,
+ build => 79,
+ transform => -1.43, # halve #TODO: alter special duration?
+ },
+ ],
+},
+
+{
+ %{ $unit{widow_mine} },
+ build => 21,
+ attack => [
+ {
+ %{ $unit{widow_mine}->{attack}->[0] }, # Sentinel Missiles
+ bonus => {
+ shields => 25,
+ },
+ transform => $V lt v5.0.9 ? .71 : 1.07,
+ },
+ ],
+},
+
+{
+ %{ $unit{siege_tank} },
+ hp => 175,
+ special => [
+ {
+ %{ $unit{siege_tank}->{special}->[0] }, # siege mode
+ attack => [
+ {
+ %{ $unit{siege_tank}->{special}->[0]->{attack}->[0] }, # shock cannon
+ damage => 40,
+ upgrade => 4,
+ bonus => {
+ armored => 30,
+ -armored => 1,
+ },
+ cooldown => 2.14,
+ },
+ ],
+ },
+ ],
+},
+
{
race => 'terran',
cat => 'factory',
name => 'Cyclone',
+ pop => 3,
+ min => 150,
+ gas => 100,
+ build => 32,
+ size => 1.5,
+ cargo => 3,
+ armor => 1,
+ hp => $V lt v4.7.1 ? 180 : 120,
+ attr => {
+ armored => 1,
+ mech => 1,
+ },
+ attack => [
+ {
+ anti => 1,
+ name => $V lt v4.7.1 ? 'Tornado Blaster' : 'Typhoon Missile Pod',
+ damage => $V lt v4.7.1 ? 3 : 18,
+ upgrade => $V lt v4.7.1 ? 1 : 2,
+ bonus => $V ge v4.7.1 ? {} : {
+ armored => 2,
+ -armored => 0,
+ },
+ cooldown => $V lt v4.7.1 ? .1 : .71,
+ range => $V lt v4.7.1 ? 6 : 5,
+ },
+ ],
+ speed => $V lt v4.7.1 ? 4.13 : 4.73,
+ sight => 11,
+ special => [
+ {
+ name => 'Lock On',
+ abbr => 'lo',
+ desc => (
+ $V ge v5.0.11 ? 'deal 400 damage (600 after upgrade) over 14 seconds' :
+ $V ge v4.7.1 ? 'deal 400 damage (double to armored after upgrade) over 14 seconds' :
+ 'target air for 160 damage ignoring armor while visible and within 15 range'
+ ),
+ range => 7,
+ duration => 14.3,
+ cooldown => 4,
+ },
+ $V ge v4.7.1 ? () : {
+ name => 'Rapid Fire Launchers',
+ abbr => 'rf',
+ desc => 'rapid first 12 Lock On shots',
+ min => 75,
+ gas => 75,
+ build => 79,
+ },
+ ],
+ upgrade => [
+ $V lt v4.7.1 ? () : {
+ name => 'Mag-Field Accelerator',
+ min => 100,
+ gas => 100,
+ build => $V lt v4.8.2 ? 79 : 100,
+ desc => 'increases lock-on damage by '.($V ge v5.0.11 ? '50%' : '100% vs armored'),
+ },
+ ],
},
-$unit{thor},
-$unit{viking},
-$unit{medivac},
+
+{
+ %{ $unit{thor} },
+ armor => $V ge v3.14.0 && $V lt v4.7.1 ? 2 : 1,
+ attack => [
+ $unit{thor}->{attack}->[0], # thor's hammer
+ $unit{thor}->{attack}->[1], # javelin missiles
+ {
+ %{ $unit{thor}->{attack}->[2] }, # punisher cannons
+ name => 'High Impact Payload',
+ damage => $V lt v4.7.1 ? 35 : $V lt v4.11.0 ? 40 : 25,
+ upgrade => 3,
+ bonus => {
+ $V lt v4.7.1 ? 'armored' : 'massive' => $V lt v4.11.0 ? 15 : 10,
+ $V lt v4.7.1 ? '-armored' : '-massive' => 2,
+ },
+ cooldown => $V lt v4.7.1 ? 2.14 : $V lt v4.11.0 ? 1.71 : .9,
+ range => $V lt v4.8.2 ? 10 : 11,
+ },
+ ],
+ #TODO smart servos
+},
+
+{
+ %{ $unit{viking} },
+ hp => $V lt v4.3.0 ? 125 : 135,
+},
+
+{
+ %{ $unit{medivac} },
+ special => [
+ $unit{medivac}->{special}->[0], # heal
+ {
+ %{ $unit{medivac}->{special}->[1] }, # ignite afterburners
+ desc => 'boost speed and accelleration to 4.25 for 8s',
+ speed => 5.94,
+ duration => $V lt v4.7.1 ? 6.43 : 4.29,
+ cooldown => $V lt v4.11.0 ? 20 : 14,
+ -cooldown => 9,
+ },
+ ],
+ upgrade => [
+ {
+ name => 'Rapid Reignition System',
+ min => 100,
+ gas => 100,
+ build => 57,
+ speed => .63,
+ },
+ ],
+},
+
{
race => 'terran',
cat => 'starport',
name => 'Liberator',
+
+ pop => 3,
+ min => 150,
+ gas => $V ge v5.0.11 ? 125 : 150,
+ build => 43,
+ size => 1.5,
+ armor => 0,
+ hp => 180,
+ attr => {
+ armored => 1,
+ mech => 1,
+ flying => 1,
+ },
+ attack => [
+ {
+ anti => 2,
+ name => 'Lexington Rockets',
+ damage => 5,
+ upgrade => 1,
+ type => 'projectile',
+ cooldown => 1.29,
+ count => 2,
+ range => 5,
+ },
+ ],
+ special => [
+ {
+ name => 'Defender Mode',
+ abbr => 'dm',
+ transform => 2.88, # 1.46s to revert
+ alt => 'Defender Liberator',
+ attack => [
+ {
+ anti => 1,
+ name => 'Concord Cannon',
+ desc => 'within 5 diameter circle',
+ damage => 75,
+ upgrade => 5,
+ cooldown => 1.14,
+ range => 10,
+ },
+ ],
+ speed => 0,
+ sight => 15, # only targeted area
+ upgrade => [
+ {
+ name => 'Advanced Ballistics',
+ min => 150,
+ gas => 150,
+ build => 79,
+ attack => [
+ {
+ range => 4,
+ },
+ ],
+ sight => 4,
+ },
+ ],
+ },
+ ],
+ speed => 4.72,
+ sight => 10,
+},
+
+{
+ %{ $unit{banshee} },
+ speed => 3.85,
+ upgrade => [
+ {
+ name => 'Hyperflight Rotors',
+ speed => 1.4,
+ min => $V ge v5.0.11 ? 125 : $V ge v4.7.1 ? 150 : 200,
+ gas => $V ge v5.0.11 ? 125 : $V ge v4.7.1 ? 150 : 200,
+ build => $V ge v5.0.11 ? 100 : 121.4,
+ },
+ ],
+},
+
+{
+ %{ $unit{raven} },
+ gas => $V ge v5.0.11 ? 150 : 200,
+ build => $V ge v5.0.11 ? 34.3 : 42.9,
+ speed => $V lt v4.11.0 ? 3.85 : 4.13,
+ upgrade => $V ge v5.0.11 ? [] : $unit{raven}->{upgrade}, # corvid reactor
+ special => [
+ {
+ %{ $unit{raven}->{special}->[0] }, # auto-turret
+ attack => [
+ {
+ anti => 3,
+ name => '12 mm Gauss Cannon',
+ damage => 18,
+ cooldown => .57,
+ range => 6,
+ },
+ ],
+ hp => $V ge v5.0.11 ? 100 : 150,
+ armor => $V ge v5.0.11 ? 0 : 1,
+ range => $V lt v4.3.0 ? 1 : 2,
+ duration => $V ge v5.0.11 ? 7.9 : 10,
+ upgrade => [
+ $unit{raven}->{special}->[0]->{upgrade}->[0], # hi-sec auto tracking
+ $unit{raven}->{special}->[0]->{upgrade}->[1], # structure armor
+ # no more durable materials
+ ],
+ },
+ {
+ name => 'Interference Matrix',
+ abbr => 'im',
+ desc => 'disable target mech or psionic unit rendering it unable to attack or cast',
+ cost => $V lt v4.11.0 ? 50 : 75,
+ range => 9,
+ duration => $V lt v4.11.0 ? 7.9 : 11,
+ },
+ {
+ name => 'Anti-Armor Missile',
+ abbr => 'aa',
+ desc => sprintf('launches missile %s reduce armor by %d',
+ $V lt v4.7.1 ? 'to do splash damage and' : 'to',
+ $V ge v5.0.11 ? 2 : 3,
+ ),
+ range => 10,
+ size => 2.88,
+ attack => [
+ {
+ damage => $V lt v4.3.0 ? 30 : $V lt v4.7.1 ? 15 : 0,
+ splash => 1,
+ },
+ ],
+ cost => 75,
+ duration => 21,
+ },
+ ],
+},
+
+{
+ %{ $unit{battlecruiser} },
+ attack => [
+ $unit{battlecruiser}->{attack}->[0], # ats laser
+ {
+ %{ $unit{battlecruiser}->{attack}->[1] }, # ata laser
+ damage => $V lt v4.7.1 ? 6 : 5,
+ },
+ ],
+ special => [
+ {
+ name => 'Tactical Jump',
+ abbr => 'tj',
+ desc => 'warps to the target location after 5s (invulnerable after 1s)',
+ duration => 4,
+ cooldown => 71,
+ },
+ {
+ %{ $unit{battlecruiser}->{special}->[0] }, # yc
+ desc => '240 damage to a single target',
+ attack => [
+ {
+ damage => 240,
+ },
+ ],
+ cost => undef,
+ cooldown => 71,
+ },
+ ],
+ upgrade => [],
},
-$unit{banshee},
-$unit{raven},
-$unit{battlecruiser},
# zerg
-$unit{larva},
$unit{drone},
-$unit{queen},
-$unit{overlord},
-$unit{overseer},
+
+{
+ %{ $unit{queen} },
+ attack => [
+ $unit{queen}->{attack}->[0], # claws
+ {
+ %{ $unit{queen}->{attack}->[1] }, # acid spines
+ range => $V lt v4.12.0 ? 8 : 7,
+ },
+ ],
+ range => 8,
+},
+
+{
+ %{ $unit{overlord} },
+ speed => .902, # changed in 4.0.0
+ upgrade => [
+ {
+ %{ $unit{overlord}->{upgrade}->[0] }, # carapace
+ speed => 2.63-.902,
+ },
+ $unit{overlord}->{upgrade}->[1], # sacs
+ ],
+},
+
+{
+ %{ $unit{overseer} },
+ special => [
+ {
+ name => 'Oversight Mode',
+ abbr => 'om',
+ desc => 'gain 25% vision while immobilized',
+ speed => 0,
+ sight => 11 * 1.25,
+ transform => .54,
+ },
+ @{ $unit{overseer}->{special} }, # changeling, contaminate
+ ],
+},
+
$unit{larva},
$unit{spine_crawler},
-$unit{spore_crawler},
+
+{
+ %{ $unit{spore_crawler} },
+ attack => [
+ {
+ %{ $unit{spore_crawler}->{attack}->[0] }, # seeker spores
+ bonus => {
+ organic => 15,
+ },
+ },
+ ],
+ speed => (1.5),
+ creep => 2.6,
+},
+
$unit{zergling},
-$unit{baneling},
-$unit{roach},
+
+{
+ %{ $unit{baneling} },
+ min => 25,
+ attack => [
+ {
+ %{ $unit{baneling}->{attack}->[0] }, # volatile burst
+ damage => $V lt v4.12.0 ? 20 : $V lt v5.0.2 ? 18 : 15,
+ bonus => {
+ light => $V lt v4.12.0 ? 15 : $V lt v5.0.2 ? 17 : 20,
+ -light => 2,
+ structure => 80,
+ -structure => 5,
+ },
+ splash => 1,
+ range => 0,
+ },
+ ],
+ upgrade => [
+ {
+ %{ $unit{baneling}->{upgrade}->[0] }, # centrifugal hooks
+ hp => 5,
+ },
+ ],
+},
+
+{
+ %{ $unit{roach} },
+ special => [
+ {
+ %{ $unit{roach}->{special}->[0] }, # rapid regeneration
+ desc => 'regenerates health at 7 HP/s while burrowed',
+ },
+ {
+ %{ $unit{roach}->{special}->[1] }, # tunneling claws
+ min => $V lt v4.7.1 ? 150 : 100,
+ gas => $V lt v4.7.1 ? 150 : 100,
+ build => 79,
+ desc => 'move while burrowed at speed of 2.8',
+ },
+ ],
+},
+
{
race => 'zerg',
cat => 'hatchery',
name => 'Ravager',
+ base => ['Roach'],
+ pop => 3,
+ min => 25,
+ gas => 75,
+ build => $V ge v5.0.11 ? 12.14 : 8.57+.36, # added max random
+ size => 1.5,
+ cargo => 4,
+ armor => 1,
+ hp => 120,
+ attr => {
+ organic => 1,
+ },
+ attack => [
+ {
+ anti => 1,
+ name => '?',
+ damage => 16,
+ upgrade => 2,
+ type => 'projectile',
+ cooldown => 1.14,
+ range => 6,
+ },
+ ],
+ speed => 3.85,
+ creep => 1.3,
+ sight => 9,
+},
+
+{
+ %{ $unit{hydralisk} },
+ hp => 90,
+ upgrade => [
+ {
+ %{ $unit{hydralisk}->{upgrade}->[0] }, # grooved spines
+ attack => [
+ {
+ range => 2,
+ },
+ ],
+ },
+ $unit{hydralisk}->{upgrade}->[1], # muscular augments
+ ],
},
-$unit{hydralisk},
+
{
race => 'zerg',
cat => 'lair',
name => 'Lurker',
+ base => ['Hydralisk'],
+ pop => 3,
+ min => 50,
+ gas => 100,
+ build => 18,
+ cargo => 4,
+ armor => 1,
+ hp => 200,
+ attr => {
+ armored => 1,
+ organic => 1,
+ },
+ attack => [
+ {
+ anti => 1,
+ name => 'Spines',
+ damage => 20,
+ upgrade => 2,
+ splash => 'line',
+ cooldown => 1.43,
+ range => $V lt v4.11.0 ? 9 : 8,
+ bonus => {
+ armored => 10,
+ -armored => 1,
+ },
+ },
+ ],
+ transform => 2.0,
+ upgrade => [
+ $V lt v4.11.0 ? () : {
+ name => 'Seismic Spines',
+ attack => [
+ {
+ range => 2,
+ },
+ ],
+ req => 'Hive',
+ min => 150,
+ gas => 150,
+ build => 57,
+ },
+ {
+ name => 'Adaptive Talons',
+ desc => 'halves burrow time and increases movement speed',
+ speed => .413,
+ transform => $V lt v5.0.9 ? .71 : 1.07,
+ },
+ ],
+ speed => 4.13,
+ creep => 1.3,
+ sight => 10,
},
-$unit{infestor},
-$unit{nydus_worm},
-$unit{swarm_host},
+
+{
+ %{ $unit{infestor} },
+ special => [
+ {
+ %{ $unit{infestor}->{special}->[0] }, # neural parasite
+ range => $V lt v4.11.0 ? 9 : 8,
+ },
+ $unit{infestor}->{special}->[1], # fungal growth
+ {
+ name => 'Microbial Shroud',
+ abbr => 'ms',
+ desc => 'reduce damage from air by 50% to ground units in target area',
+ cost => $V lt v4.11.3 ? 100 : 75,
+ min => $V lt v4.11.3 ? 150 : undef,
+ gas => $V lt v4.11.3 ? 150 : undef,
+ build => $V lt v4.11.3 ? 79 : undef,
+ req => $V lt v4.11.3 ? 'Hive' : undef,
+ range => 9,
+ duration => 11,
+ radius => $V lt v4.11.3 ? 3 : 3.5,
+ },
+ $V ge v4.11.0 ? () : {
+ %{ $unit{infestor}->{special}->[2] }, # infested terran
+ attack => [
+ {
+ %{ $unit{infestor}->{special}->[2]->{attack}->[0] }, # rockets
+ cooldown => $V lt v4.10.1 ? .95 : 1.14,
+ },
+ ],
+ },
+ ],
+},
+
+{
+ % {$unit{nydus_worm} },
+ min => $V lt v4.7.1 ? 100 : $V lt v4.11.0 ? 50 : 75, # Nydus Network costs 150/150
+ gas => $V lt v4.7.1 ? 100 : $V lt v4.11.0 ? 50 : 75,
+ cooldown => $V lt v4.11.0 ? 0 : 14, # Summon Nydus Worm
+},
+
+{
+ %{ $unit{swarm_host} },
+ gas => 75,
+ special => [
+ {
+ %{ $unit{swarm_host}->{special}->[0] }, # locust
+ hp => 50,
+ upgrade => [], # no flying
+ },
+ ],
+ upgrade => [],
+},
+
$unit{mutalisk},
$unit{corruptor},
-$unit{brood_lord},
+
+{
+ %{ $unit{brood_lord} },
+ speed => $V ge v5.0.11 ? 2.24 : 1.97,
+},
+
$unit{viper},
-$unit{ultralisk},
+
+{
+ %{ $unit{ultralisk} },
+ armor => 2,
+ size => $V ge v5.0.11 ? 1.75 : 2,
+ upgrade => [
+ $unit{ultralisk}->{upgrade}->[0], # chitinous plating
+ {
+ name => 'Anabolic Synthesis',
+ min => 150,
+ gas => 150,
+ build => 42.85,
+ speed => $V lt v4.8.2 ? .41 : .82,
+ creep => -.215, # reverse speed increase
+ },
+ ],
+},
]