Finally remembered to remove some debug statements. Added a finish level fanfare for the skeleton, complete with wicked laugh. Work on level 8, it used to be a tiny level, now it's better and has a ghost boss.

This commit is contained in:
Storm Dragon
2025-02-14 03:12:05 -05:00
parent 5953369440
commit c17d19fb6b
6 changed files with 94 additions and 8 deletions

View File

@@ -239,6 +239,87 @@
"collectible": true, "collectible": true,
"static": true "static": true
}, },
{
"x_range": [60, 85],
"y": 15,
"type": "skull_storm",
"damage": 4,
"maximum_skulls": 3,
"frequency": {
"min": 1,
"max": 3
}
},
{
"x_range": [335, 345],
"y": 0,
"enemy_type": "ghoul",
"health": 6,
"damage": 3,
"attack_range": 2,
"attack_pattern": {
"type": "hunter",
"turn_threshold": 4
}
},
{
"x_range": [335, 395],
"y": 15,
"type": "skull_storm",
"damage": 4,
"maximum_skulls": 5,
"frequency": {
"min": 2,
"max": 4
}
},
{
"x_range": [350, 360],
"y": 0,
"enemy_type": "ghoul",
"health": 6,
"damage": 3,
"attack_range": 2,
"attack_pattern": {
"type": "hunter",
"turn_threshold": 4
}
},
{
"x": 355,
"y": 0,
"type": "grave",
"sound": "grave",
"static": true,
"zombie_spawn_chance": 20,
"item": "guts"
},
{
"x_range": [365, 375],
"y": 0,
"enemy_type": "ghoul",
"health": 6,
"damage": 3,
"attack_range": 2,
"attack_pattern": {
"type": "hunter",
"turn_threshold": 4
}
},
{
"x_range": [393, 397],
"y": 3,
"sound": "coin",
"collectible": true,
"static": true
},
{
"x": 395,
"y": 3,
"sound": "coffin",
"type": "coffin",
"item": "jack_o_lantern"
},
{ {
"x_range": [400, 415], "x_range": [400, 415],
"y": 0, "y": 0,

BIN
sounds/_finish_level.ogg LFS Normal file

Binary file not shown.

View File

@@ -28,6 +28,7 @@ class Level:
self.rightBoundary = levelData["boundaries"]["right"] self.rightBoundary = levelData["boundaries"]["right"]
self.isLocked = levelData.get("locked", False) # Default to False if not specified self.isLocked = levelData.get("locked", False) # Default to False if not specified
self.levelId = levelData["level_id"] self.levelId = levelData["level_id"]
self.levelName = levelData.get("name", "Unnamed Level")
# Get footstep sound for this level, default to 'footstep' if not specified # Get footstep sound for this level, default to 'footstep' if not specified
self.footstepSound = levelData.get("footstep_sound", "footstep") self.footstepSound = levelData.get("footstep_sound", "footstep")

View File

@@ -133,8 +133,11 @@ class Player:
self._jack_o_lantern_count += 1 self._jack_o_lantern_count += 1
def add_guts(self): def add_guts(self):
"""Apply guts, increase max_health by 2""" """Apply guts, increase max_health by 2 if less than 20 else restore health"""
self._maxHealth += 2 if self._maxHealth < 20:
self._maxHealth += 2
else:
self._health = self._maxHealth
def throw_projectile(self): def throw_projectile(self):
"""Throw a jack o'lantern if we have any""" """Throw a jack o'lantern if we have any"""

View File

@@ -102,8 +102,6 @@ class PowerUp(Object):
def check_for_nunchucks(self, player): def check_for_nunchucks(self, player):
"""Check if player has materials for nunchucks and create if conditions are met""" """Check if player has materials for nunchucks and create if conditions are met"""
print("Checking for nunchucks.")
print(f"Player has {player.shinBoneCount} shin bones and {player.collectedItems}.")
if (player.shinBoneCount >= 2 and if (player.shinBoneCount >= 2 and
'guts' in player.collectedItems and 'guts' in player.collectedItems and
not any(weapon.name == "nunchucks" for weapon in player.weapons)): not any(weapon.name == "nunchucks" for weapon in player.weapons)):

View File

@@ -141,18 +141,18 @@ class WickedQuest:
# Update time in stats # Update time in stats
self.currentLevel.player.stats.update_stat('Total time', timeTaken, levelOnly=True) self.currentLevel.player.stats.update_stat('Total time', timeTaken, levelOnly=True)
report = [f"Level {self.currentLevel.levelId} Complete!"] report = [f"Time taken: {minutes} minutes and {seconds} seconds"]
report.append(f"Time taken: {minutes} minutes and {seconds} seconds")
# Add all level stats # Add all level stats
for key in self.currentLevel.player.stats.level: for key in self.currentLevel.player.stats.level:
if key != 'Total time': # Skip time since we already displayed it if key != 'Total time': # Skip time since we already displayed it
report.append(f"{key}: {self.currentLevel.player.stats.get_level_stat(key)}") report.append(f"{key}: {self.currentLevel.player.stats.get_level_stat(key)}")
# Stop all sounds and music # Stop all sounds and music then play fanfare
pygame.mixer.stop()
try: try:
speak(f"Level {self.currentLevel.levelId}, {self.currentLevel.levelName}, complete!")
pygame.mixer.music.stop() pygame.mixer.music.stop()
cut_scene(self.sounds, '_finish_level')
except: except:
pass pass