Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002165EresseaBEWACHEöffentlich2017-12-05 19:50
ReporterEnno Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarnicht getestet
Status geschlossenLösungerledigt 
Produktversion3.7.0 
Zielversion3.7.3Behoben in Version3.7.3 
Zusammenfassung0002165: Monster bewachen nicht
Beschreibung

In Bug 2163 meldet Xolgrim einen Kampf, in dem es gegen Insassen einer Burg geht. So weit, so falsch. Aber bei der Untersuchung fiel mir auf, dass dort ein Monster ist, welches selbst bei 100% Agression nicht attackieren will:

Ewiger Markt (ebay), Größe 10, Befestigung.

- Händler (51Le), Monster (ii), 1 Juju-Zombie, hat: Geburtstagstorte, 11
  Elfenpferde, 204 Zauberbeutel, 18 Mistelzweige, 3 Schneebälle, 3
  Schneemänner; sie bauen ihre Marktstände auf und lassen sich viel Zeit
  damit, ihre merkwürdigen Gegenstände auszupacken.

Statt den Original-Bug von Xolgrim weiter zur Analyse zu benutzen, mache ich hier mal einen neuen Bug auf. Die Einheit bewacht nicht, obwohl sie shcon lange in der Region ist.

Schritte zur Reproduktion

Nach einer Auswertung sollte die Einheit bewachen, und im Debugger sehe ich, dass sie den BEWACHE Befehl in plan_monsters gibt. Zu diesem Zeitpunkt ist UFL_GUARD noch nicht gesetzt, weswegen is_guard() keine Attacke erlaubt.

Ich bemerke, dass in guard_on_cmd() Monster besonders gehandhabt werden, evtl. geht dabei etwas schief?

is_guard() testet außer UFL_GUARD noch auf das Rassen-Flag RCF_UNARMEDGUARD, welches bei Juju-Zombies nicht gesetzt ist.

Zusätzliche Informationen

is_guard(u, GUARD_TAX) ist während plan_monsters false, weil die Einheit das UFL_GUARD flag nicht gesetzt hat, und selbst wenn, dann weil sie keine Waffe mit dem nötigen Skill hat.
Alternativ sollten Monster zum Bewachen keine Waffen oder Skills benötigen, aber das ist an der Einheiten-Rasse fest gemacht, und für Juju-Zombies ist das Flag RCF_UNARMEDGUARD nicht gesetzt.

Alles falsch. Das sollte nicht an der Rasse fest sein (Design-Bug), und das Flag sollte gesetzt sein (unbekannter Bug). Letzteres kann ich mal verfolgen. Bewachung ist ein Minenfeld voller Missverständnisse und Sonderregeln. Seufz.

Parteiii
SpielE2
Report955

Eintrags-Beziehungen

verwandt mit 0002163 geschlossenEnno Monster attackieren Burginsassen (wenn Einheiten Ausserhalb einer Burg stehen) 
verwandt mit 0002147 neu Nicht alle beschworenen Kämpfer können bewachen 

Notizen / Dateien

Enno

Enno

2015-11-23 15:04

Administrator   ~0006314

In setguard wird UFL_GUARD gesetst (u->flags ist 134217728). In write_unit sind die flags schon wieder 0, was ist dazwischen passiert? Im Report steht ja auch nichts von "bewacht", das muss also shcon vorher geschehen sein. Watchpoints to the rescue!

Enno

Enno

2015-11-23 15:17

Administrator   ~0006315

Ta-Da! Die Funktion update_guards macht das kaputt. Die checkt für alle bewachenden Einheiten , ob sie can_start_guarding erfüllen, und dabei werden Monster wohl nicht besonders behandelt? Wenn sie den Test nicht erfüllen (z.B. keine Waffe), dann wird ihr BEWACHE-Status gelöscht. Das muss sein, weil sonst ein Bewacher seine Schwerter jemand anderes geben könnte, usw., aber es ist in Bezug auf Monster falsch implementiert.

Solthar

Solthar

2015-11-23 15:47

Entwickler   ~0006317

Ich finde schon, dass das Flag an die Rasse gehört (oder ich verstehe was falsch). Skelette in Spielerparteien sollten unbewaffnet bewachen können und Hoppelhäschen, auch wenn sie in der Monsterpartei sind, nicht. Aber Zombies sollten es natürlich können, das ist dann aber eher ein Konfigurationsbug.

Enno

Enno

2015-11-23 16:55

Administrator   ~0006320

https://github.com/eressea/server/pull/407

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2015-11-23 13:28 Enno Neuer Eintrag
2015-11-23 13:28 Enno Status neu => zugewiesen
2015-11-23 13:28 Enno Bearbeitung durch => Enno
2015-11-23 13:28 Enno Beziehung hinzugefügt verwandt mit 0002163
2015-11-23 15:04 Enno Notiz hinzugefügt: 0006314
2015-11-23 15:17 Enno Notiz hinzugefügt: 0006315
2015-11-23 15:47 Solthar Notiz hinzugefügt: 0006317
2015-11-23 15:54 Enno Zielversion => 3.7.3
2015-11-23 16:55 Enno Notiz hinzugefügt: 0006320
2015-11-23 16:55 Enno Status zugewiesen => erledigt
2015-11-23 16:55 Enno Behoben in Version => 3.7.3
2015-11-23 16:55 Enno Lösung offen => erledigt
2015-11-24 12:05 Solthar Beziehung hinzugefügt verwandt mit 0002147
2017-12-05 19:50 Enno Status erledigt => geschlossen