X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/d8aa909e15e63d619dcb06df614accc41acbad96..5d63f06fcd53df308f4a31a894227de85a6a683c:/sc.plp diff --git a/sc.plp b/sc.plp index 450d1cb..3437f8f 100644 --- a/sc.plp +++ b/sc.plp @@ -9,7 +9,7 @@ my %scver = ( major => 1, ); -if ($ENV{PATH_INFO} and $ENV{PATH_INFO} eq '/2') { +if ($Request and $Request eq '2') { %scver = ( id => 'hots', name => 'Heart of the Swarm', @@ -22,7 +22,7 @@ my $datafile = "sc-units-$scver{id}.inc.pl"; Html({ title => "$scver{title} unit cheat sheet", - version => 'v1.1', + version => '1.1', description => [ "Reference of $scver{game} unit properties," . " comparing various statistics of all the units in $scver{name}" @@ -40,19 +40,19 @@ Html({ data => [$datafile], }); -print "

$scver{game} units

\n\n"; +say "

$scver{game} units

\n"; my $units = do $datafile; die "Cannot open unit data: $_\n" for $@ || $! || (); my $patch = shift @{$units} or die "Cannot open unit data: metadata not found\n"; -print "

Unit properties as seen or measured in $scver{name}\n$patch.\n"; -print "Also see the $_ table.\n" for join(', ', - ('StarCraft 2: HotS') x ($scver{major} < 2), - ('original SC: Brood War') x ($scver{major} > 1), +say "

Unit properties as seen or measured in $scver{name}\n$patch."; +say "Also see the $_ table." for join(', ', + (showlink('StarCraft 2: HotS', '/sc/2')) x ($scver{major} < 2), + (showlink('original SC: Brood War', '/sc')) x ($scver{major} > 1), ); -print "

\n\n"; +say "

\n"; sub addupgrade { my ($ref, $increase, $org) = @_; @@ -85,11 +85,9 @@ for my $unit (@{$units}) { sub coltoggle { my ($name, $id, $nolink) = @_; - return sprintf( - (defined $get{order} ? $get{order} eq $id : !$id) ? '%2$s ▼' - : $nolink ? '%2$s' : '%s', - $id && "order=$id", $name - ); + return "$name ▼" if defined $get{order} ? $get{order} eq $id : !$id; + return $name if $nolink; + return showlink($name, '?'.($id && "order=$id")); } :> @@ -376,7 +374,7 @@ sub showrangeint { my ($race, $cat) = ('', ''); for (@rows) { if ($grouped) { - printf '

%s

'."\n", + say sprintf '

%s

', $race = $_->{race}, ucfirst $race unless $race eq $_->{race}; } @@ -407,7 +405,7 @@ sub showrangeint {
cost -
minerals+gas required to create one unit +
minerals and gas required to create one unit
includes total expenses if based on existing units
build
relative time needed to create at least one unit @@ -415,9 +413,8 @@ sub showrangeint { and +parent units
size
Transports can fit upto - 8 - non-Flying units -
number of command points taken per unit + 8 non-Flying cargo units +
number of command points taken while alive
<: if ($scver{major} > 1) { :>received damage depends on @@ -430,17 +427,31 @@ if ($scver{major} > 1) {
massive ⚓ units cannot be lifted or slowed and can break force fields<: } else { - :>organic/mechanic unit + :>abilities may hit only organic + or mechanic targets
affected by Small, Medium, or - Large unit damage<: + Large damage<: } :> -
HP
- total number of hitpoints (including shields) +
HP +
total number of hitpoints (including shields) +
everything zerg (except for eggs) regenerates one point every + <:= $scver{major} == 1 ? '4½' : '3.7' :> seconds
shield
percentage of HP in shields -
shields always take full damage, irrelevant of unit size -
does not take armor bonuses, but upgrades can decrease damage to any shield hit by upto 3 +
<: +if ($scver{major} > 1) { + :>shields always take full damage, irrelevant of unit size +
<: +} + :>does not take armor bonuses, + but upgrades can decrease damage to any shield hit by upto 3 +
<: +if ($scver{major} > 1) { + :>after 10 seconds out of combat, 2 points are recharged per game second<: +} else { + :>recharges one point every 2½ seconds<: +} :>
armor
base unit armor
can be increased by upto 3 at various facilities @@ -448,9 +459,8 @@ if ($scver{major} > 1) {
reduction applies to initial damage, before size penalties (so a plasma hit of 12 to 4 armor large deals 2 damage, not ½)
attack -
damage given per single hit -
dps indicates relative amount of damage - done in 1 second of in-game time +
damage per single hit +
some weapons fire multiple × times, multiplying armor penalties
splash damage hits all objects nearby ⁜ or in a straight line +.
<: @@ -461,30 +471,38 @@ if ($scver{major} > 1) { Point Defense Drones<: } else { :>*explosive damage does only - 50% damage to small units, 75% to medium, 100% to large + 50% damage to Small units, + 75% to Medium, + 100% to Large
~concussive/plasma damage does - 25% to large, 50% medium, 100% to small units<: + 25% to Large, + 50% Medium, + 100% to Small units<: } :> +
dps indicates relative total amount of damage + done in 1 second of <:= $scver{major} > 1 ? 'Normal in-game time' : + 'time on Fast game speed' :>
targets ▽ ground and/or △ air
range -
maximum range of weapon (note Sieged Tank also has a minimum range) +
maximum hex distance a weapon can fire (note Sieged Tank also has a minimum)
sight
range in which the unit detects other units
emphasis indicates ability to detect cloaked units
speed -
relative speed of movement (when in full motion, startup speed ignored) +
top movement speed in hex per second +
acceleration and deceleration ignored
specials
parentheses () indicate that it needs to be researched first
passive abilities are always enabled
hover for description -
range is maximum range required to activate -
cost is energy loss percentage on spawn and when fully charged +
range is maximum distance allowed to activate +
cost describes energy loss percentage on spawn and when fully charged

-When two values are given (1-2), second value indicates attribute after all -possible upgrades. +When two values are given (1-2), the second value indicates the attribute +after all possible upgrades.