sc: encode hots bonus damage in data
[sheet.git] / sc-units-hots.inc.pl
index b6e7048b3fe177ee9df3cbf8623a3ef379f62567..5f23a22f5c092b26160d603a298922804e9b1788 100644 (file)
@@ -24,14 +24,15 @@ use strict;
                light => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => 5,
                        dps => 3.3,
                        cooldown => 1.5,
+                       range => 0,
                },
-               range => 0,
-       },
+       ],
        speed => 2.8125,
        sight => 8,
 },
@@ -51,15 +52,16 @@ use strict;
                armored => 1,
                structure => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => 20,
                        dps => 16,
                        cooldown => 1.25,
+                       type => 'projectile',
+                       range => 7,
                },
-               air => 'ground',
-               range => 7,
-       },
+       ],
        speed => 0,
        sight => 11,
        detect => 1,
@@ -82,16 +84,18 @@ use strict;
                armored => 1,
                mech => 1,
                psionic => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [8 .. 11],
                        dps => [9.4, 10.6, 11.8, 13.0],
                        type => 'projectile',
                        cooldown => 0.85,
+                       range => 5,
                },
-               range => 5,
-       },
+       ],
        speed => 1.875,
        sight => 9,
        energy => 200,
@@ -140,17 +144,18 @@ use strict;
                mech => 1,
                psionic => 1,
                massive => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [6 .. 9],
                        dps => [16.3, 19.0, 21.7, 24.4],
                        cooldown => 2.21,
                        count => 6,
+                       range => 7,
                },
-               air => 'ground',
-               range => 7,
-       },
+       ],
        speed => 1.4062,
        sight => 14,
        energy => 200,
@@ -198,15 +203,16 @@ use strict;
                armored => 1,
                structure => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => 20,
                        dps => 16,
                        cooldown => 1.25,
+                       type => 'projectile',
+                       range => 13,
                },
-               air => 'ground',
-               range => 13,
-       },
+       ],
        speed => 0,
        sight => 11,
        energy => 100,
@@ -239,15 +245,16 @@ use strict;
                light => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [8 .. 11],
                        dps => [13.3, 15.0, 16.7, 18.4],
                        cooldown => 1.2,
                        count => 2,
+                       range => 0,
                },
-               range => 0,
-       },
+       ],
        speed => 2.25,
        sight => 9,
        special => [
@@ -285,16 +292,16 @@ use strict;
                mech => 1,
                psionic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [6 .. 9],
                        dps => [6 .. 9],
                        cooldown => 1.0,
+                       range => 5,
                },
-               air => 'ground',
-       },
+       ],
        speed => 2.25,
-       range => 5,
        sight => 10,
        energy => 200,
        special => [
@@ -344,17 +351,19 @@ use strict;
                armored => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [10 .. 13],
                        dps => [6.9, 7.6, 8.3, 9.0],
-                       #bonus => +4 A,
+                       bonus => {
+                               armored => 4,
+                       },
                        type => 'projectile',
                        cooldown => 1.44,
+                       range => 6,
                },
-               air => 'ground',
-               range => 6,
-       },
+       ],
        speed => 2.9531,
        sight => 10,
        special => [
@@ -436,14 +445,15 @@ use strict;
                organic => 1,
                psionic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [45, 50, 55, 60],
                        dps => [26.6, 29.6, 32.6, 35.6],
                        cooldown => 1.694,
+                       range => 0,
                },
-               range => 0,
-       },
+       ],
        speed => 2.8125,
        sight => 8,
        special => [
@@ -474,17 +484,19 @@ use strict;
                psionic => 1,
                massive => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [25, 28, 31, 34],
                        dps => [14.3, 16.0, 17.7, 19.4],
-                       #bonus => +10 (+1) B,
+                       bonus => {
+                               organic => [10 .. 13],
+                       },
                        splash => 1,
                        cooldown => 1.754,
+                       range => 3,
                },
-               air => 'ground',
-               range => 3,
-       },
+       ],
        speed => 2.8125,
        sight => 9,
 },
@@ -506,15 +518,18 @@ use strict;
                armored => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [20, 22, 24, 26],
-                       #bonus => +30 (+3) A,
+                       bonus => {
+                               armored => [30, 33, 36, 39],
+                       },
                        dps => [13.8, 15.2, 16.6, 18.0],
                        cooldown => 1.45,
+                       range => 6,
                },
-               range => 6,
-       },
+       ],
        speed => 2.25,
        sight => 9,
        special => [
@@ -544,36 +559,32 @@ use strict;
                armored => 1,
                mech => 1,
                massive => 1,
+               jump => 'Cliff Walk',
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [15, 17, 19, 21],
                        dps => [18.2, 20.6, 23.0, 25.4],
                        splash => 'line',
                        cooldown => 1.65,
                        count => 2,
+                       range => 6,
                },
-               range => 6,
-       },
+       ],
        speed => 2.25,
        sight => 10,
-       special => [
-               {
-                       name => 'Cliff Walk',
-                       abbr => 'cw',
-                       desc => 'can walk up and down cliffs',
-                       duration => -1,
-               },
-       ],
        upgrade => [
                {
                        name => 'Extended Thermal Lance',
                        min => 200,
                        gas => 200,
                        build => 140,
-                       attack => {
-                               range => 3,
-                       },
+                       attack => [
+                               {
+                                       range => 3,
+                               },
+                       ],
                },
        ],
 },
@@ -594,6 +605,7 @@ use strict;
        attr => {
                light => 1,
                mech => 1,
+               flying => 1,
        },
        speed => 1.875,
        sight => 11,
@@ -634,6 +646,7 @@ use strict;
                armored => 1,
                mech => 1,
                psionic => 1,
+               flying => 1,
        },
        speed => 2.9531,
        sight => 10,
@@ -671,18 +684,22 @@ use strict;
        attr => {
                light => 1,
                mech => 1,
+               flying => 1,
        },
-       attack => {
-               air => {
+       attack => [
+               {
+                       anti => 2,
                        damage => [5 .. 8],
                        dps => [9, 10.8, 12.6, 14.4],
-                       #bonus => +5 L,
+                       bonus => {
+                               light => 5,
+                       },
                        type => 'projectile',
                        cooldown => 1.11,
                        count => 2,
+                       range => 5,
                },
-               range => 5,
-       },
+       ],
        speed => 4.25,
        sight => 10,
        energy => 200,
@@ -702,9 +719,11 @@ use strict;
                        min => 150,
                        gas => 150,
                        build => 90,
-                       attack => {
-                               range => 2,
-                       },
+                       attack => [
+                               {
+                                       range => 2,
+                               },
+                       ],
                },
        ],
 },
@@ -725,17 +744,20 @@ use strict;
        attr => {
                armored => 1,
                mech => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [6 .. 9],
-                       #bonus => +4 (+1), +10 (+1) A,
+                       bonus => {
+                               armored => [4 .. 7],
+                       },
                        dps => [12, 14, 16, 18],
                        cooldown => 0.5,
+                       range => 6, # keeps firing until range 8
                },
-               air => 'ground',
-               range => 6, # keeps firing until range 8
-       },
+       ],
        speed => 2.25,
        sight => 10,
        special => [
@@ -745,6 +767,13 @@ use strict;
                        desc => 'increases damage to armored by 6 for 20 seconds',
                        duration => 20,
                        cooldown => 60,
+                       attack => [
+                               {
+                                       bonus => {
+                                               armored => 6, # total +10 .. 13
+                                       },
+                               },
+                       ],
                },
        ],
 },
@@ -766,20 +795,24 @@ use strict;
                light => 1,
                mech => 1,
                psionic => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        name => 'Pulsar Beam',
                        damage => 15,
                        # costs energy
-                       #bonus => +10 L,
+                       bonus => {
+                               light => 10,
+                       },
                        dps => 17.4,
                        cooldown => 0.86,
                        cost => 25,
                        maint => 1.4,
+                       range => 5, #XXX 4?
                },
-               range => 5, #XXX 4?
-       },
+       ],
        speed => 4,
        sight => 10,
        energy => 200,
@@ -822,18 +855,21 @@ use strict;
                armored => 1,
                mech => 1,
                massive => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [30, 33, 36, 39],
-                       #bonus => +14 Ma Air,
+                       bonus => {
+                               'massive air' => 14,
+                       },
                        dps => [9.1, 10.0, 10.9, 11.8],
                        type => 'projectile',
                        cooldown => 3.3,
+                       range => 15,
                },
-               air => 'ground',
-               range => 15,
-       },
+       ],
        speed => 1.875,
        sight => 12,
 },
@@ -855,10 +891,13 @@ use strict;
                armored => 1,
                mech => 1,
                massive => 1,
+               flying => 1,
        },
-       attack => {
-               range => 8, # leash range 14
-       },
+       attack => [
+               {
+                       range => 8, # leash range 14
+               },
+       ],
        speed => 1.875,
        sight => 12,
        special => [
@@ -876,24 +915,25 @@ use strict;
                        attr => {
                                light => 1,
                                mech => 1,
+                               flying => 1,
                        },
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 3,
                                        damage => [5 .. 8],
 #                                      dps => 26.7 (+5.3),
                                        dps => [3.3, 4.0, 4.7, 5.4],
 #                                      cooldown => 0.5 (0.125/ 0.25),
                                        cooldown => 3.0,
                                        count => 2,
+                                       range => 2,
                                },
-                               air => 'ground',
-                               range => 2,
-                       },
+                       ],
                        speed => 7.5,
                        sight => 7,
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Graviton Catapult',
                        min => 150,
@@ -923,14 +963,15 @@ use strict;
                organic => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => 5,
                        dps => 3.3,
                        cooldown => 1.5,
+                       range => 0,
                },
-               range => 0,
-       },
+       ],
        speed => 2.8125,
        sight => 8,
 },
@@ -969,15 +1010,17 @@ use strict;
                mech => 1,
                structure => 1,
        },
-       attack => {
-               air => {
+       attack => [
+               {
+                       anti => 2,
                        damage => 12,
                        dps => 27.9,
                        cooldown => 0.8608,
                        count => 2,
+                       type => 'projectile',
+                       range => 7,
                },
-               range => 7,
-       },
+       ],
        speed => 0,
        sight => 11,
        detect => 1,
@@ -987,9 +1030,11 @@ use strict;
                        min => 100,
                        gas => 100,
                        build => 80,
-                       attack => {
-                               range => 1,
-                       },
+                       attack => [
+                               {
+                                       range => 1,
+                               },
+                       ],
                },
                {
                        name => 'Building Armor',
@@ -1019,15 +1064,16 @@ use strict;
                mech => 1,
                structure => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => 40,
                        dps => 20,
                        splash => 1,
                        cooldown => 2,
+                       range => 6,
                },
-               range => 6,
-       },
+       ],
        speed => 0,
        sight => 11,
        upgrade => [
@@ -1050,9 +1096,11 @@ use strict;
                        min => 100,
                        gas => 100,
                        build => 80,
-                       attack => {
-                               range => 1,
-                       },
+                       attack => [
+                               {
+                                       range => 1,
+                               },
+                       ],
                },
        ],
 },
@@ -1073,16 +1121,16 @@ use strict;
                light => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        name => 'C-14 rifle',
                        damage => [6 .. 9],
                        dps => [7, 8.2, 9.4, 10.6],
                        cooldown => 0.8608,
+                       range => 5,
                },
-               air => 'ground',
-               range => 5,
-       },
+       ],
        speed => 2.25,
        upgrade => [
                {
@@ -1103,13 +1151,14 @@ use strict;
                        min => 100,
                        gas => 100,
                        build => 170,
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 3,
                                        dps => [10.5, 12.2, 13.9, 15.6],
                                        cooldown => 0.5739,
+                                       range => 5,
                                },
-                               air => 'ground',
-                       },
+                       ],
                        duration => 15,
                },
        ],
@@ -1132,16 +1181,19 @@ use strict;
                armored => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [10 .. 13],
-                       #bonus => +10 (+1) A,
+                       bonus => {
+                               armored => [10 .. 13],
+                       },
                        dps => [6.7, 7.4, 8.1, 8.8],
                        type => 'projectile',
                        cooldown => 1.5,
+                       range => 6,
                },
-               range => 6,
-       },
+       ],
        special => [
                {
                        name => 'Stim Pack',
@@ -1152,17 +1204,19 @@ use strict;
                        min => 100,
                        gas => 100,
                        build => 170,
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 3,
                                        dps => [10 .. 13],
+                                       type => 'projectile',
                                        cooldown => 1.0,
+                                       range => 6,
                                },
-                               air => 'ground',
-                       },
+                       ],
                        duration => 15,
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Concussive Shells',
                        abbr => 'cs',
@@ -1192,28 +1246,26 @@ use strict;
        attr => {
                light => 1,
                organic => 1,
+               jump => 'Jet Pack',
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [4 .. 7],
                        dps => [7.3, 9.1, 10.9, 12.7],
                        cooldown => 1.1,
                        count => 2,
+                       range => 4.5,
                },
-               range => 4.5,
-       },
+       ],
        speed => 3.75,
        sight => 9,
        special => [
-               {
-                       name => 'Jet Pack',
-                       abbr => 'jp',
-                       desc => 'jump up and down cliffs',
-               },
                {
                        name => 'Combat Drugs',
                        abbr => 'cd',
                        desc => 'heal 2 HP per second after 10 seconds out of combat',
+                       duration => -1,
                },
        ],
 },
@@ -1234,16 +1286,18 @@ use strict;
                organic => 1,
                psionic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [10 .. 13],
-                       #bonus => +10 (+1) L,
+                       bonus => {
+                               light => [10 .. 13],
+                       },
                        dps => [6.7, 7.4, 8.1, 8.8],
                        cooldown => 1.5,
+                       range => 6,
                },
-               air => 'ground',
-               range => 6,
-       },
+       ],
        speed => 2.25,
        sight => 11,
        energy => 200,
@@ -1299,15 +1353,19 @@ use strict;
                light => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [8 .. 11],
+                       bonus => {
+                               light => [6 .. 9],
+                       },
                        dps => [3.2, 3.6, 4.0, 4.4],
                        splash => 'line',
                        cooldown => 2.5,
+                       range => 5,
                },
-               range => 5,
-       },
+       ],
        speed => 4.25,
        sight => 10,
        special => [
@@ -1318,17 +1376,20 @@ use strict;
                        duration => 4,
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Infernal Pre-Igniter',
                        min => 150,
                        gas => 150,
                        build => 110,
-                       attack => {
-                               ground => {
-                                       #bonus => +6 (+1), +11 (+1) L,
+                       attack => [
+                               {
+                                       damage => [6 .. 9],
+                                       bonus => {
+                                               light => [5, 5, 5, 5], # total [11 .. 14]
+                                       },
                                },
-                       },
+                       ],
                },
        ],
 },
@@ -1350,15 +1411,19 @@ use strict;
                organic => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [18, 20, 22, 24],
+                       bonus => {
+                               light => [0 .. 3], # ?
+                       },
                        dps => [9 .. 12],
                        splash => 1,
                        cooldown => 2,
+                       range => 2,
                },
-               range => 2,
-       },
+       ],
        speed => 2.25,
        sight => 10,
        special => [
@@ -1369,17 +1434,19 @@ use strict;
                        duration => 4,
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Infernal Pre-Igniter',
                        min => 150,
                        gas => 150,
                        build => 110,
-                       attack => {
-                               ground => {
-                                       #bonus => +12 (+1) L,
+                       attack => [
+                               {
+                                       bonus => {
+                                               light => [12, 12, 12, 12],
+                                       },
                                },
-                       },
+                       ],
                },
        ],
 },
@@ -1400,18 +1467,21 @@ use strict;
                light => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => 125,
-                       #bonus => +35 Shield,
+                       bonus => {
+                               shields => 35,
+                       },
                        splash => 1,
                        cooldown => 40,
+                       range => 5,
                },
-               range => 5,
-       },
+       ],
        speed => 2.8125,
        sight => 7,
-       update => [
+       upgrade => [
                {
                        name => 'Drilling Claws',
                        abbr => 'dc',
@@ -1439,31 +1509,37 @@ use strict;
                armored => 1,
                mech => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [15, 17, 19, 21],
-                       #bonus => +10 (+1)A,
+                       bonus => {
+                               armored => [10 .. 13],
+                       },
                        dps => [14.4, 16.3, 18.2, 20.1],
                        cooldown => 1.04,
+                       range => 7,
                },
-               range => 7,
-       },
+       ],
        special => [
                {
                        name => 'siege mode',
                        abbr => 'sg',
                        alt => 'Sieged Tank',
                        cargo => 0,
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 1,
                                        damage => [35, 38, 41, 44],
-                                       #bonus => 15 (+2)A,
+                                       bonus => {
+                                               armored => [15, 17, 19, 21],
+                                       },
                                        dps => [11.7, 12.7, 13.7, 14.7],
                                        splash => 1,
                                        cooldown => 3,
+                                       range => 13,
                                },
-                               range => 13,
-                       },
+                       ],
                        speed => 0,
                        duration => 4,
                },
@@ -1489,18 +1565,22 @@ use strict;
                mech => 1,
                massive => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [30, 33, 36, 39],
                        dps => [46.9, 51.6, 56.3, 61.0],
                        cooldown => 1.28,
                        range => 7,
                        count => 2,
                },
-               air => {
+               {
+                       anti => 2,
                        name => 'Explosive Payload',
                        damage => [6 .. 9],
-                       #bonus => +6 (+1) L Air,
+                       bonus => {
+                               'light air' => [6 .. 9],
+                       },
                        dps => [8, 9.3, 10.6, 11.9],
                        splash => 1,
                        type => 'projectile',
@@ -1508,14 +1588,15 @@ use strict;
                        range => 10,
                        count => 4,
                },
-               air => {
+               {
+                       anti => 2,
                        name => 'High Impact Payload',
                        damage => [24, 26, 28, 30],
                        dps => [12 .. 15],
                        cooldown => 2,
                        range => 10,
                },
-       },
+       ],
        speed => 1.875,
        sight => 11,
 },
@@ -1535,33 +1616,38 @@ use strict;
        attr => {
                armored => 1,
                mech => 1,
+               flying => 1,
        },
-       attack => {
-               air => {
+       attack => [
+               {
+                       anti => 2,
                        damage => [10 .. 13],
-                       #bonus => +4A,
+                       bonus => {
+                               armored => 4,
+                       },
                        dps => [10 .. 13],
                        type => 'projectile',
                        cooldown => 2,
                        count => 2,
+                       range => 9,
                },
-               range => 9,
-       },
+       ],
        special => [
                {
+                       name => 'Assault Mode',
+                       abbr => 'am',
+                       build => 3, # transformation time
+                       alt => 'Landed Viking',
                        cargo => 2,
-                       attack => {
-                               name => 'Assault Mode',
-                               abbr => 'am',
-                               build => 3, # transformation time
-                               alt => 'Landed Viking',
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 1,
                                        damage => [12 .. 15],
                                        dps => [12 .. 15],
                                        cooldown => 1,
+                                       range => 6,
                                },
-                               range => 6,
-                       },
+                       ],
                },
        ],
        speed => 2.75,
@@ -1583,6 +1669,7 @@ use strict;
        attr => {
                armored => 1,
                mech => 1,
+               flying => 1,
        },
        speed => 2.5,
        energy => 200,
@@ -1630,17 +1717,19 @@ use strict;
        attr => {
                light => 1,
                mech => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [12 .. 15],
                        dps => [19.2, 20.8, 22.4, 24.0],
                        type => 'projectile',
                        cooldown => 1.25,
                        count => 2,
+                       range => 6,
                },
-               range => 6,
-       },
+       ],
        speed => 2.75,
        sight => 10,
        energy => 200,
@@ -1673,6 +1762,7 @@ use strict;
        attr => {
                light => 1,
                mech => 1,
+               flying => 1,
        },
        speed => 2.25,
        sight => 11,
@@ -1692,15 +1782,15 @@ use strict;
                                mech => 1,
                                structure => 1,
                        },
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 3,
                                        damage => 8,
                                        dps => 10,
                                        cooldown => 0.8,
+                                       range => 6,
                                },
-                               air => 'ground',
-                               range => 6,
-                       },
+                       ],
                        speed => 0,
                        sight => 7,
                        upgrade => [
@@ -1709,9 +1799,11 @@ use strict;
                                        min => 100,
                                        gas => 100,
                                        build => 80,
-                                       attack => {
-                                               range => 1,
-                                       },
+                                       attack => [
+                                               {
+                                                       range => 1,
+                                               },
+                                       ],
                                },
                                {
                                        name => 'Building Armor',
@@ -1734,11 +1826,14 @@ use strict;
                                light => 1,
                                mech => 1,
                                structure => 1,
+                               flying => 1,
                        },
                        cooldown => 0,
-                       attack => {
-                               range => 8,
-                       },
+                       attack => [
+                               {
+                                       range => 8,
+                               },
+                       ],
                        sight => 7,
                        upgrade => [
                                {
@@ -1746,9 +1841,11 @@ use strict;
                                        min => 100,
                                        gas => 100,
                                        build => 80,
-                                       attack => {
-                                               range => 1,
-                                       },
+                                       attack => [
+                                               {
+                                                       range => 1,
+                                               },
+                                       ],
                                },
                                {
                                        name => 'Building Armor',
@@ -1766,27 +1863,29 @@ use strict;
                        desc => 'launches missile to do 100 damage plus splash'
                                . ' unless targeted unit moves to 13 range within 5 seconds of charging',
                        range => 10,
-                       attack => {
-                               damage => 100,
-                               splash => 1,
-                       },
+                       attack => [
+                               {
+                                       damage => 100,
+                                       splash => 1,
+                               },
+                       ],
                        cost => 75,
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Durable Materials',
                        min => 150,
                        gas => 150,
                        build => 110,
-                       special => {
-                               at => {
-                                       duration => 240,
-                               },
-                               pd => {
-                                       duration => 30,
-                               },
-                       },
+#                      special => {
+#                              at => {
+#                                      duration => 240,
+#                              },
+#                              pd => {
+#                                      duration => 30,
+#                              },
+#                      },
                },
                {
                        name => 'Corvid Reactor',
@@ -1814,20 +1913,26 @@ use strict;
                armored => 1,
                mech => 1,
                massive => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [8 .. 11],
                        dps => [35.6, 40.0, 44.4, 48.8],
                        cooldown => 0.225,
+                       type => 'projectile',
+                       range => 6,
                },
-               air => {
+               {
+                       anti => 2,
                        damage => [6 .. 9],
                        dps => [26.7, 31.1, 35.5, 39.9],
                        cooldown => 0.225,
+                       type => 'projectile',
+                       range => 6,
                },
-               range => 6,
-       },
+       ],
        speed => 1.875,
        sight => 12,
        energy => 200,
@@ -1842,12 +1947,14 @@ use strict;
                        duration => 3,
                        range => 10,
                        cost => 100,
-                       attack => {
-                               damage => 300,
-                       },
+                       attack => [
+                               {
+                                       damage => 300,
+                               },
+                       ],
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Behemoth Reactor',
                        min => 150,
@@ -1876,14 +1983,15 @@ use strict;
                light => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => 5,
                        dps => 3.3,
                        cooldown => 1.5,
+                       range => 0,
                },
-               range => 0,
-       },
+       ],
        speed => 2.8125,
        creep => 1.0,
        sight => 8,
@@ -1905,23 +2013,25 @@ use strict;
                organic => 1,
                psionic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [4 .. 7],
                        dps => [8, 10, 12, 14],
                        cooldown => 1.0,
-                       type => 'projectile',
+                       type => 'projectile', # except if range < 3
                        range => 5,
                        count => 2,
                },
-               air => {
+               {
+                       anti => 2,
                        damage => [9 .. 12],
                        dps => [9 .. 12],
                        cooldown => 1.0,
-                       type => 'projectile',
+                       type => 'projectile', # except if range < 3
                        range => 7,
                },
-       },
+       ],
        speed => 0.9375,
        creep => 2.7,
        sight => 9,
@@ -1970,6 +2080,7 @@ use strict;
        attr => {
                armored => 1,
                organic => 1,
+               flying => 1,
        },
        speed => 0.586,
        creep => 0,
@@ -2019,6 +2130,7 @@ use strict;
        attr => {
                armored => 1,
                organic => 1,
+               flying => 1,
        },
        speed => 1.875,
        creep => 0,
@@ -2112,15 +2224,18 @@ use strict;
                organic => 1,
                structure => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => 25,
-                       #bonus => +5A,
+                       bonus => {
+                               armored => 5,
+                       },
                        dps => 13.5,
                        cooldown => 1.85,
+                       range => 7,
                },
-               range => 7,
-       },
+       ],
        speed => (1.0),
        creep => 2.5,
        sight => 11,
@@ -2142,16 +2257,19 @@ use strict;
                organic => 1,
                structure => 1,
        },
-       attack => {
-               air => {
+       attack => [
+               {
+                       anti => 2,
                        damage => 15,
-                       #bonus => + 30 B,
+                       bonus => {
+                               organic => 30,
+                       },
                        dps => 17.4,
                        type => 'projectile',
                        cooldown => 0.8608,
+                       range => 7,
                },
-               range => 7,
-       },
+       ],
        speed => (1.0),
        creep => 2.5,
        sight => 11,
@@ -2174,13 +2292,14 @@ use strict;
                light => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [5 .. 8],
                        dps => [7.2, 8.6, 10.0, 11.4],
                        cooldown => 0.696,
                },
-       },
+       ],
        speed => 2.9531,
        creep => 1.3,
        range => 0,
@@ -2191,12 +2310,13 @@ use strict;
                        min => 200,
                        gas => 200,
                        build => 130,
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 1,
                                        dps => [8.5, 10.2, 11.9, 13.6],
                                        cooldown => -0.109,
                                },
-                       },
+                       ],
                        req => 'Hive',
                },
                {
@@ -2225,14 +2345,18 @@ use strict;
        attr => {
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [20, 22, 24, 26],
-                       #bonus => +15 (+2)L / +60 (+3)S,
+                       bonus => {
+                               light => [15, 17, 19, 21],
+                               structure => [60, 63, 66, 69],
+                       },
                        splash => 1,
+                       range => 0,
                },
-               range => 0,
-       },
+       ],
        speed => 2.5,
        creep => 1.3,
        sight => 8,
@@ -2264,13 +2388,14 @@ use strict;
                armored => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [16, 18, 20, 22],
                        dps => [8 .. 11],
                        cooldown => 2.0,
                },
-       },
+       ],
        speed => 2.25,
        creep => 1.3,
        range => 4,
@@ -2321,16 +2446,16 @@ use strict;
                light => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [12 .. 15],
                        dps => [16, 17.3, 18.6, 19.9],
-                       type => 'projectile',
+                       type => 'projectile', # except meelee
                        cooldown => 0.75,
+                       range => 5,
                },
-               air => 'ground',
-               range => 5,
-       },
+       ],
        speed => 2.25,
        creep => 1.5,
        sight => 9,
@@ -2340,9 +2465,11 @@ use strict;
                        min => 150,
                        gas => 150,
                        build => 80,
-                       attack => {
-                               range => 1,
-                       },
+                       attack => [
+                               {
+                                       range => 1,
+                               },
+                       ],
                },
                {
                        name => 'Muscular Augments',
@@ -2411,21 +2538,21 @@ use strict;
                                light => 1,
                                organic => 1,
                        },
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 3,
                                        damage => 8,
                                        dps => 9.3,
                                        cooldown => 0.8608,
+                                       range => 5,
                                },
-                               air => 'ground',
-                               range => 5,
-                       },
+                       ],
                        speed => 0.9375,
                        creep => 1.3,
                        sight => 9,
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Pathogen Glands',
                        min => 150,
@@ -2472,13 +2599,14 @@ use strict;
                armored => 1,
                organic => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        dps => [27.9, 30.2, 32.5, 34.8],
                        type => 'projectile',
                        cooldown => 0.86,
                },
-       },
+       ],
        speed => 2.95,
        creep => 1.3,
        sight => 10,
@@ -2494,15 +2622,16 @@ use strict;
                                light => 1,
                                organic => 1,
                        },
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 1,
                                        damage => [12 .. 15],
                                        dps => [14.0, 15.2, 16.4, 17.6],
                                        type => 'projectile',
                                        cooldown => 0.6,
+                                       range => 3,
                                },
-                               range => 3,
-                       },
+                       ],
                        speed => 1.875,
                        creep => 1.4,
                        sight => 6,
@@ -2511,12 +2640,15 @@ use strict;
                        count => 2,
                },
        ],
-       update => [
+       upgrade => [
                {
                        name => 'Flying Locusts',
                        min => 200,
                        gas => 200,
                        build => 160,
+                       attr => {
+                               flying => 1,
+                       },
                },
        ],
 },
@@ -2536,21 +2668,22 @@ use strict;
        attr => {
                light => 1,
                organic => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 3,
                        damage => [9 .. 12],
                        dps => [5.9, 6.6, 7.3, 8.0],
                        splash => 'bounce',
                        psionic => 1,
                        cooldown => 1.5246,
+                       range => 3,
                },
-               air => 'ground',
-               range => 3,
-       },
+       ],
        speed => 4,
        sight => 11,
-       update => [
+       upgrade => [
                {
                        name => 'Tissue Regeneration',
                        abbr => 'tr',
@@ -2574,17 +2707,21 @@ use strict;
        attr => {
                armored => 1,
                organic => 1,
+               flying => 1,
        },
-       attack => {
-               air => {
+       attack => [
+               {
+                       anti => 2,
                        damage => [14 .. 17],
-                       #bonus => +6 (+1)Ma,
+                       bonus => {
+                               massive => [6 .. 9],
+                       },
                        dps => [7.4, 7.9, 8.4, 8.9],
                        type => 'projectile',
                        cooldown => 1.9,
+                       range => 6,
                },
-               range => 6,
-       },
+       ],
        speed => 2.9531,
        sight => 10,
        special => [
@@ -2615,15 +2752,17 @@ use strict;
                armored => 1,
                organic => 1,
                massive => 1,
+               flying => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [20, 22, 24, 26],
                        dps => [8.0, 8.8, 9.6, 10.4],
                        cooldown => 2.5,
+                       range => 9.5,
                },
-               range => 9.5,
-       },
+       ],
        speed => 1.4062,
        sight => 12,
        special => [
@@ -2643,14 +2782,15 @@ use strict;
                                light => 1,
                                organic => 1,
                        },
-                       attack => {
-                               ground => {
+                       attack => [
+                               {
+                                       anti => 1,
                                        damage => [4 .. 7],
                                        dps => [6.2, 7.7, 9.2, 10.7],
                                        cooldown => 0.6455,
+                                       range => 0,
                                },
-                               range => 0,
-                       },
+                       ],
                        speed => 3.836,
                        creep => 1.0,
                        sight => 7,
@@ -2680,6 +2820,7 @@ use strict;
                armored => 1,
                organic => 1,
                psionic => 1,
+               flying => 1,
        },
        speed => 2.9531,
        sight => 11,
@@ -2730,15 +2871,16 @@ use strict;
                organic => 1,
                massive => 1,
        },
-       attack => {
-               ground => {
+       attack => [
+               {
+                       anti => 1,
                        damage => [35, 38, 41, 44],
                        dps => [40.7, 44.2, 47.7, 51.2],
                        splash => 1,
                        cooldown => 0.861,
+                       range => 1,
                },
-               range => 1,
-       },
+       ],
        speed => 2.9531,
        creep => 1.3,
        sight => 9,