Fixed some console command bugs.
This commit is contained in:
@@ -6,6 +6,9 @@ https://git.stormux.org/storm/wicked-quest
|
||||
Angus Kola: Beta testing.
|
||||
https://angus.kola.casa
|
||||
|
||||
Chris Wright: Beta testing.
|
||||
https://www.youtube.com/channel/UCDWOwfwJ18lQiXRubVBEFkw
|
||||
|
||||
Deedra Waters: Beta testing.
|
||||
|
||||
Ember Wolfe: Sound effects, beta testing, and visual verification of messages.
|
||||
|
||||
32
src/level.py
32
src/level.py
@@ -495,22 +495,22 @@ class Level:
|
||||
if self.player.get_health() < self.player.get_max_health():
|
||||
self.player.set_health(min(self.player.get_health() + 1, self.player.get_max_health()))
|
||||
|
||||
if self.player._coins % 100 == 0:
|
||||
# Only give extra lives in story mode, not survival mode (level_id 999)
|
||||
if self.levelId != 999:
|
||||
# Extra life
|
||||
self.player._coins = 0
|
||||
self.player._lives += 1
|
||||
self.levelScore += 1000
|
||||
play_sound(self.sounds["get_extra_life"])
|
||||
else:
|
||||
# In survival mode, reset coin counter but give bonus score instead
|
||||
self.player._coins = 0
|
||||
self.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
|
||||
if self.player._coins >= 100:
|
||||
# Only give extra lives in story mode, not survival mode (level_id 999)
|
||||
if self.levelId != 999:
|
||||
# Extra life
|
||||
self.player._coins -= 100
|
||||
self.player._lives += 1
|
||||
self.levelScore += 1000
|
||||
play_sound(self.sounds["get_extra_life"])
|
||||
else:
|
||||
# In survival mode, reset coin counter but give bonus score instead
|
||||
self.player._coins = 0
|
||||
self.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
|
||||
continue
|
||||
|
||||
# Handle spiderweb - collision depends on Y position
|
||||
|
||||
@@ -53,6 +53,42 @@ class WickedQuest:
|
||||
self.initialize_pack_sounds()
|
||||
return self.soundSystem if self.soundSystem else self.sounds
|
||||
|
||||
def get_closest_enemy_info(self):
|
||||
"""Get information about the closest enemy, returns None if no enemies."""
|
||||
if not self.currentLevel or not self.currentLevel.enemies:
|
||||
return None
|
||||
|
||||
# Find active enemies
|
||||
active_enemies = []
|
||||
for enemy in self.currentLevel.enemies:
|
||||
if enemy.isActive:
|
||||
distance = abs(enemy.xPos - self.player.xPos)
|
||||
direction = "right" if enemy.xPos > self.player.xPos else "left"
|
||||
active_enemies.append((enemy, distance, direction))
|
||||
|
||||
if not active_enemies:
|
||||
return None
|
||||
|
||||
# Sort by distance and get closest
|
||||
active_enemies.sort(key=lambda x: x[1])
|
||||
enemy, distance, direction = active_enemies[0]
|
||||
|
||||
# Convert distance to natural language
|
||||
if distance == 0:
|
||||
return f"{enemy.enemyType} right on top of you"
|
||||
elif distance <= 10:
|
||||
distance_desc = "very close"
|
||||
elif distance <= 30:
|
||||
distance_desc = "close"
|
||||
elif distance <= 60:
|
||||
distance_desc = "far"
|
||||
elif distance <= 100:
|
||||
distance_desc = "very far"
|
||||
else:
|
||||
distance_desc = "extremely far"
|
||||
|
||||
return f"{enemy.enemyType} {distance_desc} to the {direction}"
|
||||
|
||||
def process_console_command(self, command):
|
||||
"""Process console commands and execute their effects."""
|
||||
command = command.lower().strip()
|
||||
@@ -78,10 +114,11 @@ class WickedQuest:
|
||||
if 'get_extra_life' in self.get_sounds():
|
||||
play_sound(self.get_sounds()['get_extra_life'])
|
||||
elif command == "nekromantix":
|
||||
# Give 100 bone dust
|
||||
# Give 100 bone dust (both types)
|
||||
if self.player:
|
||||
self.player._boneDust += 100
|
||||
speak(f"100 bone dust granted. You now have {self.player.get_coins()} bone dust")
|
||||
self.player._coins += 100
|
||||
self.player.add_save_bone_dust(100)
|
||||
speak(f"100 bone dust granted. You now have {self.player.get_coins()} bone dust and {self.player.get_save_bone_dust()} save bone dust")
|
||||
if 'coin' in self.get_sounds():
|
||||
play_sound(self.get_sounds()['coin'])
|
||||
elif command == "calabrese":
|
||||
@@ -90,20 +127,19 @@ class WickedQuest:
|
||||
enemyCount = len([enemy for enemy in self.currentLevel.enemies if enemy.isActive])
|
||||
if enemyCount > 0:
|
||||
speak(f"{enemyCount} enemies remaining on this level")
|
||||
for enemy in self.currentLevel.enemies:
|
||||
if enemy.isActive:
|
||||
distance = abs(enemy.xPos - self.player.xPos)
|
||||
direction = "right" if enemy.xPos > self.player.xPos else "left"
|
||||
speak(f"{enemy.enemyType} {distance} units to the {direction}")
|
||||
closest_enemy_info = self.get_closest_enemy_info()
|
||||
if closest_enemy_info:
|
||||
speak(f"Closest enemy: {closest_enemy_info}")
|
||||
else:
|
||||
speak("No active enemies on this level")
|
||||
else:
|
||||
speak("No enemies found")
|
||||
elif command == "balzac":
|
||||
# Give 200 bone dust
|
||||
# Set bone dust to 200 (both types)
|
||||
if self.player:
|
||||
self.player._boneDust = 200
|
||||
speak(f"Bone dust set to 200")
|
||||
self.player._coins = 200
|
||||
self.player._saveBoneDust = 200
|
||||
speak(f"Bone dust set to 200. You now have {self.player.get_coins()} bone dust and {self.player.get_save_bone_dust()} save bone dust")
|
||||
if 'coin' in self.get_sounds():
|
||||
play_sound(self.get_sounds()['coin'])
|
||||
elif command == "blitzkid":
|
||||
@@ -429,9 +465,16 @@ class WickedQuest:
|
||||
speak(f"{player.get_health()} health of {player.get_max_health()}")
|
||||
if keys[pygame.K_i]:
|
||||
if self.currentLevel.levelId == 999:
|
||||
speak(f"Wave {self.survivalWave}. {player.get_health()} health of {player.get_max_health()}. {int(self.currentLevel.levelScore)} points on this wave so far. {player.get_lives()} lives remaining.")
|
||||
base_info = f"Wave {self.survivalWave}. {player.get_health()} health of {player.get_max_health()}. {int(self.currentLevel.levelScore)} points on this wave so far. {player.get_lives()} lives remaining."
|
||||
else:
|
||||
speak(f"Level {self.currentLevel.levelId}, {self.currentLevel.levelName}. {player.get_health()} health of {player.get_max_health()}. {int(self.currentLevel.levelScore)} points on this level so far. {player.get_lives()} lives remaining.")
|
||||
base_info = f"Level {self.currentLevel.levelId}, {self.currentLevel.levelName}. {player.get_health()} health of {player.get_max_health()}. {int(self.currentLevel.levelScore)} points on this level so far. {player.get_lives()} lives remaining."
|
||||
|
||||
# Add closest enemy info
|
||||
closest_enemy_info = self.get_closest_enemy_info()
|
||||
if closest_enemy_info:
|
||||
speak(f"{base_info} {closest_enemy_info}")
|
||||
else:
|
||||
speak(base_info)
|
||||
if keys[pygame.K_l]:
|
||||
speak(f"{player.get_lives()} lives")
|
||||
if keys[pygame.K_j]: # Check jack o'lanterns
|
||||
|
||||
Reference in New Issue
Block a user