TextAdventure/game_assets/hacking_system.pl
2025-06-15 23:40:57 +02:00

75 lines
2.5 KiB
Prolog

% ========== HACKING SYSTEM ==========
hack_target(box) :-
player_location(Loc),
player_inventory(laptop),
hacking_minigame(Loc),
!.
hack_target(_) :-
write('Du kannst dieses Ziel nicht hacken oder hast keinen Laptop.'), nl.
% ========== HACKING MINI-GAMES ==========
hacking_minigame(altstadt) :-
box_unlocked(altstadt_box),
write('Diese Box wurde bereits gehackt.'), nl,
!.
hacking_minigame(altstadt) :-
write('=== HACKING MINI-GAME ==='), nl,
write('Entschlüssele den Code: 1001 + 0110 = ?'), nl,
write('Gib das Ergebnis in binär ein: '),
read(Answer),
(Answer = 1111 ->
(write('Korrekt! Du findest eine Elektro-Spule in der Box!'), nl,
assertz(player_inventory(spule)),
assertz(box_unlocked(altstadt_box))) ;
(write('Falsch! Versuch es nochmal.'), nl,
fail)).
hacking_minigame(donauufer) :-
box_unlocked(donauufer_box),
write('Diese Box wurde bereits gehackt.'), nl,
!.
hacking_minigame(donauufer) :-
write('=== HACKING MINI-GAME ==='), nl,
write('SQL Injection: Welcher Befehl umgeht die Passwort-Abfrage?'), nl,
write('1) DROP TABLE users'), nl,
write('2) \' OR \'1\'=\'1'), nl,
write('3) SELECT * FROM passwords'), nl,
write('Deine Wahl (1-3): '),
read(Answer),
(Answer = 2 ->
(write('Korrekt! Du findest eine Hochleistungsbatterie in der Box!'), nl,
assertz(player_inventory(batterie)),
assertz(box_unlocked(donauufer_box))) ;
(write('Falsch! Versuch es nochmal.'), nl,
fail)).
hacking_minigame(poestlingberg) :-
box_unlocked(poestlingberg_box),
write('Diese Box wurde bereits gehackt.'), nl,
!.
hacking_minigame(poestlingberg) :-
player_inventory(kampfdrohne),
write('=== DROHNEN-HACKING ==='), nl,
write('Deine Kampfdrohne verbindet sich mit der Box...'), nl,
write('Netzwerk-Port-Scan: Welcher Port ist für SSH Standard?'), nl,
write('1) Port 80'), nl,
write('2) Port 22'), nl,
write('3) Port 443'), nl,
write('Deine Wahl (1-3): '),
read(Answer),
(Answer = 2 ->
(write('Korrekt! Du findest einen Kondensator in der Box!'), nl,
assertz(player_inventory(kondensator)),
assertz(box_unlocked(poestlingberg_box))) ;
(write('Falsch! Versuch es nochmal.'), nl,
fail)).
hacking_minigame(poestlingberg) :-
write('Du brauchst eine Kampfdrohne um diese Box zu hacken.'), nl.
hacking_minigame(_) :-
write('Hier gibt es nichts zu hacken.'), nl.