#include "combat.h" #include "common.h" #include // Track combat events for feedback typedef struct { const char *message; int damage; int is_player_damage; } CombatEvent; static CombatEvent last_event = {NULL, 0, 0}; const char *combat_get_last_message(void) { return last_event.message; } int combat_get_last_damage(void) { return last_event.damage; } int combat_was_player_damage(void) { return last_event.is_player_damage; } void combat_player_attack(Player *p, Enemy *e) { if (e == NULL || !e->alive) return; // Deal damage int damage = p->attack; e->hp -= damage; // Set combat event last_event.damage = damage; last_event.is_player_damage = 0; // Check if enemy died if (e->hp <= 0) { e->hp = 0; e->alive = 0; last_event.message = "Enemy killed!"; } else { last_event.message = "You hit the enemy"; } } void combat_enemy_attack(Enemy *e, Player *p) { if (e == NULL || !e->alive) return; if (p == NULL) return; // Deal damage reduced by defense (minimum 1 damage) int damage = e->attack - p->defense; if (damage < 1) damage = 1; p->hp -= damage; // Set combat event last_event.damage = damage; last_event.is_player_damage = 1; // Check if player died if (p->hp <= 0) { p->hp = 0; last_event.message = "You died!"; } else { last_event.message = "Enemy attacks!"; } } void combat_reset_event(void) { last_event.message = NULL; last_event.damage = 0; last_event.is_player_damage = 0; }