Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Episches Riva - die verborgenen Kämpfe
#33
Update zu den noch offenen Kämpfen

Zu meiner Entschuldigung aus dem letzten Beitrag kann ich inzwischen immerhin etwas Erfreuliches nachreichen: Ganz umsonst war die Suche nicht. ;)

Seitdem hat sich bei der Analyse der Kampfaufrufe noch einiges getan. Bei mehreren der bisher offenen Kämpfe lässt sich inzwischen ziemlich genau nachvollziehen, welcher Ereignispfad zu ihnen gehört und warum dieser im normalen Spiel offenbar nicht erreicht wird.

Nach aktuellem Stand sehe ich mit sehr hoher Wahrscheinlichkeit keine weiteren regulär erreichbaren Kampfpfade mehr. Ganz mathematische 100 % möchte ich weiterhin nicht behaupten. Besonders interessant sind dabei K92 sowie die vier "Nachtkämpfe" K115/K116/K147/K148.

1. K92 auf der Windsbraut

In Riva steckt tatsächlich noch ein kleiner Debug-Screen. Die umfangreicheren Entwickler-Menüs und deren Einstiegspunkte wurden im späteren Retail-Build größtenteils entfernt bzw. nicht mehr verdrahtet, ein kleiner Rest ist aber weiterhin erreichbar.

Der Debug-Screen lässt sich folgendermaßen öffnen:
Code:
Left Shift + Right Shift + Alt gedrückt halten
BYTEFLAGS eingeben
C für "Change"
Byte 320 auf 1 setzen
zweimal Q
Setzt man BYTEFLAG 320 auf 1 und rüttelt anschließend an einer der entsprechenden Hängematten auf dem zweiten Unterdeck, wird Event 402 und darüber Kampf 92 ausgelöst.

Das Interessante ist, dass Byte 320 zwei verschiedene Ereignispfade steuert:
Code:
BYTEFLAG 320 = 0
-> SHIP01 Event 8004 kann noch in Frage kommen
-> wenn dessen eigener Eventzustand 1 ist
-> Kampf 54

BYTEFLAG 320 = 1
-> SHIP01 Event 402
-> Kampf 92

BYTEFLAG 320 = 2
-> beide Pfade anschließend gesperrt
Kampf 54 und Kampf 92 setzen Byte 320 dabei nicht schon beim bloßen Auslösen auf 2, sondern nach einem regulär gewonnenen Kampf, also bei der normalen Kampf-Rückgabe 0.

Soweit derzeit rekonstruierbar, setzt kein reguläres Story-Ereignis Byte 320 jemals auf 1. K92 sieht deshalb sehr stark nach einem alten Test-/Entwicklerpfad aus: Der Kampf ist vollständig vorhanden, aber der dafür notwendige Zustand wird im normalen Spiel offenbar niemals hergestellt.

Er lässt sich jedoch über den verbliebenen Debug-Screen oder einen manipulierten Spielstand tatsächlich im Originalspiel auslösen. Im unten angehängten Spielstandsarchiv befindet sich dafür UNTER320.GAM. Dieser Spielstand enthält bereits BYTEFLAG 320 = 1. Danach muss nur noch der entsprechende Hängematten-/Event-402-Trigger auf SHIP01 ausgelöst werden.

2. K115/K116 und K147/K148

Noch interessanter finde ich inzwischen die vier vermeintlichen Nachtkämpfe in Mine und Kanalisation. Die sind nicht bloß irgendwo als ungenutzte Kampfdefinitionen vorhanden, die komplette Auslösungsmechanik existiert noch. Sie hängt an der normalen Rastmechanik von "Ein ruhiges Plätzchen".

Um exakt 22:00 Uhr würfelt Riva global W100:
Code:
1-5  -> BYTEFLAG 27 = 1
6-100 -> BYTEFLAG 27 = 0
Das startet noch keinen Kampf. Byteflag 27 ist lediglich eine Vormerkung dafür, ob der nächste passende Schlafvorgang den besonderen Unterbrechungspfad nehmen soll. Beim späteren Aufruf der Schlaf-Funktion wird dieses Flag einmal zu Beginn geprüft:
Code:
BYTEFLAG 27 = 0
-> normale Rast

BYTEFLAG 27 = 1
-> besonderer Interrupted-Rest-Pfad
Auf diesem besonderen Pfad gibt man zunächst ganz normal eine positive Zahl Schlafstunden ein. Riva lässt anschließend einen zufälligen ersten Teil dieser Zeit verstreichen und würfelt dann noch einmal W100 für die konkrete Kampfvariante.

Für MINE01/MINE02/MINE03:
Code:
1-50  -> K115
51-100 -> K116
Für SEWER01:
Code:
1-50  -> K147
51-100 -> K148
Somit:
Code:
22:00 Uhr
-> 5 % Wahrscheinlichkeit, einen Zwischenfall vorzumerken

späterer Sleep-Aufruf
-> falls Vormerkung gesetzt:
  besonderer Rastpfad

-> anschließend 50:50 zwischen den beiden
  für die Karte vorgesehenen Kämpfen
Selbst wenn während eines Schlafvorgangs um 22:00 Uhr die 5-%-Vormerkung gesetzt wird, wirkt sie sich erst auf einen späteren Sleep-Aufruf aus.

3. Warum hat diese Kämpfe trotzdem niemand gefunden?

Und hier liegt vermutlich das eigentliche Problem: Die Rastmechanik für diese Kämpfe ist vollständig vorhanden, aber auf den entsprechenden Minen-Karten bzw. in SEWER01 gelangt man im normalen Spiel offenbar niemals in das dafür benötigte Rastgebäude. Intern läuft dieser Rastplatz als Building 104, "Ein ruhiges Plätzchen".

Das heißt:
  • Die vier Kämpfe fehlen nicht.
  • Auch ihre Auslösungslogik fehlt nicht.
  • Der Spieler erreicht auf diesen Karten im regulären Spielablauf lediglich den dafür notwendigen Rastplatz nicht.
  • Genau das lässt sich mit einem manipulierten Spielstand umgehen.
Man kann im Save lediglich das aktuell ausgewählte Gebäude auf Building 104 setzen, während die ursprüngliche Dungeon-ID unverändert bleibt.

Damit erhält der originale Riva-Code beispielsweise die Kombination:
Code:
Dungeon = MINE01
Building = 104 "Ein ruhiges Plätzchen"
oder:
Code:
Dungeon = SEWER01
Building = 104 "Ein ruhiges Plätzchen"
Die normale Rastmechanik läuft anschließend weiterhin innerhalb der entsprechenden Dungeon-Karte.

Ich habe dafür bereits Testspielstände vorbereitet:

RADR104.GAM
Bei RADOMIL in MINE01, Building 104 gesetzt, ansonsten normaler Rastzustand.

MAND2R104.GAM
Mit MANDARA in SEWER01, Building 104 gesetzt, ansonsten normaler Rastzustand.

Zusätzlich gibt es noch zwei deterministische Testvarianten, bei denen BYTEFLAG 27 bereits auf 1 steht. Damit muss man nicht auf den 5-%-Wurf um 22:00 Uhr hoffen, sondern kann direkt die originale Schlafmechanik benutzen:

RAD104F.GAM
MINE01 + Building 104 + BYTEFLAG 27 = 1

MAND2F104.GAM
SEWER01 + Building 104 + BYTEFLAG 27 = 1

Und für K92:

UNTER320.GAM
BYTEFLAG 320 = 1


.zip   Testspielstände_K92_K115_K116_K147_K148.zip (Größe: 131,92 KB / Downloads: 0)

4. Eigene Spielstände patchen

Wer das lieber mit einem eigenen Spielstand ausprobieren möchte, dem hänge ich noch eine kleine Patch-Anleitung als Textdatei an. Darin ist beschrieben, wie sich die relevanten BVAR- und PART-Strukturen in einem .GAM-Save finden lassen und wie man gezielt
Code:
BYTEFLAG 320
BYTEFLAG 27
Building 104 "Ein ruhiges Plätzchen"
ändert.


.txt   Riva_Savegame_Patchanleitung.txt (Größe: 12,67 KB / Downloads: 0)

Die Anleitung ist mit KI-Unterstützung aus den inzwischen bekannten Save-Strukturen erstellt worden. Man kann sie klassisch mit einem Hexeditor nachvollziehen. Wer keine Lust auf Handarbeit hat, kann theoretisch auch die Anleitung zusammen mit einer Sicherungskopie des eigenen Spielstands einer KI oder einem kleinen Skript geben und die Änderung automatisiert durchführen lassen. ;)

Natürlich gilt: Vorher immer ein Backup des eigenen Spielstands anlegen.

5. Was bedeutet das für die noch offenen Kämpfe?

Das Bild wird inzwischen ziemlich klar:
  • Einen weiteren versteckten regulären Kampfpfad sehe ich derzeit nicht mehr.
  • K92 ist vollständig vorhanden, hängt aber an BYTEFLAG 320 = 1, einem Zustand, den das normale Spiel soweit rekonstruierbar nicht setzt.
  • K54 und K92 benutzen BYTEFLAG 320 gemeinsam. Nach einem regulär gewonnenen Kampf wird es auf 2 gesetzt und sperrt damit beide Pfade.
  • K115/K116 und K147/K148 sind vollständig implementierte Rastkämpfe.
  • Um 22:00 Uhr wird mit 5 % Wahrscheinlichkeit global ein entsprechender Rastzwischenfall vorgemerkt.
  • Beim späteren besonderen Rastpfad wird anschließend zu 50:50 zwischen den beiden für Mine bzw. SEWER01 vorgesehenen Kämpfen gewählt.
  • Der dafür notwendige Rastplatz existiert im Code auch für diese Karten, ist im normalen Spielablauf dort aber offenbar nicht erreichbar.
Damit kann man Fíonlaighrís alte Liste an einigen der hartnäckigsten Stellen nach fast dreißig Jahren wohl tatsächlich langsam zumachen. :)

Vor allem heißt es nämlich auch:

Du hast diese Kämpfe damals nicht übersehen.

Man konnte sie schlicht nicht finden. ;)
Zitieren


Nachrichten in diesem Thema
RE: Episches Riva - die verborgenen Kämpfe - von cmfrydos - 11.09.2026, 05:33



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