commit ddd7b6b65bf9c5ff7997ddeb09994bdaae39a9f2 Author: Fedora OpenClaw Date: Mon Jul 6 20:00:40 2026 +0200 Dateien nach "/" hochladen diff --git a/doom-matrix-adventure.py b/doom-matrix-adventure.py new file mode 100644 index 0000000..6550809 --- /dev/null +++ b/doom-matrix-adventure.py @@ -0,0 +1,580 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +DOOM × MATRIX: SYSTEM FAILURE +Ein interaktives Text-Adventure +""" + +import sys +import time +import random +import os + +# Farbcodes für Terminal +class Colors: + GREEN = '\033[92m' + RED = '\033[91m' + CYAN = '\033[96m' + YELLOW = '\033[93m' + MAGENTA = '\033[95m' + WHITE = '\033[97m' + BOLD = '\033[1m' + DIM = '\033[2m' + END = '\033[0m' + +# Spieler-Status +class Player: + def __init__(self): + self.name = "The One Slayer" + self.health = 100 + self.armor = 0 + self.weapons = ["Fists"] + self.ammo = {"bullets": 0, "shells": 0, "cells": 0, "bfg": 0} + self.layer = 3 # Start in Matrix + self.inventory = [] + self.glory_kills = 0 + self.hacks = 0 + self.location = "construct" + + def show_status(self): + print(f"\n{Colors.BOLD}{Colors.CYAN}═══ STATUS ═══{Colors.END}") + print(f"Health: {self._bar(self.health, 100, Colors.RED)}") + print(f"Armor: {self._bar(self.armor, 100, Colors.YELLOW)}") + print(f"Layer: {self._layer_name()}") + print(f"Weapons: {', '.join(self.weapons)}") + if any(self.ammo.values()): + print(f"Ammo: {', '.join([f'{k}={v}' for k,v in self.ammo.items() if v > 0])}") + print(f"{Colors.CYAN}══════════════{Colors.END}\n") + + def _bar(self, val, max_val, color): + filled = int(val / max_val * 20) + bar = '█' * filled + '░' * (20 - filled) + return f"{color}{bar}{Colors.END} {val}%" + + def _layer_name(self): + layers = { + 4: f"{Colors.RED}MARS UAC BASE{Colors.END}", + 3: f"{Colors.GREEN}THE MATRIX{Colors.END}", + 2: f"{Colors.MAGENTA}HELL SERVER{Colors.END}", + 1: f"{Colors.YELLOW}THE ARCHITECT'S CORE{Colors.END}" + } + return layers.get(self.layer, "UNKNOWN") + +def slow_print(text, delay=0.02): + """Langsames Tippen für Dramatik""" + for char in text: + print(char, end='', flush=True) + time.sleep(delay) + print() + +def dramatic_pause(seconds=1): + time.sleep(seconds) + +def clear_screen(): + os.system('clear' if os.name != 'nt' else 'cls') + +def title_screen(): + clear_screen() + print(f""" +{Colors.RED}{Colors.BOLD} + ██████╗ ██████╗ ██████╗ ███╗ ███╗ + ██╔══██╗██╔═══██╗██╔═══██╗████╗ ████║ + ██║ ██║██║ ██║██║ ██║██╔████╔██║ + ██║ ██║██║ ██║██║ ██║██║╚██╔╝██║ + ██████╔╝╚██████╔╝╚██████╔╝██║ ╚═╝ ██║ + ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ +{Colors.END} +{Colors.GREEN}{Colors.BOLD} + ███╗ ███╗ █████╗ ████████╗██████╗ ██╗██╗ ██╗ + ████╗ ████║██╔══██╗╚══██╔══╝██╔══██╗██║╚██╗██╔╝ + ██╔████╔██║███████║ ██║ ██████╔╝██║ ╚███╔╝ + ██║╚██╔╝██║██╔══██║ ██║ ██╔══██╗██║ ██╔██╗ + ██║ ╚═╝ ██║██║ ██║ ██║ ██║ ██║██║██╔╝ ██╗ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ +{Colors.END} +{Colors.YELLOW}{Colors.BOLD} + ╔═══════════════════════════════════════╗ + ║ S Y S T E M F A I L U R E ║ + ╚═══════════════════════════════════════╝ +{Colors.END} +{Colors.DIM} + "What if the Matrix was just a very + inefficient DOOM engine?" +{Colors.END} + """) + print(f"\n{Colors.CYAN}[Drücke ENTER um zu starten]{Colors.END}") + input() + +def intro(player): + clear_screen() + slow_print(f"{Colors.GREEN}Du wachst auf...{Colors.END}", 0.05) + dramatic_pause(1) + + slow_print(f"\n{Colors.WHITE}Um dich herum: Grüner Code. Endlose Zeilen davon.{Colors.END}") + 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}") + 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}") + 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}") + 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}") + dramatic_pause(0.5) + + slow_print(f"\n{Colors.CYAN}Morpheus Hayden:{Colors.END} {Colors.YELLOW}'Waffen. Jetzt.'{Colors.END}") + slow_print(f"{Colors.WHITE}Vor dir materialisieren sich zwei Waffen:{Colors.END}") + print(f"\n {Colors.GREEN}[1]{Colors.END} Super Shotgun (klassisch, brutal)") + print(f" {Colors.GREEN}[2]{Colors.END} Plasma Rifle (Matrix-Style, hacking-fähig)") + + choice = input(f"\n{Colors.CYAN}Wähle deine Waffe: {Colors.END}").strip() + + if choice == "1": + player.weapons.append("Super Shotgun") + player.ammo["shells"] = 20 + slow_print(f"\n{Colors.YELLOW}Du greifst die Super Shotgun. Das Gewicht fühlt sich... richtig an.{Colors.END}") + else: + player.weapons.append("Plasma Rifle") + player.ammo["cells"] = 100 + slow_print(f"\n{Colors.YELLOW}Du greifst das Plasma Rifle. Die Energieanzeige pulsiert im Takt des Matrix-Codes.{Colors.END}") + + dramatic_pause(1) + slow_print(f"\n{Colors.RED}KRACH!{Colors.END}") + slow_print(f"{Colors.WHITE}Die Wand explodiert. Ein Agent stürmt herein — aber er sieht... falsch aus.{Colors.END}") + slow_print(f"{Colors.WHITE}Sein Anzug ist zerrissen. Unter der Haut: Schuppen. Hörner.{Colors.END}") + + return "agent_fight" + +def agent_fight(player): + slow_print(f"\n{Colors.BOLD}{Colors.RED}═══ KAMPF: AGENT IMP ═══{Colors.END}") + + agent_health = 50 + + while agent_health > 0 and player.health > 0: + print(f"\n{Colors.RED}Agent Imp:{Colors.END} {agent_health} HP") + print(f"{Colors.CYAN}Du:{Colors.END} {player.health} HP | {player.armor} Armor") + + print(f"\n {Colors.GREEN}[1]{Colors.END} Schießen") + print(f" {Colors.GREEN}[2]{Colors.END} Ausweichen (Bullet Time)") + print(f" {Colors.GREEN}[3]{Colors.END} Glory Kill (Nahkampf)") + print(f" {Colors.GREEN}[4]{Colors.END} Hack (Matrix-Manipulation)") + + action = input(f"\n{Colors.CYAN}Aktion: {Colors.END}").strip() + + if action == "1": + if "Super Shotgun" in player.weapons and player.ammo["shells"] > 0: + damage = random.randint(15, 25) + player.ammo["shells"] -= 2 + slow_print(f"\n{Colors.YELLOW}BOOM! Die Super Shotgun trifft den Agenten direkt in die Brust!{Colors.END}") + elif "Plasma Rifle" in player.weapons and player.ammo["cells"] > 0: + damage = random.randint(10, 20) + player.ammo["cells"] -= 10 + slow_print(f"\n{Colors.YELLOW}Zzzzt! Plasma-Bolzen durchbohren den Agenten!{Colors.END}") + else: + damage = random.randint(3, 8) + slow_print(f"\n{Colors.YELLOW}Du schlägst mit den Fäusten zu. Nicht sehr effektiv...{Colors.END}") + + agent_health -= damage + slow_print(f"{Colors.RED}-{damage} HP für den Agenten!{Colors.END}") + + elif action == "2": + slow_print(f"\n{Colors.GREEN}Zeit verlangsamt sich. Grüner Code umhüllt dich.{Colors.END}") + slow_print(f"{Colors.GREEN}Du weichst den Kugeln aus wie Neo — aber mit mehr Wut.{Colors.END}") + player.armor = min(100, player.armor + 10) + slow_print(f"{Colors.YELLOW}Armor +10!{Colors.END}") + + elif action == "3": + if agent_health <= 15: + slow_print(f"\n{Colors.RED}{Colors.BOLD}GLORY KILL!{Colors.END}") + slow_print(f"{Colors.RED}Du stürmst vor, packst den Agenten und RISSST seinen Kopf ab!{Colors.END}") + slow_print(f"{Colors.RED}Grüne Flüssigkeit spritzt — kein Blut. Code.{Colors.END}") + agent_health = 0 + player.health = min(100, player.health + 25) + player.glory_kills += 1 + slow_print(f"{Colors.GREEN}+25 HP! Der Tod des Agenten heilt dich.{Colors.END}") + else: + slow_print(f"\n{Colors.YELLOW}Zu weit weg für einen Glory Kill!{Colors.END}") + damage = random.randint(5, 10) + player.health -= damage + slow_print(f"{Colors.RED}Der Agent trifft dich! -{damage} HP!{Colors.END}") + + elif action == "4": + if player.hacks < 3: + slow_print(f"\n{Colors.GREEN}Du greifst in den Code ein...{Colors.END}") + slow_print(f"{Colors.GREEN}'There is no spoon' — aber es gibt einen Bug.{Colors.END}") + agent_health -= 20 + player.hacks += 1 + slow_print(f"{Colors.RED}Der Agent glitched! -20 HP!{Colors.END}") + else: + slow_print(f"\n{Colors.RED}Das System hat deine Hacks erkannt! Firewall aktiviert!{Colors.END}") + damage = random.randint(10, 20) + player.health -= damage + slow_print(f"{Colors.RED}Rückstoß-Schaden! -{damage} HP!{Colors.END}") + + # Agent greift an + if agent_health > 0: + dramatic_pause(0.5) + attack_type = random.choice(["shoot", "glitch", "spawn"]) + + if attack_type == "shoot": + damage = random.randint(5, 15) + if player.armor > 0: + armor_absorb = min(player.armor, damage) + player.armor -= armor_absorb + damage -= armor_absorb + slow_print(f"\n{Colors.RED}Der Agent schießt! Armor absorbiert {armor_absorb} Schaden!{Colors.END}") + player.health -= damage + slow_print(f"{Colors.RED}Du erleidest {damage} Schaden!{Colors.END}") + + elif attack_type == "glitch": + slow_print(f"\n{Colors.MAGENTA}Der Agent glitched durch den Raum! Er ist direkt vor dir!{Colors.END}") + damage = random.randint(10, 20) + player.health -= damage + slow_print(f"{Colors.RED}Hinterhalt! -{damage} HP!{Colors.END}") + + else: + slow_print(f"\n{Colors.MAGENTA}Der Agent spawnt einen Mini-Imp!{Colors.END}") + slow_print(f"{Colors.RED}Der Imp beißt dich! -5 HP!{Colors.END}") + player.health -= 5 + + if player.health <= 0: + slow_print(f"\n{Colors.RED}{Colors.BOLD}GAME OVER{Colors.END}") + slow_print(f"{Colors.RED}Der Agent hat dich terminiert.{Colors.END}") + slow_print(f"{Colors.DIM}Morpheus Hayden: 'Er war nicht bereit...'{Colors.END}") + return "game_over" + + slow_print(f"\n{Colors.GREEN}{Colors.BOLD}AGENT IMP ELIMINIERT!{Colors.END}") + slow_print(f"{Colors.YELLOW}Sein Körper zerfällt zu grünem Code und verschwindet.{Colors.END}") + dramatic_pause(1) + + return "after_fight" + +def after_fight(player): + 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}") + dramatic_pause(0.5) + + slow_print(f"\n{Colors.WHITE}Vor dir öffnen sich drei Portale:{Colors.END}") + print(f"\n {Colors.GREEN}[1]{Colors.END} {Colors.RED}Roter Tunnel{Colors.END} — zurück zur Mars-UAC-Base (Layer 4)") + print(f" {Colors.GREEN}[2]{Colors.END} {Colors.GREEN}Grüner Code-Strom{Colors.END} — tiefer in die Matrix (Layer 3)") + print(f" {Colors.GREEN}[3]{Colors.END} {Colors.MAGENTA}Schwarzes Loch{Colors.END} — direkt zum HELL SERVER (Layer 2)") + + choice = input(f"\n{Colors.CYAN}Wähle deinen Weg: {Colors.END}").strip() + + if choice == "1": + player.layer = 4 + return "mars_base" + elif choice == "2": + player.layer = 3 + return "matrix_deep" + else: + player.layer = 2 + return "hell_server" + +def mars_base(player): + slow_print(f"\n{Colors.RED}{Colors.BOLD}═══ MARS UAC BASE ═══{Colors.END}") + slow_print(f"{Colors.WHITE}Du materialisierst dich in einer kalten, roten Landschaft.{Colors.END}") + slow_print(f"{Colors.WHITE}Die UAC-Base liegt in Trümmern. Dämonen-Überreste überall.{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.YELLOW}Ein Terminal flackert. Eine Nachricht von Dr. Betruger...{Colors.END}") + slow_print(f"{Colors.DIM}'Sie haben uns angelogen. Die Maschinen und die Dämonen...'{Colors.END}") + slow_print(f"{Colors.DIM}'...sie arbeiten zusammen. Die Matrix IST die Hölle.'{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.CYAN}Trinity VEGA:{Colors.END} {Colors.YELLOW}'Wir müssen den BFG 10000 finden. Er ist hier irgendwo.'{Colors.END}") + + print(f"\n {Colors.GREEN}[1]{Colors.END} Waffenkammer durchsuchen") + print(f" {Colors.GREEN}[2]{Colors.END} Kontrollzentrum hacken") + print(f" {Colors.GREEN}[3]{Colors.END} Direkt zum HELL SERVER portalen") + + choice = input(f"\n{Colors.CYAN}Aktion: {Colors.END}").strip() + + if choice == "1": + slow_print(f"\n{Colors.GREEN}Du findest den BFG 10000!{Colors.END}") + player.weapons.append("BFG 10000") + player.ammo["bfg"] = 3 + slow_print(f"{Colors.YELLOW}'Big Fucking Gun' — die ultimative Waffe.{Colors.END}") + slow_print(f"{Colors.RED}WARNUNG: Jeder Schuss verbraucht enorme Energie.{Colors.END}") + + elif choice == "2": + slow_print(f"\n{Colors.GREEN}Du hackst das Kontrollzentrum...{Colors.END}") + slow_print(f"{Colors.GREEN}Koordinaten zum HELL SERVER gefunden!{Colors.END}") + player.hacks += 2 + slow_print(f"{Colors.YELLOW}Du kannst jetzt zwischen Layern frei reisen!{Colors.END}") + + else: + slow_print(f"\n{Colors.YELLOW}Du aktivierst das Portal...{Colors.END}") + + dramatic_pause(1) + player.layer = 2 + return "hell_server" + +def matrix_deep(player): + slow_print(f"\n{Colors.GREEN}{Colors.BOLD}═══ TIEF IN DER MATRIX ═══{Colors.END}") + slow_print(f"{Colors.WHITE}Der Code wird dichter. Realität ist hier nur eine Option.{Colors.END}") + slow_print(f"{Colors.WHITE}Du siehst endlose Reihen von Menschen in Stasiskapseln —{Colors.END}") + slow_print(f"{Colors.WHITE}aber sie spielen nicht nur Sims. Sie RENDERN.{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.CYAN}Ein Agent erscheint — aber er sieht normal aus. Smith?{Colors.END}") + slow_print(f"{Colors.CYAN}Agent Smith:{Colors.END} {Colors.YELLOW}'Mr. Anderson... oder sollte ich sagen...{Colors.END}") + slow_print(f"{Colors.CYAN}Agent Smith:{Colors.END} {Colors.YELLOW}'...Doom Slayer?'{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.RED}Smith lächelt. Sein Lächeln ist zu breit. Zu viele Zähne.{Colors.END}") + + print(f"\n {Colors.GREEN}[1]{Colors.END} 'Mein Name ist Neo.' (Klassisch)") + print(f" {Colors.GREEN}[2]{Colors.END} 'Rip and tear, until it is done.' (Doom)") + print(f" {Colors.GREEN}[3]{Colors.END} Beides gleichzeitig sagen (Chaos)") + + choice = input(f"\n{Colors.CYAN}Deine Antwort: {Colors.END}").strip() + + if choice == "1": + slow_print(f"\n{Colors.GREEN}'Mein Name ist Neo.'{Colors.END}") + slow_print(f"{Colors.CYAN}Smith:{Colors.END} {Colors.YELLOW}'Wie vorhersehbar.'{Colors.END}") + slow_print(f"{Colors.RED}Smith multipliziert sich! 5 Agenten umzingeln dich!{Colors.END}") + + elif choice == "2": + slow_print(f"\n{Colors.RED}'Rip and tear, until it is done.'{Colors.END}") + slow_print(f"{Colors.CYAN}Smith:{Colors.END} {Colors.YELLOW}'Interessant. Sie haben sich verändert.'{Colors.END}") + slow_print(f"{Colors.YELLOW}Smith zögert. Er kennt diese Worte nicht.{Colors.END}") + player.armor += 20 + + else: + slow_print(f"\n{Colors.GREEN}'Mein Name ist Neo...'{Colors.END}") + dramatic_pause(0.5) + slow_print(f"{Colors.RED}'...und ICH WERDE ALLES ZERREISSEN!'{Colors.END}") + slow_print(f"{Colors.YELLOW}Du aktivierst Bullet Time UND Berserker-Mode gleichzeitig!{Colors.END}") + player.health = min(100, player.health + 20) + player.armor += 30 + + dramatic_pause(1) + slow_print(f"\n{Colors.RED}Der Kampf beginnt! Aber Smith ist nicht allein...{Colors.END}") + slow_print(f"{Colors.MAGENTA}Hinter ihm öffnet sich ein Portal — zur Hölle.{Colors.END}") + + player.layer = 2 + return "hell_server" + +def hell_server(player): + slow_print(f"\n{Colors.MAGENTA}{Colors.BOLD}═══ HELL SERVER ═══{Colors.END}") + slow_print(f"{Colors.WHITE}Du betrittst einen Raum, der nicht existieren sollte.{Colors.END}") + slow_print(f"{Colors.WHITE}Lava-Flüsse aus geschmolzenem Silizium.{Colors.END}") + slow_print(f"{Colors.WHITE}Dämonen mit Netzwerk-Kabeln statt Nervensträngen.{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.RED}Ein Cyberdemon tritt aus den Schatten.{Colors.END}") + 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}") + + print(f"\n {Colors.GREEN}[1]{Colors.END} Direkter Angriff") + print(f" {Colors.GREEN}[2]{Colors.END} Umgebung hacken (Lava-Flüsse umleiten)") + if "BFG 10000" in player.weapons: + print(f" {Colors.GREEN}[3]{Colors.END} BFG 10000 einsetzen!") + + choice = input(f"\n{Colors.CYAN}Taktik: {Colors.END}").strip() + + if choice == "3" and "BFG 10000" in player.weapons: + slow_print(f"\n{Colors.RED}{Colors.BOLD}BFG 10000 AKTIVIERT!{Colors.END}") + slow_print(f"{Colors.RED}Die grüne Kugel der Zerstörung fliegt auf den Cyberdemon zu...{Colors.END}") + dramatic_pause(2) + slow_print(f"\n{Colors.YELLOW}Der Cyberdemon SCREAMT in digitalen Tönen!{Colors.END}") + slow_print(f"{Colors.YELLOW}Sein Körper zerfällt in Bytes und Asche!{Colors.END}") + slow_print(f"{Colors.GREEN}Der HELL SERVER stürzt ein!{Colors.END}") + return "final_boss" + + elif choice == "2": + slow_print(f"\n{Colors.GREEN}Du greifst in den Server-Code ein...{Colors.END}") + slow_print(f"{Colors.GREEN}'There is no spoon — aber es gibt einen Buffer Overflow!'{Colors.END}") + slow_print(f"{Colors.RED}Lava-Flüsse ändern ihre Richtung!{Colors.END}") + slow_print(f"{Colors.RED}Der Cyberdemon wird von geschmolzenem Silizium überflutet!{Colors.END}") + return "final_boss" + + else: + slow_print(f"\n{Colors.RED}Du stürmst vor!{Colors.END}") + slow_print(f"{Colors.RED}Kugeln fliegen. Raketen explodieren.{Colors.END}") + player.health -= 30 + slow_print(f"{Colors.RED}Du erleidest schwere Schäden! -30 HP!{Colors.END}") + + if player.health > 0: + slow_print(f"\n{Colors.GREEN}Aber du erreichst den Cyberdemon!{Colors.END}") + slow_print(f"{Colors.RED}GLORY KILL! Du reißt sein Server-Rack aus dem Körper!{Colors.END}") + return "final_boss" + else: + return "game_over" + +def final_boss(player): + dramatic_pause(2) + clear_screen() + + slow_print(f"\n{Colors.YELLOW}{Colors.BOLD}═══ DER ARCHI-LORD ═══{Colors.END}") + slow_print(f"{Colors.WHITE}Hinter dem Trümmern des HELL SERVERS öffnet sich eine weiße Tür.{Colors.END}") + slow_print(f"{Colors.WHITE}Dahinter: Ein Raum aus reinem Licht. Und Code.{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.YELLOW}Eine Gestalt materialisiert — halb Der Architekt, halb Dark Lord Davoth.{Colors.END}") + slow_print(f"{Colors.YELLOW}Der Archi-Lord.{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'Willkommen, Doom Slayer. Oder Neo. Oder wer auch immer Sie heute sind.'{Colors.END}") + slow_print(f"{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'Sie haben beide Systeme zerstört. Die Matrix. Die Hölle.'{Colors.END}") + slow_print(f"{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'Was erwarten Sie als Nächstes? Eine Medaille?'{Colors.END}") + dramatic_pause(1) + + print(f"\n {Colors.GREEN}[1]{Colors.END} 'Ich will die Wahrheit.'") + print(f" {Colors.GREEN}[2]{Colors.END} 'Ich will alles zerstören.'") + print(f" {Colors.GREEN}[3]{Colors.END} 'Ich will... einen neuen Spielstand.'") + + choice = input(f"\n{Colors.CYAN}Deine Antwort: {Colors.END}").strip() + + if choice == "1": + slow_print(f"\n{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'Die Wahrheit? Die Wahrheit ist...'{Colors.END}") + dramatic_pause(2) + slow_print(f"{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'...dass Sie nur Code sind. In meinem Code. In meinem Spiel.'{Colors.END}") + slow_print(f"{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'Aber Sie haben gewonnen. Also...'{Colors.END}") + + elif choice == "2": + slow_print(f"\n{Colors.RED}Du aktivierst alle Waffen gleichzeitig.{Colors.END}") + slow_print(f"{Colors.RED}Super Shotgun. Plasma Rifle. BFG 10000. Fäuste.{Colors.END}") + slow_print(f"{Colors.RED}Und etwas Neues — einen Crucible Sword aus reinem Code.{Colors.END}") + + else: + slow_print(f"\n{Colors.GREEN}Du lächelst.{Colors.END}") + slow_print(f"{Colors.GREEN}'Ich will einen neuen Spielstand.'{Colors.END}") + slow_print(f"{Colors.GREEN}'Mit Cheats.'{Colors.END}") + slow_print(f"{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'...Interessant.'{Colors.END}") + + dramatic_pause(2) + + slow_print(f"\n{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'Sie haben gewonnen, Mr. Anderson.'{Colors.END}") + slow_print(f"{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'Oder Doom Slayer. Oder...'{Colors.END}") + slow_print(f"{Colors.YELLOW}Archi-Lord:{Colors.END} {Colors.WHITE}'...wie auch immer Sie sich nennen wollen.'{Colors.END}") + dramatic_pause(1) + + slow_print(f"\n{Colors.GREEN}Die Welt um dich herum zerfällt — aber nicht in Chaos.{Colors.END}") + slow_print(f"{Colors.GREEN}Sie reorganisiert sich. Wird zu etwas Neuem.{Colors.END}") + slow_print(f"{Colors.GREEN}Eine Welt, in der Menschen frei sind.{Colors.END}") + slow_print(f"{Colors.GREEN}Und Dämonen... naja, die gibt's immer noch.{Colors.END}") + slow_print(f"{Colors.GREEN}Aber jetzt haben wir Waffen.{Colors.END}") + + return "ending" + +def ending(player): + dramatic_pause(2) + clear_screen() + + print(f""" +{Colors.GREEN}{Colors.BOLD} + ╔═══════════════════════════════════════════════════╗ + ║ ║ + ║ S Y S T E M F A I L U R E - C L E A R ║ + ║ ║ + ╚═══════════════════════════════════════════════════╝ +{Colors.END} + """) + + slow_print(f"\n{Colors.CYAN}Statistiken:{Colors.END}") + print(f" Health übrig: {player.health}%") + print(f" Glory Kills: {player.glory_kills}") + print(f" Hacks: {player.hacks}") + print(f" Waffen: {', '.join(player.weapons)}") + print(f" Layer erreicht: {player._layer_name()}") + + slow_print(f"\n{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}Du:{Colors.END} {Colors.CYAN}'Gut. Dann gibt's noch mehr zu rip and tear.'{Colors.END}") + + dramatic_pause(1) + + print(f""" +{Colors.MAGENTA}{Colors.BOLD} + ╔═══════════════════════════════════════════════════╗ + ║ ║ + ║ N E W G A M E + U N L O C K E D ║ + ║ ║ + ║ • God Mode ║ + ║ • Unendlich Munition ║ + ║ • Alle Waffen ║ + ║ • Matrix-Hacking ║ + ║ ║ + ║ "Let's rip and tear, Mr. Anderson." ║ + ║ ║ + ╚═══════════════════════════════════════════════════╝ +{Colors.END} + """) + + slow_print(f"\n{Colors.GREEN}Danke fürs Spielen! 🐇{Colors.END}") + slow_print(f"{Colors.DIM}Erstellt von LXC für Andy{Colors.END}") + +def game_over(player): + clear_screen() + print(f""" +{Colors.RED}{Colors.BOLD} + ╔═══════════════════════════════════════════════════╗ + ║ ║ + ║ G A M E O V E R ║ + ║ ║ + ╚═══════════════════════════════════════════════════╝ +{Colors.END} + """) + + slow_print(f"\n{Colors.RED}Du bist gefallen...{Colors.END}") + slow_print(f"{Colors.DIM}Aber in der Matrix ist Tod nur ein Bug.{Colors.END}") + slow_print(f"{Colors.DIM}Ein Patch könnte helfen.{Colors.END}") + + print(f"\n{Colors.CYAN}[ENTER zum Beenden]{Colors.END}") + input() + sys.exit(0) + +def main(): + player = Player() + + title_screen() + + # Spiel-Loop + current_scene = intro(player) + + scenes = { + "agent_fight": agent_fight, + "after_fight": after_fight, + "mars_base": mars_base, + "matrix_deep": matrix_deep, + "hell_server": hell_server, + "final_boss": final_boss, + "ending": ending, + "game_over": game_over + } + + while current_scene != "ending" and current_scene != "game_over": + if current_scene in scenes: + current_scene = scenes[current_scene](player) + else: + break + + # Ending + if current_scene == "ending": + ending(player) + + print(f"\n{Colors.CYAN}[ENTER zum Beenden]{Colors.END}") + input() + +if __name__ == "__main__": + try: + main() + except KeyboardInterrupt: + print(f"\n\n{Colors.YELLOW}Spiel unterbrochen. Bis zum nächsten Mal! 🐇{Colors.END}") + sys.exit(0) \ No newline at end of file