A few minor cleanups. Added game over sound to survival mode. Not sure how I missed that for this long lol.
This commit is contained in:
24
src/level.py
24
src/level.py
@@ -16,8 +16,9 @@ from src.skull_storm import SkullStorm
|
||||
|
||||
|
||||
class Level:
|
||||
def __init__(self, levelData, sounds, player):
|
||||
def __init__(self, levelData, sounds, player, levelPackName=None):
|
||||
self.sounds = sounds
|
||||
self.levelPackName = levelPackName
|
||||
self.objects = []
|
||||
self.enemies = []
|
||||
self.bouncing_items = []
|
||||
@@ -52,11 +53,22 @@ class Level:
|
||||
try:
|
||||
pygame.mixer.music.stop()
|
||||
if "ambience" in levelData:
|
||||
try:
|
||||
pygame.mixer.music.load(f"sounds/ambience/{levelData['ambience']}")
|
||||
pygame.mixer.music.play(-1) # Loop indefinitely
|
||||
except:
|
||||
pass
|
||||
ambientFile = levelData['ambience']
|
||||
|
||||
# Build list of paths to try (pack-specific first, then generic)
|
||||
ambiencePaths = []
|
||||
if self.levelPackName:
|
||||
ambiencePaths.append(f"sounds/{self.levelPackName}/ambience/{ambientFile}")
|
||||
ambiencePaths.append(f"sounds/ambience/{ambientFile}")
|
||||
|
||||
# Try each path until one works
|
||||
for ambiencePath in ambiencePaths:
|
||||
try:
|
||||
pygame.mixer.music.load(ambiencePath)
|
||||
pygame.mixer.music.play(-1) # Loop indefinitely
|
||||
break
|
||||
except:
|
||||
continue
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
@@ -86,6 +86,23 @@ class PowerUp(Object):
|
||||
player.get_health() + 1,
|
||||
player.get_max_health()
|
||||
))
|
||||
|
||||
# Check for 100 coin bonus after adding shin bone coins
|
||||
if player._coins >= 100:
|
||||
# Only give extra lives in story mode, not survival mode (level_id 999)
|
||||
if level.levelId != 999:
|
||||
# Extra life
|
||||
player._coins = 0
|
||||
player._lives += 1
|
||||
level.levelScore += 1000
|
||||
play_sound(self.sounds['get_extra_life'])
|
||||
else:
|
||||
# In survival mode, reset coin counter but give bonus score instead
|
||||
player._coins = 0
|
||||
level.levelScore += 2000 # Double score bonus instead of extra life
|
||||
speak("100 bone dust collected! Bonus score!")
|
||||
play_sound(self.sounds.get('survivor_bonus', 'bone_dust')) # Use survivor_bonus sound if available, fallback to bone_dust
|
||||
|
||||
self.check_for_nunchucks(player)
|
||||
elif self.item_type == 'witch_broom':
|
||||
broomWeapon = Weapon.create_witch_broom()
|
||||
|
||||
@@ -79,7 +79,7 @@ class WickedQuest:
|
||||
|
||||
# Pass existing player to new level
|
||||
pygame.event.clear()
|
||||
self.currentLevel = Level(levelData, self.get_sounds(), self.player)
|
||||
self.currentLevel = Level(levelData, self.get_sounds(), self.player, self.currentGame)
|
||||
|
||||
return True
|
||||
except FileNotFoundError:
|
||||
@@ -356,6 +356,7 @@ class WickedQuest:
|
||||
pygame.event.clear()
|
||||
self.currentLevel.player.scoreboard.add_high_score()
|
||||
|
||||
cut_scene(self.get_sounds(), "game_over")
|
||||
display_text(report)
|
||||
|
||||
def game_loop(self, startingLevelNum=1):
|
||||
@@ -546,7 +547,7 @@ class WickedQuest:
|
||||
|
||||
# Generate first survival segment
|
||||
levelData = self.survivalGenerator.generate_survival_level(self.survivalWave, 300)
|
||||
self.currentLevel = Level(levelData, self.get_sounds(), self.player)
|
||||
self.currentLevel = Level(levelData, self.get_sounds(), self.player, self.currentGame)
|
||||
|
||||
self.survival_loop()
|
||||
|
||||
@@ -660,7 +661,7 @@ class WickedQuest:
|
||||
self.player.xPos = playerX
|
||||
|
||||
# Create new level
|
||||
self.currentLevel = Level(levelData, self.get_sounds(), self.player)
|
||||
self.currentLevel = Level(levelData, self.get_sounds(), self.player, self.currentGame)
|
||||
|
||||
|
||||
def game_mode_menu(sounds):
|
||||
|
||||
Reference in New Issue
Block a user