mirror of
https://github.com/JonasHinterdorfer/TextAdventure.git
synced 2025-10-26 03:41:10 +00:00
Added healing
This commit is contained in:
parent
fd44e935ba
commit
b64799351f
46
adventure.pl
46
adventure.pl
@ -21,6 +21,7 @@
|
|||||||
:- dynamic(konami_position/1).
|
:- dynamic(konami_position/1).
|
||||||
:- dynamic(emp_used_in_combat/1).
|
:- dynamic(emp_used_in_combat/1).
|
||||||
:- dynamic(drone_cooldown/2).
|
:- dynamic(drone_cooldown/2).
|
||||||
|
:- dynamic(health_recovery_used/2).
|
||||||
|
|
||||||
% ========== INITIALIZATION ==========
|
% ========== INITIALIZATION ==========
|
||||||
init_game :-
|
init_game :-
|
||||||
@ -37,6 +38,7 @@ init_game :-
|
|||||||
retractall(crow_weakened(_)),
|
retractall(crow_weakened(_)),
|
||||||
retractall(emp_used_in_combat(_)),
|
retractall(emp_used_in_combat(_)),
|
||||||
retractall(drone_cooldown(_, _)),
|
retractall(drone_cooldown(_, _)),
|
||||||
|
retractall(health_recovery_used(_, _)),
|
||||||
|
|
||||||
% Initialize random number generator
|
% Initialize random number generator
|
||||||
randomize,
|
randomize,
|
||||||
@ -187,7 +189,10 @@ combat_loop(Enemy) :-
|
|||||||
write('Feind Gesundheit: '), write(Health), nl,
|
write('Feind Gesundheit: '), write(Health), nl,
|
||||||
player_health(PlayerHealth),
|
player_health(PlayerHealth),
|
||||||
write('Deine Gesundheit: '), write(PlayerHealth), nl,
|
write('Deine Gesundheit: '), write(PlayerHealth), nl,
|
||||||
write('Verfügbare Aktionen: angriff, verwende(item)'), nl, nl,
|
health_recovery_used(Enemy, RecoveryUsed),
|
||||||
|
RemainingRecovery is 2 - RecoveryUsed,
|
||||||
|
write('Heilungen übrig: '), write(RemainingRecovery), write('/2'), nl,
|
||||||
|
write('Verfügbare Aktionen: angriff, verwende(item), heile'), nl, nl,
|
||||||
write('> '),
|
write('> '),
|
||||||
read_line(Command),
|
read_line(Command),
|
||||||
process_combat_command(Command, Enemy),
|
process_combat_command(Command, Enemy),
|
||||||
@ -357,6 +362,9 @@ process_combat_command([angriff], Enemy) :-
|
|||||||
process_combat_command([verwende, Item], Enemy) :-
|
process_combat_command([verwende, Item], Enemy) :-
|
||||||
combat_use_item(Item, Enemy).
|
combat_use_item(Item, Enemy).
|
||||||
|
|
||||||
|
process_combat_command([heile], Enemy) :-
|
||||||
|
combat_heal(Enemy).
|
||||||
|
|
||||||
process_combat_command(_, _) :-
|
process_combat_command(_, _) :-
|
||||||
write('Ungültige Kampfaktion! Verwende: angriff oder verwende(item)'), nl.
|
write('Ungültige Kampfaktion! Verwende: angriff oder verwende(item)'), nl.
|
||||||
|
|
||||||
@ -520,6 +528,7 @@ start_combat(EnemyName) :-
|
|||||||
player_location(Loc),
|
player_location(Loc),
|
||||||
enemy_location(EnemyName, Loc),
|
enemy_location(EnemyName, Loc),
|
||||||
assertz(drone_cooldown(EnemyName, 0)),
|
assertz(drone_cooldown(EnemyName, 0)),
|
||||||
|
assertz(health_recovery_used(EnemyName, 0)),
|
||||||
write('Du beginnst den Kampf gegen '), enemy(EnemyName, DisplayName, _, _),
|
write('Du beginnst den Kampf gegen '), enemy(EnemyName, DisplayName, _, _),
|
||||||
write(DisplayName), write('!'), nl,
|
write(DisplayName), write('!'), nl,
|
||||||
assertz(in_combat(EnemyName)),
|
assertz(in_combat(EnemyName)),
|
||||||
@ -549,6 +558,36 @@ combat_use_item(ItemName, Enemy) :-
|
|||||||
combat_use_item(_, _) :-
|
combat_use_item(_, _) :-
|
||||||
write('Du hast diesen Gegenstand nicht!'), nl.
|
write('Du hast diesen Gegenstand nicht!'), nl.
|
||||||
|
|
||||||
|
combat_heal(Enemy) :-
|
||||||
|
health_recovery_used(Enemy, Used),
|
||||||
|
Used >= 2,
|
||||||
|
write('Du hast bereits alle Heilungen in diesem Kampf verbraucht!'), nl,
|
||||||
|
!.
|
||||||
|
|
||||||
|
combat_heal(_) :-
|
||||||
|
player_health(CurrentHealth),
|
||||||
|
CurrentHealth >= 100,
|
||||||
|
write('Du hast bereits volle Gesundheit!'), nl,
|
||||||
|
!.
|
||||||
|
|
||||||
|
combat_heal(Enemy) :-
|
||||||
|
health_recovery_used(Enemy, Used),
|
||||||
|
Used < 2,
|
||||||
|
random(19, 31, HealAmount),
|
||||||
|
player_health(CurrentHealth),
|
||||||
|
NewHealth is min(100, CurrentHealth + HealAmount),
|
||||||
|
HealedAmount is NewHealth - CurrentHealth,
|
||||||
|
retract(player_health(CurrentHealth)),
|
||||||
|
assertz(player_health(NewHealth)),
|
||||||
|
NewUsed is Used + 1,
|
||||||
|
retract(health_recovery_used(Enemy, Used)),
|
||||||
|
assertz(health_recovery_used(Enemy, NewUsed)),
|
||||||
|
write('Du heilst dich selbst und gewinnst '), write(HealedAmount),
|
||||||
|
write(' Gesundheitspunkte!'), nl,
|
||||||
|
RemainingUses is 2 - NewUsed,
|
||||||
|
write('Verbleibende Heilungen: '), write(RemainingUses), nl,
|
||||||
|
enemy_turn(Enemy).
|
||||||
|
|
||||||
execute_combat_item_use(emp_granate, Enemy) :-
|
execute_combat_item_use(emp_granate, Enemy) :-
|
||||||
emp_used_in_combat(Enemy),
|
emp_used_in_combat(Enemy),
|
||||||
write('Du hast bereits eine EMP-Granate in diesem Kampf verwendet!'), nl,
|
write('Du hast bereits eine EMP-Granate in diesem Kampf verwendet!'), nl,
|
||||||
@ -636,6 +675,7 @@ defeat_enemy(EnemyName) :-
|
|||||||
handle_enemy_defeat(EnemyName),
|
handle_enemy_defeat(EnemyName),
|
||||||
retractall(emp_used_in_combat(EnemyName)),
|
retractall(emp_used_in_combat(EnemyName)),
|
||||||
retractall(drone_cooldown(EnemyName, _)),
|
retractall(drone_cooldown(EnemyName, _)),
|
||||||
|
retractall(health_recovery_used(EnemyName, _)),
|
||||||
nl.
|
nl.
|
||||||
|
|
||||||
handle_enemy_defeat(tauben_schwarm) :-
|
handle_enemy_defeat(tauben_schwarm) :-
|
||||||
@ -1123,10 +1163,10 @@ handle_game_over_choice(_) :-
|
|||||||
|
|
||||||
% ========== UTILITY PREDICATES ==========
|
% ========== UTILITY PREDICATES ==========
|
||||||
get_random_damage(Damage) :-
|
get_random_damage(Damage) :-
|
||||||
random(12, 20, Damage). % Random damage between 12-20
|
random(12, 21, Damage). % Random damage between 12-20
|
||||||
|
|
||||||
get_random_enemy_damage(Damage) :-
|
get_random_enemy_damage(Damage) :-
|
||||||
random(10, 18, Damage). % Random enemy damage between 10-18
|
random(10, 19, Damage). % Random enemy damage between 10-18
|
||||||
|
|
||||||
damage_player(Damage) :-
|
damage_player(Damage) :-
|
||||||
player_health(Health),
|
player_health(Health),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user