emoji: silence unused argument warnings
[sheet.git] / sc-units-hots.inc.pl
index 5cedf2e5f4bc2e0c3971a275d425073bbc19769a..9faaea840a874aae5b92b1cb83f3fed4481d9128 100644 (file)
@@ -2,7 +2,7 @@ use utf8;
 use strict;
 
 [
-'patch 2.1.10',
+'patch 2.1.9+',
 # http://wiki.teamliquid.net/starcraft2/Unit_Statistics
 # http://wiki.teamliquid.net/starcraft2/User:Roemy/Unit_Statistics_(detailed)
 # http://starcraft.wikia.com/wiki/List_of_StarCraft_II_units
@@ -11,7 +11,7 @@ use strict;
        race => 'protoss',
        cat => 'base',
        name => 'Probe',
-       unit => 1,
+       pop => 1,
        min => 50,
        gas => 0,
        build => 17,
@@ -27,7 +27,7 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Particle beam',
+                       name => 'Particle Beam',
                        damage => 5,
                        cooldown => 1.5,
                        range => 0,
@@ -55,7 +55,7 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Phase disruptor',
+                       name => 'Phase Disruptor',
                        damage => 20,
                        cooldown => 1.25,
                        type => 'projectile',
@@ -71,7 +71,7 @@ use strict;
        race => 'protoss',
        cat => 'base',
        name => 'Mothership Core',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 100,
        build => 30,
@@ -90,7 +90,8 @@ use strict;
                {
                        anti => 1,
                        name => 'Repulsor Cannon',
-                       damage => [8 .. 11],
+                       damage => 8,
+                       upgrade => 1,
                        type => 'projectile',
                        cooldown => 0.85,
                        range => 5,
@@ -98,7 +99,8 @@ use strict;
        ],
        speed => 1.875,
        sight => 9,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Photon Overcharge',
@@ -131,7 +133,7 @@ use strict;
        race => 'protoss',
        cat => 'base',
        name => 'Mothership',
-       unit => 8,
+       pop => 8,
        min => 300,
        gas => 300,
        build => 100,
@@ -149,8 +151,9 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Purifier beams',
-                       damage => [6 .. 9],
+                       name => 'Purifier Beams',
+                       damage => 6,
+                       upgrade => 1,
                        cooldown => 2.21,
                        count => 6,
                        range => 7,
@@ -158,7 +161,8 @@ use strict;
        ],
        speed => 1.4062,
        sight => 14,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Cloaking Field',
@@ -191,6 +195,7 @@ use strict;
        race => 'protoss',
        cat => 'base',
        name => 'Nexus',
+       pop => -10,
        min => 400,
        gas => 0,
        build => 100,
@@ -206,7 +211,7 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Photon overcharge',
+                       name => 'Photon Overcharge',
                        damage => 20,
                        cooldown => 1.25,
                        type => 'projectile',
@@ -215,7 +220,8 @@ use strict;
        ],
        speed => 0,
        sight => 11,
-       energy => 100,
+       energy => 0,
+       capacity => 100,
        special => [
                {
                        name => 'Chrono Boost',
@@ -231,7 +237,7 @@ use strict;
        race => 'protoss',
        cat => 'gateway',
        name => 'Zealot',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 0,
        build => 38,
@@ -248,8 +254,9 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Psi blades',
-                       damage => [8 .. 11],
+                       name => 'Psi Blades',
+                       damage => 8,
+                       upgrade => 1,
                        cooldown => 1.2,
                        count => 2,
                        range => 0,
@@ -265,19 +272,24 @@ use strict;
                        min => 200,
                        gas => 200,
                        build => 140,
-                       speed => .5,
                        range => 4,
                        duration => 3.5,
                        cooldown => 10,
                },
        ],
+       upgrade => [
+               {
+                       name => 'Charge',
+                       speed => .5,
+               },
+       ],
 },
 
 {
        race => 'protoss',
        cat => 'gateway',
        name => 'Sentry',
-       unit => 2,
+       pop => 2,
        min => 50,
        gas => 100,
        build => 37,
@@ -295,15 +307,17 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Disruption beam',
-                       damage => [6 .. 9],
+                       name => 'Disruption Beam',
+                       damage => 6,
+                       upgrade => 1,
                        cooldown => 1.0,
                        range => 5,
                },
        ],
        speed => 2.25,
        sight => 10,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Force Field',
@@ -337,7 +351,7 @@ use strict;
        race => 'protoss',
        cat => 'gateway',
        name => 'Stalker',
-       unit => 2,
+       pop => 2,
        min => 125,
        gas => 50,
        build => 42,
@@ -354,8 +368,9 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Particle disruptors',
-                       damage => [10 .. 13],
+                       name => 'Particle Disruptors',
+                       damage => 10,
+                       upgrade => 1,
                        bonus => {
                                armored => 4,
                        },
@@ -384,7 +399,7 @@ use strict;
        race => 'protoss',
        cat => 'gateway',
        name => 'High Templar',
-       unit => 2,
+       pop => 2,
        min => 50,
        gas => 150,
        build => 55,
@@ -401,7 +416,8 @@ use strict;
        },
        speed => 1.875,
        sight => 10,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Feedback',
@@ -430,7 +446,7 @@ use strict;
        race => 'protoss',
        cat => 'gateway',
        name => 'Dark Templar',
-       unit => 2,
+       pop => 2,
        min => 125,
        gas => 125,
        build => 55,
@@ -448,8 +464,9 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Warp blade',
-                       damage => [45, 50, 55, 60],
+                       name => 'Warp Blade',
+                       damage => 45,
+                       upgrade => 5,
                        cooldown => 1.694,
                        range => 0,
                },
@@ -472,7 +489,7 @@ use strict;
        name => 'Archon',
        min => 100, # or 175 or 250
        gas => 300, # or 275 or 250
-       unit => 4,
+       pop => 4,
        build => 12,
        base => ['Templar', 'Templar'],
        size => 1.5,
@@ -487,10 +504,12 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Psionic shockwave',
-                       damage => [25, 28, 31, 34],
+                       name => 'Psionic Shockwave',
+                       damage => 25,
+                       upgrade => 3,
                        bonus => {
-                               organic => [10 .. 13],
+                               organic => 10,
+                               -organic => 1,
                        },
                        splash => 1,
                        cooldown => 1.754,
@@ -501,11 +520,90 @@ use strict;
        sight => 9,
 },
 
+{
+       race => 'protoss',
+       cat => 'robotic',
+       name => 'Observer',
+       pop => 1,
+       min => 25,
+       gas => 75,
+       build => 30,
+       size => 1,
+       cargo => 0,
+       armor => 0,
+       hp => 40,
+       shield => 20,
+       attr => {
+               light => 1,
+               mech => 1,
+               flying => 1,
+       },
+       speed => 1.875,
+       sight => 11,
+       detect => 1,
+       special => [
+               {
+                       name => 'Permanent Cloak',
+                       abbr => 'cl',
+                       desc => 'cloaked at all times',
+                       duration => -1,
+               },
+       ],
+       upgrade => [
+               {
+                       name => 'Gravitic Boosters',
+                       min => 100,
+                       gas => 100,
+                       build => 80,
+                       speed => 0.9375,
+               },
+       ],
+},
+
+{
+       race => 'protoss',
+       cat => 'robotic',
+       name => 'Warp Prism',
+       pop => 2,
+       min => 200,
+       gas => 0,
+       build => 50,
+       size => 1.75,
+       cargo => -8,
+       armor => 0,
+       hp => 100,
+       shield => 100,
+       attr => {
+               armored => 1,
+               mech => 1,
+               psionic => 1,
+               flying => 1,
+       },
+       speed => 2.9531,
+       sight => 10,
+       special => [
+               {
+                       name => 'Phasing Mode',
+                       abbr => 'pm',
+                       desc => 'basically transforms into a hovering pylon',
+               },
+       ],
+       upgrade => [
+               {
+                       name => 'Gravitic Drive',
+                       min => 100,
+                       gas => 100,
+                       build => 80,
+                       speed => 0.422,
+               },
+       ],
+},
+
 {
        race => 'protoss',
        cat => 'robotic',
        name => 'Immortal',
-       unit => 4,
+       pop => 4,
        min => 250,
        gas => 100,
        build => 55,
@@ -521,10 +619,12 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Phase disruptors',
-                       damage => [20, 22, 24, 26],
+                       name => 'Phase Disruptors',
+                       damage => 20,
+                       upgrade => 2,
                        bonus => {
-                               armored => [30, 33, 36, 39],
+                               armored => 30,
+                               -armored => 3,
                        },
                        cooldown => 1.45,
                        range => 6,
@@ -546,7 +646,7 @@ use strict;
        race => 'protoss',
        cat => 'robotic',
        name => 'Colossus',
-       unit => 6,
+       pop => 6,
        min => 300,
        gas => 200,
        build => 75,
@@ -565,7 +665,8 @@ use strict;
                {
                        anti => 1,
                        name => 'Thermal Lances',
-                       damage => [15, 17, 19, 21],
+                       damage => 15,
+                       upgrade => 2,
                        splash => 'line',
                        cooldown => 1.65,
                        count => 2,
@@ -589,90 +690,11 @@ use strict;
        ],
 },
 
-{
-       race => 'protoss',
-       cat => 'robotic',
-       name => 'Observer',
-       unit => 1,
-       min => 25,
-       gas => 75,
-       build => 30,
-       size => 1,
-       cargo => 0,
-       armor => 0,
-       hp => 40,
-       shield => 20,
-       attr => {
-               light => 1,
-               mech => 1,
-               flying => 1,
-       },
-       speed => 1.875,
-       sight => 11,
-       detect => 1,
-       special => [
-               {
-                       name => 'Permanent Cloak',
-                       abbr => 'cl',
-                       desc => 'cloaked at all times',
-                       duration => -1,
-               },
-       ],
-       upgrade => [
-               {
-                       name => 'Gravitic Boosters',
-                       min => 100,
-                       gas => 100,
-                       build => 80,
-                       speed => 0.9375,
-               },
-       ],
-},
-
-{
-       race => 'protoss',
-       cat => 'robotic',
-       name => 'Warp Prism',
-       unit => 2,
-       min => 200,
-       gas => 0,
-       build => 50,
-       size => 1.75,
-       cargo => -8,
-       armor => 0,
-       hp => 100,
-       shield => 100,
-       attr => {
-               armored => 1,
-               mech => 1,
-               psionic => 1,
-               flying => 1,
-       },
-       speed => 2.9531,
-       sight => 10,
-       special => [
-               {
-                       name => 'Phasing Mode',
-                       abbr => 'pm',
-                       desc => 'basically transforms into a hovering pylon',
-               },
-       ],
-       upgrade => [
-               {
-                       name => 'Gravitic Drive',
-                       min => 100,
-                       gas => 100,
-                       build => 80,
-                       speed => 0.422,
-               },
-       ],
-},
-
 {
        race => 'protoss',
        cat => 'stargate',
        name => 'Phoenix',
-       unit => 2,
+       pop => 2,
        min => 150,
        gas => 100,
        build => 35,
@@ -690,7 +712,8 @@ use strict;
                {
                        anti => 2,
                        name => 'Ion Cannons',
-                       damage => [5 .. 8],
+                       damage => 5,
+                       upgrade => 1,
                        bonus => {
                                light => 5,
                        },
@@ -702,7 +725,8 @@ use strict;
        ],
        speed => 4.25,
        sight => 10,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Graviton Beam',
@@ -732,7 +756,7 @@ use strict;
        race => 'protoss',
        cat => 'stargate',
        name => 'Void Ray',
-       unit => 4,
+       pop => 4,
        min => 250,
        gas => 150,
        build => 60,
@@ -749,10 +773,12 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Prismatic beam',
-                       damage => [6 .. 9],
+                       name => 'Prismatic Beam',
+                       damage => 6,
+                       upgrade => 1,
                        bonus => {
-                               armored => [4 .. 7],
+                               armored => 4,
+                               -armored => 1,
                        },
                        cooldown => 0.5,
                        range => 6, # keeps firing until range 8
@@ -770,7 +796,7 @@ use strict;
                        attack => [
                                {
                                        bonus => {
-                                               armored => 6, # total +10 .. 13
+                                               armored => 6,
                                        },
                                },
                        ],
@@ -782,7 +808,7 @@ use strict;
        race => 'protoss',
        cat => 'stargate',
        name => 'Oracle',
-       unit => 3,
+       pop => 3,
        min => 150,
        gas => 150,
        build => 50,
@@ -814,7 +840,8 @@ use strict;
        ],
        speed => 4,
        sight => 10,
-       energy => 200,
+       energy => 50, #XXX
+       capacity => 200,
        special => [
                {
                        name => 'Revelation',
@@ -841,7 +868,7 @@ use strict;
        race => 'protoss',
        cat => 'stargate',
        name => 'Tempest',
-       unit => 4,
+       pop => 4,
        min => 300,
        gas => 200,
        build => 60,
@@ -860,9 +887,11 @@ use strict;
                {
                        anti => 2,
                        name => 'Kinetic Overload',
-                       damage => [30, 33, 36, 39],
+                       damage => 30,
+                       upgrade => 3,
                        bonus => {
-                               massive => [14, 16, 18, 20],
+                               massive => 14,
+                               -massive => 2,
                        },
                        type => 'projectile',
                        cooldown => 3.3,
@@ -871,7 +900,8 @@ use strict;
                {
                        anti => 1,
                        name => 'Resonance Coil',
-                       damage => [30, 33, 36, 39],
+                       damage => 30,
+                       upgrade => 3,
                        type => 'projectile',
                        cooldown => 3.3,
                        range => 15,
@@ -885,7 +915,7 @@ use strict;
        race => 'protoss',
        cat => 'stargate',
        name => 'Carrier',
-       unit => 6,
+       pop => 6,
        min => 350,
        gas => 250,
        build => 120,
@@ -902,8 +932,10 @@ use strict;
        },
        attack => [
                {
+                       anti => 3,
+                       count => 8,
                        range => 8, # leash range 14
-                       dps => [13.3, undef, undef, 42.6],
+                       dps => [26.7, undef, undef, 42.6],
                        cooldown => 0.5,
                },
        ],
@@ -912,7 +944,7 @@ use strict;
        special => [
                {
                        alt => 'Interceptor',
-                       unit => 0,
+                       pop => 0,
                        min => 25,
                        gas => 0,
                        build => 8,
@@ -930,7 +962,8 @@ use strict;
                                {
                                        anti => 3,
                                        name => 'Interceptor Beams',
-                                       damage => [5 .. 8],
+                                       damage => 5,
+                                       upgrade => 1,
                                        cooldown => 3.0,
                                        count => 2,
                                        range => 2,
@@ -962,7 +995,7 @@ use strict;
        race => 'terran',
        cat => 'base',
        name => 'SCV', # T-280 Space Construction Vehicle
-       unit => 1,
+       pop => 1,
        min => 50,
        gas => 0,
        build => 17,
@@ -978,7 +1011,7 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Fusion cutter',
+                       name => 'Fusion Cutter',
                        damage => 5,
                        cooldown => 1.5,
                        range => 0,
@@ -992,7 +1025,8 @@ use strict;
        race => 'terran',
        cat => 'base',
        name => 'Mule',
-       unit => 0,
+       pop => 0,
+       cargo => 0,
        min => 0,
        build => 0,
        size => 0.75,
@@ -1025,7 +1059,7 @@ use strict;
        attack => [
                {
                        anti => 2,
-                       name => 'Longbolt missiles',
+                       name => 'Longbolt Missiles',
                        damage => 12,
                        cooldown => 0.8608,
                        count => 2,
@@ -1063,7 +1097,7 @@ use strict;
        cat => 'base',
        name => 'Planetary Fortress',
        base => ['Command Center'],
-       unit => -11,
+       pop => -11,
        min => 150,
        gas => 150,
        build => 50,
@@ -1079,7 +1113,7 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Ibiks cannon',
+                       name => 'Ibiks Cannon',
                        damage => 40,
                        splash => 1,
                        cooldown => 2,
@@ -1121,7 +1155,7 @@ use strict;
        race => 'terran',
        cat => 'barracks',
        name => 'Marine',
-       unit => 1,
+       pop => 1,
        min => 50,
        gas => 0,
        build => 25,
@@ -1136,8 +1170,9 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'C-14 rifle',
-                       damage => [6 .. 9],
+                       name => 'C-14 Rifle',
+                       damage => 6,
+                       upgrade => 1,
                        cooldown => 0.8608,
                        range => 5,
                },
@@ -1164,7 +1199,8 @@ use strict;
                        attack => [
                                {
                                        anti => 3,
-                                       damage => [6 .. 9],
+                                       damage => 6,
+                                       upgrade => 1,
                                        cooldown => 0.5739,
                                        range => 5,
                                },
@@ -1179,7 +1215,7 @@ use strict;
        race => 'terran',
        cat => 'barracks',
        name => 'Marauder',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 25,
        build => 30,
@@ -1194,10 +1230,12 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Punisher grenades',
-                       damage => [10 .. 13],
+                       name => 'Punisher Grenades',
+                       damage => 10,
+                       upgrade => 1,
                        bonus => {
-                               armored => [10 .. 13],
+                               armored => 10,
+                               -armored => 1,
                        },
                        type => 'projectile',
                        cooldown => 1.5,
@@ -1216,9 +1254,11 @@ use strict;
                        attack => [
                                {
                                        anti => 1,
-                                       damage => [10 .. 13],
+                                       damage => 10,
+                                       upgrade => 1,
                                        bonus => {
-                                               armored => [10 .. 13],
+                                               armored => 10,
+                                               -armored => 1,
                                        },
                                        type => 'projectile',
                                        cooldown => 1.0,
@@ -1227,8 +1267,6 @@ use strict;
                        ],
                        duration => 15,
                },
-       ],
-       upgrade => [
                {
                        name => 'Concussive Shells',
                        abbr => 'cs',
@@ -1247,7 +1285,7 @@ use strict;
        race => 'terran',
        cat => 'barracks',
        name => 'Reaper',
-       unit => 1,
+       pop => 1,
        min => 50,
        gas => 50,
        build => 40,
@@ -1263,8 +1301,9 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'P-45 Reaper pistol',
-                       damage => [4 .. 7],
+                       name => 'P-45 Reaper Pistol',
+                       damage => 4,
+                       upgrade => 1,
                        cooldown => 1.1,
                        count => 2,
                        range => 4.5,
@@ -1286,7 +1325,7 @@ use strict;
        race => 'terran',
        cat => 'barracks',
        name => 'Ghost',
-       unit => 2,
+       pop => 2,
        min => 200,
        gas => 100,
        build => 40,
@@ -1301,10 +1340,12 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'C-10 rifle',
-                       damage => [10 .. 13],
+                       name => 'C-10 Rifle',
+                       damage => 10,
+                       upgrade => 1,
                        bonus => {
-                               light => [10 .. 13],
+                               light => 10,
+                               -light => 1,
                        },
                        cooldown => 1.5,
                        range => 6,
@@ -1312,7 +1353,8 @@ use strict;
        ],
        speed => 2.25,
        sight => 11,
-       energy => 200,
+       energy => 75,
+       capacity => 200,
        special => [
                {
                        name => 'Sniper Round',
@@ -1342,8 +1384,9 @@ use strict;
                {
                        name => 'Nuclear Strike',
                        abbr => 'ns',
-                       desc => 'guides a nuclear missile which will do 300 damage plus 200 to buildings',
+                       desc => 'guides a missile which will do 300 damage plus 200 to buildings',
                        duration => 20,
+                       cooldown => 20,
                        range => 12,
                },
        ],
@@ -1353,7 +1396,7 @@ use strict;
        race => 'terran',
        cat => 'factory',
        name => 'Hellion',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 0,
        build => 30,
@@ -1368,10 +1411,12 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Infernal flamethrower',
-                       damage => [8 .. 11],
+                       name => 'Infernal Flamethrower',
+                       damage => 8,
+                       upgrade => 1,
                        bonus => {
-                               light => [6 .. 9],
+                               light => 6,
+                               -light => 1,
                        },
                        splash => 'line',
                        cooldown => 2.5,
@@ -1396,9 +1441,11 @@ use strict;
                        build => 110,
                        attack => [
                                {
-                                       damage => [6 .. 9],
+                                       damage => 6,
+                                       upgrade => 1,
                                        bonus => {
-                                               light => [5, 5, 5, 5], # total [11 .. 14]
+                                               light => 5,
+                                               -light => 0,
                                        },
                                },
                        ],
@@ -1410,7 +1457,7 @@ use strict;
        race => 'terran',
        cat => 'factory',
        name => 'Hellbat',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 0,
        build => 30,
@@ -1427,7 +1474,11 @@ use strict;
                {
                        anti => 1,
                        name => 'Napalm Spray',
-                       damage => [18, 20, 22, 24],
+                       damage => 18,
+                       upgrade => 2,
+                       bonus => {
+                               light => 0, # visibility for upgrade
+                       },
                        splash => 1,
                        cooldown => 2,
                        range => 2,
@@ -1440,7 +1491,7 @@ use strict;
                        name => 'Hellion Mode',
                        abbr => 'hm',
                        desc => 'transform to Hellion',
-                       duration => 4,
+                       transform => 4,
                },
        ],
        upgrade => [
@@ -1452,7 +1503,8 @@ use strict;
                        attack => [
                                {
                                        bonus => {
-                                               light => [12 .. 15],
+                                               light => 12,
+                                               -light => 1,
                                        },
                                },
                        ],
@@ -1464,7 +1516,7 @@ use strict;
        race => 'terran',
        cat => 'factory',
        name => 'Widow Mine',
-       unit => 2,
+       pop => 2,
        min => 75,
        gas => 25,
        build => 40,
@@ -1507,7 +1559,7 @@ use strict;
        race => 'terran',
        cat => 'factory',
        name => 'Siege Tank',
-       unit => 3,
+       pop => 3,
        min => 150,
        gas => 125,
        build => 45,
@@ -1522,10 +1574,12 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => '90 mm twin cannon',
-                       damage => [15, 17, 19, 21],
+                       name => '90 mm Twin Cannon',
+                       damage => 15,
+                       upgrade => 2,
                        bonus => {
-                               armored => [10 .. 13],
+                               armored => 10,
+                               -armored => 1,
                        },
                        cooldown => 1.04,
                        range => 7,
@@ -1540,10 +1594,12 @@ use strict;
                        attack => [
                                {
                                        anti => 1,
-                                       name => '120 mm shock cannon',
-                                       damage => [35, 38, 41, 44],
+                                       name => '120 mm Shock Cannon',
+                                       damage => 35,
+                                       upgrade => 3,
                                        bonus => {
-                                               armored => [15, 17, 19, 21],
+                                               armored => 15,
+                                               -armored => 2,
                                        },
                                        splash => 1,
                                        cooldown => 3,
@@ -1551,7 +1607,7 @@ use strict;
                                },
                        ],
                        speed => 0,
-                       duration => 4,
+                       transform => 4,
                },
        ],
        speed => 2.25,
@@ -1562,7 +1618,7 @@ use strict;
        race => 'terran',
        cat => 'factory',
        name => 'Thor',
-       unit => 6,
+       pop => 6,
        min => 300,
        gas => 200,
        build => 60,
@@ -1579,7 +1635,8 @@ use strict;
                {
                        anti => 1,
                        name => "Thor's Hammer",
-                       damage => [30, 33, 36, 39],
+                       damage => 30,
+                       upgrade => 3,
                        cooldown => 1.28,
                        range => 7,
                        count => 2,
@@ -1588,9 +1645,11 @@ use strict;
                        anti => 2,
                        name => 'Javelin Missiles',
 #                      name => 'Explosive Payload',
-                       damage => [6 .. 9],
+                       damage => 6,
+                       upgrade => 1,
                        bonus => {
-                               'light air' => [6 .. 9],
+                               light => 6,
+                               -light => 1,
                        },
                        splash => 1,
                        type => 'projectile',
@@ -1602,7 +1661,9 @@ use strict;
                        anti => 2,
                        name => 'Punisher Cannons',
 #                      name => 'High Impact Payload',
-                       damage => [24, 26, 28, 30],
+                       damage => 24,
+                       upgrade => 2,
+                       type => 'projectile',
                        cooldown => 2,
                        range => 10,
                },
@@ -1615,7 +1676,7 @@ use strict;
        race => 'terran',
        cat => 'starport',
        name => 'Viking',
-       unit => 2,
+       pop => 2,
        min => 150,
        gas => 75,
        build => 42,
@@ -1631,8 +1692,9 @@ use strict;
        attack => [
                {
                        anti => 2,
-                       name => 'Lanzer torpedoes',
-                       damage => [10 .. 13],
+                       name => 'Lanzer Torpedoes',
+                       damage => 10,
+                       upgrade => 1,
                        bonus => {
                                armored => 4,
                        },
@@ -1646,14 +1708,15 @@ use strict;
                {
                        name => 'Assault Mode',
                        abbr => 'am',
-                       build => 3, # transformation time
+                       transform => 3,
                        alt => 'Landed Viking',
                        cargo => 2,
                        attack => [
                                {
                                        anti => 1,
-                                       name => 'Twin gatling cannon',
-                                       damage => [12 .. 15],
+                                       name => 'Twin Gatling Cannon',
+                                       damage => 12,
+                                       upgrade => 1,
                                        cooldown => 1,
                                        range => 6,
                                },
@@ -1668,7 +1731,7 @@ use strict;
        race => 'terran',
        cat => 'starport',
        name => 'Medivac',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 100,
        build => 42,
@@ -1682,7 +1745,8 @@ use strict;
                flying => 1,
        },
        speed => 2.5,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Heal',
@@ -1707,7 +1771,7 @@ use strict;
                        min => 100,
                        gas => 100,
                        build => 80,
-                       starting_energy => 25,
+                       energy => 25,
                },
        ],
 },
@@ -1716,7 +1780,7 @@ use strict;
        race => 'terran',
        cat => 'starport',
        name => 'Banshee', # AH/G-24
-       unit => 3,
+       pop => 3,
        min => 150,
        gas => 100,
        build => 60,
@@ -1732,8 +1796,9 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'Backlash rockets',
-                       damage => [12 .. 15],
+                       name => 'Backlash Rockets',
+                       damage => 12,
+                       upgrade => 1,
                        type => 'projectile',
                        cooldown => 1.25,
                        count => 2,
@@ -1742,7 +1807,8 @@ use strict;
        ],
        speed => 2.75,
        sight => 10,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Cloak',
@@ -1761,7 +1827,7 @@ use strict;
        race => 'terran',
        cat => 'starport',
        name => 'Raven',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 200,
        build => 60,
@@ -1777,7 +1843,8 @@ use strict;
        speed => 2.25,
        sight => 11,
        detect => 1,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        alt => 'Auto-Turret',
@@ -1795,7 +1862,7 @@ use strict;
                        attack => [
                                {
                                        anti => 3,
-                                       name => '12 mm gauss cannon',
+                                       name => '12 mm Gauss Cannon',
                                        damage => 8,
                                        cooldown => 0.8,
                                        range => 6,
@@ -1822,7 +1889,15 @@ use strict;
                                        build => 140,
                                        armor => 2,
                                },
+                               {
+                                       name => 'Durable Materials',
+                                       min => 150,
+                                       gas => 150,
+                                       build => 110,
+                                       duration => 60,
+                               },
                        ],
+                       duration => 180,
                },
                {
                        alt => 'Point Defense Drone',
@@ -1841,7 +1916,7 @@ use strict;
                        cooldown => 0,
                        attack => [
                                {
-                                       name => 'Point defense laser',
+                                       name => 'Point Defense Laser',
                                        range => 8,
                                },
                        ],
@@ -1865,6 +1940,13 @@ use strict;
                                        build => 140,
                                        armor => 2,
                                },
+                               {
+                                       name => 'Durable Materials',
+                                       min => 150,
+                                       gas => 150,
+                                       build => 110,
+                                       duration => 10,
+                               },
                        ],
                        duration => 20,
                },
@@ -1884,26 +1966,12 @@ use strict;
                },
        ],
        upgrade => [
-               {
-                       name => 'Durable Materials',
-                       min => 150,
-                       gas => 150,
-                       build => 110,
-#                      special => {
-#                              at => {
-#                                      duration => 240,
-#                              },
-#                              pd => {
-#                                      duration => 30,
-#                              },
-#                      },
-               },
                {
                        name => 'Corvid Reactor',
                        min => 150,
                        gas => 150,
                        build => 110,
-                       starting_energy => 25,
+                       energy => 25,
                },
        ],
 },
@@ -1912,7 +1980,7 @@ use strict;
        race => 'terran',
        cat => 'starport',
        name => 'Battlecruiser',
-       unit => 6,
+       pop => 6,
        min => 400,
        gas => 300,
        build => 90,
@@ -1929,16 +1997,18 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       name => 'ATS laser batteries',
-                       damage => [8 .. 11],
+                       name => 'ATS Laser Batteries',
+                       damage => 8,
+                       upgrade => 1,
                        cooldown => 0.225,
                        type => 'projectile',
                        range => 6,
                },
                {
                        anti => 2,
-                       name => 'ATS laser batteries',
-                       damage => [6 .. 9],
+                       name => 'ATS Laser Batteries',
+                       damage => 6,
+                       upgrade => 1,
                        cooldown => 0.225,
                        type => 'projectile',
                        range => 6,
@@ -1946,7 +2016,8 @@ use strict;
        ],
        speed => 1.875,
        sight => 12,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Yamato Cannon',
@@ -1971,7 +2042,7 @@ use strict;
                        min => 150,
                        gas => 150,
                        build => 80,
-                       starting_energy => 25,
+                       energy => 25,
                },
        ],
 },
@@ -1982,7 +2053,7 @@ use strict;
        race => 'zerg',
        cat => 'base',
        name => 'Drone',
-       unit => 1,
+       pop => 1,
        min => 50,
        gas => 0,
        build => 17,
@@ -2012,7 +2083,7 @@ use strict;
        race => 'zerg',
        cat => 'base',
        name => 'Queen',
-       unit => 2,
+       pop => 2,
        min => 150,
        gas => 0,
        build => 50,
@@ -2028,7 +2099,8 @@ use strict;
                {
                        anti => 1,
                        name => 'Claws',
-                       damage => [4 .. 7],
+                       damage => 4,
+                       upgrade => 1,
                        cooldown => 1.0,
                        type => 'projectile', # except if range < 3
                        range => 5,
@@ -2037,7 +2109,8 @@ use strict;
                {
                        anti => 2,
                        name => 'Acid Spines',
-                       damage => [9 .. 12],
+                       damage => 9,
+                       upgrade => 1,
                        cooldown => 1.0,
                        type => 'projectile', # except if range < 3
                        range => 7,
@@ -2046,7 +2119,8 @@ use strict;
        speed => 0.9375,
        creep => 2.7,
        sight => 9,
-       energy => 200,
+       energy => 25,
+       capacity => 200,
        special => [
                {
                        name => 'Spawn Larva',
@@ -2080,7 +2154,7 @@ use strict;
        race => 'zerg',
        cat => 'base',
        name => 'Overlord',
-       unit => -9,
+       pop => -9,
        min => 100,
        gas => 0,
        build => 25,
@@ -2094,7 +2168,6 @@ use strict;
                flying => 1,
        },
        speed => 0.586,
-       creep => 0,
        sight => 11,
        special => [
                {
@@ -2130,7 +2203,7 @@ use strict;
        cat => 'base',
        name => 'Overseer',
        base => ['Overlord'],
-       unit => -9,
+       pop => -9,
        min => 100+50,
        gas => 50,
        build => 17,
@@ -2144,10 +2217,10 @@ use strict;
                flying => 1,
        },
        speed => 1.875,
-       creep => 0,
        sight => 11,
        detect => 1,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Spawn Changeling',
@@ -2191,7 +2264,7 @@ use strict;
        race => 'zerg',
        cat => 'creep',
        name => 'Larva',
-       unit => 0,
+       pop => 0,
        build => 15,
        size => 0.25,
        cargo => 0,
@@ -2291,7 +2364,7 @@ use strict;
        race => 'zerg',
        cat => 'hatchery',
        name => 'Zergling',
-       unit => 0.5,
+       pop => 0.5,
        min => 25,
        gas => 0,
        build => 24,
@@ -2307,7 +2380,8 @@ use strict;
                {
                        anti => 1,
                        name => 'Claws',
-                       damage => [5 .. 8],
+                       damage => 5,
+                       upgrade => 1,
                        cooldown => 0.696,
                },
        ],
@@ -2344,7 +2418,7 @@ use strict;
        cat => 'hatchery',
        name => 'Baneling',
        base => ['Zergling'],
-       unit => 0.5,
+       pop => 0.5,
        min => 25+25,
        gas => 25,
        build => 20,
@@ -2359,10 +2433,13 @@ use strict;
                {
                        anti => 1,
                        name => 'Volatile Burst',
-                       damage => [20, 22, 24, 26],
+                       damage => 20,
+                       upgrade => 2,
                        bonus => {
-                               light => [15, 17, 19, 21],
-                               structure => [60, 63, 66, 69],
+                               light => 15,
+                               -light => 2,
+                               structure => 60,
+                               -structure => 3,
                        },
                        splash => 1,
                        range => 0,
@@ -2387,7 +2464,7 @@ use strict;
        race => 'zerg',
        cat => 'hatchery',
        name => 'Roach',
-       unit => 2,
+       pop => 2,
        min => 75,
        gas => 25,
        build => 27,
@@ -2403,8 +2480,10 @@ use strict;
                {
                        anti => 1,
                        name => 'Acid Saliva', # Claws melee
-                       damage => [16, 18, 20, 22],
+                       damage => 16,
+                       upgrade => 2,
                        cooldown => 2.0,
+                       range => 4,
                },
        ],
        speed => 2.25,
@@ -2445,7 +2524,7 @@ use strict;
        race => 'zerg',
        cat => 'lair',
        name => 'Hydralisk',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 50,
        build => 33,
@@ -2460,8 +2539,9 @@ use strict;
        attack => [
                {
                        anti => 3,
-                       name => 'Needle spines', # Scythe melee
-                       damage => [12 .. 15],
+                       name => 'Needle Spines', # Scythe melee
+                       damage => 12,
+                       upgrade => 1,
                        type => 'projectile', # except melee
                        cooldown => 0.75,
                        range => 5,
@@ -2497,7 +2577,7 @@ use strict;
        race => 'zerg',
        cat => 'lair',
        name => 'Infestor',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 150,
        build => 50,
@@ -2513,7 +2593,8 @@ use strict;
        speed => 2.25,
        creep => 1.3,
        sight => 10,
-       energy => 200,
+       energy => 50,
+       capacity => 200,
        special => [
                {
                        name => 'Neural Parasite',
@@ -2540,7 +2621,7 @@ use strict;
                        cost => 25,
                        range => 9,
                        duration => 30,
-                       build => 5,
+                       build => 4.8, # 5 normal but 3 faster
                        size => 0.75,
                        cargo => 0,
                        armor => 0,
@@ -2568,7 +2649,7 @@ use strict;
                        min => 150,
                        gas => 150,
                        build => 80,
-                       starting_energy => 25,
+                       energy => 25,
                },
        ],
 },
@@ -2597,7 +2678,7 @@ use strict;
        race => 'zerg',
        cat => 'lair',
        name => 'Swarm Host',
-       unit => 4,
+       pop => 4,
        min => 100,
        gas => 200,
        build => 40,
@@ -2612,9 +2693,12 @@ use strict;
        attack => [
                {
                        anti => 1,
-                       dps => [27.9, 30.2, 32.5, 34.8],
+                       dps => [16.7, undef, undef, 20.8], # 20/.6 * 2 /60*25
                        type => 'projectile',
-                       cooldown => 0.86,
+                       count => 2,
+                       cooldown => 60,
+                       duration => 25,
+                       range => 3*25, # locust speed * duration = theoretical walk limit
                },
        ],
        speed => 2.95,
@@ -2623,7 +2707,7 @@ use strict;
        special => [
                {
                        alt => 'Locust',
-                       build => 5,
+                       build => 4.8, # 5 normal but 3 faster
                        size => 0.75,
                        cargo => 0,
                        armor => 0,
@@ -2636,7 +2720,8 @@ use strict;
                                {
                                        anti => 1,
                                        name => 'Acid Spit',
-                                       damage => [12 .. 15],
+                                       damage => 12,
+                                       upgrade => 1,
                                        type => 'projectile',
                                        cooldown => 0.6,
                                        range => 3,
@@ -2648,6 +2733,14 @@ use strict;
                        duration => 25,
                        cooldown => 60,
                        count => 2,
+                       upgrade => [
+                               {
+                                       # Flying Locusts
+                                       attr => {
+                                               flying => 1,
+                                       },
+                               },
+                       ],
                },
        ],
        upgrade => [
@@ -2656,9 +2749,6 @@ use strict;
                        min => 200,
                        gas => 200,
                        build => 160,
-                       attr => {
-                               flying => 1,
-                       },
                },
        ],
 },
@@ -2667,7 +2757,7 @@ use strict;
        race => 'zerg',
        cat => 'lair',
        name => 'Mutalisk',
-       unit => 2,
+       pop => 2,
        min => 100,
        gas => 100,
        build => 33,
@@ -2684,8 +2774,10 @@ use strict;
                {
                        anti => 3,
                        name => 'Glaive Wurm',
-                       damage => [9 .. 12],
+                       damage => 9,
+                       upgrade => 1,
                        splash => 'bounce',
+                       type => 'projectile',
                        psionic => 1,
                        cooldown => 1.5246,
                        range => 3,
@@ -2706,7 +2798,7 @@ use strict;
        race => 'zerg',
        cat => 'lair',
        name => 'Corruptor',
-       unit => 2,
+       pop => 2,
        min => 150,
        gas => 100,
        build => 40,
@@ -2723,9 +2815,11 @@ use strict;
                {
                        anti => 2,
                        name => 'Parasite Spores',
-                       damage => [14 .. 17],
+                       damage => 14,
+                       upgrade => 1,
                        bonus => {
-                               massive => [6 .. 9],
+                               massive => 6,
+                               -massive => 1,
                        },
                        type => 'projectile',
                        cooldown => 1.9,
@@ -2750,7 +2844,7 @@ use strict;
        cat => 'hive',
        name => 'Brood Lord',
        base => ['Corruptor'],
-       unit => 4,
+       pop => 4,
        min => 150+150,
        gas => 100+150,
        build => 34,
@@ -2768,7 +2862,8 @@ use strict;
                {
                        anti => 1,
                        name => 'Broodling Strike',
-                       damage => [20, 22, 24, 26],
+                       damage => 20,
+                       upgrade => 2,
                        cooldown => 2.5,
                        range => 9.5,
                },
@@ -2782,7 +2877,7 @@ use strict;
                        desc => 'Broodlings are spawned upon each attack',
                        duration => -1,
                        alt => 'Broodling',
-                       unit => 0,
+                       pop => 0,
 #                      build => 1,
                        size => 0.75,
                        cargo => 0,
@@ -2796,7 +2891,8 @@ use strict;
                                {
                                        anti => 1,
                                        name => 'Claws',
-                                       damage => [4 .. 7],
+                                       damage => 4,
+                                       upgrade => 1,
                                        cooldown => 0.6455,
                                        range => 0,
                                },
@@ -2818,7 +2914,7 @@ use strict;
        race => 'zerg',
        cat => 'hive',
        name => 'Viper',
-       unit => 3,
+       pop => 3,
        min => 100,
        gas => 200,
        build => 40,
@@ -2834,7 +2930,8 @@ use strict;
        },
        speed => 2.9531,
        sight => 11,
-       energy => 200,
+       energy => 50, #XXX
+       capacity => 200,
        special => [
                {
                        name => 'Blinding Cloud',
@@ -2869,7 +2966,7 @@ use strict;
        race => 'zerg',
        cat => 'hive',
        name => 'Ultralisk',
-       unit => 6,
+       pop => 6,
        min => 300,
        gas => 200,
        build => 55,
@@ -2886,7 +2983,8 @@ use strict;
                {
                        anti => 1,
                        name => 'Kaiser Blades',
-                       damage => [35, 38, 41, 44],
+                       damage => 35,
+                       upgrade => 3,
                        splash => 1,
                        cooldown => 0.861,
                        range => 1,