From 353d2775c88718e656acf3e75d31f22c07c5296b Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Thu, 23 Dec 2004 00:07:32 +0000 Subject: [PATCH] http://eressea.upb.de/mantis/view.php?id=346 http://eressea.upb.de/mantis/view.php?id=341 Einheiten in Regionen mit FAHRENden Einheiten bewegen sich u.U. nicht. --- src/common/kernel/movement.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/common/kernel/movement.c b/src/common/kernel/movement.c index c551a5b75..3250204c2 100644 --- a/src/common/kernel/movement.c +++ b/src/common/kernel/movement.c @@ -2347,6 +2347,7 @@ movement(void) region * r = regions; while (r!=NULL) { unit ** up = &r->units; + boolean repeat = false; while (*up) { unit *u = *up; @@ -2381,13 +2382,17 @@ movement(void) if (u->region==r) { /* not moved, use next unit */ up = &u->next; - } else if (*up && (*up)->region!=r) { - /* moved the upcoming unit along with u (units on ships or followers, - * for example). must start from the beginning again */ - up = &r->units; + } else { + if (*up && (*up)->region!=r) { + /* moved the upcoming unit along with u (units on ships or followers, + * for example). must start from the beginning again immediately */ + up = NULL; + } + repeat = true; } /* else *up is already the next unit */ } + if (repeat) continue; if (ships==0) { /* Abtreiben von beschädigten, unterbemannten, überladenen Schiffen */ drifting_ships(r);