Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002191EresseaNACH/ROUTEöffentlich2017-12-05 19:50
ReporterSolthar Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarN/A
Status geschlossenLösungerledigt 
Produktversion3.7.5 
Behoben in Version3.9.1 
Zusammenfassung0002191: Schiffe und exotische Terrains
Beschreibung

Ist es eigentlich beabsichtigt, dass keine Schiffe in den Terraintypen Gang oder Halle landen können?

Zusätzliche Informationen

Es gibt da eine Dopplung in der Konfiguration, die vielleicht nicht nötig ist. Einerseits gibt es die Flags "land, sail" etc. an den Terrains, andererseits wissen die Schiffe explizit, in welchen Regionstypen sie landen dürfen (<coast terrain=...).

TagsKeine Tags zugeordnet.
Parteiii
SpielE2
Report967

Notizen / Dateien

Enno

Enno

2016-02-25 16:22

Administrator   ~0006488

Also, erst einmal möchte ich klagen, weil der Titel dieses Bugs nichtssagend ist. Zweitens: Du hast natürlich total Recht, die Doppelung mit (land,sail) ist ungeschickt. Die ist noch aus einer Zeit, als es quasi zwei Klassen von Schiffen gab: Boote, und Nicht-Boote.

CTD

CTD

2016-03-20 18:36

Entwickler   ~0006508

Spricht den etwas dagegen das Boote in Gängen anlanden können? Ist ja sonst eine Kleinigkeit. Die Flags an den Regionen sollte man dann auch gleich löschen.

Enno

Enno

2016-06-09 21:22

Administrator   ~0006613

Aktuelle Implementation in move.c ist:

  1. Das Terrain muss das SAIL_INTO flag haben, und
  2. Das Terrain muss in der coasts Liste des Schiffs sein.

Ich habe allerdings das dunkle Gefühl, dass Piraterie das flag benutzt, ohne sich um den Schiffstypen zu scheren?

Enno

Enno

2016-06-10 07:43

Administrator   ~0006614

Piraterie ruft einfach nur move_cmd auf, und das reduziert das ganze auf move_cmd. Damit geht das am Ende alles durch den selben Codepath, in check_ship_allowed.

Enno

Enno

2016-06-10 08:05

Administrator   ~0006615

Ich glaube, dass das korrekt ist. In Hallen und Gänge soll man nicht segeln können. Zum Code: Das sieht mir nach einer Optimierung aus. Es ist weitaus schneller, auf ein Flag wie SAIL_INTO zu checken, als eine Liste von Terrains zu durchsuchen. Wenn es also ein Terrain gibt, in dem überhaupt kein Schiff landen darf, dann kann man das so markieren. Wenn ich das Flag von dem Terrain entferne, ändert das am Resultat nichts.

Natürlich ist das irgendwo doppelt gemoppelt, und kann zu Verwirrung führen. Schöner wäre, wenn das nur über die ship->coast Liste läuft. Das SAIL_INTO Flag ist, das sieht man schon am Namen, noch aus Atlantis, als für alle Schiffe die gleichen Regeln galten.

Dann habe ich mich noch gefragt, warum "ocean" in ship_type.coasts aufgelistet wird. Jedes Schiff darf ja wohl in einen Ozean (SEA_REGION) fahren? Aber ich glaube, es gab da mal einen Plan, verschiedene Typen von Ozean zu implementieren, stillere Gewässer, in denen alle Schiffstypen erlaubt sind, und stürmischen Ozean, wo man ein spezielles Schiff braucht. Daraus ist nichts geworden, und dieses Feature ist damit tot und irreführend.

Was ich hier tun möchte:

  1. Das Flag aus dem Code entfernen
  2. "ocean" aus ship_type.coasts entfernen, durch einen Test auf SEA_REGION ersetzen.
Enno

Enno

2016-06-10 10:20

Administrator   ~0006617

Kannst du das in einem separaten Bug machen? Das hat mit Spezialterrain ja eher nichts mehr zu tun.

Enno

Enno

2016-06-10 17:49

Administrator   ~0006618

Für Betreten ist SEA_REGION übrigens nicht gedacht, das sind WALK_INTO bzw. FLY_INTO. Es gibt da eine Menge Flags, die leider alle nicht dokumentiert sind. Also, noch ein Punkt für die Liste:

  1. Das Flag aus dem Code entfernen
  2. "ocean" aus ship_type.coasts entfernen, durch einen Test auf SEA_REGION ersetzen.
  3. Die Terrain-Flags dokumentieren
Enno

Enno

2016-06-10 20:57

Administrator   ~0006619

PR https://github.com/eressea/server/pull/515

Enno

Enno

2016-08-19 18:10

Administrator   ~0006728

Der PR ist schon vor einer Weile akzeptiert worden. Die Probleme mit Piraterie existieren wahrscheinich noch immer, sollten aber einen eigenen Bug bekommen.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2016-02-25 16:20 Solthar Neuer Eintrag
2016-02-25 16:22 Enno Notiz hinzugefügt: 0006488
2016-03-20 18:36 CTD Notiz hinzugefügt: 0006508
2016-06-08 10:10 Enno Bearbeitung durch => Enno
2016-06-08 10:10 Enno Status neu => zugewiesen
2016-06-09 21:22 Enno Notiz hinzugefügt: 0006613
2016-06-10 07:43 Enno Notiz hinzugefügt: 0006614
2016-06-10 08:05 Enno Notiz hinzugefügt: 0006615
2016-06-10 10:20 Enno Notiz hinzugefügt: 0006617
2016-06-10 17:49 Enno Notiz hinzugefügt: 0006618
2016-06-10 20:57 Enno Notiz hinzugefügt: 0006619
2016-08-19 18:10 Enno Status zugewiesen => erledigt
2016-08-19 18:10 Enno Lösung offen => erledigt
2016-08-19 18:10 Enno Behoben in Version => 3.9.1
2016-08-19 18:10 Enno Notiz hinzugefügt: 0006728
2017-12-05 19:50 Enno Status erledigt => geschlossen