X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/84a63eb1d32b332d3b0b2cf290c35b2e0c8d8f07..e63f4654e84f3753b2f271189ec8f9b7ddb5322a:/sc.plp
diff --git a/sc.plp b/sc.plp
index 0a0f161..e5a5b44 100644
--- a/sc.plp
+++ b/sc.plp
@@ -1,4 +1,5 @@
<(common.inc.plp)><:
+use List::Util qw(max);
my %scver = (
id => 'bw',
@@ -111,16 +112,7 @@ sub showrange {
my $out = '';
$out .= '
' . 'â½' x !!($attack->{anti} & 1);
$out .= ' | ' . 'â³' x !!($attack->{anti} & 2);
- $out .= ' | ';
+ $out .= ' | ';
my $upattack = $row->{upgraded}->{attack}->[$area];
my $damage = $attack->{damage};
@@ -129,6 +121,27 @@ sub showrange {
$maxdamage = $maxdamage->[-1] if ref $maxdamage;
$out .= "$attack->{count}Ã " if $attack->{count} > 1;
+ $out .= '*'
+ if $attack->{type} eq 'explosive';
+ $out .= '~'
+ if $attack->{type} eq 'implosive';
+ $out .= sprintf('≥',
+ (map {
+ $_ =~ /^light/ ? 'unit-s' :
+ $_ eq 'armored' ? 'unit-l' :
+ $_ eq 'organic' ? 'unit-o' :
+ $_ =~ /^massive/ ? 'unit-h' :
+ '',
+ } join '_', keys %{ $attack->{bonus} }),
+ join(', ', map {(
+ sprintf('+%s vs %s',
+ (map {
+ ref $_ ? showrange($_->[0], $_->[-1]) : $_
+ } $attack->{bonus}->{$_}),
+ $_,
+ ),
+ )} keys %{ $attack->{bonus} }),
+ ) if $attack->{bonus};
$out .= showrange($damage, $maxdamage);
$out .= sprintf('%s',
$attack->{splash} eq 'line' ? ('linear', 'Ã') : ('splash', '+')
@@ -145,6 +158,11 @@ sub showrange {
}
}
$damage *= ($attack->{count} // 1) / $attack->{cooldown};
+ if (my $bonus = $upattack->{bonus} // $attack->{bonus}) {
+ $maxdamage += $_ for max(
+ map { ref $_ ? $_->[-1] : $_ } values %{$bonus}
+ );
+ }
$maxdamage *= ($upattack->{count} // $attack->{count} // 1)
/ ($upattack->{cooldown} // $attack->{cooldown});
$out .= showrange($damage, $maxdamage);
@@ -356,14 +374,20 @@ if ($scver{major} > 1) {
targets â½ ground
and/or â³ air
damage given per single hit
- dps indicates relative amount of damage done in
- 1 second of in-game time
+ dps indicates relative amount of damage
+ done in 1 second of in-game time
splash damage hits all objects nearby +
or in a straight line Ã.
- explosive damage does only
+ <:
+if ($scver{major} > 1) {
+ :>does not include ≥bonus damage
+ dealt to susceptible unit types<:
+} else {
+ :>*explosive damage does only
50% damage to small units, 75% to medium, 100% to large
- concussive/plasma damage does
- 25% to large, 50% medium, 100% to small units
+ ~concussive/plasma damage does
+ 25% to large, 50% medium, 100% to small units<:
+} :>
sight
range in which the unit detects other units
emphasis indicates ability to detect cloaked units
|