diff --git a/src/common/gamecode/laws.c b/src/common/gamecode/laws.c index fd2a618fd..4265fa564 100644 --- a/src/common/gamecode/laws.c +++ b/src/common/gamecode/laws.c @@ -3334,6 +3334,7 @@ processorders (void) puts(" - Zerstören, Geben, Rekrutieren, Vergessen"); economics(); + remove_empty_units(); puts(" - Gebäudeunterhalt (1. Versuch)"); maintain_buildings(false); diff --git a/src/common/gamecode/randenc.c b/src/common/gamecode/randenc.c index b61360e9a..72b93367c 100644 --- a/src/common/gamecode/randenc.c +++ b/src/common/gamecode/randenc.c @@ -663,7 +663,7 @@ drown(region *r) unit *u = *up; int amphibian_level = fspecial(u->faction, FS_AMPHIBIAN); - if (u->ship) { + if (u->ship || u->race == new_race[RC_SPELL]) { up=&u->next; continue; } diff --git a/src/common/kernel/eressea.c b/src/common/kernel/eressea.c index b291f7085..fdd85a985 100644 --- a/src/common/kernel/eressea.c +++ b/src/common/kernel/eressea.c @@ -2453,8 +2453,8 @@ remove_empty_units_in_region(region *r) while (*up) { unit * u = *up; - if ((old_race(u->race) != RC_SPELL && u->number <= 0) - || (old_race(u->race) == RC_SPELL && u->age <= 0) + if ((u->number <= 0 && u->race != new_race[RC_SPELL]) + || (u->age <= 0 && u->race == new_race[RC_SPELL]) || u->number < 0) { destroy_unit(u); } diff --git a/src/common/kernel/movement.c b/src/common/kernel/movement.c index 3e4ca53fc..b96d05d5d 100644 --- a/src/common/kernel/movement.c +++ b/src/common/kernel/movement.c @@ -2031,14 +2031,6 @@ movement(void) unit *u = *up; keyword_t kword; - /* Sollte hier nicht mehr auftreten */ - /* - if(u->no == 0) { - up = &u->next; - continue; - } - */ - if (fval(u, FL_FOLLOWING)) { /* skip all followers */ do {