# combat_system.py import random from settings import * from items import get_item, ITEMS, WEAPON_STATS class CombatSystem: def __init__(self, weapon_manager): self.weapon_manager = weapon_manager def player_attack(self, player, enemies): """ Handles player attack on enemies using the currently equipped weapon. """ # Get weapon ID from weapon manager weapon_id = self.weapon_manager.get_current_weapon() if weapon_id is None: print("DEBUG: No weapon equipped") return # Get weapon stats damage = WEAPON_STATS.get(weapon_id, {}).get("damage", 1) attack_range = WEAPON_STATS.get(weapon_id, {}).get("range", 50) player_pos = player.pos # Attack enemies within range for enemy in enemies: if not getattr(enemy, "alive", True): continue # Skip dead enemies enemy_pos = enemy.pos distance = (enemy_pos - player_pos).length() if distance <= attack_range: enemy.health -= damage print(f"DEBUG: {enemy.name if hasattr(enemy,'name') else 'Enemy'} took {damage} damage! (HP left: {enemy.health})") if enemy.health <= 0: enemy.alive = False print(f"DEBUG: {enemy.name if hasattr(enemy,'name') else 'Enemy'} has been defeated!") def enemy_attack(self, enemy, player): """ Handles enemy attack on player. """ if not getattr(enemy, "alive", True): return # Ensure enemy has attack properties attack_range = getattr(enemy, "attack_range", 50) attack_damage = getattr(enemy, "attack_damage", ENEMY_ATTACK_DAMAGE) distance = (enemy.pos - player.pos).length() if distance <= attack_range: player.health -= attack_damage print(f"DEBUG: Player took {attack_damage} damage! (HP left: {player.health})") def update(self, dt): """ Updates combat-related state per frame. Currently placeholder for cooldowns or status effects. """ pass