latin: palm graffiti font placeholder
[sheet.git] / sc.plp
diff --git a/sc.plp b/sc.plp
index 042719abfc79cab58320c5e1393abf11d004acb5..b3c27fc6c8705c02786aa3bba48350b380af8e5f 100644 (file)
--- a/sc.plp
+++ b/sc.plp
@@ -20,13 +20,20 @@ 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} // {} }
+my $requestver = $scvers{$Request ||= 'index'}
        or Html(), Abort("Requested version <q>$Request</q> 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({
@@ -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,
                                        ),
                                        $_,
                                ),
@@ -366,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
@@ -391,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 {