print "</p>\n\n";
sub addupgrade {
- my ($ref, $increase) = @_;
+ my ($ref, $increase, $org) = @_;
if (ref $increase eq 'HASH') {
- addupgrade(\${$ref}->{$_}, $increase->{$_}) for keys %{$increase};
+ addupgrade(\${$ref}->{$_}, $increase->{$_}, $org->{$_}) for keys %{$increase};
}
elsif (ref $increase eq 'ARRAY') {
- addupgrade(\${$ref}->[$_], $increase->[$_]) for 0 .. $#{$increase};
+ addupgrade(\${$ref}->[$_], $increase->[$_], $org->[$_]) for 0 .. $#{$increase};
}
+ ${$ref} //= $org;
${$ref} += $increase if $increase =~ /^-?[0-9.]+/;
}
for my $upgrade (@{ $unit->{upgrade} }) {
while (my ($col, $increase) = each %{$upgrade}) {
defined $unit->{$col} or next;
- addupgrade(\( $unit->{upgraded}->{$col} //= $unit->{$col} ), $increase);
+ addupgrade(\$unit->{upgraded}->{$col}, $increase, $unit->{$col});
+ }
+ }
+ for my $special (@{ $unit->{special} }) {
+ for my $upgrade (@{ $special->{upgrade} }) {
+ while (my ($col, $increase) = each %{$upgrade}) {
+ defined $special->{$col} or next;
+ addupgrade(\$special->{upgraded}->{$col}, $increase, $special->{$col});
+ }
}
}
}
$out .= showrange($damage, $maxdamage);
$out .= '</span>' if $attack->{name};
$out .= sprintf('<span class="unit-splash" title="%s">%s</span>',
- $attack->{splash} eq 'line' ? ('linear', '×') : ('splash', '+')
+ $attack->{splash} eq 'line' ? ('linear', '+') : ('splash', '⁜')
) if $attack->{splash};
$out .= '<td class="val hurt hurtrel">';
!$_->{attack}->[1] ? () : (
'<tr><td colspan=12>', showattack($_, 1), '<td colspan=3>'
),
+ !$_->{attack}->[2] ? () : (
+ '<tr><td colspan=12>', showattack($_, 2), '<td colspan=3>'
+ ),
"\n"
);
}
<dd>damage given per single hit
<dd><span class="hurtrel">dps</span> indicates relative amount of damage
done in 1 second of in-game time
- <dd>splash damage hits all objects nearby <span class="unit-splash">+</span>
- or in a straight line <span class="unit-splash">×</span>.
+ <dd>splash damage hits all objects nearby <span class="unit-splash">⁜</span>
+ or in a straight line <span class="unit-splash">+</span>.
<dd><:
if ($scver{major} > 1) {
:>does not include <span>≥</span>bonus damage