Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Proben und Zufallsereignisse in Riva
#13
(18.03.2023, 11:40)Alrik Normalpaktierer schrieb: Kontrollprobe für Dämonen gab es IMHO auch im Regelwerk (DSA 3 ist echt lange her ...)

Verrückter Bug, das mit dem Blitz.

Was du zu Beherrschung brechen schreibst, habe ich dagegen auch beim dritten Mal nicht verstanden. Meinst du, dass man den Zauber auch auf Gruppenmitglieder sprechen kann, die gar nicht beherrscht sind? Dann bin ich mir nicht sicher, ob das ein Bug ist. Ich weiß nicht, ob es am Tisch Regeln dafür gab, "auf Verdacht" Antimagiezauber zu sprechen. Dass durch den Versuch eine Runde verloren geht, wäre jedenfalls nicht unplausibel.

Ja das mit der zweiten Probe habe ich glaube ich auch mal in meinem DSA4 Liber Cantiones gelesen.

Das mit dem Beherrschung brechen fiel mir etwas schwer zu formulieren. Ich versuche es nochmal:
Spricht man den Zauber, wird dieser direkt geprobt.
1. Scheitert die Probe, kann der Zaubernde nichts mehr die Runde tun (wie es nach einem Zauber immer sein sollte)
2. Gelingt die Probe, wird geschaut ob das Ziel überhaupt beherrscht wird.
2a) Wenn das Ziel beherscht wird, ist es danach nicht mehr beherrscht, und der Zaubernde kann die Runde nichts mehr tun.
2b) Wenn es nicht beherrscht wird, kommt entsprechende Meldung, aber der Zaubernde kann sich für die Runde etwas anderes aussuchen, als hätte er den Zauber nie gesprochen.
Man kann das jetzt so interpretieren, dass für einen geübten Zauberer ein kurzer Blick reicht, um zu erkennen, dass der Zauber unnötig wäre.
Aber ich denke eher, dass man die zwei Abfragen umdrehen müsste. Also erst prüfen, ob das Ziel beherscht wird, und wenn ja, dann eine Probe würfeln.

(18.03.2023, 11:59)Zurgrimm schrieb:
(18.03.2023, 11:02)cmfrydos schrieb: Mein Held mit allen Eigenschaften auf 1 und Blitz auf -5 schafft es nicht, die "Probe" zu vergeigen. Da es bisher der einzigste Zauber/Talent ist, bei dem ich keine Probe in der Konsole sehe, gehe ich davon aus, dass es auch keine (andere) gibt.
Eine sehr interessante Entdeckung, cmfrydos. :up:

Sollte jemals jemand einen "NRS-Patch für Riva" schreiben, würde die Behebung dieses Fehlers sicher an eine der ersten Stellen gehören. Ich kann mir jedenfalls auch nicht vorstellen, dass das so sein soll.
Ja, und ich finde, dass der Blitz auch gegen die MR gehen sollte. Irgendwer hat mal irgendwo geschrieben, dass in DSA2 (denke das Regelwerk, nicht Sternenschweif) MR wohl keine Bedeutung für den Blitz hatte, aber in DSA3 dann schon. Während der Entwicklung von "Die Schicksalsklinge" sei wohl von DSA2 auf DSA3 umgeschwenkt worden, aber das mit dem Blitz wurde vergessen.
Ich kenne mich zu wenig mit den Regelwerken DSA2 und DSA3 sowie der Entwicklung der Spieleserie aus, um das zu bestätigen, klingt aber plausibel.

In der letzten Stunde habe ich eine Liste an Zaubern im Code gefunden, bei denen die sofortige "Standardprobe" nach einem Zauberbefehl übersprungen wird.
Hier mal die Liste zur Doku:
Das ist etwa die Hälfte der Zauber. Eventuell reicht es, Blitz hier raus zu nehmen, aber das müsste man testen, ob der Zauber danach noch funktioniert.
Die anderen Zauber implementieren ihre Proben dann an späterer Stelle irgendwie selbst, das wurde aber wohl beim Blitz vergessen.
Ob die Probe noch bei einem anderen dieser Zauber vergessen wurde, überlasse ich mal fleißigen Testern xD.

Jetzt wird es etwas technisch ;) :

(18.03.2023, 12:29)Shihan schrieb:
(15.03.2023, 23:46)cmfrydos schrieb: Die modifizierte DosBox und den Quellcode stelle ich gerne in den nächsten Wochen zur Verfügung.
Hast du das "Original" genommen? Eine Alternative wäre Dosbox-X, da geht meiner Erfahrung nach das Debuggen besser und schneller.
Habe dafür auch mal eine Art Adapter-Programm geschrieben, das die ganzen Registerwerte und -änderungen anzeigen kann.

(15.03.2023, 23:46)cmfrydos schrieb: Das Auswerten des IP (Befehlszeiger) funktioniert momentan nur im DosBox Modus core=full, der deprecated, und ein Stück langsamer ist.
Im normalen Modus funktioniert es komischerweise nur, wenn ich mit dem Debugger über die Zeile springe. Wieso ist das so?
Das liegt AFAIK daran, dass nur der volle Kern alle Instruktionen emuliert. Die anderen Kerne machen irgendwelche Dinge, um Teile der Berechnungen nicht zu emulieren, sondern direkt auf der Host-CPU auszuführen. Daher sind die auch schneller. Da kann ich mir aber gut vorstellen, dass der IP mal verloren gehen kann, wenn moderne Pipelines und Co. darauf arbeiten.

Ich verwende momentan DosBox Staging, v.A. weil es hieß, dass die alle Dependencies selber baut, und das halt bequem war, weil ich lange nichts mehr mit C++ gemacht habe.
Der Debugger dort zeigt mir dort schon alle Register an, und markiert sie, falls sie in der letzten Anweisung verändert wurden.
Vielleicht macht dein Tool noch mehr, und ich habe das falsch verstanden.
Was mir im Debugger fehlt, ist ein schneller Zugriff auf den Stack, dh. die Daten im Bereich SS:ESP anzuzeigen, und außerdem wäre ein Stack/Calltrace mega hilfreich.
Da habe ich mich noch nicht rangetraut, weil ich die verschiedenen Call-Konventionen noch nicht verinnerlicht habe, und falls da was nicht 1:1 stimmt, kommt natürlich bei der Auswertung des Stackes, der dort liegenden Rücksprungadressen und dem Verfolgen im Codesegment B*llsh*t raus xD ....
Beim Schreiben kam mir jetzt die Idee, vielleicht CALL und RET Instruktionen schon während der Ausführung abzugreifen, und mir so einen Backtrace zu halten :)..

Das mit der (fehlenden) Emulation hört sich sinnig an, wobei in der Doku eigentlich geschrieben steht, dass auch bei Core=Normal die Instruktionen 1:1 durchlaufen werden. Vll forsche ich hier noch etwas, und schaue mir, ob zu mindest an manchen Stellen der IP gesetzt wird, um dann eventuell schon bei der Stelle kurz vor den aktuellen Abgreifpunkten zu stoppen.
Zitieren


Nachrichten in diesem Thema
RE: Proben und Zufallsereignisse in Riva - von cmfrydos - 18.03.2023, 13:34



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste