diff --git a/src/economy.c b/src/economy.c index 0f1a7874e..2ac2a1e1c 100644 --- a/src/economy.c +++ b/src/economy.c @@ -372,13 +372,19 @@ static int do_recruiting(recruitment * recruits, int available) use_pooled(u, get_resourcetype(R_SILVER), GET_DEFAULT, rc->recruitcost * number); } - add_recruits(u, number, req->qty); - dec = (int)(number * multi); - if ((rc->ec_flags & ECF_REC_ETHEREAL) == 0) { - recruited += dec; + if (u->number == 0 && !fval(u, UFL_ISNEW)) { + /* unit is empty, and not a TEMP => it is dead, and cannot recruit */ + number = 0; } + if (number > 0) { + add_recruits(u, number, req->qty); + dec = (int)(number * multi); + if ((rc->ec_flags & ECF_REC_ETHEREAL) == 0) { + recruited += dec; + } - get -= dec; + get -= dec; + } } } return recruited;