X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/dda7e4bcad0e3c78e0a06693b90bc97da943fa23..424c0dbea2a9dbe423c269bc7619546688fbd6f4:/sc.plp diff --git a/sc.plp b/sc.plp index a7da312..e426a6e 100644 --- a/sc.plp +++ b/sc.plp @@ -55,13 +55,14 @@ print "Also see the $_ table.\n" for join(', ', print "

\n\n"; sub addupgrade { - my ($ref, $increase) = @_; + my ($ref, $increase, $org) = @_; if (ref $increase eq 'HASH') { - addupgrade(\${$ref}->{$_}, $increase->{$_}) for keys %{$increase}; + addupgrade(\${$ref}->{$_}, $increase->{$_}, $org->{$_}) for keys %{$increase}; } elsif (ref $increase eq 'ARRAY') { - addupgrade(\${$ref}->[$_], $increase->[$_]) for 0 .. $#{$increase}; + addupgrade(\${$ref}->[$_], $increase->[$_], $org->[$_]) for 0 .. $#{$increase}; } + ${$ref} //= $org; ${$ref} += $increase if $increase =~ /^-?[0-9.]+/; } @@ -69,7 +70,7 @@ for my $unit (@{$units}) { for my $upgrade (@{ $unit->{upgrade} }) { while (my ($col, $increase) = each %{$upgrade}) { defined $unit->{$col} or next; - addupgrade(\( $unit->{upgraded}->{$col} //= $unit->{$col} ), $increase); + addupgrade(\$unit->{upgraded}->{$col}, $increase, $unit->{$col}); } } } @@ -112,7 +113,7 @@ sub showrange { sub showattack { my ($row, $area) = @_; my $attack = $row->{attack}->[$area] - or return ''; + or return ''; my $upattack = $row->{upgraded}->{attack}->[$area]; my $damage = $attack->{damage}; @@ -144,6 +145,8 @@ sub showrange { ), )} keys %{ $attack->{bonus} }), ) if $attack->{bonus}; + $out .= '•' + if $attack->{type} eq 'projectile'; $out .= sprintf '', $attack->{name} if $attack->{name}; $out .= showrange($damage, $maxdamage); @@ -176,6 +179,9 @@ sub showrange { $out .= '' . '▽' x !!($attack->{anti} & 1); $out .= '' . '△' x !!($attack->{anti} & 2); + $out .= '' . + showrange($attack->{range}, $upattack->{range}); + return $out; } @@ -264,8 +270,6 @@ sub showrange { ' class="val unit-armor">' . showrange($_->{armor}, $_->{upgraded}->{armor}), showattack($_, 0), - '' . - showrange(map { $_->{attack}->[0]->{range} } $_, $_->{upgraded}), '' . sprintf( $_->{detect} ? '%s' : '%s', showrange($_->{sight}, $_->{upgraded}->{sight}) @@ -278,7 +282,10 @@ sub showrange { && qq'↑', '' . showmagic($_), !$_->{attack}->[1] ? () : ( - '', showattack($_, 1), '' + '', showattack($_, 1), '' + ), + !$_->{attack}->[2] ? () : ( + '', showattack($_, 2), '' ), "\n" ); @@ -405,7 +412,9 @@ if ($scver{major} > 1) {
<: if ($scver{major} > 1) { :>does not include bonus damage - dealt to susceptible unit types<: + dealt to susceptible unit types +
•projectile shots are negated by + Point Defense Drones<: } else { :>*explosive damage does only 50% damage to small units, 75% to medium, 100% to large