Dateien nach "/" hochladen
This commit is contained in:
commit
ddd7b6b65b
1 file changed
+580
@@ -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)
|
||||||
Reference in new issue
Block a user