sc: apply lotv stats changes
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 21 Apr 2018 23:07:20 +0000 (01:07 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 10 May 2018 14:49:06 +0000 (16:49 +0200)
Mostly from Liquipedia:
<http://liquipedia.net/starcraft2/Unit_Statistics_(Legacy_of_the_Void)>

sc-units-lotv.inc.pl

index b2d61e66b3b06348c5500f3c0d93a72c8c9b6a53..c0fb81ec8577a3934e76401a037f026d610ff476 100644 (file)
@@ -8,9 +8,9 @@ my %unit;
 for my $row (@{$hots}) {
        ref $row eq 'HASH' or next;
        for ($row, @{ $row->{special} }, @{ $row->{upgrade} }) {
-               $_ *= $RT for $_->{speed};
-               $_ /= $RT for $_->{build}, $_->{warp} // ();
-               $_->{cooldown} /= $RT for @{ $_->{attack} // [] };
+               $_ *= $RT for $_->{speed} // ();
+               $_ /= $RT for $_->{build} // (), $_->{warp} // (), $_->{cooldown} // ();
+               $_->{cooldown} and $_->{cooldown} /= $RT for @{ $_->{attack} // [] };
        }
        $unit{ lc $row->{name} =~ tr/ /_/r } = $row;
 }
@@ -21,34 +21,303 @@ for my $row (@{$hots}) {
 # protoss
 
 $unit{probe},
+
 $unit{photon_cannon},
-$unit{mothership},
+
+{
+       %{ $unit{mothership} },
+       speed => 2.62,
+},
+
 $unit{nexus},
-$unit{zealot},
+
+{
+       %{ $unit{zealot} },
+       special => [
+               {
+                       name => 'Charge',
+                       abbr => 'ch',
+                       desc => 'on attack, increases movement speed to 8.47 for 2.5s and deals 8 damage on hit',
+                       min => 100, # changed in 3.14.0
+                       gas => 100,
+                       build => 100,
+                       speed => .5,
+                       range => 4,
+                       duration => 2.5,
+                       cooldown => 7,
+               },
+       ],
+       upgrade => [
+               {
+                       name => 'Charge',
+                       speed => .98,
+               },
+       ],
+},
+
 $unit{sentry},
-$unit{stalker},
+
+{
+       %{ $unit{stalker} },
+       attack => [
+               {
+                       %{ $unit{stalker}->{attack}->[0] }, # particle disruptors
+                       damage => 13,
+                       bonus => {
+                               armored => 5,
+                               -armored => 1,
+                       },
+                       cooldown => 1.34,
+               },
+       ],
+},
+
 {
        race => 'protoss',
        cat => 'gateway',
        name => 'Adept',
+       pop => 2,
+       min => 100,
+       gas => 25,
+       build => 27,
+       warp => 20,
+       size => 1,
+       cargo => 2,
+       armor => 1,
+       hp => 70,
+       shield => 70,
+       attr => {
+               light => 1,
+               organic => 1,
+       },
+       attack => [
+               {
+                       anti => 1,
+                       name => undef, #TODO
+                       damage => 10,
+                       upgrade => 1,
+                       bonus => {
+                               light => 12,
+                               -light => 1,
+                       },
+                       type => 'projectile', #XXX: assumption
+                       cooldown => 1.61,
+                       range => 4,
+               },
+       ],
+       speed => 3.5,
+       sight => 9,
+       special => [
+               {
+                       name => 'Psionic Transfer',
+                       abbr => 'pt',
+                       desc => 'project shade, teleport after 7s',
+                       cooldown => 11,
+
+                       alt => 'Shade',
+                       build => 0,
+                       size => 0,
+                       cargo => 0,
+                       attr => {
+                               trans => 1,
+                       },
+                       attack => [], #TODO: indicate diff from parent
+                       speed => 5, #XXX: faster than 3.5
+                       range => 7, #XXX: calculate from speed
+                       sight => 4,
+               },
+       ],
+       upgrade => [
+               {
+                       name => 'Resonating Glaives',
+                       min => 100,
+                       gas => 100,
+                       build => 100,
+                       attack => [
+                               {
+                                       cooldown => -.5, # +45%
+                               },
+                       ],
+               },
+       ],
+},
+
+{
+       %{ $unit{high_templar} },
+       attack => [
+               {
+                       anti => 1,
+                       name => '?', #XXX
+                       damage => 4,
+                       upgrade => 1,
+                       cooldown => 1.25,
+                       range => 6,
+               },
+       ],
 },
-$unit{high_templar},
+
 $unit{dark_templar},
 $unit{archon},
 $unit{observer},
-$unit{warp_prism},
+
+{
+       %{ $unit{warp_prism} },
+       hp => 80,
+       upgrade => [
+               {
+                       %{ $unit{warp_prism}->{special}->[0] }, # gravitic drive
+                       speed => 1.23,
+               },
+       ],
+},
+
 $unit{immortal},
-$unit{colossus},
+
+{
+       %{ $unit{colossus} },
+       attack => [
+               {
+                       %{ $unit{colossus}->{attack}->[0] }, # thermal lances
+                       damage => 10,
+                       upgrade => 1,
+                       bonus => {
+                               light => 5,
+                               -light => 1,
+                       },
+#                      cooldown => 1.18, #XXX
+               },
+       ],
+},
+
 {
        race => 'protoss',
        cat => 'robotic',
        name => 'Disruptor',
+       pop => 3,
+       min => 150,
+       gas => 150,
+       build => 36,
+       size => 1,
+       cargo => 4,
+       armor => 1,
+       hp => 100,
+       shield => 100,
+       attr => {
+               armored => 1,
+               mech => 1,
+       },
+       attack => [
+               {
+                       anti => 1,
+                       name => 'Purification Nova',
+                       damage => 145,
+                       bonus => {
+                               shields => 55,
+                       },
+                       type => 'trans', #TODO: indicate
+                       splash => 1.5,
+                       cooldown => 14.3,
+                       range => 13, # 2s
+               },
+       ],
+       speed => 3.15,
+       sight => 9,
 },
+
 $unit{phoenix},
-$unit{void_ray},
-$unit{oracle},
-$unit{tempest},
-$unit{carrier},
+
+{
+       %{ $unit{void_ray} },
+       speed => 3.5,
+},
+
+{
+       %{ $unit{oracle} },
+       build => 37,
+       attack => [
+               {
+                       %{ $unit{oracle}->{attack}->[0] }, # pulsar beam
+                       bonus => {
+                               light => 7,
+                       },
+               },
+       ],
+       special => [
+               {
+                       name => 'Revelation',
+                       abbr => 'rv',
+                       desc => 'hit enemy units and buildings are revealed for ½ minute',
+                       cost => 50,
+                       range => 9,
+                       cooldown => 2.2,
+                       duration => 30,
+                       radius => 6,
+               },
+               {
+                       name => 'Stasis Ward',
+                       abbr => 'sw',
+                       desc => 'places ward for 170s',
+                       cost => 50,
+                       range => 6,
+                       build => 3.58,
+                       duration => 170,
+                       alt => 'Stasis Ward',
+                       hp => 30,
+                       shield => 30,
+                       armor => 0,
+                       attr => {
+                               light => 1,
+                               structure => 1,
+                       },
+                       sight => 0,
+                       speed => 0,
+                       special => [
+                               {
+                                       name => 'Permanent Cloak',
+                                       abbr => 'cl',
+                                       desc => 'cloaked at all times',
+                                       duration => -1,
+                               },
+                               {
+                                       name => 'Stasis Trap',
+                                       abbr => 'st',
+                                       desc => 'triggered by nearby ground units, trapping them for 21½s',
+                               },
+                       ],
+               },
+       ],
+},
+
+{
+       %{ $unit{tempest} },
+       hp => 300,
+       shield => 150,
+       attack => [
+               {
+                       %{ $unit{tempest}->{attack}->[0] }, # kinetic overload
+                       bonus => {
+                               massive => 22,
+                               -massive => 2,
+                       },
+               },
+               {
+                       %{ $unit{tempest}->{attack}->[1] }, # resonance coil
+                       damage => 40,
+                       upgrade => 4,
+               },
+       ],
+},
+
+{
+       %{ $unit{carrier} },
+       hp => 250,
+       special => [
+               {
+                       %{ $unit{carrier}->{special}->[0] }, # interceptor
+                       min => 5,
+               },
+       ],
+},
 
 # terran
 
@@ -56,62 +325,479 @@ $unit{scv},
 $unit{mule},
 $unit{missile_turret},
 $unit{planetary_fortress},
+
 $unit{marine},
-$unit{marauder},
-$unit{reaper},
-$unit{ghost},
-$unit{hellion},
-$unit{hellbat},
-$unit{widow_mine},
-$unit{siege_tank},
+
+{
+       %{ $unit{marauder} },
+       attack => [
+               {
+                       %{ $unit{marauder}->{attack}->[0] }, # punisher grenades
+                       count => 2,
+                       damage => 5,
+                       upgrade => 1,
+                       bonus => {
+                               armored => 5,
+                               -armored => 0,
+                       },
+               },
+       ],
+},
+
+{
+       %{ $unit{reaper} },
+       build => 32,
+},
+
+{
+       %{ $unit{ghost} },
+       min => 150,
+       gas => 125,
+       speed => 3.94,
+       special => [
+               {
+                       # replaces Sniper Round
+                       name => 'Steady Targeting',
+                       abbr => 'st',
+                       desc => '170 damage ignoring armor to a biological unit after 1.43s without damage',
+                       cost => 50,
+                       range => 10,
+                       duration => 1.43,
+               },
+               $unit{ghost}->{special}->[1], # emp round
+               $unit{ghost}->{special}->[2], # cloak
+               $unit{ghost}->{special}->[3], # tac nuke strike
+       ],
+},
+
+{
+       %{ $unit{hellion} },
+       attack => [
+               {
+                       %{ $unit{hellion}->{attack}->[0] }, # infernal flamethrower
+                       bonus => {
+                               light => 5,
+                               -light => 0,
+                       },
+               },
+       ],
+       #TODO smart servos
+},
+
+{
+       %{ $unit{hellbat} },
+       special => [
+               $unit{hellbat}->{special}->[0], # Hellion Mode
+               {
+                       name => 'Smart Servos',
+                       min => 100,
+                       gas => 100,
+                       build => 79,
+                       transform => -1.43, # halve #TODO: alter special duration?
+               },
+       ],
+},
+
+{
+       %{ $unit{widow_mine} },
+       build => 21,
+       attack => [
+               {
+                       %{ $unit{widow_mine}->{attack}->[0] }, # Sentinel Missiles
+                       bonus => {
+                               shields => 25,
+                       },
+               },
+       ],
+},
+
+{
+       %{ $unit{siege_tank} },
+       hp => 175,
+       special => [
+               {
+                       %{ $unit{siege_tank}->{special}->[0] }, # siege mode
+                       attack => [
+                               {
+                                       %{ $unit{siege_tank}->{special}->[0]->{attack}->[0] }, # shock cannon
+                                       damage => 40,
+                                       upgrade => 4,
+                                       bonus => {
+                                               armored => 30,
+                                               -armored => 1,
+                                       },
+                                       cooldown => 2.14,
+                               },
+                       ],
+               },
+       ],
+},
+
 {
        race => 'terran',
        cat => 'factory',
        name => 'Cyclone',
+       pop => 3,
+       min => 150,
+       gas => 100,
+       build => 32,
+       size => 1.5,
+       cargo => 3,
+       armor => 1,
+       hp => 180,
+       attr => {
+               armored => 1,
+               mech => 1,
+       },
+       attack => [
+               {
+                       anti => 1,
+                       name => 'Typhoon Blaster',
+                       damage => 3,
+                       upgrade => 1,
+                       bonus => {
+                               armored => 2,
+                               -armored => 0,
+                       },
+                       cooldown => .1,
+                       range => 6,
+               },
+       ],
+       speed => 4.13,
+       sight => 11,
+       special => [
+               {
+                       name => 'Lock On',
+                       abbr => 'lo',
+                       desc => 'target air for 160 damage ignoring armor while visible and within 15 range',
+                       range => 7,
+                       duration => 14,
+                       cooldown => 4,
+               },
+               {
+                       name => 'Rapid Fire Launchers',
+                       abbr => 'rf',
+                       desc => 'rapid first 12 Lock On shots',
+                       min => 75,
+                       gas => 75,
+                       build => 79,
+               },
+       ],
+},
+
+{
+       %{ $unit{thor} },
+       armor => 2,
+       attack => [
+               $unit{thor}->{attack}->[0],
+               $unit{thor}->{attack}->[1],
+               {
+                       %{ $unit{thor}->{attack}->[2] }, # high impact
+                       damage => 35,
+                       upgrade => 3,
+                       bonus => {
+                               armored => 15,
+                               -armored => 2,
+                       },
+                       cooldown => 2.14,
+               },
+       ],
+       #TODO smart servos
 },
-$unit{thor},
+
 $unit{viking},
 $unit{medivac},
+
 {
        race => 'terran',
        cat => 'starport',
        name => 'Liberator',
+
+       pop => 3,
+       min => 150,
+       gas => 150,
+       build => 43,
+       size => 1.5,
+       armor => 0,
+       hp => 180,
+       attr => {
+               armored => 1,
+               mech => 1,
+               flying => 1,
+       },
+       attack => [
+               {
+                       anti => 2,
+                       name => 'Lexington Rockets',
+                       damage => 5,
+                       upgrade => 1,
+                       type => 'projectile',
+                       cooldown => 1.29,
+                       count => 2,
+                       range => 5,
+               },
+       ],
+       special => [
+               {
+                       name => 'Defender Mode',
+                       abbr => 'dm',
+                       build => 2.88, # transformation time, 1.46s to revert
+                       alt => 'Defender Liberator',
+                       attack => [
+                               {
+                                       anti => 1,
+                                       name => 'Concord Cannon',
+                                       desc => 'within 5 diameter circle',
+                                       damage => 75,
+                                       upgrade => 5,
+                                       cooldown => 1.14,
+                                       range => 10,
+                               },
+                       ],
+                       speed => 0,
+                       sight => 15, # only targeted area
+                       upgrade => [
+                               {
+                                       name => 'Advanced Ballistics',
+                                       min => 150,
+                                       gas => 150,
+                                       build => 79,
+                                       attack => [
+                                               {
+                                                       range => 4,
+                                               },
+                                       ],
+                                       sight => 4,
+                               },
+                       ],
+               },
+       ],
+       speed => 4.72,
+       sight => 10,
 },
+
 $unit{banshee},
-$unit{raven},
+
+{
+       %{ $unit{raven} },
+       speed => 3.85,
+       special => [
+               {
+                       %{ $unit{raven}->{special}->[0] }, # auto-turret
+                       attack => [
+                               {
+                                       anti => 3,
+                                       name => '12 mm Gauss Cannon',
+                                       damage => 18,
+                                       cooldown => .57,
+                                       range => 6,
+                               },
+                       ],
+                       range => 1,
+                       duration => 10,
+                       upgrade => [
+                               $unit{raven}->{special}->[0]->{upgrade}->[0], # hi-sec auto tracking
+                               $unit{raven}->{special}->[0]->{upgrade}->[1], # structure armor
+                               # no more durable materials
+                       ],
+               },
+               {
+                       name => 'Interference Matrix',
+                       abbr => 'im',
+                       desc => 'disable target mech or psionic unit rendering it unable to attack or cast',
+                       cost => 50,
+                       range => 9,
+                       duration => 7.9,
+               },
+               {
+                       name => 'Anti-Armor Missile',
+                       abbr => 'aa',
+                       desc => 'launches missile to do 30 splash damage and reduces armor by 3',
+                       range => 10,
+                       size => 2.88,
+                       attack => [
+                               {
+                                       damage => 30,
+                                       splash => 1,
+                               },
+                       ],
+                       cost => 75,
+                       duration => 21,
+               },
+       ],
+},
+
 $unit{battlecruiser},
 
 # zerg
 
-$unit{larva},
 $unit{drone},
-$unit{queen},
-$unit{overlord},
+
+{
+       %{ $unit{queen} },
+       attack => [
+               $unit{queen}->{attack}->[0], # claws
+               {
+                       %{ $unit{queen}->{attack}->[1] }, # acid spines
+                       range => 8,
+               },
+       ],
+       range => 8,
+},
+
+{
+       %{ $unit{overlord} },
+       speed => .902, # changed in 4.0.0
+       upgrade => [
+               {
+                       %{ $unit{overlord}->{upgrade}->[0] }, # carapace
+                       speed => 2.63-.902,
+               },
+               $unit{overlord}->{upgrade}->[1], # sacs
+       ],
+},
+
 $unit{overseer},
+
 $unit{larva},
 $unit{spine_crawler},
-$unit{spore_crawler},
+
+{
+       %{ $unit{spore_crawler} },
+       attack => [
+               {
+                       %{ $unit{spore_crawler}->{attack}->[0] }, # seeker spores
+                       bonus => {
+                               organic => 15,
+                       },
+               },
+       ],
+       speed => (1.5),
+       creep => 2.6,
+},
+
 $unit{zergling},
-$unit{baneling},
+
+{
+       %{ $unit{baneling} },
+       min => 25,
+       upgrade => [
+               {
+                       %{ $unit{baneling}->{upgrade}->[0] }, # centrifugal hooks
+                       hp => 5,
+               },
+       ],
+},
+
 $unit{roach},
+
 {
        race => 'zerg',
        cat => 'hatchery',
        name => 'Ravager',
+       base => ['Roach'],
+       pop => 3,
+       min => 25,
+       gas => 75,
+       build => 9,
+       size => 1.5,
+       cargo => 4,
+       armor => 1,
+       hp => 120,
+       attr => {
+               organic => 1,
+       },
+       attack => [
+               {
+                       anti => 1,
+                       name => '?',
+                       damage => 16,
+                       upgrade => 2,
+                       type => 'projectile',
+                       cooldown => 1.14,
+                       range => 6,
+               },
+       ],
+       speed => 3.85,
+       creep => 1.3,
+       sight => 9,
 },
-$unit{hydralisk},
+
+{
+       %{ $unit{hydralisk} },
+       hp => 90,
+       upgrade => [
+               {
+                       %{ $unit{hydralisk}->{upgrade}->[0] }, # grooved spines
+                       attack => [
+                               {
+                                       range => 2,
+                               },
+                       ],
+               },
+               $unit{hydralisk}->{upgrade}->[1], # muscular augments
+       ],
+},
+
 {
        race => 'zerg',
        cat => 'lair',
        name => 'Lurker',
+       base => ['Hydralisk'],
+       pop => 3,
+       min => 50,
+       gas => 100,
+       build => 18,
+       cargo => 4,
+       armor => 1,
+       hp => 200,
+       attr => {
+               armored => 1,
+               organic => 1,
+       },
+       attack => [
+               {
+                       anti => 1,
+                       name => '?',
+                       damage => 20,
+                       upgrade => 2,
+                       splash => 'line',
+                       cooldown => 1.43,
+                       range => 9,
+                       bonus => {
+                               armored => 10,
+                               -armored => 1,
+                       },
+               },
+       ],
+       speed => 4.13,
+       creep => 1.3,
+       sight => 10,
 },
+
 $unit{infestor},
 $unit{nydus_worm},
-$unit{swarm_host},
+
+{
+       %{ $unit{swarm_host} },
+       gas => 75,
+       special => [
+               {
+                       %{ $unit{swarm_host}->{special}->[0] }, # locust
+                       hp => 50,
+               },
+       ],
+       upgrade => [],
+},
+
 $unit{mutalisk},
 $unit{corruptor},
 $unit{brood_lord},
 $unit{viper},
-$unit{ultralisk},
+
+{
+       %{ $unit{ultralisk} },
+       armor => 2,
+},
 
 ]