4 my $RT = 1.4; # real-time speed factor to faster
6 my $hots = do 'sc-units-hots.inc.pl' or die $!;
8 for my $row (@{$hots}) {
9 ref $row eq 'HASH' or next;
10 for ($row, @{ $row->{special} }, @{ $row->{upgrade} }) {
11 $_ *= $RT for $_->{speed} // ();
12 $_ /= $RT for $_->{build} // (), $_->{warp} // (), $_->{cooldown} // ();
13 $_->{cooldown} and $_->{cooldown} /= $RT for @{ $_->{attack} // [] };
15 $unit{ lc $row->{name} =~ tr/ /_/r } = $row;
28 %{ $unit{mothership} },
40 desc => 'on attack, increases movement speed to 8.47 for 2.5s and deals 8 damage on hit',
41 min => 100, # changed in 3.14.0
64 %{ $unit{stalker}->{attack}->[0] }, # particle disruptors
103 type => 'projectile', #XXX: assumption
112 name => 'Psionic Transfer',
114 desc => 'project shade, teleport after 7s',
124 attack => [], #TODO: indicate diff from parent
125 speed => 5, #XXX: faster than 3.5
126 range => 7, #XXX: calculate from speed
132 name => 'Resonating Glaives',
138 cooldown => -.5, # +45%
146 %{ $unit{high_templar} },
164 %{ $unit{warp_prism} },
168 %{ $unit{warp_prism}->{special}->[0] }, # gravitic drive
177 %{ $unit{colossus} },
180 %{ $unit{colossus}->{attack}->[0] }, # thermal lances
187 # cooldown => 1.18, #XXX
212 name => 'Purification Nova',
217 type => 'trans', #TODO: indicate
230 %{ $unit{void_ray} },
239 %{ $unit{oracle}->{attack}->[0] }, # pulsar beam
247 name => 'Revelation',
249 desc => 'hit enemy units and buildings are revealed for ½ minute',
257 name => 'Stasis Ward',
259 desc => 'places ward for 170s',
264 alt => 'Stasis Ward',
276 name => 'Permanent Cloak',
278 desc => 'cloaked at all times',
282 name => 'Stasis Trap',
284 desc => 'triggered by nearby ground units, trapping them for 21½s',
297 %{ $unit{tempest}->{attack}->[0] }, # kinetic overload
304 %{ $unit{tempest}->{attack}->[1] }, # resonance coil
316 %{ $unit{carrier}->{special}->[0] }, # interceptor
326 $unit{missile_turret},
327 $unit{planetary_fortress},
332 %{ $unit{marauder} },
335 %{ $unit{marauder}->{attack}->[0] }, # punisher grenades
359 # replaces Sniper Round
360 name => 'Steady Targeting',
362 desc => '170 damage ignoring armor to a biological unit after 1.43s without damage',
367 $unit{ghost}->{special}->[1], # emp round
368 $unit{ghost}->{special}->[2], # cloak
369 $unit{ghost}->{special}->[3], # tac nuke strike
377 %{ $unit{hellion}->{attack}->[0] }, # infernal flamethrower
390 $unit{hellbat}->{special}->[0], # Hellion Mode
392 name => 'Smart Servos',
396 transform => -1.43, # halve #TODO: alter special duration?
402 %{ $unit{widow_mine} },
406 %{ $unit{widow_mine}->{attack}->[0] }, # Sentinel Missiles
415 %{ $unit{siege_tank} },
419 %{ $unit{siege_tank}->{special}->[0] }, # siege mode
422 %{ $unit{siege_tank}->{special}->[0]->{attack}->[0] }, # shock cannon
455 name => 'Typhoon Blaster',
472 desc => 'target air for 160 damage ignoring armor while visible and within 15 range',
478 name => 'Rapid Fire Launchers',
480 desc => 'rapid first 12 Lock On shots',
492 $unit{thor}->{attack}->[0],
493 $unit{thor}->{attack}->[1],
495 %{ $unit{thor}->{attack}->[2] }, # high impact
531 name => 'Lexington Rockets',
534 type => 'projectile',
542 name => 'Defender Mode',
544 build => 2.88, # transformation time, 1.46s to revert
545 alt => 'Defender Liberator',
549 name => 'Concord Cannon',
550 desc => 'within 5 diameter circle',
558 sight => 15, # only targeted area
561 name => 'Advanced Ballistics',
586 %{ $unit{raven}->{special}->[0] }, # auto-turret
590 name => '12 mm Gauss Cannon',
599 $unit{raven}->{special}->[0]->{upgrade}->[0], # hi-sec auto tracking
600 $unit{raven}->{special}->[0]->{upgrade}->[1], # structure armor
601 # no more durable materials
605 name => 'Interference Matrix',
607 desc => 'disable target mech or psionic unit rendering it unable to attack or cast',
613 name => 'Anti-Armor Missile',
615 desc => 'launches missile to do 30 splash damage and reduces armor by 3',
630 $unit{battlecruiser},
639 $unit{queen}->{attack}->[0], # claws
641 %{ $unit{queen}->{attack}->[1] }, # acid spines
649 %{ $unit{overlord} },
650 speed => .902, # changed in 4.0.0
653 %{ $unit{overlord}->{upgrade}->[0] }, # carapace
656 $unit{overlord}->{upgrade}->[1], # sacs
663 $unit{spine_crawler},
666 %{ $unit{spore_crawler} },
669 %{ $unit{spore_crawler}->{attack}->[0] }, # seeker spores
682 %{ $unit{baneling} },
686 %{ $unit{baneling}->{upgrade}->[0] }, # centrifugal hooks
716 type => 'projectile',
727 %{ $unit{hydralisk} },
731 %{ $unit{hydralisk}->{upgrade}->[0] }, # grooved spines
738 $unit{hydralisk}->{upgrade}->[1], # muscular augments
746 base => ['Hydralisk'],
782 %{ $unit{swarm_host} },
786 %{ $unit{swarm_host}->{special}->[0] }, # locust
799 %{ $unit{ultralisk} },