From 9d102fd069d9f2c94b315acb145adf36231fce9c Mon Sep 17 00:00:00 2001 From: CTD Date: Fri, 18 Jul 2014 15:21:10 +0200 Subject: [PATCH] =?UTF-8?q?BUG=201786=20Fehlschlag=20ZERST=C3=96RE=20Ger?= =?UTF-8?q?=C3=BCst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Einheiten ohne Personen können nichts zerstören (das ist OK), da aber Zerstöre vor Rekrutiere und zusammen mit Gib abgearbeitet wird, kann eine Temp-Einheit normalerweise nichts Zerstören, auch wenn sie in der Auswertung Pesonen hat. Wenn sie Personen übergeben bekommt hängt es von der genauen Reihenfolger der Einheiten in der Region ab. Daher habe ich Zerstöre nach Gib, Vergessen und Rekrutieren geschoben. --- src/economy.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/economy.c b/src/economy.c index fb70e4e13..2f58fc8e2 100644 --- a/src/economy.c +++ b/src/economy.c @@ -1164,17 +1164,10 @@ void economics(region * r) for (u = r->units; u; u = u->next) { order *ord; - bool destroyed = false; if (u->number > 0) { for (ord = u->orders; ord; ord = ord->next) { keyword_t kwd = getkeyword(ord); - if (kwd == K_DESTROY) { - if (!destroyed) { - if (destroy_cmd(u, ord) != 0) - ord = NULL; - destroyed = true; - } - } else if (kwd == K_GIVE) { + if (kwd == K_GIVE) { give_cmd(u, ord); } else if (kwd == K_FORGET) { forget_cmd(u, ord); @@ -1207,6 +1200,27 @@ void economics(region * r) if (recruitorders) expandrecruit(r, recruitorders); remove_empty_units_in_region(r); + + for (u = r->units; u; u = u->next) { + order *ord; + bool destroyed = false; + if (u->number > 0) { + for (ord = u->orders; ord; ord = ord->next) { + keyword_t kwd = getkeyword(ord); + if (kwd == K_DESTROY) { + if (!destroyed) { + if (destroy_cmd(u, ord) != 0) + ord = NULL; + destroyed = true; + } + } + if (u->orders == NULL) { + break; + } + } + } + } + } /* ------------------------------------------------------------- */