error message whenever we recruit less than ordered.

This commit is contained in:
Enno Rehling 2021-03-11 19:26:50 +01:00
parent 1448bc4e98
commit c0304ff572
3 changed files with 12 additions and 8 deletions

View File

@ -549,7 +549,7 @@ static void test_recruit(CuTest *tc) {
CuAssertIntEquals(tc, 1, u->number);
CuAssertIntEquals(tc, 1, f->num_people);
CuAssertIntEquals(tc, 1, f->num_units);
add_recruits(u, 1, 1);
add_recruits(u, 1, 1, 1);
CuAssertIntEquals(tc, 2, u->number);
CuAssertIntEquals(tc, 2, f->num_people);
CuAssertIntEquals(tc, 1, f->num_units);
@ -557,9 +557,13 @@ static void test_recruit(CuTest *tc) {
CuAssertPtrEquals(tc, NULL, u->nextF);
CuAssertPtrEquals(tc, NULL, u->prevF);
CuAssertPtrEquals(tc, NULL, test_find_messagetype(f->msgs, "recruit"));
add_recruits(u, 1, 2);
add_recruits(u, 1, 2, 2);
CuAssertIntEquals(tc, 3, u->number);
CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "recruit"));
test_clear_messages(f);
add_recruits(u, 1, 1, 2);
CuAssertIntEquals(tc, 4, u->number);
CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "recruit"));
test_teardown();
}

View File

@ -151,7 +151,7 @@ static recruitment *select_recruitment(recruit_request ** rop,
return recruits;
}
void add_recruits(unit * u, int number, int wanted)
void add_recruits(unit * u, int number, int wanted, int ordered)
{
region *r = u->region;
assert(number <= wanted);
@ -178,9 +178,9 @@ void add_recruits(unit * u, int number, int wanted)
remove_unit(&r->units, unew);
}
}
if (number < wanted) {
if (number < ordered) {
ADDMSG(&u->faction->msgs, msg_message("recruit",
"unit region amount want", u, r, number, wanted));
"unit region amount want", u, r, number, u->wants));
}
}
@ -265,7 +265,7 @@ static int do_recruiting(recruitment * recruits, int available)
/* unit is empty, dead, and cannot recruit */
number = 0;
}
add_recruits(u, number, req->qty);
add_recruits(u, number, req->qty, u->wants);
if (number > 0) {
int dec = (int)(number * multi);
if ((rc->ec_flags & ECF_REC_ETHEREAL) == 0) {
@ -406,6 +406,7 @@ static void recruit_cmd(unit * u, struct order *ord, recruit_request ** recruito
}
}
u->wants = n;
if (recruitcost < 0) {
rc = u_race(u);
recruitcost = recruit_cost(f, rc);
@ -452,7 +453,6 @@ static void recruit_cmd(unit * u, struct order *ord, recruit_request ** recruito
}
u_setrace(u, rc);
u->wants = n;
o = (recruit_request *)calloc(1, sizeof(recruit_request));
if (!o) abort();
o->qty = n;

View File

@ -13,7 +13,7 @@ extern "C" {
struct unit;
struct message *can_recruit(struct unit *u, const struct race *rc, struct order *ord, int now);
void add_recruits(struct unit * u, int number, int wanted);
void add_recruits(struct unit* u, int number, int wanted, int ordered);
void recruit(struct region * r);
#ifdef __cplusplus