From fec99454580ac58c68e7782cf10e75dbc7017d9a Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sat, 5 Nov 2016 18:20:56 +0100 Subject: [PATCH] Fixing Bugs 2246 & 2251 parse error message for bad orders: https://bugs.eressea.de/view.php?id=2251 report when TEMP-Units cannot recuit: https://bugs.eressea.de/view.php?id=2246 --- res/core/messages.xml | 8 ++++++++ src/economy.c | 2 +- src/kernel/order.c | 4 ++-- src/kernel/save.c | 4 +++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/res/core/messages.xml b/res/core/messages.xml index 2cb5a0a09..bf4b0c041 100644 --- a/res/core/messages.xml +++ b/res/core/messages.xml @@ -1,5 +1,13 @@ + + + + + + "$unit($unit): '$command' - Dieser Befehl ist unbekannt." + "$unit($unit): '$command' - Parse error, unknown command." + Die Region ist verwüstet, der Boden karg. The region is ravaged, the ground infertile. diff --git a/src/economy.c b/src/economy.c index 50978152d..10215d0da 100644 --- a/src/economy.c +++ b/src/economy.c @@ -341,8 +341,8 @@ static int do_recruiting(recruitment * recruits, int available) /* unit is empty, dead, and cannot recruit */ number = 0; } + add_recruits(u, number, req->qty); if (number > 0) { - add_recruits(u, number, req->qty); dec = (int)(number * multi); if ((rc->ec_flags & ECF_REC_ETHEREAL) == 0) { recruited += dec; diff --git a/src/kernel/order.c b/src/kernel/order.c index f79b2dd68..3fd1dc92f 100644 --- a/src/kernel/order.c +++ b/src/kernel/order.c @@ -285,7 +285,7 @@ static order *create_order_i(keyword_t kwd, const char *sptr, bool persistent, order *ord = NULL; int lindex; - if ((int)kwd > 0 && keyword_disabled(kwd)) { + if (kwd == NOKEYWORD || keyword_disabled(kwd)) { log_error("trying to create an order for disabled keyword %s.", keyword(kwd)); return NULL; } @@ -407,8 +407,8 @@ order *parse_order(const char *s, const struct locale * lang) if (kwd != NOKEYWORD) { while (isxspace(*(unsigned char *)sptr)) ++sptr; s = sptr; + return create_order_i(kwd, s, persistent, lang); } - return create_order_i(kwd, s, persistent, lang); } return NULL; } diff --git a/src/kernel/save.c b/src/kernel/save.c index 0b0ea222d..93c4f7e4b 100644 --- a/src/kernel/save.c +++ b/src/kernel/save.c @@ -206,12 +206,14 @@ static unit *unitorders(FILE * F, int enc, struct faction *f) if (*ordp) { ordp = &(*ordp)->next; } + else { + ADDMSG(&f->msgs, msg_message("parse_error", "unit command", u, s)); + } } } } else { - /* cmistake(?, buf, 160, MSG_EVENT); */ return NULL; } return u;