Nee, so einfach is' es dann doch nicht.
Der Schaden der magischen Kettenrüstung und das Runterzählen der Lichtquellen wird in "time_warp" (die Prozedur, welche beim Laufen und Schlafen vorspult) nochmal manuell durchgeführt. Wenn ich einfach nur die BCDA-Abfrage umdrehe, würden diese dann doppelt verringert, und das wäre auch nicht richtig. Das manuelle Runterzählen in time_warp ist aber ebenfalls falsch implementiert: denn time_warp wird pro Schritt mit dem Wert 180 aufgerufen; für die Verringerung der Lichtquellen wird dieser Wert jedoch durch 1350 dividiert, so dass die Verringerung der Lichtquellen zumindest beim Laufen damit komplett unter den Tisch fällt, da bei Ganzzahldivision immer abgerundet wird, hier also auf Null. Der Sphärenriss und das Einhorn wurden in timewarp() schlicht vergessen.
Zudem ist außer den genannten Zeitzählern ein weiterer betroffen: nämlich der, welcher misst, wie lange gewartet werden muss, bis man einen Helden wieder mit Heiltalenten heilen kann. Dieser sollte sich eigentlich alle fünf Minuten verringern, wegen des genannten Rundungsfehlers geschieht dies jedoch nur beim Schlafen, nicht beim Herumlaufen (180/450 ist eben immer noch Null komma irgendwas, also Null bei Ganzzahldivison).
Uff! Die sauberste Lösung wäre also, die BCDA-Abfrage umzudrehen und dafür das manuelle Runterzählen von magischer Rüstung und Lichtquellen aus time_warp zu entfernen, weil es dann ja schon in do_timer erledigt wird. Dann entspräche das Verhalten des Spieles dem, was ich im vorherigen Post beschrieben habe, d.h. alle Zähler beziehen sich auf Ingame-Zeit und würden ohne Rundungsfehler verwaltet.
Der Schaden der magischen Kettenrüstung und das Runterzählen der Lichtquellen wird in "time_warp" (die Prozedur, welche beim Laufen und Schlafen vorspult) nochmal manuell durchgeführt. Wenn ich einfach nur die BCDA-Abfrage umdrehe, würden diese dann doppelt verringert, und das wäre auch nicht richtig. Das manuelle Runterzählen in time_warp ist aber ebenfalls falsch implementiert: denn time_warp wird pro Schritt mit dem Wert 180 aufgerufen; für die Verringerung der Lichtquellen wird dieser Wert jedoch durch 1350 dividiert, so dass die Verringerung der Lichtquellen zumindest beim Laufen damit komplett unter den Tisch fällt, da bei Ganzzahldivision immer abgerundet wird, hier also auf Null. Der Sphärenriss und das Einhorn wurden in timewarp() schlicht vergessen.
Zudem ist außer den genannten Zeitzählern ein weiterer betroffen: nämlich der, welcher misst, wie lange gewartet werden muss, bis man einen Helden wieder mit Heiltalenten heilen kann. Dieser sollte sich eigentlich alle fünf Minuten verringern, wegen des genannten Rundungsfehlers geschieht dies jedoch nur beim Schlafen, nicht beim Herumlaufen (180/450 ist eben immer noch Null komma irgendwas, also Null bei Ganzzahldivison).
Uff! Die sauberste Lösung wäre also, die BCDA-Abfrage umzudrehen und dafür das manuelle Runterzählen von magischer Rüstung und Lichtquellen aus time_warp zu entfernen, weil es dann ja schon in do_timer erledigt wird. Dann entspräche das Verhalten des Spieles dem, was ich im vorherigen Post beschrieben habe, d.h. alle Zähler beziehen sich auf Ingame-Zeit und würden ohne Rundungsfehler verwaltet.