index: release v1.18 with only altgr index linked
[sheet.git] / sc-units-lotv.inc.pl
index b2d61e66b3b06348c5500f3c0d93a72c8c9b6a53..9a2433dc254cc965b583aa3904bf48f8e38695b1 100644 (file)
@@ -1,6 +1,7 @@
 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 $!;
@@ -8,47 +9,454 @@ my %unit;
 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
 
@@ -56,62 +464,706 @@ $unit{scv},
 $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
+               },
+       ],
+},
 
 ]