sub showattack {
my ($row, $area) = @_;
- local $_ = $row->{attack}->{$area};
- if (not ref $_) {
+ my $attack = $row->{attack}->{$area};
+ if (not ref $attack) {
# reference to another area
- $area = $_;
- $_ = $row->{attack}->{$area};
+ $area = $attack;
+ $attack = $row->{attack}->{$area};
}
- return '<td colspan="2" class="hurt">' unless $_;
+ return '<td colspan="2" class="hurt">' unless $attack;
my $tagbase = '<td class="val hurt';
- if (ref $_ and $_->{type}) {
- if ($_->{type} eq 'explosive') {
+ if (ref $attack and $attack->{type}) {
+ if ($attack->{type} eq 'explosive') {
$tagbase .= ' unit-l';
}
- elsif ($_->{type} eq 'implosive') {
+ elsif ($attack->{type} eq 'implosive') {
$tagbase .= ' unit-s';
}
}
$tagbase .= '">';
my $out = showrange($row, 'attack', $area, 'damage');
- $out .= '<span class="unit-splash">+</span>' if $_->{splash};
+ $out .= '<span class="unit-splash">+</span>' if $attack->{splash};
+ $attack->{dps} = $attack->{cooldown} && [
+ map { 24 * $_ / $attack->{cooldown} * ($attack->{count} // 1) }
+ map { ref $_ ? @{$_} : $_ }
+ $attack->{damage}
+ ];
$out .= '<td class="val hurt hurtrel">' . showrange($row, 'attack', $area, 'dps');
return $tagbase . $out;
}
<dt>ground/air
<dd>damage done per single attack against ground/air units
<dd>2nd column indicates relative amount of damage done in
- <span title="the time in which a dragoon fires a shot">a certain
- amount</span> of time
+ 1 second of fastest game time
<dd>splash damage<span class="unit-splash">+</span> hits nearby objects as well
<dd><span class="hurt unit-l">explosive</span> damage does only
50% damage to small units, 75% to medium, 100% to large