Crystals-DSA-Foren
Schicksalsklinge: Umfassender Bugfix-Patch - Druckversion

+- Crystals-DSA-Foren (https://www.crystals-dsa-foren.de)
+-- Forum: Allgemeines zur Nordlandtrilogie DOS (https://www.crystals-dsa-foren.de/forumdisplay.php?fid=20)
+--- Forum: Technische Werkstatt (https://www.crystals-dsa-foren.de/forumdisplay.php?fid=34)
+--- Thema: Schicksalsklinge: Umfassender Bugfix-Patch (/showthread.php?tid=5191)

Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22


RE: Schicksalsklinge: Umfassender Bugfix-Patch - Lippens die Ente - 30.03.2016

ist auch schwer, sich in Schick überhaupt zu infizieren, das hinzubekommen ist schon eine Kunst. Mit Tommys Editor kann man sich zwar extra anstecken, müsste die Veränderungen der Eigenschaftswerte dann aber auch manuell eingeben, ob das in der konkreten Situation hilft, weiß ich aber nicht.

Der Nachteil in Schick ist, dass man durch gewisse Ereignisse positive Eigenschaften temporär erniedrigt bekommt, ohne jedoch in einer Textbox darüber informiert zu werden, das gilt für Krankheiten genauso. Ab Schweif wird man genau informiert welche Eigenschaft verändert wird. Aber wenn in Schick ein Charakter stirbt oder versteinert wird bleiben diese Änderungen anscheinend alle permanent. Ich vermute, dass System erkennt zwar, dass eine gewisse Zeit abgelaufen ist und der normalen ZUstand wiederhergestellt werden soll, prüft aber wohl auch ob der Held etwas unternehmen kann. Wenn das nicht der Fall ist, verschwindet diese Information wohl aus dem Spielstand, so dass der Zustand bleibt.

Wenn du etwa jemandem ein Kraftelixier gibst (oder mehrere, die wirken ja sogar kumulkativ), ihn dann sterben und wieder erwecken lässt, solltest du einen permanenten +5 KK Effekt haben, das heißt man kann diesen Bug auch positiv ausnutzen.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 30.03.2016

So, jetzt sind die Krankheiten auch repariert. Es waren gleich vier Fehler zu korrigieren:
  1. Ansteckung mit einer bereits bestehenden Krankheit führte zum Löschen des bisherigen Krankheitsverlaufs dieser Krankheit, was nichtbeabsichtigte permanente Eigenschaftsverluste zur Folge hat. Anders als an anderer Stelle ausführt wurde, hat dies nichts direkt mit der Progression von Dumpfschädel zu Blauer Keuche zu tun; da beide Krankheiten so ansteckend sind, ist das beobachtete Problem vielmehr auf Rück- und Mehrfachinfektionen zurückzuführen. Der Patch korrigiert dahingehend, dass bei Infektion mit einer bestehenden Krankheit die Variablen zum Krankheitsverlauf nicht angetastet werden.
  2. Bei Paralyse kam es auch nach Heilung zu keiner Wiederherstellung der Eigenschaftswerte. Hier wurden zwei IF-Abfragen verdreht.
  3. Das gleiche Problem bei Frostschäden.
  4. Bei Heilung von Schlachtfeldfieber vor dem Ausbruch der Krankheit (d.h. es steht "krank" da, es wurden aber noch keine Werte gesenkt) verbleibt der Held auf ewig in der Genesungsphase. Das hat zwar keine Auswirkungen, ist aber unschön.
Außerdem sind korrigiert:
  • Verlorene Maximal-LP werden beim Export nach Sternenschweif geloescht
  • NPC Curian kann in Herbergen keine magischen Handlungen durchführen
  • Schule der Hellsicht in Thorwal identifiziert nur einzigen Artikel im Spiel
Mal schauen, was sich sonst noch machen lässt, bevor ich eine neue Version des Patches hochlade. Für die Krankheitenprobleme habe ich zum besseren Verständnis erstmals mir den Quellcode von Brighteyes genauer angeschaut, insofern bedanke ich mich für deren Arbeit. In diesem Zusammenhang mag es von Interesse sein, für Nichtprogrammierer die Krankheitsverläufe mal in Worten zu beschreiben:

Bei allen Krankheiten: Tod des Helden, falls KK==0 oder GE==0 wird.

Wundfieber
Während der Krankheitsphase:
  • jeden Tag KK-1, bis KK==1 (also kein Tod möglich). Genesung startet automatisch nach 13 Tagen.
Während der Genesungsphase:
  • täglich jeweils KK +1, bis ursprünglicher Verlust ausgeglichen.
Dumpfschädel
Während der Krankheitsphase:
  • Zu Beginn KK-5, GE-2, alle AT/PA -2.
  • Nach zwei Tagen jeden Tag Infektion der anderen Helden in der Gruppe (außer NPC), jeweils mit 20% Wahrscheinlichkeit pro Held und Tag (ohne weitere Probe).
  • Jeden Tag: 5% Wahrscheinlichkeit pro Tag, dass Dumpfschädel abklingt (KK/GE/AT/PA alle auf ursprüngliche Werte gesetzt) und zur blauen Keuche wird (ohne weitere Probe).
  • Automatische Genesung, falls Anzahl der Tage seit Ausbruch > W3+4. Ansonsten W6-1 LE-Verlust pro Tag.
Während der Genesungsphase:
  • Nach einem Tag KK+5, GE+2, alle AT/PA +2.
Blaue Keuche
Während der Krankheitsphase:
  • Zu Beginn werden KK und GE halbiert, alle AT/PA -4.
  • Nach drei Tagen jeden Tag jeweils mit 25% Wahrscheinlichkeit pro Tag Spontangenesung bei permanentem Verlust von einem KK-Maximalpunkt sowie Krankheitstage/3 an maximalen LE-Punkten. Diese werden nicht anderweitig vermerkt, können also anders als beim Verdursten nicht durch einen Heiler wiederhergestellt werden!
  • Ansonsten jeden Tag Verlust von W6+2 LE plus Infektion der anderen Helden in der Gruppe (außer NPC), jeweils mit 20% Wahrscheinlichkeit pro Held und Tag (ohne weitere Probe).
Während der Genesungsphase:
  • Nach einem Tag Wiederherstellung der reduzierten KK/GE/AT/PA.
Paralyse
Während der Krankheitsphase:
  • Automatische Genesung, falls Anzahl der Tage seit Ausbruch > W3+4.
  • Ansonsten pro Tag jeweils W6 Verlust von GE und KK, was schnell zum Tode führen kann.
Während der Genesungsphase:
  • Im ungepatchten Spiel: nichts; aufgrund einer falschen Abfrage werden die GE/KK-Werte nie mehr wiederhergestellt.
  • Eigentlich gedacht war (und im nächsten Patch so): täglich jeweils KK und GE +1, bis ursprünglicher Verlust ausgeglichen.
Schlachtfeldfieber
Während der Krankheitsphase:
  • Zu Beginn: KK-5.
  • Nach sieben Tagen: mit 20% Wahrscheinlichkeit (Elfen: 30%) sofortiger Tod des Helden, ansonsten Genesung.
  • Nach drei Tagen jeden Tag Infektion der anderen Helden in der Gruppe (außer NPC), jeweils mit 5% Wahrscheinlichkeit pro Held und Tag (ohne weitere Probe).
  • Jeden Tag: Verlust von 1W6+(Krankheitstage-1) Lebenspunkten, bei Elfen: 2W6+(Krankheitstage-1)
Während der Genesungsphase:
  • Nach einem Tag KK+5.
Frostschäden
Während der Krankheitsphase:
  • Pro Tag mit (Tage*5)% Wahrscheinlichkeit: GE-Maximalpunkt -1.
  • Jeden Tag Verlust von W6 Lebenspunkten.
  • Jeden Tag: GE und KK jeweils -1.
Während der Genesungsphase:
  • Im ungepatchten Spiel: nichts; aufgrund einer falschen Abfrage werden die GE/KK-Werte nie mehr wiederhergestellt.
  • Eigentlich gedacht war (und im nächsten Patch so): täglich jeweils KK und GE +1, bis ursprünglicher Verlust ausgeglichen. Dabei kann der Wert auch über den Maximalwert steigen, falls GE-Maximalwert krankheitsbedingt reduziert wurde.

Tollwut
Während der Krankheitsphase:
  • Jeden Tag: Spontanheilung, falls Anzahl der Krankheitstage > W6+6.
  • Jeden Tag Infektion der anderen Helden in der Gruppe (außer NPC), jeweils mit 10% Wahrscheinlichkeit pro Held und Tag (ohne weitere Probe).
  • Jeden Tag Verlust von (Anzahl Krankheitstage, maximal 3)xW6 Lebenspunkten.
  • Jeden Tag KK-2.
  • Nach zwei Tagen jeden Tag Angriff auf die anderen Helden.
Während der Genesungsphase:
  • Jeden Tag KK+2 bis Wiederherstellung der reduzierten KK.
Es wäre interessant, wenn jemand Unterlagen des DSA-Regelwerks von 1992 hätte und nachschauen könnte, inwieweit diese Verläufe den dort dargestellten Regeln entsprechen.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - Alrik Alrikson - 30.03.2016

Das sind wirklich interessante Erkenntnisse, echt klasse!

Der Fehler vieler Krankheiten liegt also darin, dass ein Held genau diese Krankheit erneut bekommen kann, an welcher er bereits leidet und dann der Genesungsablauf der Erstinfektion nicht mehr ans Laufen kommt, richtig?

Was mir aber nicht ganz klar geworden ist: Wenn die Gruppe nun nur aus einem Helden oder einem Kranken und ansonsten nur Gesunden besteht, wie kann dann der kranke Held erneut an einer bereits bestehenden Krankheit erkranken? Es ist natürlich möglich, dass er sich bei unzureichender Kleidung etc. wieder erkältet, aber das muss ja nicht geschehen. Und entsprechend müsste es doch bei einem Ausbleiben der Neuinfektion zu einer Wiederherstellung der abgesenkten Eigenschaftswerte kommen (außer bei der Paralyse)?


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 30.03.2016

Das ist richtig. Mir ist es auch nirgendwo zu Augen oder zu Ohren gekommen, dass das Problem bei einem Solo-Helden aufgetreten wäre.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - Zurgrimm - 30.03.2016

(30.03.2016, 13:19)NRS schrieb: So, jetzt sind die Krankheiten auch repariert.
Wow, super! Diese "black box", wie Du es nanntest, hast Du aber mal gründlich geknackt! :up: :)

(30.03.2016, 13:19)NRS schrieb: Ansteckung mit einer bereits bestehenden Krankheit führte zum Löschen des bisherigen Krankheitsverlaufs dieser Krankheit, was nichtbeabsichtigte permanente Eigenschaftsverluste zur Folge hat. Anders als an anderer Stelle ausführt wurde, hat dies nichts direkt mit der Progression von Dumpfschädel zu Blauer Keuche zu tun; da beide Krankheiten so ansteckend sind, ist das beobachtete Problem vielmehr auf Rück- und Mehrfachinfektionen zurückzuführen.
Das hatte TeraBlight aber so, wenn ich es recht verstehe, schon gemeint. Er schrieb ja in dem von mir oben verlinkten Beitrag:
(02.09.2007, 19:14)TeraBlight schrieb: Das Problem ist schlicht, dass die Krankheit deren Heilung die Werte wieder in Ordnung bringen wuerde nicht mehr vorhanden ist.
[...]
Des weiteren kann dieser Effekt auch noch extremer auftreten, weil die Helden sich (ein weiterer bug) naemlich auch untereinander anstecken, wenn sie schon krank sind.
Daß er dies an der Blauen Keuche exemplifiziert hat, dürfte nichts daran ändern, daß er das Problem schon richtig erkannt hatte.

Und wo Du gerade dabei bist, wäre es für Dich insoweit ein Leichtes, auch diesen (kleinen) Fehler noch richtig zu stellen, indem die richtige Textbox aufgerufen wird, die einfach die Genesung mitteilt ohne auf den (ja nicht stattfindenden) Permanent-Verlust hinzuweisen?:
(02.09.2007, 19:14)TeraBlight schrieb: Andererseits kann man ihn vom Heiler wieder in Ordnung bringen lassen, was zuerst mal nur die Krankheit entfernt aber die Werte unveraendert laesst:
[...]
Nach noch einer Uebernachtung ist dann aber alles beim alten - nur leider mit der selben Nachricht wie oben ("wird wohl nie wieder ganz der Alte sein"), was also einen kleinen bug darstellt,
Wenn es kein Leichtes ist, ist es natürlich auch nicht so wichtig.

(30.03.2016, 13:19)NRS schrieb: In diesem Zusammenhang mag es von Interesse sein, für Nichtprogrammierer die Krankheitsverläufe mal in Worten zu beschreiben:
Ja, in der Tat, das sind sehr interessante Erkenntnisse! Vielen Dank für diese eaxkte Beschreibung. Ich weiß zwar gar nicht, ob alle diese Krankheiten überhaupt im Spiel möglich sind, aber jedenfalls die Mechanismen für Dumpfschädel und Blaue Keuche sind auch für den praktischen Spieler sehr wissenswert.

(30.03.2016, 13:19)NRS schrieb: Außerdem sind korrigiert:
[...]
NPC Curian kann in Herbergen keine magischen Handlungen durchführen
Das heißt wohl, Du hast Dich tatsächlich der Mühe unterzogen, sämtliche nachfolgenden Informationen um eine Stelle nach hinten zu versetzen, um diese zusätzliche Variable zu ermöglichen. :up:

(30.03.2016, 13:19)NRS schrieb: Schule der Hellsicht in Thorwal identifiziert nur einzigen Artikel im Spiel
O.K. Der Bug, auf den ich in diesem Zusammenhang hinweisen wollte, war zwar ein anderer. Aber auch in diesem Punkt ist eine Korrektur natürlich sinnvoll.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 30.03.2016

Zurgrimm schrieb:Diese "black box", wie Du es nanntest, hast Du aber mal gründlich geknackt
Wie gesagt, in diesem Fall hat Brighteyes die Vorarbeit geleistet.
Zurgrimm schrieb:indem die richtige Textbox aufgerufen wird, die einfach die Genesung mitteilt ohne auf den (ja nicht stattfindenden) Permanent-Verlust hinzuweisen?:
Es gibt keine andere Textbox als "%s HAT DIE KRANKHEIT ÜBERWUNDEN, DOCH DAS LEBEN WIRD WOHL NIE WIEDER SEIN, WIE ES WAR!". Man müsste den Text für eine zweite neu schreiben. Darfst Dich gerne schriftstellerisch betätigen... :)

(Es wäre übrigens ein Leichtes, so abzuändern, dass man bestimmte Krankheiten nur ein einziges Mal im Leben bekommen kann mit dem Argument, dass sich danach Immunität bildet. Das wäre aber keine Fehlerbereinigung mehr sondern eine Regeländerung.)
Zurgrimm schrieb:Das heißt wohl, Du hast Dich tatsächlich der Mühe unterzogen, sämtliche nachfolgenden Informationen um eine Stelle nach hinten zu versetzen, um diese zusätzliche Variable zu ermöglichen.
Sämtliche in dieser Prozedur, nicht im ganzen Spiel. Hat trotzdem zwei Stunden gedauert.
Zurgrimm schrieb:Der Bug, auf den ich in diesem Zusammenhang hinweisen wollte, war zwar ein anderer.
Das mit dem Verfluchen dauert länger, weil ich erst an die Stelle muss, wo man verflucht wird. Einfach so den entsprechenden Wert mittels Hex-Editor einzutragen ist mir zu unsicher, da man vielleicht was übersieht.

Edit: Die 50-Dukaten-Truhe im Totenschiff setzt nicht das "Verflucht"-Kennzeichen. Das "Verflucht"-Kennzeichen wäre (relativ zum 1. Heldennamen) +AA, Bytewert 20h. Die Truhe setzt hingegen +AB, Bytewert 40. Das könnte ein Fehler sein oder Absicht. In jedem Fall ist das der Grund, warum die Schule der Hellsicht nix findet. Nur der Zauber "Böser Blick" setzt tatsächlich das "Verflucht"-Kennzeichen. Unabhängig davon besteht in der Schule der Hellsicht der bekannte Fehler, dass der Gruppenanführer nie entflucht werden kann.

Edit: Der Zauber "Verwandlung beenden" fragt ebenfalls +AB, Bytewert 40h ab. Die Meldung, die dann kommt, lautet: "DER FLUCH WIRD VON %s GENOMMEN, UND ALLE EIGENSCHAFTEN STEIGEN WIEDER!"

Mit anderen Worten: Im ungepatchten Spiel verursacht die Truhe eine Verwandlung, die aber "Fluch" genannt wird und kein echter Fluch ist, und deshalb nur mit "Verwandlung beenden" beendet werden kann, worauf man erfährt, dass der "Fluch genommen" wurde, während die Schule der Hellsicht dies nicht kann, da sie nur Flüche entfernt und keine Verwandlungen, die als "Fluch" bezeichnet werden. Der Zauber "Verwandlungen beenden" kann keine Flüche beenden, sondern nur Verwandlungen, die als "Flüche" bezeichnet werden, und bezeichnet sie dann auch selber so. Alles klar? ;)

Ich weiß nicht, wie man das korrigieren soll --- wenn ich die Truhe statt des Verwandlungs-Kennzeichens das "Fluch"-Kennzeichnen setzen lasse, kann einem zwar die Schule der Hellsicht helfen, aber nicht der "Verwandlungen beenden"-Zauber mehr. Außerdem erhöht die Schule der Hellsicht die Eigenschafts-Werte auch nicht.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - Zurgrimm - 30.03.2016

(30.03.2016, 15:25)NRS schrieb: Es gibt keine andere Textbox als "%s HAT DIE KRANKHEIT ÜBERWUNDEN, DOCH DAS LEBEN WIRD WOHL NIE WIEDER SEIN, WIE ES WAR!". Man müsste den Text für eine zweite neu schreiben.
Doch, die gibt es, nur vielleicht nicht für die Blaue Keuche. Aber wenn ein Dumpfschädel beim Heiler kuriert wurde und man danach eine Nacht geruht hat, dann sieht das so aus:
   

Wäre das nicht auch passender für die Heilung von Blauer Keuche (der ein Dumpfschädel ja vorausgeht) als die Meldung, daß das Leben nie wieder sein wird, wie es war, wenn doch gar keine bleibenden Schäden davongetragen wurden?

(30.03.2016, 15:25)NRS schrieb: (Es wäre übrigens ein Leichtes, so abzuändern, dass man bestimmte Krankheiten nur ein einziges Mal im Leben bekommen kann mit dem Argument, dass sich danach Immunität bildet. Das wäre aber keine Fehlerbereinigung mehr sondern eine Regeländerung.)
Da wäre ich nicht dafür, denn das dürfte nicht regelkonform sein. Man kann sich ja auch mehrfach erkälten. Und Dumpfschädel soll man ja sogar durch Lügen bekommen können (nicht in der NLT, aber nach DSA-Regeln).

(30.03.2016, 15:25)NRS schrieb: Das mit dem Verfluchen dauert länger, weil ich erst an die Stelle muss, wo man verflucht wird.
Ich habe ein umfangreiches Spielstandsarchiv, mit dem ich in kurzer Zeit an jede Stelle des Spiels kommen kann. Also, wenn Du etwas brauchst ... ;)

(30.03.2016, 15:25)NRS schrieb: Das "Verflucht"-Kennzeichen wäre (relativ zum 1. Heldennamen) +AA, Bytewert 20h. Die Truhe setzt hingegen +AB, Bytewert 40. Das könnte ein Fehler sein oder Absicht, weshalb die Schule der Hellsicht nix findet.
Ich halte es für einen bug, denn da steht "verflucht" und die Schule der Hellsicht ist zum Fluchbrechen da. Wenn sie es bei diesem (einizgen) Fluch im Spiel nicht können sollte, müßte es doch zumindest eine Textbox geben, die erklärt: "Ja, Ihr seid verflucht, da können wir aber leider nichts machen, weil das unsere Fähigkeiten übersteigt." Und sowas gibt es eben nicht.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 30.03.2016

Die Blaue Keuche findet aber in der Brust statt, nicht im Kopf, ist ja schließlich der aventurische Name für eine Lungenentzündung. Insofern passt dieser Text auch nicht. Wegen Fluch versus Verwandlung siehe mein Edit.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - Alrik Alrikson - 30.03.2016

Wie verhalten sich denn die Spielstandsdaten, wenn in der Hyggelik-Ruine Gold aufgehoben wird?

Entspricht dies dann einem Fluch oder ändert sich eigentlich gar nichts an den Helden und es wird lediglich die entsprechende Textbox beim Versuch das Dungeon zu verlassen eingeblendet?


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 30.03.2016

Da wird nur ein Dungeon-spezifisches Flag gesetzt. Es wird wohl offensichtlich, dass das Spiel den Begriff "Fluch" sehr ungenau benutzt, und die Schule der Hellsicht eigentlich nur einen "Bösen Blick" heilt, wobei ich mich frage, ob ein "Böser Blick" überhaupt über den Kampf hinaus wirkt, in welchem er auf einen der Helden angewandt wurde. Falls nicht, ist die Schule der Hellsicht völlig nutzlos. In diesem Fall müsste ein Patch die Wirkung des "Verwandlungen beenden"-Zaubers für die Schule der Hellsicht duplizieren.

Edit: Ich habe jetzt die Totenschiff-Truhe in Ruhe gelassen und allein die Schule der Hellsicht korrigiert. Da waren gleich fünf Fehler auf einmal:
  1. Es konnte nur ein Artefakt im ganzen Spielverlauf identifiziert werden, da der Vermerk, dass am heutigen Tag schon eines identifiziert wurde, nie zurückgesetzt wird. (Das hatte ich ja schon erwähnt.)
  2. Aus dem gleichen Grund konnte auch nur einmal im ganzen Spielverlauf ein Fluch behandelt werden.
  3. Die Schule der Hellsicht konnte nur "Böser Blick" als Fluch heilen, wobei fragwürdig ist, ob so etwas überhaupt über einen Kampf hinaus anhält.
  4. Bei einem erfolgreich behandelten Fluch wollte die Textbox den Namen des Geheilten anzeigen, es wird aber kein Parameter übergeben, weshalb Datenmüll angezeigt wird.
  5. Der Fluch des Gruppenersten wurde ignoriert.
Ganz offensichtlich war die Schule der Hellsicht nie ausgiebig getestet worden... Jetzt werden beide Vermerke einmal täglich gelöscht, so dass am nächsten Tag Analysen und Fluchheilungen wieder möglich sind. Auch der erste Held kann nun von Flüchen befreit werden. Zusätzlich zum Bösen Blick kann nun auch der Totenschiff-Fluch geheilt werden (d.h. das Flag wird gelöscht), bei letzterem (und nur da) werden zusätzlich die Eigenschaftswerte wiederhergestellt analog dem Zauber "Verwandlung beenden". Da kein Platz im Code für die Übergabe des Namens an die Textbox war und außerdem auch noch ein Pronomen abhängig vom Geschlecht des geheilten Helden anzupassen wäre (was mindestens 32 Bytes zusätzlichen Code erfordern würde), habe ich stattdessen einfacherhalber den Text selbst geändert von "NACH ETWA EINER HALBEN STUNDE BEMERKT %s, DASS ES IHM BEREITS DEUTLICH BESSER GEHT, UND KURZE ZEIT SPÄTER IST DIE WIRKUNG DES ZAUBERS VERFLOGEN." in "NACH ETWA EINER HALBEN STUNDE BEMERKT IHR, DASS ES EUREM VERFLUCHTEN KAMERADEN BEREITS DEUTLICH BESSER GEHT, UND KURZE ZEIT SPÄTER IST DIE WIRKUNG DES ZAUBERS VERFLOGEN." Ich glaube, das lässt sich verschmerzen und wenn man es nicht wüsste, würde es einem nicht auffallen, es sei denn, man stört sich an "verflucht", wobei in dem Zusammenhang eigentlich klar ist, das es nicht der verdammte blöde Kamerad, sondern eben der mit einem Fluch belegte Kamerad ist. :)

Übrigens: entgegen einiger Ausführungen gibt es im Statusbildschirm überhaupt keinen Vermerk "verflucht", sondern lediglich "versteinert"! Weder existiert ein entsprechender Eintrag in CHARTEXT.LTX, noch wird das entsprechende Flag in Anzeigecode abgefragt! Insofern ist es kein Fehler, dass nach dem Verfluchtwerden auf dem Totenschiff außer den niedrigeren Eigenschaftswerten nichts weiter angezeigt wird.

Zurgrimm schrieb:Da wäre ich nicht dafür, denn das dürfte nicht regelkonform sein. Man kann sich ja auch mehrfach erkälten. Und Dumpfschädel soll man ja sogar durch Lügen bekommen können (nicht in der NLT, aber nach DSA-Regeln).
Nach DSA-Regeln verschafft eine durchstandene Tollwut aber Immunität (und nur bei dieser).


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 31.03.2016

Zurgrimm schrieb:Wäre das nicht auch passender für die Heilung von Blauer Keuche (der ein Dumpfschädel ja vorausgeht) als die Meldung, daß das Leben nie wieder sein wird, wie es war, wenn doch gar keine bleibenden Schäden davongetragen wurden?
Bitte sehr, der Herr: anbei eine neu verfasste Textbox, mit der beiläufigen Bitte um gefällige Kenntnisnahme der Änderung bezüglich Fluch. Übrigens: neben dem "Verwandlungen beenden"-Zauber und der gepatchten Schule der Hellsicht könnte vom Code her auch ein Praios-Wunder den Fluch vom Totenschiff beseitigen. Ist das nicht schön? Wie schade, dass es keinen Tempel gibt. ;)


RE: Schicksalsklinge: Umfassender Bugfix-Patch - Zurgrimm - 31.03.2016

(31.03.2016, 08:53)NRS schrieb: Bitte sehr, der Herr: anbei eine neu verfasste Textbox, mit der beiläufigen Bitte um gefällige Kenntnisnahme der Änderung bezüglich Fluch.
Wundervoll. :)

Bzgl. des Fluches habe ich Deinen Edit oben tatsächlich erst jetzt durch Deinen Hinweis gesehen. - Ja, auch das ist, denke ich, sehr gut gelöst. Ob es wirklich ein Bug war, daß man nur einen Fluch am Tag brechen lassen konnte, weiß ich allerdings nicht. Denn es ist ja gar keine zweite Stelle im Spiel bekannt, wo man verflucht werden könnte. Wenn es nur eine Stelle gibt, hätte sich der Bug jedenfalls nicht nachteilig auswirken können. - Möglich wäre es insoweit allein, daß ein feindlicher Magier (oder ein Mitstreiter?!) einen bösen Blick auf einen Helden wirkt. Aber wie Du schon schriebst, ist derzeit völlig offen, ob der überhaupt über den Kampf hinauswirkt.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 31.03.2016

Analog zu den Krankheiten hier die Beschreibung der Gifte. Hier konnte ich keinen offensichtlichen Fehler finden.

Shurinknollengift
Während der Vergiftung:
  • Alle fünf Minuten 0-6 Schadenspunkte.
  • Nach 30 Minuten: Jeden Stunde GE und KK jeweils -1.
Während der Genesung:
  • Jede Stunde GE und KK jeweils +1, bis ursprünglicher Verlust ausgeglichen.

Araxgift
Während der Vergiftung:
  • Nach zehn Minuten: GE/KK/AT/PA -2.
  • Nach zehn Stunden: Genesung.
Während der Genesung:
  • Nach fünf Minuten: GE/KK/AT/PA +2.

Angstgift
Während der Vergiftung:
  • Zu Beginn: MU -2, alle negativen Eigenschaften +2, Setzen des Statusbits +AB Wert 1 (führt zu keiner Anzeige im Statusbildschirm).
  • Nach 30 Minuten: Genesung.
Während der Genesung:
  • MU +2, alle negativen Eigenschaften -2, Löschen des Statusbits +AB Wert 1.

Schlafgift
Während der Vergiftung:
  • Zu Beginn: Statusbit "schläft" wird gesetzt.
  • Nach 100 Minuten: Genesung.
Während der Genesung:
  • Statusbit "schläft" wird gelöscht.

Goldleim
Während der Vergiftung:
  • Jede Stunde 2W6-3 Schadenspunkte.
  • Alle fünf Minuten Möglichkeit der Genesung, falls Vergiftungsminuten/5 ≥ 2W6*12.
Während der Genesung: nichts.

Krötenschemel
Während der Vergiftung:
  • Jede Stunde 1W6+2 Schadenspunkte.
  • Nach vier Stunden: Genesung.
Während der Genesung: nichts.

Lotusgift
Während der Vergiftung:
  • Alle fünf Minuten 2W6 Schadenspunkte.
  • Nach zwei Stunden: Genesung.
Während der Genesung: nichts.

Kukris
Während der Vergiftung:
  • Alle fünf Minuten 50W6 Schadenspunkte.
  • Nach 15 Minuten: Genesung.
Während der Genesung: nichts.

Bannstaub
Während der Vergiftung:
  • Alle fünf Minuten Verlust von 1W6+2 AE-Punkten.
  • Alle fünf Minuten Möglichkeit der Genesung, falls Vergiftungsminuten/5 ≥ 3W6.
Während der Genesung:
  • Jede Stunde Tag AE +1, bis ursprünglicher Verlust ausgeglichen.



RE: Schicksalsklinge: Umfassender Bugfix-Patch - Zurgrimm - 31.03.2016

Sehr schön. Das hatte tommy auch in ähnlicher Form schon einmal im Thread "Essbare Kräuter, Krankheiten, Vergiftungen & Waffengifte" aufgelistet (wie ich jetzt gerade gesehen habe, sogar auch für Krankheiten, in Erinnerung hatte ich es nur für die Gifte).

Im Einzelnen sehe ich allerdings einige Abweichungen. Das könnte damit zusammenhängen, daß Du Schick untersucht hast und tommy wohl Schweif.

EDIT:
(31.03.2016, 16:30)NRS schrieb: Hier konnte ich keinen offensichtlichen Fehler finden.
Ein bekannter Fehler im Zusammenhang mit Vergiftungen ist, daß diejenige, die man sich bei der Truhe von Gorah zuzieht, nicht heilbar zu sein scheint, siehe Thread "Fehler und Bugs", Beitrag #280. Das wäre nur dann kein Bug, wenn es sich um ein unheilbares Gift handeln sollte. Laut tommy's Liste sollten aber wohl alle Gifte (außer vielleicht Kukris, weil zu schnell wirkend) heilbar sein - und die Heilung wird laut Nimeros ja auch per Textbox bestätigt.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 31.03.2016

Eine Abweichung ist, dass ich bislang nicht bedacht habe, dass bei Giften die Zeiteinheit fünf Minuten beträgt und nicht einen Tag. Das habe ich noch korrigiert. Dann macht auch Sinn, warum so häufig der Wert 12 abgefragt wird (12*5 Minuten=60 Minuten, also einmal pro Stunde). Bei der Genesungsphase hat "Tommy" allerdings eine Zeiteinheit von Stunden statt fünf Minuten unterstellt; aus dem Code geht nicht hervor, dass die Zeiteinheit für die Giftwirkung eine andere als für die Genesung ist. Insofern behaupte ich, dass er sich mit der Aussage "alle 12 Stunden steigen GE & KK um einen Punkt" bei Shurinknollengift irrt.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 31.03.2016

Das Konzept der "Ingame-Inaktivitäts-Stunden", auf dem die Einhorn- und Sphärenriss-Zeitmessung basieren, kam mir schon immer Spanisch vor. Es ist zwar die effektive Beschreibung dessen, was tatsächlich abläuft. Nach Durchsicht des entsprechenden Programmcodes scheint mir dies aber nicht das zu sein, was vom Programmierer gewollt wurde. Der Code zählt in der Tat tatsächlich einfach die Stunden der vergangen Ingame-Tageszeit; jede Stunde werden Einhorn- und Sphährenriss-Zeitmesser um eins erniedrigt.

Warum braucht es dann "Inaktivität"? Warum reicht die Erhöhung der Tageszeit durch Schlafen oder Hin- und Herlaufen nicht? Hierzu braucht es Hintergrundinformationen: Die Ingame-Zeit wird von einer zentralen Prozedur namens do_timers() erhöht. Diese erhöht alle Ingame-Zeit-abhängigen Zähler, wobei eine Reihe von Zählern nicht erhöht wird, wenn eine bestimmte Variable (BCDA) den Wert 1 hat. Dazu zählen:
  • den Schaden durch die verfluchte Kettenrüstung (aus dem Drachen-Dungeon auf Runin)
  • das Einhorn
  • der Sphärenriss
  • zwei Fässer mit Orkfraß in der Orkhöhle zwischen Phexcaer und Skelellen
  • die Zeitmessung für das Verbrauchen von Lichtquellen
do_timers wird auf zwei Weisen aufgerufen: (1) wenn die Ingame-Zeit durch Spielereignisse wie Laufen (zwei Minuten pro Schritt), Schlafen usw. vorgespult wird, (2) durch den 120-Hz-Timerinterrupt des PCs, welcher u.a. für die MIDI-Musikausgabe verantwortlich ist und somit einen Echtzeittimer darstellt. Der Aufruf durch (1) setzt die BCDA auf den Wert 1, so dass die ganzen Zähler unangetastet bleiben! Nur beim Aufruf von do_timers() durch den PC-Echtzeitinterrupt, also Variante (2), verbleibt BCDA auf 0 und erhöht somit die genannten Zähler.

Das ist meiner Meinung nach genau das Gegenteil dessen, was ich erwarten würde --- ich würde erwarten, dass das gefährliche Ereignis des Sphärenrisses dann schneller kommt, wenn der Spieler sinnlos hin- und herläuft oder schläft, nicht aber, wenn er seinen Rechner eine Stunde stehen lässt etwa um was zu essen oder zu telefonieren. Mit anderen Worten: ich glaube, die Abfrage der genannten Variable BCDA ist einfach falschrum, wie es ja schon etwa bei den Krankheiten der Fall war.

Das wäre einfach zu patchen, hätte aber große Auswirkungen, eben auf all die genannten Dinge: die magische Kettenrüstung würde einmal pro Ingame-Stunde Schaden anrichten, das Einhorn nach 36 bis 60 Ingame-Stunden wiederkommen, der Sphärenriss nach 7 Ingame-Stunden, Lichtquellen würden nach 15-Ingame-Minuten um einen Wert herabgesetzt werden (d.h. eine Fackel hält 150 Ingame-Minuten, eine Laterne hält 1000 Minuten. All dies wird bislang nicht nach Ingame-Zeit, sondern nach "Inaktivitäts-Zeit", wie TeraBlight es genannt hatte, also Spieler-Echtzeit abgerechnet, meiner Meinung nach zu Unrecht. Andere Meinungen dazu?


RE: Schicksalsklinge: Umfassender Bugfix-Patch - thEClaw - 31.03.2016

Äußerst interessante Feststellungen! Deinen Schlüssen würde ich uneingeschränkt zustimmen. Unter den genannten Ereignissen ist vermutlich die Lichtquelle jenes, das die Vermutung eines Programmierfehlers am stärksten nahelegt. Alles andere wäre obskur.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 01.04.2016

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.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - Zurgrimm - 01.04.2016

(31.03.2016, 22:38)NRS schrieb: Dazu zählen:
  • [...]
  • zwei Fässer mit Orkfraß in der Orkhöhle zwischen Phexcaer und Skelellen
    [...]
Was timeert denn da? Die Stelle ist mir gar nicht als zeitabhängige erinnerlich. :think:

(31.03.2016, 22:38)NRS schrieb: Mit anderen Worten: ich glaube, die Abfrage der genannten Variable BCDA ist einfach falschrum, wie es ja schon etwa bei den Krankheiten der Fall war.

Das wäre einfach zu patchen, hätte aber große Auswirkungen, eben auf all die genannten Dinge: die magische Kettenrüstung würde einmal pro Ingame-Stunde Schaden anrichten, das Einhorn nach 36 bis 60 Ingame-Stunden wiederkommen, der Sphärenriss nach 7 Ingame-Stunden, Lichtquellen würden nach 15-Ingame-Minuten um einen Wert herabgesetzt werden (d.h. eine Fackel hält 150 Ingame-Minuten, eine Laterne hält 1000 Minuten. All dies wird bislang nicht nach Ingame-Zeit, sondern nach "Inaktivitäts-Zeit", wie TeraBlight es genannt hatte, also Spieler-Echtzeit abgerechnet, meiner Meinung nach zu Unrecht. Andere Meinungen dazu?
Deine Analyse und Deine vorgeschlagene Lösung klingen logisch. Allerdings kann es auch sein, daß diese "Umkehrung" aus Balancinggründen vorgenommen wurde, eben damit das Einorn nicht zu schnell wiederkommt, sondern erst nach einer ganzen Weile, und damit man es in der Regel noch aus der Herberge schafft, bevor der Sphärenriß kommt (der ja unvorhergesehen tödlich endet). Ebenso würde der Schadenseffekt des magischen Kettenhemdes möglicherweise zum schnellen Heldentod beim Herumlaufen (da vergeht die Zeit echt schnell!) führen. - Bevor man so eine weitreichende Korrektur vornimmt, bedürfte es m.E. eines entsprechenden Testings, ob das Spiel dann noch für den Durchschnittsspieler geeignet ist.

In diesem Zusammenhang möchte ich am Rande darauf hinweisen, daß die Rast- und damit Schlaffunktion in Dungeons nichts ist, womit die Programmierer ursprünglich (= Diskettenversion) gearbeitet haben. Gewisse Unlogiken haben sie dahingehend also ja bewußt in Kauf genommen (z.B. daß man beliebig lange auf dem sinkenden Totenschiff schlafen kann, solange man keine 30 Schritte getan hat; entsprechendes in der Spinnenhöhle nach Vernichten der Gelege). Was gewollt war und was nicht, müßte sich also nach einer Analyse der in der Diskettenversion vorhandenen Optionen richten.


RE: Schicksalsklinge: Umfassender Bugfix-Patch - NRS - 01.04.2016

Zurgrimm schrieb:Was timeert denn da? Die Stelle ist mir gar nicht als zeitabhängige erinnerlich
Du kannst vom Orkfraß nur einmal alle 24 Stunden essen. Eine sehr "wichtige" Abfrage. ;)
Zurgrimm schrieb:Allerdings kann es auch sein, daß diese "Umkehrung" aus Balancinggründen vorgenommen wurde
Da ein Schritt zwei Minuten beansprucht, hättest Du 30 Schritte pro Stunde, das heißt beim Tragen des magischen Kettenhemdes verlierst Du nach 30 Schritten einen LP. Das wäre auch beim ungepatchten Spiel so, findet aber nur wegen Rundungsfehlern nicht statt. Ich glaube nicht, dass bewusst Rundungsfehler eingebaut werden, um das Spiel auszubalancieren; wenn die Entwickler gewollt hätten, dass das Kettenhemd weniger Schaden produziert, hätten sie einfach ein größeres Intervall als eine Stunde eingetragen.

Der Sphärenriss kommt sieben Stunden nach Befreiung des Gefangenen, Du hättest danach also 210 Schritte, bevor der Sphärenriss kommt. Ich glaube nicht, dass dadurch das Spiel zu schwierig würde, vor allem weil man an der Stelle immer noch per Transversalis vorbeikommt.

Wie gesagt, ich glaube nicht mehr, dass die Zähler aus Balancingründen die Echtzeit statt die Ingame-Zeit messen, und inzwischen revidiere ich ebenfalls die These der verkehrt herum abgefragten Variable. Stattdessen ist es wohl er so, dass beim Vorspulen statt die ganzen Zähler in einer Schleife jeweils im eins zu erniedrigen --- was auf langsamen Rechnern ewig Zeit beansprucht, 5400 Schleifendurchläufe pro Ingame-Stunde --- beim Vorspulen alle Zähler stattdessen auf einen Schlag jeweils um den kumulierten Betrag reduziert werden sollen und dabei die Einhorn- und Sphärenriss-Zähler einfach vergessen wurden, während Lichtquellen, Talentheilungen und magische Rüstung wegen Rundungsfehlern nicht korrekt verwaltet werden.

Ich werde einfach mal das so patchen, dass die eingetragenen Zeitintervalle ohne Rundungsfehler eins zu eins in Ingame-Zeit übertragen werden, und dann kannst Du ja ausprobieren, wie schwer das Spiel wirklich ist. :)