Fixed a dying bug

This commit is contained in:
MatyasZsombor 2025-06-15 21:46:50 +02:00
parent 63cdc7aea8
commit fd44e935ba

View File

@ -823,7 +823,7 @@ climb_action :-
climb_action :- climb_action :-
write('Hier gibt es nichts zum Klettern.'), nl. write('Hier gibt es nichts zum Klettern.'), nl.
%Parkour-Migigames % ========== PARKOUR-MINIGAMES ==========
parkour_minigame_altstadt :- parkour_minigame_altstadt :-
write('Sequenz-Challenge: Wiederhole die Bewegungsfolge!'), nl, write('Sequenz-Challenge: Wiederhole die Bewegungsfolge!'), nl,
random_member(Sequence, [[sprung, rolle, kletter], [rolle, sprung, balance], [kletter, sprung, rolle]]), random_member(Sequence, [[sprung, rolle, kletter], [rolle, sprung, balance], [kletter, sprung, rolle]]),
@ -975,7 +975,11 @@ trigger_location_event(_).
% ========== GAME STATE MANAGEMENT ========== % ========== GAME STATE MANAGEMENT ==========
check_game_state :- check_game_state :-
player_health(Health), player_health(Health),
(Health =< 0 -> end_game(defeat) ; true). (Health =< 0 ->
(retractall(in_combat(_)),
end_game(defeat),
!, fail) ;
true).
show_status :- show_status :-
player_health(Health), player_health(Health),
@ -1003,7 +1007,8 @@ final_choice :-
write('3) Das System hacken und die Kontrolle übernehmen'), nl, write('3) Das System hacken und die Kontrolle übernehmen'), nl,
write('Deine Wahl (1-3): '), write('Deine Wahl (1-3): '),
read(Choice), read(Choice),
handle_final_choice(Choice). handle_final_choice(Choice),
game_over_menu.
handle_final_choice(1) :- handle_final_choice(1) :-
write('Du entscheidest dich für das ultimative Opfer...'), nl, write('Du entscheidest dich für das ultimative Opfer...'), nl,
@ -1051,8 +1056,7 @@ end_game(heroic_sacrifice) :-
write('Die Menschen von Linz und der ganzen Welt sind frei!'), nl, write('Die Menschen von Linz und der ganzen Welt sind frei!'), nl,
write('Du hast dein Leben für die Freiheit der Menschheit geopfert.'), nl, write('Du hast dein Leben für die Freiheit der Menschheit geopfert.'), nl,
write('Du wirst als Held in Erinnerung bleiben!'), nl, write('Du wirst als Held in Erinnerung bleiben!'), nl,
write('ENDE: Der ultimative Held'), nl, write('ENDE: Der ultimative Held'), nl.
halt.
end_game(dark_ruler) :- end_game(dark_ruler) :-
clear_screen, clear_screen,
@ -1062,8 +1066,7 @@ end_game(dark_ruler) :-
write('Aber auch keine Freiheit, keine Privatsphäre, keine Menschlichkeit.'), nl, write('Aber auch keine Freiheit, keine Privatsphäre, keine Menschlichkeit.'), nl,
write('Du sitzt auf einem Thron aus Überwachung und Kontrolle.'), nl, write('Du sitzt auf einem Thron aus Überwachung und Kontrolle.'), nl,
write('Die Welt ist "sicher" - aber zu welchem Preis?'), nl, write('Die Welt ist "sicher" - aber zu welchem Preis?'), nl,
write('ENDE: Der neue Überwacher'), nl, write('ENDE: Der neue Überwacher'), nl.
halt.
end_game(master_hacker_victory) :- end_game(master_hacker_victory) :-
clear_screen, clear_screen,
@ -1074,8 +1077,7 @@ end_game(master_hacker_victory) :-
write('und überwachen nur noch wirkliche Bedrohungen.'), nl, write('und überwachen nur noch wirkliche Bedrohungen.'), nl,
write('Du hast die perfekte Balance zwischen Sicherheit und Freiheit geschaffen!'), nl, write('Du hast die perfekte Balance zwischen Sicherheit und Freiheit geschaffen!'), nl,
write('Die Welt ist in eine neue Ära des technologischen Friedens eingetreten.'), nl, write('Die Welt ist in eine neue Ära des technologischen Friedens eingetreten.'), nl,
write('ENDE: Der Meister-Hacker (Geheimes Ende)'), nl, write('ENDE: Der Meister-Hacker (Geheimes Ende)'), nl.
halt.
end_game(hack_failure) :- end_game(hack_failure) :-
clear_screen, clear_screen,
@ -1084,8 +1086,7 @@ end_game(hack_failure) :-
write('Sicherheitsdrohnen umzingeln dich!'), nl, write('Sicherheitsdrohnen umzingeln dich!'), nl,
write('Du wurdest gefangen genommen und das System läuft weiter...'), nl, write('Du wurdest gefangen genommen und das System läuft weiter...'), nl,
write('GAME OVER'), nl, write('GAME OVER'), nl,
write('Vielleicht gibt es einen anderen Weg... einen geheimen Code?'), nl, write('Vielleicht gibt es einen anderen Weg... einen geheimen Code?'), nl.
write('Möchtest du es nochmal versuchen? Tippe "start_game." um neu zu beginnen.'), nl.
end_game(defeat) :- end_game(defeat) :-
clear_screen, clear_screen,
@ -1093,7 +1094,32 @@ end_game(defeat) :-
write('Du wurdest von den Drohnen überwältigt.'), nl, write('Du wurdest von den Drohnen überwältigt.'), nl,
write('Die Wahrheit bleibt für immer begraben...'), nl, write('Die Wahrheit bleibt für immer begraben...'), nl,
write('GAME OVER'), nl, write('GAME OVER'), nl,
write('Möchtest du es nochmal versuchen? Tippe "start_game." um neu zu beginnen.'), nl. game_over_menu.
game_over_menu :-
nl,
write('=== SPIEL BEENDET ==='), nl,
write('Möchtest du nochmal spielen?'), nl,
write('1) Ja - Neues Spiel starten'), nl,
write('2) Nein - Program beenden'), nl,
write('Deine Wahl (1 oder 2): '),
read(Choice),
handle_game_over_choice(Choice).
handle_game_over_choice(1) :-
nl,
write('Startet neues Spiel...'), nl,
nl,
start_game.
handle_game_over_choice(2) :-
write('Auf Wiedersehen! Die Wahrheit muss ans Licht...'), nl,
halt.
handle_game_over_choice(_) :-
write('Ungültige Wahl! Bitte wähle 1, 2 oder 3.'), nl,
game_over_menu.
% ========== UTILITY PREDICATES ========== % ========== UTILITY PREDICATES ==========
get_random_damage(Damage) :- get_random_damage(Damage) :-