From a970f3b8839a8e090f95c80f44d1c642e21e6217 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Wed, 6 Jul 2005 22:30:38 +0000 Subject: [PATCH] =?UTF-8?q?http://eressea.upb.de/mantis/view.php=3Fid=3D59?= =?UTF-8?q?3=20Einheit=20mit=20FOLGE-Befehl=20f=C3=BChrt=20keinen=20langen?= =?UTF-8?q?=20Befehl=20aus=20obwohl=20f=C3=BChrende=20Einheit=20sich=20nic?= =?UTF-8?q?ht=20bewegt=20hat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Verbesserung: Wenn NACH oder ROUTE nicht der gewählte lange Befehl sind, wird auch nciht gefolgt. Des weiteren: Folgende Einheiten mit at_follow werden ebenfalls verfolgt. --- src/common/kernel/movement.c | 44 +++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/common/kernel/movement.c b/src/common/kernel/movement.c index 2883a06fd..e304cbb10 100644 --- a/src/common/kernel/movement.c +++ b/src/common/kernel/movement.c @@ -2505,24 +2505,42 @@ follow_unit(void) if (a && !fval(u, UFL_MOVED)) { unit * u2 = a->data.v; + boolean follow = false; if (!u2 || u2->region!=r || !cansee(u->faction, r, u2, 0)) continue; - for (ord=u2->orders;ord;ord=ord->next) { - switch (get_keyword(ord)) { - case K_MOVE: - case K_ROUTE: - case K_DRIVE: - case K_FOLLOW: - case K_PIRACY: - fset(u, UFL_FOLLOWING); - fset(u2, UFL_FOLLOWED); - set_order(&u->thisorder, NULL); + + switch (get_keyword(u2->thisorder)) { + case K_MOVE: + case K_ROUTE: + case K_DRIVE: + follow = true; + break; + default: + for (ord=u2->orders;ord;ord=ord->next) { + switch (get_keyword(ord)) { + case K_FOLLOW: + case K_PIRACY: + follow = true; + break; + default: + continue; + } break; - default: - continue; + } + break; + } + if (!follow) { + attrib * a2 = a_find(u2->attribs, &at_follow); + if (a2!=NULL) { + unit * u3 = a2->data.v; + follow = (u3 && u2->region==u2->region); } - break; + } + if (follow) { + fset(u, UFL_FOLLOWING); + fset(u2, UFL_FOLLOWED); + set_order(&u->thisorder, NULL); } } }