Add configurable auto-rearm feature when duck is shot/befriended
- Add 'rearm_on_duck_shot' config option (defaults to true) - Automatically rearm all disarmed players when any duck is successfully shot - Also applies when ducks are successfully befriended - Includes error handling and logging for the rearm process - Improves game flow by reducing downtime for players who made wild shots
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
"duck_spawn_min": 10,
|
||||
"duck_spawn_max": 30,
|
||||
"duck_timeout": 60,
|
||||
"befriend_success_rate": 75
|
||||
"befriend_success_rate": 75,
|
||||
"rearm_on_duck_shot": true
|
||||
|
||||
}
|
||||
28
src/game.py
28
src/game.py
@@ -169,6 +169,11 @@ class DuckGame:
|
||||
new_level = self.bot.levels.calculate_player_level(player)
|
||||
if new_level != old_level:
|
||||
self.bot.levels.update_player_magazines(player)
|
||||
|
||||
# If config option enabled, rearm all disarmed players when duck is shot
|
||||
if self.bot.get_config('rearm_on_duck_shot', False):
|
||||
self._rearm_all_disarmed_players()
|
||||
|
||||
self.db.save_database()
|
||||
return {
|
||||
'success': True,
|
||||
@@ -230,6 +235,10 @@ class DuckGame:
|
||||
if new_level != old_level:
|
||||
self.bot.levels.update_player_magazines(player)
|
||||
|
||||
# If config option enabled, rearm all disarmed players when duck is befriended
|
||||
if self.bot.get_config('rearm_on_duck_shot', False):
|
||||
self._rearm_all_disarmed_players()
|
||||
|
||||
self.db.save_database()
|
||||
return {
|
||||
'success': True,
|
||||
@@ -296,4 +305,21 @@ class DuckGame:
|
||||
'max_ammo': bullets_per_mag,
|
||||
'chargers': player['magazines'] - 1 # Spare magazines (excluding current)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def _rearm_all_disarmed_players(self):
|
||||
"""Rearm all players who have been disarmed (gun confiscated)"""
|
||||
try:
|
||||
rearmed_count = 0
|
||||
for player_name, player_data in self.db.players.items():
|
||||
if player_data.get('gun_confiscated', False):
|
||||
player_data['gun_confiscated'] = False
|
||||
# Update magazines based on player level
|
||||
self.bot.levels.update_player_magazines(player_data)
|
||||
player_data['current_ammo'] = player_data.get('bullets_per_magazine', 6)
|
||||
rearmed_count += 1
|
||||
|
||||
if rearmed_count > 0:
|
||||
self.logger.info(f"Auto-rearmed {rearmed_count} disarmed players after duck shot")
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in _rearm_all_disarmed_players: {e}")
|
||||
Reference in New Issue
Block a user