Rename Morpheus Hayden/Trinity VEGA to Morpheus/Trinity, add wallpaper assets

Shortens character names throughout dialogue, save.py loop-twist lines,
and README. Adds three wallpaper images to Wallpaper/ and embeds
Doom_Slyer.png as the README screenshot.
This commit is contained in:
fedora_openclaw committed 2026-07-06 20:18:28 +02:00
1 parent d4fd5561c2
commit 71d9ee99b8
7 files changed
+27 -25

No files matched your search

+5 -3
View File
@@ -4,6 +4,8 @@ Ein interaktives Text-Adventure in Python, das die Lore von **DOOM** und **The M
> "What if the Matrix was just a very inefficient DOOM engine?"
![Doom Slayer trifft Agent Smith](Wallpaper/Doom_Slyer.png)
---
## Inhaltsverzeichnis
@@ -50,7 +52,7 @@ python -m doom_matrix.main
## Story-Prämisse
Du wachst im **Construct** auf — dem neutralen Trainingsraum der Matrix. Morpheus Hayden begrüßt dich als *Doom Slayer*, doch bevor du dich orientieren kannst, schlägt Alarm: Die Maschinen haben etwas gebaut, das sie **HELL SERVER** nennen.
Du wachst im **Construct** auf — dem neutralen Trainingsraum der Matrix. Morpheus begrüßt dich als *Doom Slayer*, doch bevor du dich orientieren kannst, schlägt Alarm: Die Maschinen haben etwas gebaut, das sie **HELL SERVER** nennen.
Die zentrale Wendung: **Argent-Energie treibt die Matrix an.** Die Menschen in den Stasiskapseln sind keine Batterien — sie sind Seelen-Prozessoren, die Dämonen rendern. Die Hölle ist kein Ort neben der Simulation, sie ist deren Fundament. Der Doom Slayer selbst ist ein *Rogue Process*, ein Programm, das sich weigerte gelöscht zu werden — deshalb kann er die Regeln beider Welten brechen.
@@ -86,7 +88,7 @@ Das Spiel ist in **Layer** unterteilt, die den Fortschritt der Simulation widers
### Ablauf
1. **Construct-Intro** — Aufwachen, Morpheus Hayden, Alarm, Waffenwahl.
1. **Construct-Intro** — Aufwachen, Morpheus, Alarm, Waffenwahl.
2. **Weißer Hase** — ein Hologramm huscht vorbei. Folgst du ihm, öffnet sich kurz ein "Kaninchenbau" mit einem Blick auf die reale Terminal-Sitzung (inkl. echtem Systembenutzernamen) — das setzt die Weichen für das geheime Ende.
3. **Agent-Imp-Kampf** — dein erster Gegner, halb Agent, halb Dämon.
4. **Wegwahl** — drei Portale: Mars UAC Base, tiefer in die Matrix, oder direkt zum Hell Server (Schnellweg, aber weniger Beute).
@@ -185,7 +187,7 @@ Weitere versteckte Momente:
Nach jedem Spielende wird automatisch ein Speicherstand unter `doom_matrix/saves/autosave.json` abgelegt. Zusätzlich führt `doom_matrix/saves/meta.json` Buch über die Gesamtzahl deiner Durchläufe.
Ab dem **zweiten** Durchlauf reagiert Morpheus Hayden mit einer subtil unterschiedlichen Zeile zu Spielbeginn — ein wachsender Hinweis darauf, dass diese Simulation schon öfter gelaufen ist, als dir bewusst ist.
Ab dem **zweiten** Durchlauf reagiert Morpheus mit einer subtil unterschiedlichen Zeile zu Spielbeginn — ein wachsender Hinweis darauf, dass diese Simulation schon öfter gelaufen ist, als dir bewusst ist.
---
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

+3 -3
View File
@@ -79,7 +79,7 @@ def loop_twist_line(run_count):
if run_count <= 1:
return None
if run_count == 2:
return "Morpheus Hayden: 'Habe ich das hier nicht schon einmal gesagt?'"
return "Morpheus: 'Habe ich das hier nicht schon einmal gesagt?'"
if run_count < 5:
return f"Morpheus Hayden: 'Lauf Nummer {run_count}. Du wirst besser. Oder ich erinnere mich besser.'"
return f"Morpheus Hayden: 'Lauf Nummer {run_count}. Ehrlich gesagt -- ich weiss nicht mehr, welcher von uns beiden real ist.'"
return f"Morpheus: 'Lauf Nummer {run_count}. Du wirst besser. Oder ich erinnere mich besser.'"
return f"Morpheus: 'Lauf Nummer {run_count}. Ehrlich gesagt -- ich weiss nicht mehr, welcher von uns beiden real ist.'"
+4 -4
View File
@@ -65,8 +65,8 @@ def ending(player):
def _ending_rip_and_tear(player):
_banner("SYSTEM FAILURE - CLEAR", Colors.GREEN)
slow_print(f"{Colors.YELLOW}Trinity VEGA:{Colors.END} {Colors.CYAN}'Wir haben es geschafft. Die Welt ist frei.'{Colors.END}")
slow_print(f"{Colors.YELLOW}Morpheus Hayden:{Colors.END} {Colors.CYAN}'Aber der Krieg... der Krieg ist nie vorbei.'{Colors.END}")
slow_print(f"{Colors.YELLOW}Trinity:{Colors.END} {Colors.CYAN}'Wir haben es geschafft. Die Welt ist frei.'{Colors.END}")
slow_print(f"{Colors.YELLOW}Morpheus:{Colors.END} {Colors.CYAN}'Aber der Krieg... der Krieg ist nie vorbei.'{Colors.END}")
slow_print(f"{Colors.YELLOW}Du:{Colors.END} {Colors.CYAN}'Gut. Dann gibt's noch mehr zu rip and tear.'{Colors.END}")
dramatic_pause(1)
_banner("NEW GAME+ UNLOCKED", Colors.MAGENTA)
@@ -76,7 +76,7 @@ def _ending_new_architect(player):
_banner("DER NEUE ARCHITEKT", Colors.CYAN)
slow_print(f"{Colors.WHITE}Du setzt dich in den leeren Thron aus Code, den der Archi-Lord hinterlassen hat.{Colors.END}")
slow_print(f"{Colors.WHITE}Von hier aus siehst du jede Zeile der Matrix. Jede Entscheidung. Jeden Bug.{Colors.END}")
slow_print(f"{Colors.YELLOW}Morpheus Hayden:{Colors.END} {Colors.CYAN}'Und jetzt? Wirst du besser sein als er?'{Colors.END}")
slow_print(f"{Colors.YELLOW}Morpheus:{Colors.END} {Colors.CYAN}'Und jetzt? Wirst du besser sein als er?'{Colors.END}")
slow_print(f"{Colors.WHITE}Du antwortest nicht sofort. Macht macht keine Antworten leichter.{Colors.END}")
slow_print(f"{Colors.GREEN}'Ich werde es zumindest versuchen.'{Colors.END}")
@@ -87,7 +87,7 @@ def _ending_dark_pact(player):
slow_print(f"{Colors.RED}Der Archi-Lord zerfaellt nicht in Nichts -- er zerfaellt in DICH.{Colors.END}")
slow_print(f"{Colors.RED}Seine Macht, sein Hunger, seine Krone aus Servern und Schwefel.{Colors.END}")
dramatic_pause(1)
slow_print(f"{Colors.YELLOW}Trinity VEGA weicht zurueck.{Colors.END} {Colors.CYAN}'...Slayer?'{Colors.END}")
slow_print(f"{Colors.YELLOW}Trinity weicht zurueck.{Colors.END} {Colors.CYAN}'...Slayer?'{Colors.END}")
slow_print(f"{Colors.RED}{Colors.BOLD}Du:{Colors.END} {Colors.RED}'Der Slayer ist tot. Es gibt nur noch den Dark Lord.'{Colors.END}")
slow_print(f"{Colors.DIM}[GEHEIMES ENDE FREIGESCHALTET: DARK LORD]{Colors.END}")
+15 -15
View File
@@ -29,25 +29,25 @@ def construct_intro(player, rng=None):
slow_print(f"{Colors.WHITE}Du kennst diesen Ort. Das Construct.{Colors.END}")
dramatic_pause(0.5)
slow_print(f"\n{Colors.CYAN}Morpheus Hayden:{Colors.END} {Colors.YELLOW}'Er ist wach.'{Colors.END}")
slow_print(f"\n{Colors.CYAN}Morpheus:{Colors.END} {Colors.YELLOW}'Er ist wach.'{Colors.END}")
dramatic_pause(0.5)
slow_print(f"\n{Colors.WHITE}Eine Gestalt nähert sich. Halb Mensch, halb Metall.{Colors.END}")
slow_print(f"{Colors.CYAN}Morpheus Hayden:{Colors.END} {Colors.YELLOW}'Willkommen zurück, Doom Slayer.'{Colors.END}")
slow_print(f"{Colors.CYAN}Morpheus:{Colors.END} {Colors.YELLOW}'Willkommen zurück, Doom Slayer.'{Colors.END}")
dramatic_pause(0.5)
slow_print(f"\n{Colors.CYAN}Morpheus Hayden:{Colors.END} {Colors.YELLOW}'Die Maschinen haben etwas Neues gebaut.'{Colors.END}")
slow_print(f"{Colors.CYAN}Morpheus Hayden:{Colors.END} {Colors.YELLOW}'Sie nennen es... HELL SERVER.'{Colors.END}")
slow_print(f"\n{Colors.CYAN}Morpheus:{Colors.END} {Colors.YELLOW}'Die Maschinen haben etwas Neues gebaut.'{Colors.END}")
slow_print(f"{Colors.CYAN}Morpheus:{Colors.END} {Colors.YELLOW}'Sie nennen es... HELL SERVER.'{Colors.END}")
dramatic_pause(1)
slow_print(f"\n{Colors.RED}Plötzlich ertönt ein Alarm!{Colors.END}")
slow_print(f"{Colors.WHITE}Der Boden bebt. Grüner Code wird rot.{Colors.END}")
dramatic_pause(0.5)
slow_print(f"\n{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}'Wir haben Company! Agent-Signaturen überall!'{Colors.END}")
slow_print(f"\n{Colors.CYAN}Trinity:{Colors.END} {Colors.YELLOW}'Wir haben Company! Agent-Signaturen überall!'{Colors.END}")
dramatic_pause(0.5)
slow_print(f"\n{Colors.CYAN}Morpheus Hayden:{Colors.END} {Colors.YELLOW}'Waffen. Jetzt.'{Colors.END}")
slow_print(f"\n{Colors.CYAN}Morpheus:{Colors.END} {Colors.YELLOW}'Waffen. Jetzt.'{Colors.END}")
slow_print(f"{Colors.WHITE}Vor dir materialisieren sich zwei Waffen:{Colors.END}")
choice = menu([
@@ -106,7 +106,7 @@ def white_rabbit_moment(player, rng=None):
slow_print(f"{Colors.WHITE}Als Beobachter. Als jemand, der das hier von AUSSEN spielt.{Colors.END}")
dramatic_pause(1)
slow_print(f"\n{Colors.CYAN}Morpheus Hayden (von weit weg):{Colors.END} {Colors.YELLOW}'Wo bist du?! Der Agent ist da!'{Colors.END}")
slow_print(f"\n{Colors.CYAN}Morpheus (von weit weg):{Colors.END} {Colors.YELLOW}'Wo bist du?! Der Agent ist da!'{Colors.END}")
slow_print(f"{Colors.WHITE}Die Tür schliesst sich. Der Kaninchenbau verschwindet -- fuer jetzt.{Colors.END}")
registry = load_item_registry()
@@ -145,8 +145,8 @@ def agent_fight(player, rng=None):
def after_fight(player, rng=None):
slow_print(f"\n{Colors.CYAN}Morpheus Hayden:{Colors.END} {Colors.YELLOW}'Beeindruckend. Aber das war nur ein Scout.'{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}'Wir müssen hier raus. Der HELL SERVER wartet.'{Colors.END}")
slow_print(f"\n{Colors.CYAN}Morpheus:{Colors.END} {Colors.YELLOW}'Beeindruckend. Aber das war nur ein Scout.'{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity:{Colors.END} {Colors.YELLOW}'Wir müssen hier raus. Der HELL SERVER wartet.'{Colors.END}")
dramatic_pause(0.5)
slow_print(f"\n{Colors.WHITE}Vor dir öffnen sich drei Portale:{Colors.END}")
@@ -282,10 +282,10 @@ def _black_cat_glitch(player, rng):
slow_print(f"{Colors.WHITE}{cat_line}{Colors.END}")
dramatic_pause(0.3)
slow_print(f"\n{Colors.MAGENTA}Trinity VEGA erstarrt.{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}'Das war... derselbe Moment. Exakt derselbe.'{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}'Ein Deja-vu ist kein Zufall. Es bedeutet, dass sich gerade{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}etwas im Code veraendert hat. Jemand manipuliert diesen Server. Jetzt.'{Colors.END}")
slow_print(f"\n{Colors.MAGENTA}Trinity erstarrt.{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity:{Colors.END} {Colors.YELLOW}'Das war... derselbe Moment. Exakt derselbe.'{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity:{Colors.END} {Colors.YELLOW}'Ein Deja-vu ist kein Zufall. Es bedeutet, dass sich gerade{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity:{Colors.END} {Colors.YELLOW}etwas im Code veraendert hat. Jemand manipuliert diesen Server. Jetzt.'{Colors.END}")
dramatic_pause(1)
player.flags["cat_glitch_count"] += 1
@@ -464,8 +464,8 @@ def hell_server(player, rng=None):
slow_print(f"{Colors.RED}Sein Körper ist halb Fleisch, halb Server-Rack.{Colors.END}")
slow_print(f"{Colors.RED}Seine Raketenwerfer sind mit Ethernet-Kabeln verbunden.{Colors.END}")
dramatic_pause(1)
slow_print(f"\n{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}'Das ist es. Der HELL SERVER.'{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}'Wenn wir den zerstören, fällt die gesamte Simulation!'{Colors.END}")
slow_print(f"\n{Colors.CYAN}Trinity:{Colors.END} {Colors.YELLOW}'Das ist es. Der HELL SERVER.'{Colors.END}")
slow_print(f"{Colors.CYAN}Trinity:{Colors.END} {Colors.YELLOW}'Wenn wir den zerstören, fällt die gesamte Simulation!'{Colors.END}")
boss = Enemy.create("cyberdemon")
victory = run_combat(player, [boss], title="BOSS: CYBERDEMON", rng=rng)