X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/681c73d50a05475fe165a51c8251ab32b0f7cefa..19f02522730843594a07ae01d184f127c390c852:/sc.plp?ds=inline
diff --git a/sc.plp b/sc.plp
index f0824bf..b3c27fc 100644
--- a/sc.plp
+++ b/sc.plp
@@ -20,18 +20,25 @@ my %scvers = (
game => 'StarCraft II LotV',
major => 2,
},
+ index => 'bw',
+ 1 => 'bw',
+ 2 => 'lotv',
);
-$Request ||= 'bw';
-$Request = 'lotv' if $Request eq '2';
-my %scver = %{ $scvers{$Request} }
- or Abort("Requested version $Request not available", '404 unknown');
+my $requestver = $scvers{$Request ||= 'index'}
+ or Html(), Abort("Requested version $Request
not available", '404 request not found');
+if (ref $requestver ne 'HASH') {
+ $header{Location} = $requestver;
+ Abort("Canonical URL for $Request is at $requestver", '302 subpage alias');
+}
+
+my %scver = %{$requestver};
my $datafile = "sc-units-$Request.inc.pl";
Html({
title => "$scver{title} unit cheat sheet",
- version => '1.1',
+ version => '1.2',
description => [
"Reference of $scver{game} unit properties,"
. " comparing various statistics of all the units in $scver{name}"
@@ -45,8 +52,8 @@ Html({
$scver{major} < 2 ? qw' bw broodwar brood war ' :
qw' starcraft2 lotv hots wol ',
],
- stylesheet => [qw'light'],
- raw => '',
+ stylesheet => [qw( light dark )],
+ raw => '',
data => [$datafile],
});
@@ -103,12 +110,12 @@ sub coltoggle {
:>
<:= coltoggle(exists $get{order} ? 'race' : 'source' => '') :> | -<:= coltoggle(name => 'name') :> | -<:= coltoggle(cost => 'cost') :> | -gas | +<:= coltoggle(name => 'name') :> | +<:= coltoggle(cost => 'cost') :> | +gas | <:= coltoggle(build => 'build') :> | <:= coltoggle(qw'size size') :> | -attr | +attr | <:= coltoggle(HP => 'hp') :> | shield | ⨠| @@ -184,7 +191,8 @@ sub showrangeint { sprintf('+%s vs %s', showrangeint( $attack->{bonus}->{$_}, - $attack->{bonus}->{$_} + $attack->{bonus}->{"-$_"} * 3, + ($upattack->{bonus} // $attack->{bonus})->{$_} + + ($upattack->{bonus} // $attack->{bonus})->{"-$_"} * 3, ), $_, ), @@ -264,8 +272,8 @@ sub showrangeint { $_->{hp} += $_->{shield} if $_->{shield}; return ( - '' . ($_->{min} // ''), - ' | ' . ($_->{gas} || ''), + ' | ' . ($_->{min} // ''), + ' | ' . ($_->{gas} || ''), defined $_->{transform} ? sprintf(' | %.0f', $_->{transform}, ) : @@ -280,7 +288,8 @@ sub showrangeint { sprintf(' | %s', $_-> {cargo} < 0 ? ('supply', T => 'transport') : $_->{upgraded}->{cargo} < 0 ? ('supply magic-opt', T => 'optional transport') : - $_->{attr}->{flying} ? ('air', F => 'flying') : + $_-> {attr}->{flying} ? ('air', F => 'flying') : + $_->{upgraded}->{attr}->{flying} ? ('air magic-opt', F => 'potentially flying') : $_->{attr}->{structure} ? ('x', B => 'building') : ( [qw( x s m l l h h h h )]->[ $_->{cargo} ], @@ -289,7 +298,7 @@ sub showrangeint { ), defined $_->{size} && sprintf('â%.1f ', $_->{size}), ), - sprintf(' | %s', + sprintf(' | %s', defined $_->{pop} && $_->{pop} < 0 && ' unit-supply', defined $_->{pop} && $_->{pop} == .5 ? '½' : $_->{pop}, ), @@ -348,10 +357,10 @@ sub showrangeint { && qq'â', ' | ' . showmagic($_), !$_->{attack}->[1] ? () : ( - ' | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
', showattack($_, 1), ' | ' + ' | ||||||||||||||||||||||||
', showattack($_, 1), ' | ' ), !$_->{attack}->[2] ? () : ( - ' | ||||||||||||||||||||||||
', showattack($_, 2), ' | ' + ' | ||||||||||||||||||||||||
', showattack($_, 2), ' | '
),
"\n"
);
@@ -365,11 +374,6 @@ sub showrangeint {
if ($get{order} eq 'name') {
@rows = sort {$a->{name} cmp $b->{name}} @rows;
}
- elsif ($get{order} eq 'hp') {
- $_->{order} = (
- $_->{hp}*1.01 + $_->{armor} + $_->{shield} + $_->{size}/1024,
- ) for @rows;
- }
elsif ($get{order} eq 'cost') {
$_->{order} = (
$_->{gas}*1.5 + $_->{min} + $_->{pop}/8 + $_->{build}/256/8
@@ -390,6 +394,11 @@ sub showrangeint {
+ $_->{hp}/512 + $_->{min}/8192
) for @rows;
}
+ elsif ($get{order} eq 'hp') {
+ $_->{order} = (
+ $_->{hp}*1.01 + $_->{armor} + $_->{shield} + $_->{size}/1024,
+ ) for @rows;
+ }
elsif ($get{order} eq 'attack') {
$_->{order} = $_->{hp} / 1024 + $_->{shield} / 1008 + max(
map {
@@ -446,7 +455,8 @@ sub showrangeint {
|