19.11.2025, 14:22
(Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2025, 22:26 von siebenstreich.)
Hier noch mein aktueller Kenntnisstand zum Gegenstandszähler (hero.num_filled_inv_slots). Die Sache scheint ähnlich gelagert zu sein wie bei den von Henne recht treffend benannten Placebo-Zaubern: Der Zähler wird fleißig aktualisiert, wenn auch nicht immer ganz korrekt. Aber ausgelesen wird der Zähler nur an sehr wenigen Stellen, und die Wirkung hält sich arg in Grenzen:
Eine gewisse Gefahr geht allerdings davon aus, dass der Zähler manchmal falsch aktualisiert wird, womit er potentiell jeden denkbaren Wert annehmen kann. U.u. wird also ein Verkaufsbildschirm zu Unrecht vorzeitig beendet. Oder ein Held bekommt einen neuen Gegenstand nicht, obwohl er durchaus Platz dafür gehabt hätte.
Fazit: Eigentlich braucht man den Zähler num_filled_inv_slots nicht, aber er macht potentiell Ärger.
Die beste Lösung wäre wohl, das Ding in der "cleanen" Neuprogrammierung einfach abzuklemmen (und für den Schweif-Import den Wert am Ende einmal korrekt rauszuzählen).
- In der Funktion sell_screen wird zweimal auf num_filled_inv_slots==0 getestet. Der Effekt dürfte sein, dass der Verkaufsbildschirm vorzeitig geschlossen wird, weil der Held dann ja keine Gegenstände hat. Das dürfte zu vernachlässigen sein, und außerdem wird in der Funktion auch nochmal "zu Fuß" nachgezählt, wie viele Gegenstände der Held hat.
- In der Funktion give_new_item_to_hero wird hero->num_filled_inv_slots < NR_HERO_INVENTORY_SLOTS abgefragt, um nachzuschauen, ob überhaupt ein Inventarslot frei ist. Das ist (wie schon weiter oben angesprochen) ziemlich schwach, weil dabei die Inventarslots am Körper mit einbezogen werden, obwohl der Gegenstand im Rucksack landen muss. Danach wird ohnehin mit einer Schleife nach einem freien Slot im Rucksack gesucht, d.h. die Bedingung kann ohne negative Auswirkungen rausgenommen werden.
Eine gewisse Gefahr geht allerdings davon aus, dass der Zähler manchmal falsch aktualisiert wird, womit er potentiell jeden denkbaren Wert annehmen kann. U.u. wird also ein Verkaufsbildschirm zu Unrecht vorzeitig beendet. Oder ein Held bekommt einen neuen Gegenstand nicht, obwohl er durchaus Platz dafür gehabt hätte.
Fazit: Eigentlich braucht man den Zähler num_filled_inv_slots nicht, aber er macht potentiell Ärger.
Die beste Lösung wäre wohl, das Ding in der "cleanen" Neuprogrammierung einfach abzuklemmen (und für den Schweif-Import den Wert am Ende einmal korrekt rauszuzählen).

