#!/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:{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:{Colors.END} {Colors.YELLOW}'Willkommen zurück, Doom Slayer.'{Colors.END}") dramatic_pause(0.5) 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:{Colors.END} {Colors.YELLOW}'Wir haben Company! Agent-Signaturen überall!'{Colors.END}") dramatic_pause(0.5) 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}") 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: '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:{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}") 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:{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:{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}") 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:{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) 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)