print "</p>\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.]+/;
}
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});
}
}
}