From 842f9038b86a98184ba21f9a2d7ae04c0018331c Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 29 Oct 2006 12:45:42 +0000 Subject: [PATCH] Enforcing maximum size of units in give_men. --- src/common/gamecode/monster.c | 1 - src/common/kernel/give.c | 5 ++++- src/common/kernel/unit.c | 4 ++-- src/common/races/zombies.c | 25 ------------------------- src/res/messages.xml | 10 ++++++++++ 5 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/common/gamecode/monster.c b/src/common/gamecode/monster.c index e9ce31068..b3ffba282 100644 --- a/src/common/gamecode/monster.c +++ b/src/common/gamecode/monster.c @@ -68,7 +68,6 @@ #include #include -#define UNDEAD_REPRODUCTION 0 /* vermehrung */ #define MOVECHANCE 25 /* chance fuer bewegung */ #define MAXILLUSION_TEXTS 3 diff --git a/src/common/kernel/give.c b/src/common/kernel/give.c index c6cc24857..ed83e0014 100644 --- a/src/common/kernel/give.c +++ b/src/common/kernel/give.c @@ -169,7 +169,6 @@ give_men(int n, unit * u, unit * u2, struct order * ord) } else if (u2 && (fval(u2, UFL_LOCKED)|| is_cursed(u2->attribs, C_SLAVE, 0))) { error = 75; } else if (u2 && u2->faction != u->faction && !alliedunit(u2, u->faction, HELP_GIVE) && !ucontact(u2, u)) { - error = 73; } else if (u2 && (has_skill(u, SK_MAGIC) || has_skill(u2, SK_MAGIC))) { error = 158; @@ -184,6 +183,10 @@ give_men(int n, unit * u, unit * u2, struct order * ord) error = 139; } else { if (n > u->number) n = u->number; + if (u2 && n+u2->number > UNIT_MAXSIZE) { + n = UNIT_MAXSIZE-u2->number; + ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "error_unit_size", "maxsize", UNIT_MAXSIZE)); + } if (n == 0) { error = 96; } else if (u2 && u->faction != u2->faction) { diff --git a/src/common/kernel/unit.c b/src/common/kernel/unit.c index b2b15f9ec..ae70f1210 100644 --- a/src/common/kernel/unit.c +++ b/src/common/kernel/unit.c @@ -947,10 +947,10 @@ void set_number(unit * u, int count) { assert (count >= 0); - assert (count <= USHRT_MAX); + assert (count <= UNIT_MAXSIZE); #ifndef NDEBUG - assert (u->faction != 0 || u->number > 0); + assert (u->faction != NULL || u->number > 0); #endif if (playerrace(u->race)) { diff --git a/src/common/races/zombies.c b/src/common/races/zombies.c index c14f02837..74bcedd52 100644 --- a/src/common/races/zombies.c +++ b/src/common/races/zombies.c @@ -39,31 +39,6 @@ age_undead(unit *u) region *r = u->region; int n = 0; -#if UNDEAD_REPRODUCTION > 0 - if(fval(r->terrain, LAND_REGION)) { - int m; -#ifndef SLOW_UNDEADS - if (u->number>100) { - int k = u->number; - for (m=0;m!=100;++m) { - int d = k/(100-m); - k-=d; - if (rng_int() % 100 < UNDEAD_REPRODUCTION) - n+=d; - } - assert(k==0); - } else -#endif - for (m = u->number; m; m--) - if (rng_int() % 100 < UNDEAD_REPRODUCTION) - n++; - set_number(u, u->number + n); - u->hp += n * unit_max_hp(u); - n = rpeasants(r) - n; - n = max(0, n); - rsetpeasants(r, n); - } -#endif /* untote, die einer partei angehoeren, koennen sich * absplitten, anstatt sich zu vermehren. monster * untote vermehren sich nur noch */ diff --git a/src/res/messages.xml b/src/res/messages.xml index 4881d9bf8..ac4265bab 100644 --- a/src/res/messages.xml +++ b/src/res/messages.xml @@ -5519,6 +5519,16 @@ "$unit($unit) in $region($region): '$order($command)' - The unit does not have these herbs." "$unit($unit) in $region($region): '$order($command)' - The unit does not have these herbs." + + + + + + + "$unit($unit) in $region($region): '$order($command)' - Einheiten dürfen nicht mehr als $int($maxsize) Personen enthalten." + "$unit($unit) in $region($region): '$order($command)' - Units may not have more than $int($maxsize) members." + "$unit($unit) in $region($region): '$order($command)' - Units may not have more than $int($maxsize) members." +