diff --git a/files/instructions.txt b/files/instructions.txt index 499b9df..8477c93 100644 --- a/files/instructions.txt +++ b/files/instructions.txt @@ -35,6 +35,9 @@ Alt+Home: Ambience volume increase. Alt+Delete: Game sounds volume decrease. Alt+Insert: Game sounds volume increase. Backspace: Pause or resume the game. +F1: Navigate to previous speech message in history. +F2: Repeat current speech message. +F3: Navigate to next speech message in history. Notes diff --git a/libstormgames b/libstormgames index 5444ec4..c257128 160000 --- a/libstormgames +++ b/libstormgames @@ -1 +1 @@ -Subproject commit 5444ec4047db11903cbf7160ca0bd282d4bd0b2c +Subproject commit c2571289483ff38cac6cd2878fbbe4141165ba1e diff --git a/src/player.py b/src/player.py index 7d9b017..98f88bc 100644 --- a/src/player.py +++ b/src/player.py @@ -231,6 +231,8 @@ class Player: self._lives -= 1 # Mark that player died this frame to prevent revival self.diedThisFrame = True + # Record death time for delay before respawn/game over + self.deathTimestamp = pygame.time.get_ticks() # Stop all current sounds before playing death sound pygame.mixer.stop() try: diff --git a/wicked_quest.py b/wicked_quest.py index 08dc7a8..090f484 100755 --- a/wicked_quest.py +++ b/wicked_quest.py @@ -400,6 +400,13 @@ class WickedQuest: speak("Run lock " + ("enabled." if self.runLock else "disabled.")) elif event.key == pygame.K_BACKSPACE: pause_game() + # Speech history controls + elif event.key == pygame.K_F1: + speak_previous() + elif event.key == pygame.K_F2: + speak_current() + elif event.key == pygame.K_F3: + speak_next() # Volume controls (require Alt) elif altPressed: if event.key == pygame.K_PAGEUP: @@ -426,6 +433,16 @@ class WickedQuest: # Check for death first if self.currentLevel.player.get_health() <= 0: + # Check if we need to wait for death delay (2.5 seconds) + if hasattr(self.currentLevel.player, 'deathTimestamp'): + deathDelay = 2500 # 2.5 seconds + if currentTime - self.currentLevel.player.deathTimestamp < deathDelay: + # Still waiting for death delay to complete + clock.tick(60) + continue + # Death delay completed, remove timestamp + del self.currentLevel.player.deathTimestamp + if self.currentLevel.player.get_lives() <= 0: # Game over - use gameStartTime for total time pygame.mixer.stop() @@ -591,6 +608,13 @@ class WickedQuest: speak("Run lock " + ("enabled." if self.runLock else "disabled.")) elif event.key == pygame.K_BACKSPACE: pause_game() + # Speech history controls + elif event.key == pygame.K_F1: + speak_previous() + elif event.key == pygame.K_F2: + speak_current() + elif event.key == pygame.K_F3: + speak_next() # Volume controls (require Alt) elif altPressed: if event.key == pygame.K_PAGEUP: @@ -633,6 +657,16 @@ class WickedQuest: # Check for death first (following main game loop pattern) if self.currentLevel.player.get_health() <= 0: + # Check if we need to wait for death delay (2.5 seconds) + if hasattr(self.currentLevel.player, 'deathTimestamp'): + deathDelay = 2500 # 2.5 seconds + if currentTime - self.currentLevel.player.deathTimestamp < deathDelay: + # Still waiting for death delay to complete + clock.tick(60) + continue + # Death delay completed, remove timestamp + del self.currentLevel.player.deathTimestamp + if self.currentLevel.player.get_lives() <= 0: # Game over - stop all sounds pygame.mixer.stop()