If wielding witch broom instantly land when jumping by pressing down.

This commit is contained in:
Storm Dragon
2025-09-07 14:50:09 -04:00
parent 56a78aa4ff
commit 3034712c95

View File

@@ -28,6 +28,7 @@ class WickedQuest:
self.runLock = False # Toggle behavior of the run keys
self.saveManager = SaveManager()
self.survivalGenerator = None
self.lastBroomLandingTime = 0 # Timestamp to prevent ducking after broom landing
self.survivalWave = 1
self.survivalScore = 0
@@ -161,10 +162,17 @@ class WickedQuest:
currentTime = pygame.time.get_ticks()
# Update running and ducking states
if (keys[pygame.K_s] or keys[pygame.K_DOWN]) and not player.isDucking:
player.duck()
elif (not keys[pygame.K_s] and not keys[pygame.K_DOWN]) and player.isDucking:
player.stand()
# Don't handle ducking if jumping (down key is used for instant landing with broom)
# Also prevent ducking for 250ms after broom landing to avoid conflict
broomLandingGracePeriod = 250 # milliseconds
recentBroomLanding = (hasattr(self, 'lastBroomLandingTime') and
currentTime - self.lastBroomLandingTime < broomLandingGracePeriod)
if not player.isJumping and not recentBroomLanding:
if (keys[pygame.K_s] or keys[pygame.K_DOWN]) and not player.isDucking:
player.duck()
elif (not keys[pygame.K_s] and not keys[pygame.K_DOWN]) and player.isDucking:
player.stand()
if self.runLock:
player.isRunning = not (keys[pygame.K_SPACE] or keys[pygame.K_LSHIFT] or keys[pygame.K_RSHIFT])
@@ -241,7 +249,18 @@ class WickedQuest:
player.jumpStartTime = currentTime
play_sound(self.sounds['jump'])
# Check if jump should end
# Handle instant landing with broom (press down while jumping)
if (player.isJumping and (keys[pygame.K_s] or keys[pygame.K_DOWN]) and
player.currentWeapon and player.currentWeapon.name == "witch_broom"):
player.isJumping = False
play_sound(self.sounds[player.footstepSound]) # Landing sound
# Reset step distance tracking after landing
player.distanceSinceLastStep = 0
player.lastStepTime = currentTime
# Set timestamp to prevent immediate ducking after broom landing
self.lastBroomLandingTime = currentTime
# Check if jump should end naturally
if player.isJumping and currentTime - player.jumpStartTime >= player.get_current_jump_duration():
player.isJumping = False
play_sound(self.sounds[player.footstepSound]) # Landing sound