Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002478EresseaKampföffentlich2018-09-23 20:01
Reporterxenomorph Bearbeitung durchEnno  
PrioritätnormalSchweregradschwerer FehlerReproduzierbarnicht getestet
Status erledigtLösungerledigt 
Produktversion3.16.6 
Zielversion3.18Behoben in Version3.18 
Zusammenfassung0002478: Langer Befehl trotz langem Kampf
Beschreibung

Hallo,

laut Anleitung ist ein Kampf lang, wenn die Region weder von einem selber noch einem Verbündeten bewacht wird. Einheiten mit KÄMPFE FLIEHE sollten auch nach langen Kämpfen noch in der Lage sein, sich zu bewegen, aber keine anderen langen Befehle auszuführen. Letztere Einschränkung scheint nicht zu funktionieren:

Meine Einheit tckc war in einen Kampf verwickelt, stand auf KÄMPFE FLIEHE und ist erflogreich geflohen. Die Region wurde nur von Gegnern bewacht (einer davon ist als einer meiner Verbündeten Parteigetarnt). Trotzdem konnte die Einheit erfolgreich lernen, was ich daran sehe, dass ihr Talent aufgestiegen ist. Das hätte eigentlich nicht möglich sein sollen.

Grüße, -Xeno

TagsKeine Tags zugeordnet.
Parteiquar
SpielE2
Report1089

Notizen / Dateien

Enno

Enno

2018-09-22 09:07

Administrator   ~0008113

Das ist nicht ganz einfach zu reproduzieren, weil Deine Einheit eine Menge Glück hatte. Sie ist nicht gestorben, hat es geschafft zu fliehen, und hatte Glück beim Lernen.

Enno

Enno

2018-09-23 17:58

Administrator   ~0008115

Ich glaube, ich hab's. Der relevante Code ist hier in aftermath():

        if (df->alive == 0) {
            flags = UFL_DEAD;
        }
        else if (relevant) {
            flags = UFL_LONGACTION;
            if ((du->status != ST_FLEE) && (df->run.hp <= 0)) {
                flags |= UFL_NOTMOVING;
            }
        }

Man beachte die erste Bedingung: Wenn die Einheit keine Personen mehr hat, wird das UFL_DEAD Flag gesetzt. Das verhindert später, dass man eine tote Einheit mit GIB PERSONEN wieder zum Leben erwecken kann. Ansonsten wird UFL_LONGACTION gesetzt (verhindert lange Befehle) und für fliehende Einheiten auch noch UFL_NOTMOVING (verhindert Bewegung).

Das Problem hier ist, dass "alive" nicht die Anzahl der überlebenden Personen ist, sondern die Zahl der noch kämpfenden. Es kann also sein, dass die Zahl 0 ist, wenn z.B. aus einer Einheit alle Kämpfer geflohen sind, wie in der Fehlermeldung.

Enno

Enno

2018-09-23 20:01

Administrator   ~0008116

Danke für die Meldung, das muss ein lang stehender bug gewesen sein. Seltsam, dass den vorher noch nie jemand bemerkt hat.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2018-08-19 13:19 xenomorph Neuer Eintrag
2018-08-19 13:33 Enno Bearbeitung durch => Enno
2018-08-19 13:33 Enno Status neu => zugewiesen
2018-08-19 13:34 Enno Produktversion => 3.16.6
2018-08-19 13:34 Enno Zielversion => 3.18
2018-09-22 09:07 Enno Notiz hinzugefügt: 0008113
2018-09-23 17:58 Enno Notiz hinzugefügt: 0008115
2018-09-23 20:01 Enno Status zugewiesen => erledigt
2018-09-23 20:01 Enno Lösung offen => erledigt
2018-09-23 20:01 Enno Behoben in Version => 3.18
2018-09-23 20:01 Enno Notiz hinzugefügt: 0008116
2023-05-28 14:25 Enno Kategorie ATTACKIERE => Kampf