sc: hots weapon names
[sheet.git] / sc.plp
diff --git a/sc.plp b/sc.plp
index 7f40dd26fcfac8fca43be6f55e007c633017bcd7..5911275d119720053099aa0fc776fa162fd0aa76 100644 (file)
--- a/sc.plp
+++ b/sc.plp
@@ -55,13 +55,14 @@ print "Also see the $_ table.\n" for join(', ',
 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.]+/;
 }
 
@@ -69,7 +70,15 @@ 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});
+               }
+       }
+       for my $special (@{ $unit->{special} }) {
+               for my $upgrade (@{ $special->{upgrade} }) {
+                       while (my ($col, $increase) = each %{$upgrade}) {
+                               defined $special->{$col} or next;
+                               addupgrade(\$special->{upgraded}->{$col}, $increase, $special->{$col});
+                       }
                }
        }
 }
@@ -283,6 +292,9 @@ sub showrange {
                        !$_->{attack}->[1] ? () : (
                                '<tr><td colspan=12>', showattack($_, 1), '<td colspan=3>'
                        ),
+                       !$_->{attack}->[2] ? () : (
+                               '<tr><td colspan=12>', showattack($_, 2), '<td colspan=3>'
+                       ),
                        "\n"
                );
        }