X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/3553bfad44ded8de93e288d7c73bd397c9d8a95a..7fdfc28a5f960c452bcc5efc8792a93ffa4bd144:/sc.plp diff --git a/sc.plp b/sc.plp index 2a748dc..a1c885f 100644 --- a/sc.plp +++ b/sc.plp @@ -95,10 +95,11 @@ sub coltoggle { <:= coltoggle('name', '') :> - min - gas + cost + gas <:= coltoggle(qw'build cost') :> - <:= coltoggle(qw'size size') :> + <:= coltoggle(qw'size size') :> + attr HP shield ⛨ @@ -114,10 +115,28 @@ sub showrange { my ($min, $max) = @_; return '' if not defined $min; $_ &&= int($_ + .5) for $min, $max; # round halves up - return $min if not defined $max or $min == $max; + return $min || '-' if !$max or $min == $max; return "$min-$max"; } + sub showcost { + my ($row, $unit) = @_; + return join(' ', + sprintf('cost %s%%', join '-', + map { $_ && sprintf '%.0f', 100 * $row->{cost} / $_ } grep { defined $_ } + $unit->{energy}, + $unit->{upgraded}->{energy}, + $unit->{capacity}, + $unit->{upgraded}->{capacity}, + ), + !defined $row->{maint} ? () : sprintf('+%s%%/s', join '-', + map { sprintf '%.1f', 100 * $row->{maint} / $_ } grep $_, + $unit->{capacity}, + $unit->{upgraded}->{capacity}, + ), + ); + } + sub showattack { my ($row, $area) = @_; my $attack = $row->{attack}->[$area] @@ -129,6 +148,8 @@ sub showrange { $maxdamage += ($upattack->{upgrade} // $attack->{upgrade}) * 3; my $out = ''; + $out .= sprintf '¤ ', showcost($attack, $row) + if $attack->{cost}; $out .= sprintf('%s× ', showrange($attack->{count}, $upattack->{count}), ) if $attack->{count} > 1; @@ -216,12 +237,7 @@ sub showrange { (map { $_ && " ($_)" } join ', ', #TODO: apply upgrades $_->{range} ? "range $_->{range}" : (), - $_->{cost} ? sprintf('cost %.0f%%%s', - 100 * $_->{cost} / $row->{energy}, - defined $_->{maint} && sprintf('+%.1f%%/s', - 100 * $_->{maint} / $row->{energy}, - ), - ) : + $_->{cost} ? showcost($_, $row) : $_->{cooldown} ? "cooldown $_->{cooldown}s" : (), ), ), @@ -241,12 +257,17 @@ sub showrange { !!$_->{base} && '+', $_->{build} || '0', ), - sprintf('%s', + sprintf('%s', $_-> {cargo} < 0 ? ('supply', T => 'transport') : $_->{upgraded}->{cargo} < 0 ? ('supply magic-opt', T => 'optional transport') : $_->{attr}->{flying} ? ('air', F => 'flying') : $_->{attr}->{structure} ? ('x', B => 'building') : - ([qw( x s m l l h h h h )]->[ $_->{cargo} ], $_->{cargo} || '-', ''), + ( + [qw( x s m l l h h h h )]->[ $_->{cargo} ], + $_->{cargo} || '-', + $_->{cargo} ? 'transportable' : 'untransportable', + ), + defined $_->{size} && sprintf('⌀%.1f ', $_->{size}), ), sprintf('%s', defined $_->{pop} && $_->{pop} < 0 && ' unit-supply', @@ -442,7 +463,7 @@ if ($scver{major} > 1) {
passive abilities are always enabled
hover for description
range is maximum range required to activate -
cost is percentage of total energy lost +
cost is energy loss percentage on spawn and when fully charged