View Issue Details

IDProjectCategoryView StatusLast Update
0002310EresseaGeneralpublic2017-12-05 18:49
ReporterEnno Assigned ToEnno  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version3.11.1 
Target Version3.12Fixed in Version3.12 
Summary0002310: Falsche (?) Personenzahl im NR
Description

Im NR-Code steht folgendes:

no_people = count_all(f);
if (f->flags & FFL_NPC) {
    no_people = f->num_total;
}
else {
    no_people = f->num_people;
}

Das ist beknackt. Es wird erst eine teure Volkszählung gemacht (count_all leiert alle Einheiten ab), und dann wird der berechnete Wert mit einer Partei-Variablen überschrieben, die während des Zuges laufend aktuell gehalten wird, wann immer sich eine Einheiten-Zahl ändert, oder eine Einheit die Partei wechselt.

Additional Information

Dazu kommt noch, dass die Berechnung keine Untoten, Vertraute, oder Migranten enthält. Ich nehme an, dass das verhindern sollte, dass eine Partei mit vielen Untoten zusätzliche Migranten oder Helden bekommen kann?

TagsNo tags attached.
FactionN/A
GameE2
Report1015

Relationships

related to 0002311 closedEnno Einheitenlimit kann gesprengt werden. 

Activities

Enno

Enno

2017-03-11 17:36

administrator   ~0007122

Haha. Der Code ist so schlecht, dass die Anzahl der Personen ohne Untote, etc. GRÖSSER ist, als mit. Report 397, E3, Partei (goLd). num_total = 2079, num_people = 2081.

Enno

Enno

2017-03-11 17:53

administrator   ~0007123

read_unit sollte das nicht so machen: if (f != u->faction) { u_setfaction(u, f); } if (u->faction) { ++u->faction->num_units; }

u_setfaction sollte eigentlich die num_units und num_people variablen korrekt setzen. Klappt aber nicht.

Enno

Enno

2017-03-11 18:06

administrator   ~0007124

Noch ein Fehler: Es gibt ein Einheitenlimit pro Allianz. Das verhindert zwar mit checkunitnumber(), dass man in new_units mehr Einheiten machen kann, aber man kann es umgehen, indem man eine Partei aufnimmt, mit deren Einheiten die Allianz das Limit sprengt (oder eben kurzfristig austritt, um neue Einheiten zu machen).

Enno

Enno

2017-03-11 19:32

administrator   ~0007127

fixed in PR https://github.com/eressea/server/pull/675

Issue History

Date Modified Username Field Change
2017-03-11 17:20 Enno New Issue
2017-03-11 17:20 Enno Status new => assigned
2017-03-11 17:20 Enno Assigned To => Enno
2017-03-11 17:36 Enno Note Added: 0007122
2017-03-11 17:53 Enno Note Added: 0007123
2017-03-11 18:06 Enno Note Added: 0007124
2017-03-11 18:35 Enno Relationship added related to 0002311
2017-03-11 19:32 Enno Note Added: 0007127
2017-03-11 19:32 Enno Status assigned => resolved
2017-03-11 19:32 Enno Fixed in Version => 3.12
2017-03-11 19:32 Enno Resolution open => fixed
2017-03-11 19:34 Enno Target Version => 3.12
2017-12-05 18:49 Enno Status resolved => closed