- sprintf('cost %.0f%%', 100 * $row->{cost} / $unit->{energy}),
- !defined $row->{maint} ? () :
- sprintf('+%.1f%%/s', 100 * $row->{maint} / $unit->{energy}),
+ 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},
+ ),