diff --git a/lib/Lacuna/DB/Result/Map/Body/Planet.pm b/lib/Lacuna/DB/Result/Map/Body/Planet.pm index a0d90a2f..56818146 100644 --- a/lib/Lacuna/DB/Result/Map/Body/Planet.pm +++ b/lib/Lacuna/DB/Result/Map/Body/Planet.pm @@ -2674,44 +2674,40 @@ sub complain_about_lack_of_resources { if ($sc->level == 1 && $sc->efficiency <= 50 && $par->efficiency <= 50) { # They go out together with a big bang $building_name = $par->name; - $sc->spend_efficiency(60); - $par->spend_efficiency(60); + eval { $sc->spend_efficiency(60) }; + eval { $par->spend_efficiency(60) }; last; } elsif ($sc->efficiency <= $par->efficiency) { $building_name = $par->name; - $par->spend_efficiency(50)->update; + eval { $par->spend_efficiency(50)->update }; last; } else { $building_name = $sc->name; - $sc->spend_efficiency(50)->update; + eval {$sc->spend_efficiency(50)->update }; last; } } elsif ($sc->level < $par->level) { $building_name = $par->name; - $par->spend_efficiency(50)->update; + eval {$par->spend_efficiency(50)->update }; last; } else { $building_name = $sc->name; - $sc->spend_efficiency(50)->update; + eval {$sc->spend_efficiency(50)->update }; last; } } elsif ($sc) { $building_name = $sc->name; - my $eff = $sc->efficiency; - $sc->spend_efficiency(50); - $sc->update if $eff > 50; + eval { $sc->spend_efficiency(50)->update }; last; } elsif ($par) { $building_name = $par->name; - my $eff = $par->efficiency; - $par->spend_efficiency(50); - $par->update if $eff > 50; + eval { $par->spend_efficiency(50)->update }; last; } } @@ -2720,9 +2716,7 @@ sub complain_about_lack_of_resources { next if ($building->class eq 'Lacuna::DB::Result::Building::Permanent::Crater' or $building->class eq 'Lacuna::DB::Result::Building::DeployedBleeder'); $building_name = $building->name; - my $eff = $building->efficiency; - $building->spend_efficiency(50); - $building->update if $eff > 50; + eval { $building->spend_efficiency(50)->update }; last; } } diff --git a/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm b/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm index e192918a..8dfaf6d3 100644 --- a/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm +++ b/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm @@ -153,10 +153,9 @@ after handle_arrival_procedures => sub { my %treport; if ( $snarks{snarks}->{count}/$warhead_zero > scalar @all_builds) { for my $building (@all_builds) { - $building->spend_efficiency(100); - $building->update; my $hash_id = sprintf("%s:%2d/%2d", $building->name, $building->x, $building->y); $treport{"$hash_id"} = 100; + eval { $building->spend_efficiency(100)->update }; } } else { @@ -176,9 +175,9 @@ after handle_arrival_procedures => sub { } if ($snarks{$sn_type}->{count}/4 > scalar @tbuilds) { for my $building (@tbuilds) { - $building->spend_efficiency(100)->update; my $hash_id = sprintf("%s:%2d/%2d", $building->name, $building->x, $building->y); $treport{"$hash_id"} = 100; + eval { $building->spend_efficiency(100)->update }; } } else { @@ -190,9 +189,9 @@ after handle_arrival_procedures => sub { ($_->efficiency > 0) } @tbuilds; if ($building) { - $building->spend_efficiency($amount)->update; my $hash_id = sprintf("%s:%2d/%2d", $building->name, $building->x, $building->y); $treport{"$hash_id"} = 100 - $building->efficiency; + eval { $building->spend_efficiency($amount)->update; } } else { $treport{"ZZcnt"} = $cnt;