(growfood): Simplify. Rev. 1.6 made it less robust against overflow;
fix that.
This commit is contained in:
parent
02d380d74f
commit
1b30679f05
1 changed files with 8 additions and 10 deletions
|
@ -152,9 +152,9 @@ do_feed(struct sctstr *sp, struct natstr *np, short *vec,
|
||||||
static int
|
static int
|
||||||
growfood(struct sctstr *sp, short *vec, int work, int etu)
|
growfood(struct sctstr *sp, short *vec, int work, int etu)
|
||||||
{
|
{
|
||||||
double food_fertil;
|
int food_fertil;
|
||||||
double food_workers;
|
int food_workers;
|
||||||
double food;
|
int food;
|
||||||
int work_used;
|
int work_used;
|
||||||
|
|
||||||
/* I'm being very nice and commenting out this so players
|
/* I'm being very nice and commenting out this so players
|
||||||
|
@ -164,19 +164,17 @@ growfood(struct sctstr *sp, short *vec, int work, int etu)
|
||||||
*/
|
*/
|
||||||
food_workers = work * fcrate;
|
food_workers = work * fcrate;
|
||||||
food_fertil = etu * sp->sct_fertil * fgrate;
|
food_fertil = etu * sp->sct_fertil * fgrate;
|
||||||
food = food_fertil;
|
food = min(food_workers, food_fertil);
|
||||||
if (food > food_workers)
|
|
||||||
food = food_workers;
|
|
||||||
/*
|
/*
|
||||||
* be nice; grow minimum one food unit.
|
* be nice; grow minimum one food unit.
|
||||||
* This makes life simpler for the player.
|
* This makes life simpler for the player.
|
||||||
*/
|
*/
|
||||||
vec[I_FOOD] += (int)food;
|
if (food > ITEM_MAX - vec[I_FOOD])
|
||||||
|
food = ITEM_MAX - vec[I_FOOD];
|
||||||
|
vec[I_FOOD] += food;
|
||||||
if (vec[I_FOOD] == 0)
|
if (vec[I_FOOD] == 0)
|
||||||
vec[I_FOOD] = 1;
|
vec[I_FOOD] = 1;
|
||||||
if (vec[I_FOOD] > ITEM_MAX)
|
work_used = food / fcrate;
|
||||||
vec[I_FOOD] = ITEM_MAX;
|
|
||||||
work_used = (int)food / fcrate;
|
|
||||||
return work_used;
|
return work_used;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue