X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/dd526b56391929a69bb47a5f7d4b911b61f463f8..fb1eaa01f44549af2e9283fc538027f58d39fb60:/sc.plp?ds=inline
diff --git a/sc.plp b/sc.plp
index a1dc143..ac78eb6 100644
--- a/sc.plp
+++ b/sc.plp
@@ -114,11 +114,15 @@ sub coltoggle {
sub showrange {
my ($min, $max) = @_;
return '' if not defined $min;
- $_ &&= int($_ + .5) for $min, $max; # round halves up
return $min || '-' if !$max or $min == $max;
return "$min-$max";
}
+sub showrangeint {
+ $_ &&= int($_ + .5) for @_; # round halves up
+ return showrange(@_);
+}
+
sub showcost {
my ($row, $unit) = @_;
return join(' ',
@@ -151,7 +155,7 @@ sub showrange {
$out .= sprintf '¤ ', showcost($attack, $row)
if $attack->{cost};
$out .= sprintf('%sà ',
- showrange($attack->{count}, $upattack->{count}),
+ showrangeint($attack->{count}, $upattack->{count}),
) if $attack->{count} > 1;
$out .= '*'
if $attack->{type} eq 'explosive';
@@ -169,7 +173,7 @@ sub showrange {
} join '_', @bonus),
join(', ', map {(
sprintf('+%s vs %s',
- showrange(
+ showrangeint(
$attack->{bonus}->{$_},
$attack->{bonus}->{$_} + $attack->{bonus}->{"-$_"} * 3,
),
@@ -182,7 +186,7 @@ sub showrange {
if $attack->{type} eq 'projectile';
$out .= sprintf '', $attack->{name} if $attack->{name};
- $out .= showrange($damage, $maxdamage);
+ $out .= showrangeint($damage, $maxdamage);
$out .= '' if $attack->{name};
$out .= sprintf('%s',
$attack->{splash} eq 'line' ? ('linear', '+') : ('splash', 'â')
@@ -191,7 +195,7 @@ sub showrange {
$out .= '
';
if ($attack->{dps}) {
# precalculated dps, do not touch
- $out .= showrange($attack->{dps}->[0],
+ $out .= showrangeint($attack->{dps}->[0],
$upattack->{dps}->[-1] // $attack->{dps}->[-1]
);
}
@@ -213,14 +217,14 @@ sub showrange {
}
$maxdamage *= ($upattack->{count} // $attack->{count} // 1)
/ ($upattack->{cooldown} // $attack->{cooldown});
- $out .= showrange($damage, $maxdamage);
+ $out .= showrangeint($damage, $maxdamage);
}
$out .= ' | ' . 'â½' x !!($attack->{anti} & 1);
$out .= ' | ' . 'â³' x !!($attack->{anti} & 2);
$out .= ' | ' .
- showrange($attack->{range}, $upattack->{range});
+ showrangeint($attack->{range}, $upattack->{range});
return $out;
}
@@ -303,14 +307,26 @@ sub showrange {
100 * $_->{shield} / $_->{hp}
) : ' | ' .
- showrange($_->{armor}, $_->{upgraded}->{armor}),
+ showrangeint($_->{armor}, $_->{upgraded}->{armor}),
showattack($_, 0),
' | ' . sprintf(
$_->{detect} ? '%s' : '%s',
- showrange($_->{sight}, $_->{upgraded}->{sight})
+ showrangeint($_->{sight}, $_->{upgraded}->{sight})
+ ),
+ sprintf(' | %s',
+ showrange(
+ map { $_ && sprintf '%.1f', $_ }
+ $_->{speed}, $_->{upgraded}->{speed}
+ ),
+ defined $_->{creep} && sprintf(' title="%s on creep"',
+ $_->{creep} == 1 ? 'same' : showrange(
+ map { $_ && sprintf '%.1f', $_ }
+ $_->{speed} * $_->{creep},
+ $_->{upgraded}->{speed} && $_->{upgraded}->{speed} *
+ ($_->{upgraded}->{creep} // $_->{creep}),
+ ),
+ ),
),
- ' | ' .
- showrange($_->{speed}, $_->{upgraded}->{speed}),
$_->{attr}->{jump}
&& qq'â',
' | ' . showmagic($_),
@@ -434,7 +450,8 @@ if ($scver{major} > 1) {
attack
damage given per single hit
dps indicates relative amount of damage
- done in 1 second of in-game time
+ done in 1 second of <:= $scver{major} > 1 ? 'Normal in-game time' :
+ 'time on Fast game speed' :>
splash damage hits all objects nearby â
or in a straight line +.
<:
@@ -457,7 +474,8 @@ if ($scver{major} > 1) {
range in which the unit detects other units
emphasis indicates ability to detect cloaked units
speed
- relative speed of movement (when in full motion, startup speed ignored)
+ top movement speed in hex per second
+ acceleration and deceleration ignored
specials
parentheses () indicate that it needs to be researched first
passive abilities are always enabled
|