From ee30ec11a5b9fccfb78372b03315e6504e1ca19b Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sat, 24 Apr 2010 11:49:47 -0500 Subject: [PATCH] more even distribution of ore spent --- lib/Lacuna/DB/Body/Planet.pm | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/Lacuna/DB/Body/Planet.pm b/lib/Lacuna/DB/Body/Planet.pm index 56b1639c..da010934 100644 --- a/lib/Lacuna/DB/Body/Planet.pm +++ b/lib/Lacuna/DB/Body/Planet.pm @@ -1247,18 +1247,25 @@ sub add_rutile { sub spend_ore { my ($self, $value) = @_; - foreach my $type (shuffle ORE_TYPES) { - my $method = $type."_stored"; - my $stored = $self->$method; - if ($stored > $value) { - $self->$method($stored - $value); - last; - } - else { - $value -= $stored; - $self->$method(0); + my $subtract = sprintf('%.0f', $value / 5); + SPEND: while (1) { + foreach my $type (shuffle ORE_TYPES) { + my $method = $type."_stored"; + my $stored = $self->$method; + if ($stored > $subtract) { + $self->$method($stored - $subtract); + $value -= $subtract; + } + else { + $value -= $stored; + $self->$method(0); + } + last SPEND if ($value <= 0); + $subtract = $value if ($subtract > $value); } + last SPEND if ($subtract <= 0); # prevent an infinite loop scenario } + return $self; } sub add_beetle { -- 2.51.2