From 4faad9dd4b4d10043d5c588c44d11624398bf2d1 Mon Sep 17 00:00:00 2001 From: Niklas Haiden Date: Fri, 8 May 2026 19:32:07 +0200 Subject: [PATCH] feat: implement encounter reset mechanics for rooms and doors --- src/door.py | 6 +++++- src/game.py | 11 +++++++++++ src/monster.py | 8 ++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/door.py b/src/door.py index 7bfc636..63f4f44 100644 --- a/src/door.py +++ b/src/door.py @@ -36,4 +36,8 @@ class Door: self.current_hp -= amount if self.current_hp <= 0: self.current_hp = 0 - self.is_closed = False \ No newline at end of file + self.is_closed = False + + def reset(self): + self.current_hp = self.max_hp + self.is_closed = False diff --git a/src/game.py b/src/game.py index 62b0ae2..1b09a8b 100644 --- a/src/game.py +++ b/src/game.py @@ -222,10 +222,21 @@ class Game: if room_key == self.current_room_key: return + if self.current_room_key is not None: + self.reset_active_encounter() + self.item_manager.clear() self.tower.clear(reset_spawned=True) self.current_room_key = room_key + def reset_active_encounter(self) -> None: + """Reset the room attack once the player exits through the door.""" + + if self.active_door is not None: + self.active_door.reset() + self.active_door = None + self.monsters.reset_encounter() + def update_items(self, player_rect: pygame.Rect, room_rect: Optional[pygame.Rect]) -> None: """Spawn room items and process one player purchase request.""" diff --git a/src/monster.py b/src/monster.py index 66779b0..0fe4def 100644 --- a/src/monster.py +++ b/src/monster.py @@ -180,6 +180,14 @@ class MonsterManager: for monster in self.monsters: monster.wake_up() + def reset_encounter(self) -> None: + """Stop the room attack and put all active monsters back into normal state.""" + + self.active_target_tile = None + self.active_door = None + for monster in self.monsters: + monster.sleep() + def update( self, dt: float,