Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002286EresseaGeneralöffentlich2017-05-26 06:33
ReporterEnno Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarnicht getestet
Status geschlossenLösungerledigt 
Produktversion3.10.7 
Zielversion3.11Behoben in Version3.11 
Zusammenfassung0002286: Partei aus Durchreiseregion fehlt im CR
Beschreibung

In meinem CR habe ich diese Einheit:

EINHEIT 409963 "Matrosen";Name 761808;Partei 3;Anzahl "Meermenschen";Typ 581426;Schiff

Aber keine Informationen zu der Partei 761808. Der NR sagt, das sei Tiamats Kinder (gbtc).

Kann es daran liegen, dass dies eine Durchreiseregion ist, und ich die Partei in keiner anderen Region sehe?

TagsKeine Tags zugeordnet.
Parteiufo
SpielE2
Report1014

Eintrags-Beziehungen

verwandt mit 0002303 geschlossenEnno Als andere Partei getarnte Einheiten werden als Verräter markiert 

Notizen / Dateien

Enno

Enno

2017-02-25 21:56

Administrator   ~0006987

In der NR-Parteienliste fehlt die Partei auch!

Solthar

Solthar

2017-02-26 22:35

Entwickler   ~0006988

Ich habe einen ähnlichen Fall und auch hier ist es eine Partei aus einer Durchreiseregion. (Runde 396, Partei drac, gesichtete Einheit: - Bärtiger Heiopei (er49), Heiopei (qit), 1 Zwerg.

Solthar

Solthar

2017-02-26 22:47

Entwickler   ~0006989

Das war im Testreport von E3.

Enno

Enno

2017-02-27 03:50

Administrator   ~0006990

@Solthar: War das nur im Testreport? Diskrepanzen zwischen Testreport und offizieller Version bitte immer sofort melden, die sind mir fast wichtiger als "normale" Bugreports.

Solthar

Solthar

2017-02-27 08:53

Entwickler   ~0006991

Ja, das betraf in dem Fall nur den Testreport.

Enno

Enno

2017-02-27 11:00

Administrator   ~0006992

Muss ich mir also unbedingt vor dem Wochenende noch ansehen. Seufz.

Enno

Enno

2017-02-28 18:36

Administrator   ~0007006

Region ist 900467642 Man würde erwarten, dass cb_add_address in der Region aufgerufen wird, wenn mein Report erzeugt wird, das passiert aber wohl nicht. Entweder ist die Durchreise also nicht registriert worden, oder die Region ist nicht im Report-Interval?

Enno

Enno

2017-02-28 18:39

Administrator   ~0007007

travelthru_add wird in der Region nie aufgerufen. Warum?

Enno

Enno

2017-02-28 18:43

Administrator   ~0007008

In meinem Report steht an der Region "Die Region wurde durchquert von Zeitreisender (vnzi)." Das passt zu der Beobachtung ja mal gar nicht.

Enno

Enno

2017-02-28 19:17

Administrator   ~0007009

Kann es sein, dass die Einheit bei einer Neu-AW vor NACH verschwunden ist? Im Kampf gestorben?

Enno

Enno

2017-02-28 19:18

Administrator   ~0007010

Oh, shit, ja. Die dummen Skelette in Bisur greifen ihn an.

Enno

Enno

2017-02-28 20:06

Administrator   ~0007012

Wenn ich die Monsterattacke blockiere, wird die Durchreise in travelthru_add registriert. Prima. OMG! Das ist gar keine andere Partei. Das sind Kleine Mannen, die sich als Tiamats Kinder parteigetarnt haben. Warum führt das im CR dazu, das keine Partei gezeigt wird? Evtl. ist die Durchreise die ganze Zeit ein roter Hering gewesen.

Enno

Enno

2017-02-28 20:17

Administrator   ~0007013

Was geht hier vor? Die KM haben mir kein HELFE PARTEITARNUNG gesetzt, also:

sf = visible_faction(f, u); // liefet TK (die Tarnung)

Dann wird das kurz darauf noch einmal berechnet (Warum?):

const faction *otherfaction =
    a_otherfaction ? get_otherfaction(a_otherfaction) : NULL;

Das ist natürlich wieder Tiamat. Es wird dann ein ;Partei Attribut in den CR geschrieben mit sf->no (Tiamat), aber da ich die Partei anderswo nicht im CR habe, ist sie nicht in der Adressliste.

Enno

Enno

2017-02-28 20:18

Administrator   ~0007014

Das Problem ist hier also, dass die Partei nicht in der Adressliste steht, weil ich sie nicht sehe. Ich sehe aber eine Einheit, die als Tiamat getarnt ist, deren Tarnung ich nicht erkennen kann (aber die natürlich dadurch jetzt aufgeflogen ist).

Solthar

Solthar

2017-03-01 11:42

Entwickler   ~0007018

Hm, meine Beobachtung stammt aber aus dem Testreport E3 und da gibt es diese Art von Parteitarnung gar nicht. Ist das demnach ein eigener Bug?

Enno

Enno

2017-03-01 12:32

Administrator   ~0007020

Das kann natürlich sein, dass das ein anderes Problem ist. Ich habe das gestern nicht mehr reproduziert, nachdem ich zwei Stunden an der Parteitarnungs-Sache gesessen habe, bis ich die auf ihre Ursache reduziert hatte. Werde ich dann wohl heute Abend machen.

Enno

Enno

2017-03-01 19:55

Administrator   ~0007022

Wir haben uns entschieden, dass ich die Partei in der Adressliste haben sollte. Ich habe das Problem gerade eben auf einen roten Unit-Test reduziert.

Enno

Enno

2017-03-01 20:07

Administrator   ~0007023

Hier liegt der Hund begraben:

bool ballied = sf && sf != ctx->f && sf != lastf
    && !fval(u, UFL_ANON_FACTION) && cansee(ctx->f, r, u, stealthmod);
if (ballied || is_allied(ctx->f, sf)) {
    add_seen_faction_i(&flist, sf);

ballied ist false (weil sf==lastf), und is_allied ist auch false (Allianzen sind eh nur ein E3-Feature). Was soll der Code? Speziell das mit lastf ist komisch.

Enno

Enno

2017-03-01 20:36

Administrator   ~0007024

Oh, lastf!=sf heisst einfach, das die Partei, die wir für die vorherige Einheit registriert haben, nicht die gleiche ist, wie diese hier. Weil, wenn es die gleiche ist, kann man sich den teuren call nach add_seen_faction_i sparen.

Hier ist das aber so: Die Einheit ist getarnt als die Partei der Einheit vor ihr.

Oh, ich sehe gerade, der Test denn ich eben geschrieben habe ist eh verkehrt, weil selist_find anders funktioniert, als ich gedacht hatte.

Enno

Enno

2017-03-01 20:41

Administrator   ~0007025

Jetzt ist mein Test nicht mehr rot, muss mir was neues überlegen. Da ist eine Einheit der Partei, als die sich getarnt wird, in der Region. Das darf ja für unseren Bug nicht sein.

Enno

Enno

2017-03-01 20:55

Administrator   ~0007026

Oh, lauter falsche Fehler. Der Code-Path ist ein anderer für Durchreiseregionen (add_travelthru_addresses), und mein Test hat das nicht richtig reproduziert. Da wird am Ende cb_add_address aufgerufen, was für eine Durchreise-Region die Parteien allee Einheiten einträgt, wenn man diese sehen kann. Dabei wird in cansee_unit ein Parameter stealthmod übergeben, der -1 ist, weil das vorher von stealth_modifier(r->seen.mode) so bestimmt wurde. Der Adress-Code glaube also, die Einheit sei nicht sichtbar! Das glaubt aber der Rest des Report-Codes nicht?

Enno

Enno

2017-03-01 21:00

Administrator   ~0007027

Der Code, der die Einheit ausgibt, sieht so aus:

        if (u->building || u->ship || (stealthmod > INT_MIN
            && cansee(f, r, u, stealthmod))) {

Der ruft also cansee auf, und nicht cansee_unit. Testet aber dafür auf Schiffe und Gebäude (was cansee_unit auch tut). Das ist offenbar so, weil cansee alle Einheiten in der Region nach einem Wahrnehmer durchsuchen muss.

Enno

Enno

2017-03-01 21:04

Administrator   ~0007028

Die von mir gesehene Einheit steht auf einem Schiff, deshalb sollte sie auch für Durchreisende immer sichtbar sein. Mein Test bildet das nicht ab.

Enno

Enno

2017-03-01 21:09

Administrator   ~0007029

Oh, ich glaube, der Aufruf von cansee_unit() hat die Einheiten in der falschen Reihenfolge! Das ist es. Heureka!

Enno

Enno

2017-03-01 21:11

Administrator   ~0007030

fixed in commit 7f03417

Enno

Enno

2017-03-01 21:13

Administrator   ~0007033

fixed, awaiting merge into eressea/server

Enno

Enno

2017-05-26 06:33

Administrator   ~0007218

Die Version 3.11 ist historisch, alle gefixten Bugs scheinen keine Probleme zu haben.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2017-02-25 21:55 Enno Neuer Eintrag
2017-02-25 21:56 Enno Notiz hinzugefügt: 0006987
2017-02-26 12:51 Enno Bearbeitung durch => Enno
2017-02-26 12:51 Enno Status neu => zugewiesen
2017-02-26 22:35 Solthar Notiz hinzugefügt: 0006988
2017-02-26 22:47 Solthar Notiz hinzugefügt: 0006989
2017-02-27 03:50 Enno Notiz hinzugefügt: 0006990
2017-02-27 08:53 Solthar Notiz hinzugefügt: 0006991
2017-02-27 11:00 Enno Zielversion => 3.11
2017-02-27 11:00 Enno Notiz hinzugefügt: 0006992
2017-02-28 18:36 Enno Notiz hinzugefügt: 0007006
2017-02-28 18:39 Enno Notiz hinzugefügt: 0007007
2017-02-28 18:43 Enno Notiz hinzugefügt: 0007008
2017-02-28 19:17 Enno Notiz hinzugefügt: 0007009
2017-02-28 19:18 Enno Notiz hinzugefügt: 0007010
2017-02-28 20:06 Enno Notiz hinzugefügt: 0007012
2017-02-28 20:17 Enno Notiz hinzugefügt: 0007013
2017-02-28 20:18 Enno Notiz hinzugefügt: 0007014
2017-03-01 11:42 Solthar Notiz hinzugefügt: 0007018
2017-03-01 12:32 Enno Notiz hinzugefügt: 0007020
2017-03-01 19:55 Enno Notiz hinzugefügt: 0007022
2017-03-01 20:07 Enno Notiz hinzugefügt: 0007023
2017-03-01 20:36 Enno Notiz hinzugefügt: 0007024
2017-03-01 20:41 Enno Notiz hinzugefügt: 0007025
2017-03-01 20:55 Enno Notiz hinzugefügt: 0007026
2017-03-01 21:00 Enno Notiz hinzugefügt: 0007027
2017-03-01 21:04 Enno Notiz hinzugefügt: 0007028
2017-03-01 21:09 Enno Notiz hinzugefügt: 0007029
2017-03-01 21:11 Enno Notiz hinzugefügt: 0007030
2017-03-01 21:13 Enno Status zugewiesen => erledigt
2017-03-01 21:13 Enno Lösung offen => erledigt
2017-03-01 21:13 Enno Behoben in Version => 3.11
2017-03-01 21:13 Enno Notiz hinzugefügt: 0007033
2017-03-06 15:26 Enno Beziehung hinzugefügt verwandt mit 0002303
2017-05-26 06:33 Enno Notiz hinzugefügt: 0007218
2017-05-26 06:33 Enno Status erledigt => geschlossen