diff --git a/adventure.pl b/adventure.pl index 0ceb8ec..67c99e5 100644 --- a/adventure.pl +++ b/adventure.pl @@ -844,68 +844,6 @@ stealth_climbing_challenge :- damage_player(15))). -% ========== NPC INTERACTIONS ========== -talk_to(PersonName) :- - player_location(Loc), - npc_location(PersonName, Loc), - handle_conversation(PersonName), - !. - -talk_to(_) :- - write('Diese Person ist nicht hier.'), nl. - - -handle_conversation(wren) :- - game_state(wren_met, false), - write('Wren: "John! Ich habe auf dich gewartet. Ich weiß von den Drohnen."'), nl, - write('Wren: "Es gibt eine Organisation namens Aviary Control. Wir müssen sie stoppen!"'), nl, - write('Wren: "Du brauchst einen EMP-Generator um in ihr Hauptquartier einzudringen."'), nl, - write('Wren: "Sammle diese Komponenten: Elektro-Spule, Hochleistungsbatterie und Kondensator."'), nl, - write('Wren: "Die Spule findest du in einer Box auf einem Dach in der Altstadt."'), nl, - write('Wren: "Die Batterie ist in einer Box auf einem Turm im Donauufer versteckt."'), nl, - write('Wren: "Der Kondensator ist im Pöstlingberg-Turm, aber du brauchst eine Kampfdrohne."'), nl, - write('Wren: "Baue deine eigene Kampfdrohne! Besiege Tauben für einen Motor und Störche für Steuerung."'), nl, - write('Wren: "Baue alles dann in der HTL Leonding Werkstatt zusammen."'), nl, - write('Wren gibt dir EMP-Granaten für den Anfang.'), nl, - assertz(player_inventory(emp_granate)), - assertz(player_inventory(emp_granate)), - retract(game_state(wren_met, false)), - assertz(game_state(wren_met, true)), - retract(game_state(components_explained, false)), - assertz(game_state(components_explained, true)), - !. - -handle_conversation(wren) :- - game_state(components_explained, true), - game_state(emp_built, false), - write('Wren: "Vergiss nicht: Du brauchst alle drei Komponenten für den EMP-Generator!"'), nl, - write('Wren: "Elektro-Spule (Altstadt-Dach), Batterie (Donauufer-Turm), Kondensator (Pöstlingberg)."'), nl, - write('Wren: "Verwende Parkour-Handschuhe zum Klettern und deine Kampfdrohne im Pöstlingberg."'), nl, - !. - -handle_conversation(wren) :- - game_state(emp_built, true), - write('Wren: "Perfekt! Mit dem EMP-Generator kannst du ins Aviary HQ eindringen!"'), nl, - write('Wren: "Pass auf die Krähe auf - schwäche sie mit EMP-Granaten, sonst kontrolliert sie dich!"'), nl, - !. - -handle_conversation(wren) :- - write('Wren: "Viel Glück, John. Die Zukunft der Menschheit liegt in deinen Händen."'), nl. - -% ========== LOCATION EVENTS ========== -trigger_location_event(donauufer) :- - enemy_location(storch_drohne, donauufer), - write('WARNUNG: Eine Storch-Drohne patroulliert hier!'), nl, - write('Verwende "angriff(storch_drohne)" um den Kampf zu beginnen.'), nl. - -trigger_location_event(aviary_hq) :- - enemy_location(die_kraehe, aviary_hq), - write('Du betrittst das Hauptquartier von Aviary Control!'), nl, - write('Die Krähe erwartet dich bereits...'), nl, - write('WARNUNG: Die Krähe kann dich kontrollieren! Schwäche sie mit EMP-Granaten!'), nl. - -trigger_location_event(_). - % ========== GAME STATE MANAGEMENT ========== check_game_state :- player_health(Health), @@ -932,8 +870,6 @@ show_status :- (player_inventory(kondensator) -> write(' Kondensator: ✓') ; write(' Kondensator: ✗')), nl)), write('=============='), nl. - - % ========== HELP PREDICATES ========== hilfe :- process_command([hilfe]). schaue :- process_command([schaue]). diff --git a/game_assets/npcs.pl b/game_assets/npcs.pl index dd319dd..39320b1 100644 --- a/game_assets/npcs.pl +++ b/game_assets/npcs.pl @@ -3,11 +3,59 @@ character(john, 'John Miller', 'Ein 17-jähriger HTL-Schüler mit Hacking-Fähig character(wren, 'Wren', 'Cybersicherheitslehrerin und Rogue-Hackerin.'). character(die_kraehe, 'Die Krähe', 'KI-Mastermind hinter dem Drohnen-Netzwerk.'). -% Initial NPC locations +% ========== INITIAL NPC LOCATIONS ========== init_npcs :- retractall(npc_location(_, _)), assertz(npc_location(wren, htl_labor)). + +% ========== NPC INTERACTIONS ========== +talk_to(PersonName) :- + player_location(Loc), + npc_location(PersonName, Loc), + handle_conversation(PersonName), + !. + +talk_to(_) :- + write('Diese Person ist nicht hier.'), nl. + +handle_conversation(wren) :- + game_state(wren_met, false), + write('Wren: "John! Ich habe auf dich gewartet. Ich weiß von den Drohnen."'), nl, + write('Wren: "Es gibt eine Organisation namens Aviary Control. Wir müssen sie stoppen!"'), nl, + write('Wren: "Du brauchst einen EMP-Generator um in ihr Hauptquartier einzudringen."'), nl, + write('Wren: "Sammle diese Komponenten: Elektro-Spule, Hochleistungsbatterie und Kondensator."'), nl, + write('Wren: "Die Spule findest du in einer Box auf einem Dach in der Altstadt."'), nl, + write('Wren: "Die Batterie ist in einer Box auf einem Turm im Donauufer versteckt."'), nl, + write('Wren: "Der Kondensator ist im Pöstlingberg-Turm, aber du brauchst eine Kampfdrohne."'), nl, + write('Wren: "Baue deine eigene Kampfdrohne! Besiege Tauben für einen Motor und Störche für Steuerung."'), nl, + write('Wren: "Baue alles dann in der HTL Leonding Werkstatt zusammen."'), nl, + write('Wren gibt dir EMP-Granaten für den Anfang.'), nl, + assertz(player_inventory(emp_granate)), + assertz(player_inventory(emp_granate)), + retract(game_state(wren_met, false)), + assertz(game_state(wren_met, true)), + retract(game_state(components_explained, false)), + assertz(game_state(components_explained, true)), + !. + +handle_conversation(wren) :- + game_state(components_explained, true), + game_state(emp_built, false), + write('Wren: "Vergiss nicht: Du brauchst alle drei Komponenten für den EMP-Generator!"'), nl, + write('Wren: "Elektro-Spule (Altstadt-Dach), Batterie (Donauufer-Turm), Kondensator (Pöstlingberg)."'), nl, + write('Wren: "Verwende Parkour-Handschuhe zum Klettern und deine Kampfdrohne im Pöstlingberg."'), nl, + !. + +handle_conversation(wren) :- + game_state(emp_built, true), + write('Wren: "Perfekt! Mit dem EMP-Generator kannst du ins Aviary HQ eindringen!"'), nl, + write('Wren: "Pass auf die Krähe auf - schwäche sie mit EMP-Granaten, sonst kontrolliert sie dich!"'), nl, + !. + +handle_conversation(wren) :- + write('Wren: "Viel Glück, John. Die Zukunft der Menschheit liegt in deinen Händen."'), nl. + % ========== ENEMIES ========== init_enemies :- retractall(enemy(_, _, _, _)),