<:= coltoggle(exists $get{order} ? 'race' : 'source' => '') :> |
<:= coltoggle(name => 'name') :> |
- <:= coltoggle(cost => 'cost') :> |
- gas |
+ <:= coltoggle(cost => 'cost') :> |
+ gas |
<:= coltoggle(build => 'build') :> |
<:= coltoggle(qw'size size') :> |
attr |
@@ -172,24 +178,26 @@ sub showrangeint {
if $attack->{type} eq 'implosive';
if (my @bonus = sort grep { !/^-/ } keys %{ $attack->{bonus} }) {
$out .= sprintf('≥',
- (map {
+ (
$_ eq 'light' ? 'unit-s' :
$_ eq 'armored' ? 'unit-l' :
$_ eq 'organic' ? 'unit-o' :
$_ eq 'massive' ? 'unit-h' :
$_ eq 'shields' ? 'unit-shield' :
+ $_ eq 'structure' ? 'unit-x' :
'',
- } join '_', @bonus),
- join(', ', map {(
+ ),
+ (
sprintf('+%s vs %s',
showrangeint(
$attack->{bonus}->{$_},
- $attack->{bonus}->{$_} + $attack->{bonus}->{"-$_"} * 3,
+ ($upattack->{bonus} // $attack->{bonus})->{$_}
+ + ($upattack->{bonus} // $attack->{bonus})->{"-$_"} * 3,
),
$_,
),
- )} @bonus),
- );
+ ),
+ ) for @bonus;
}
$out .= 'â¢'
if $attack->{type} eq 'projectile';
@@ -243,9 +251,12 @@ sub showrangeint {
my $specials = $row->{special} or return '';
return join ' ', map {
sprintf '%s',
- $_->{duration} < 0 && ' class="magic-perma"',
join('',
- $_->{name},
+ $_->{duration} < 0 && ' class="magic-perma"',
+ $_->{detect} && ' class="unit-detect"',
+ ),
+ join('',
+ $_->{name} // $_->{alt},
$_->{desc} ? ": $_->{desc}" : '',
(map { $_ && " ($_)" } join ', ',
#TODO: apply upgrades
@@ -264,13 +275,13 @@ sub showrangeint {
$_->{hp} += $_->{shield} if $_->{shield};
return (
- '' . ($_->{min} // ''),
- ' | ' . ($_->{gas} || ''),
+ ' | ' . ($_->{min} // ''),
+ ' | ' . ($_->{gas} || ''),
defined $_->{transform} ? sprintf(' | %.0f',
$_->{transform},
) :
!defined $_->{build} ? ' | ' : sprintf(' | %s%.0f',
- defined $_->{warp} && qq(title="$_->{build} without warpgate"),
+ defined $_->{warp} && sprintf(' title="%.0f without warpgate"', $_->{build}),
!!$_->{base} && sprintf(
'+',
'from '.join('+', @{ $_->{base} }),
@@ -348,12 +359,11 @@ sub showrangeint {
$_->{attr}->{jump}
&& qq'â',
' | ' . showmagic($_),
- !$_->{attack}->[1] ? () : (
- ' |
| | ',
+ showattack($row, $_),
+ ' | ',
+ )} 1 .. $#{ $_->{attack} }),
"\n"
);
}
@@ -366,11 +376,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,8 +396,13 @@ 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(
+ $_->{order} = $_->{hp} / 16384 + max(
map {
($_->{dps} ? $_->{dps}->[-1] :
($_->{damage} + $_->{upgrade} * 3)
@@ -447,7 +457,8 @@ sub showrangeint {
- cost
-
- minerals and 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
|
---|