From c8b78d7e45756addbc07cc8591ff68ba95f538c3 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 13 Jun 2015 00:30:35 +0200 Subject: [PATCH] sc: calculate dps from damage and cooldown Show exactly derived values instead of hardcoded "dps". Old data remains available for manual comparison, but should be similar or better in some cases of human/measurement errors. --- sc.plp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/sc.plp b/sc.plp index 0426b6e..4105bec 100644 --- a/sc.plp +++ b/sc.plp @@ -219,28 +219,33 @@ sub showrange { 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 '' unless $_; + return '' unless $attack; my $tagbase = ''; my $out = showrange($row, 'attack', $area, 'damage'); - $out .= '+' if $_->{splash}; + $out .= '+' if $attack->{splash}; + $attack->{dps} = $attack->{cooldown} && [ + map { 24 * $_ / $attack->{cooldown} * ($attack->{count} // 1) } + map { ref $_ ? @{$_} : $_ } + $attack->{damage} + ]; $out .= '' . showrange($row, 'attack', $area, 'dps'); return $tagbase . $out; } @@ -380,8 +385,7 @@ sub showrange {
ground/air
damage done per single attack against ground/air units
2nd column indicates relative amount of damage done in - a certain - amount of time + 1 second of fastest game time
splash damage+ hits nearby objects as well
explosive damage does only 50% damage to small units, 75% to medium, 100% to large -- 2.30.0