View Issue Details

IDProjectCategoryView StatusLast Update
0002337EresseaGeneralpublic2019-10-03 19:55
ReporterCTD Assigned ToEnno  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version3.12.1 
Target Version3.13.0Fixed in Version3.13.0 
Summary0002337: Regionen um Leuchttürme werden nicht mehr angezeigt
Description

Meine Einheit Ruhmsucher (xuhw) steht als 2te Einheit in einem Leuchtturm einer anderen Partei. Diese andere Einheit hat 12 Personen. Obwohl der Leuchturm normal arbeitet (Besitzer hat einen Report der umliegenden Regionen bekommen) war das bei mir mit dieser Auswertung nicht mehr so. Vermutlich hat hier die E2 Limitierung auf 2 Personen zugeschalgen, die es in E3 jedoch nie gab. Vermutlich war das unabsichtlich, da der Check beim Wahrnehmungstalent gemacht wurde, das es aber für E3 nicht gibt. Bitte die Größenlimitierung (am besten incl. E2) komplett aufheben, zumindest was den Report an geht. Einer Einheiten in den Leuchtturm Stellen zu müssen damit eine 2te Partei auch etwas sieht ist erscheint mir in keiner Weise irgendwie sinnvoll.

TagsNo tags attached.
Factionct0d
GameE3
Report411

Relationships

related to 0002221 closedEnno Größenbegrenztes Gebäude (Hafen) größer als Maximalgröße 

Activities

Enno

Enno

2017-06-17 20:14

administrator   ~0007256

Auch das klingt mir sehr nach einem Featurewunsch. Den Regeln entspricht es auf jeden Fall (was ein unangekündigter bzw. ungewollter Bugfix sein könnte): https://wiki.eressea.de/index.php/Andere_Geb%C3%A4ude#Leuchtturm sagt Kapazität: 4 Personen.

Enno

Enno

2017-06-18 10:43

administrator   ~0007259

Es gibt offenbar keine Partei ct0d in E3. Kann die Sache daher gerade nicht nachvollziehen.

Enno

Enno

2017-06-18 10:44

administrator   ~0007260

Aha! Ruhmsucher (xuhw) gehört zur Partei 6t0d. Tippfelher.

Enno

Enno

2017-06-18 10:52

administrator   ~0007261

In reports.c:1444 steht:

                if (u->building && u->building->type == bt_lighthouse && inside_building(u)) {

Der Ausdruck inside_building(u) ist false, weil die Kapazität 4 ist, und eine 12-Personen Einheit den ganzen Platz beansprucht, deshalb bekommen beide Einheiten den Effekt des Leuchtturmes nicht. Soweit ist das alles im Rahmen der Regeln. Ergo: Featurewunsch.

Enno

Enno

2017-06-18 10:56

administrator   ~0007262

Generell finde ich es nicht verkehrt, wenn die ersten vier EINHEITEN statt der ersten vier PERSONEN den Effekt des Leuchtturmes bekommen würden, aber da ich selber keine Leuchttürme besitze, in denen mehr als eine Person steht, würde ich da erst die Spieler befragen wollen. Selbst dann fehlt mir die Zeit für Features, die nicht jemand anderes implementiert, da ich mich demnächst primär um Bugs kümmern möchte. Davon haben wir gerade wieder genug.

CTD

CTD

2017-06-24 11:16

developer   ~0007296

Verstehe ich alles, aber 2 Anmerkungen habe ich da doch noch:

  1. Die 12er Einheit sieht die Regionen. Wäre auch echt bescheiden wenn man den Unterhalt bezahlt und dann nix sieht weil die Eineheiten aus zu vielen Personen besteht. Das ganze ist auch unlogisch.
  2. Es ging die letzen 7 Jahre. Die Anleitung als Master heranzuziehen halte ich nicht für den besten Weg. Da steht genug falsches drin. Daher sehe ich das durchaus als Bug.

Und was spricht gegen die Änderung das Größenlimit einfach ganz zu entfernen? Das ist in 5 min gemacht, und ich sehe da kein unfairen Vorteil oder Nachteil im Spiel. Man kann halt Einheiten mit anderen Aufgeben auch mit in den Leuchtturm stellen.

Enno

Enno

2017-06-24 11:43

administrator   ~0007299

Du unterschätzt glaube ich, wie kompliziert die Erstellung des Reports (und Liste der anzuzeigenden Regionen) ist, und die Anzahl Tests, die davon betroffen sind. Aber ich glaube auch, das Limit hier nicht einzubeziehen ist die beste Lösung, und kann mir das als Feature für das nächste Release vorstellen. Priorität haben aber trotzdem die Untoten, mit denen ich immer noch nicht fertig bin.

Enno

Enno

2017-07-09 15:16

administrator   ~0007336

Heute habe ich mir das mal wieder ansehen wollen: Der Code im develop Branch hat sich seit meiner ersten Untersuchung stark geändert, die Zeile reports.c:1444 sieht jetzt komplett anders aus. Aber das Verhalten ist noch immer das selbe. Ich bleibe dran.

Enno

Enno

2017-07-15 10:48

administrator   ~0007341

Starting a new feature branch: feature/2337-lighthouse-capacity

Enno

Enno

2017-07-15 11:29

administrator   ~0007342

Aha. Der neue Code ruft nicht inside_building auf, weil das O(n^2) war. Der zählt mit, während er durch die Einheiten scannt:

                if (u->building && b != u->building) {
                    b = u->building;
                    c = buildingcapacity(b);
                    br = 0;
                }
                c -= u->number;
                if (u->faction == f && c >= 0) {

Das muss dann alles anders, wenn es die Kapazität ignorieren soll.

Enno

Enno

2017-07-15 11:37

administrator   ~0007343

Wenn ich den Code ändere, gibt es einen Test, der das anmeckert, den sollte ich also wohl als erstes Mal anpassen: 1) test_prepare_lighthouse_capacity: C:\Users\Enno\Documents\Eressea\git\src\reports.test.c:496: expected <1> but was <2>

Enno

Enno

2017-07-15 11:45

administrator   ~0007344

Die korrekte Vorgehensweise ist hier bestimmt, buildingcapacity() für einen Leuchtturm irgendwie unendlich groß zu machen (INT_MAX sollte reichen). Das kann man aber, soweit ich es sehe, derzeit (noch) nicht über die XML config machen.

Enno

Enno

2017-07-15 11:59

administrator   ~0007345

buildingcapacity hat keine Tests, also habe ich die erst einmal nachgeliefert.

Enno

Enno

2017-07-15 12:27

administrator   ~0007346

Blöderweise haben wir sowohl eine maxsize als auch eine maxcapacity für Gebäude. Wenn das Gebäude eine size >= maxsize hat, gilt maxcapacity sonst size * capacity. Oft (aber wohl nicht immer) ist maxsize == maxcapacity, aber für evtl. existierende Ausnahmen ist der Code extra verkompliziert. Wenn ich daran aber bastele, um diese Änderung zu vereinfachen, dann mache ich evtl. ein anderes Gebäude kaputt. Das wäre natürlich Mist, deshalb muss ich hier mit extra Vorsicht vorgehen, und das nicht im Halbschlaf machen.

Enno

Enno

2017-07-15 16:44

administrator   ~0007347

Kann man die Sache reduzieren auf 1. Gebäude, die eine Kapazität haben, die von ihrere Größe abhängt (size * capacity), und solcher, die bei Vollendung eine Kapazität haben (if (size>=maxsize) maxcapacity)? Es lohnt sich bestimmt, die existierenden Gebäude erst einmal in solchen Gruppen zu klassifizieren, und dann Tests für jede Sorte zu schreiben.

Enno

Enno

2017-07-17 15:13

administrator   ~0007348

Ich habe das jetzt glaube ich entwirrt, und so gelöst, dass die Kapazität von Leuchttürmen sich auf die Anzahl der Einheiten, nicht Personen, bezieht. Als Resultat erscheint in 411-6t0d.nr:

Capygilbos (14,-3) (vom Turm erblickt), Hochland, 134/40 Bäume, 609 treue Bauern, 33 Pferde.

So war das wohl gewünscht.

Enno

Enno

2017-07-17 15:23

administrator   ~0007349

Änderung ist in PR https://github.com/eressea/server/pull/710

Issue History

Date Modified Username Field Change
2017-06-17 18:53 CTD New Issue
2017-06-17 18:53 CTD Status new => assigned
2017-06-17 18:53 CTD Assigned To => Enno
2017-06-17 20:14 Enno Note Added: 0007256
2017-06-18 10:43 Enno Note Added: 0007259
2017-06-18 10:44 Enno Note Added: 0007260
2017-06-18 10:52 Enno Note Added: 0007261
2017-06-18 10:52 Enno Assigned To Enno =>
2017-06-18 10:52 Enno Category General => Featurewunsch
2017-06-18 10:52 Enno Product Version 3.13.0 => 3.12.1
2017-06-18 10:56 Enno Assigned To => Enno
2017-06-18 10:56 Enno Status assigned => feedback
2017-06-18 10:56 Enno Note Added: 0007262
2017-06-24 11:16 CTD Note Added: 0007296
2017-06-24 11:16 CTD Status feedback => assigned
2017-06-24 11:43 Enno Note Added: 0007299
2017-06-24 11:43 Enno Target Version => 3.13.0
2017-07-09 15:16 Enno Note Added: 0007336
2017-07-15 10:48 Enno Note Added: 0007341
2017-07-15 11:29 Enno Note Added: 0007342
2017-07-15 11:37 Enno Note Added: 0007343
2017-07-15 11:45 Enno Note Added: 0007344
2017-07-15 11:59 Enno Note Added: 0007345
2017-07-15 12:27 Enno Note Added: 0007346
2017-07-15 16:44 Enno Note Added: 0007347
2017-07-17 11:43 Enno Relationship added related to 0002221
2017-07-17 15:13 Enno Note Added: 0007348
2017-07-17 15:23 Enno Status assigned => resolved
2017-07-17 15:23 Enno Resolution open => fixed
2017-07-17 15:23 Enno Fixed in Version => 3.13.0
2017-07-17 15:23 Enno Note Added: 0007349
2017-12-05 18:48 Enno Status resolved => closed
2019-10-03 19:55 Enno Category Featurewunsch => General