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:
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:
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:
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:
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:
Für SEWER01:
Somit:
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:
Damit erhält der originale Riva-Code beispielsweise die Kombination:
oder:
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
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
ändert.
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:
Vor allem heißt es nämlich auch:
Du hast diese Kämpfe damals nicht übersehen.
Man konnte sie schlicht nicht finden.
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 QDas 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 gesperrtSoweit 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 = 0Code:
BYTEFLAG 27 = 0
-> normale Rast
BYTEFLAG 27 = 1
-> besonderer Interrupted-Rest-PfadFür MINE01/MINE02/MINE03:
Code:
1-50 -> K115
51-100 -> K116Code:
1-50 -> K147
51-100 -> K148Code:
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ämpfen3. 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.
Damit erhält der originale Riva-Code beispielsweise die Kombination:
Code:
Dungeon = MINE01
Building = 104 "Ein ruhiges Plätzchen"Code:
Dungeon = SEWER01
Building = 104 "Ein ruhiges Plätzchen"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
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"
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.

Vor allem heißt es nämlich auch:
Du hast diese Kämpfe damals nicht übersehen.
Man konnte sie schlicht nicht finden.

