From 33800fc7321106f9df09a0534545bf2a505416ad Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 23 Jul 2016 09:26:44 +0200 Subject: [PATCH] ef_verify: Require land unit milit == 0 with capability spy The rules for spy units make little sense unless spies carry no military. For instance, spies die when they take casualties in ground combat. There seems to be a tacit assumption that spies have no military. I don't trust the code to behave unless this assumption is met. Require it before an overly adventurous deity finds out the painful way that spies with military don't work. Signed-off-by: Markus Armbruster --- src/lib/common/ef_verify.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/lib/common/ef_verify.c b/src/lib/common/ef_verify.c index 7ab031839..9b878cbc5 100644 --- a/src/lib/common/ef_verify.c +++ b/src/lib/common/ef_verify.c @@ -358,6 +358,24 @@ verify_plane_chr(void) return retval; } +static int +verify_land_chr(void) +{ + int retval = 0; + int i; + + for (i = 0; lchr[i].l_name; i++) { + if (!lchr[i].l_name[0]) + continue; + if ((lchr[i].l_flags & L_SPY) && lchr[i].l_item[I_MILIT]) { + verify_fail(EF_PLANE_CHR, i, NULL, 0, + "flag %s requires zero milit", + symbol_by_value(L_SPY, land_chr_flags)); + retval = -1; + } + } + return retval; +} static int verify_products(void) { @@ -395,6 +413,7 @@ ef_verify_config(void) /* Special checks */ retval |= verify_ship_chr(); retval |= verify_plane_chr(); + retval |= verify_land_chr(); retval |= verify_products(); return retval; } -- 2.43.0