X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/ffc7dd1d5f9a1b703991994df40620408a9c9ccd..424c0dbea2a9dbe423c269bc7619546688fbd6f4:/sc.plp diff --git a/sc.plp b/sc.plp index a857884..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}); } } }