X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/8ad63ee2484b0c1f344e6f8ff5fbd4ccbd963e1b..c8b78d7e45756addbc07cc8591ff68ba95f538c3:/sc.plp diff --git a/sc.plp b/sc.plp index 76974c9..4105bec 100644 --- a/sc.plp +++ b/sc.plp @@ -108,6 +108,9 @@ Unit properties as seen or measured in Brood War .unit-magic { padding-left: 0.5em; } + .magic-perma { + text-decoration: underline; + } .units .val { text-align: right; @@ -216,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; } @@ -246,22 +254,26 @@ sub showrange { my ($row) = @_; my $specials = $row->{special} or return ''; return join ' ', map { - sprintf '%s', + sprintf '%s', + $_->{duration} < 0 && ' class="magic-perma"', join('', $_->{name}, $_->{desc} ? ": $_->{desc}" : '', - $_->{range} ? sprintf(' (%s)', join ', ', - "range $_->{range}", -# "cost $_->{cost}", + $_->{range} || $_->{cost} ? sprintf(' (%s)', join ', ', + $_->{range} ? "range $_->{range}" : (), + $_->{cost} ? sprintf('cost %.0f%%', + 100 * $_->{cost} / $row->{energy} + ) : (), ) : '', ), - $_->{abbr}, - } @$specials; + sprintf($_->{build} ? '(%s)' : '%s', $_->{abbr}), + } grep { defined $_->{abbr} } @{$specials}; } sub showunitcols { my ($row) = @_; local $_ = $row; + $_->{hp} += $_->{shield} if $_->{shield}; my $suitchar = ''; if ($_->{suit}) { $suitchar = [qw/? s m l/]->[$_->{suit}]; @@ -325,7 +337,6 @@ sub showrange { printf '

%s

'."\n", $race, ucfirst $race if $grouped and $race ne $_->{race}; $_->{cat} = $_->{race} if not $grouped; - $_->{hp} += $_->{shield}; print( '', sprintf('%s', $cat ne $_->{cat} ? ('h', $cat = $_->{cat}) : ('d', ' ')), @@ -374,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 @@ -389,7 +399,7 @@ sub showrange {
speed
relative speed of movement (when in full motion, startup speed ignored)
specials -
special abilities +
special abilities are usually casted manually, but some are always active
parentheses () indicate that it needs to be researched first
hover for description
range is maximum range required to activate