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_min": 10,
|
||||||
"duck_spawn_max": 30,
|
"duck_spawn_max": 30,
|
||||||
"duck_timeout": 60,
|
"duck_timeout": 60,
|
||||||
"befriend_success_rate": 75
|
"befriend_success_rate": 75,
|
||||||
|
"rearm_on_duck_shot": true
|
||||||
|
|
||||||
}
|
}
|
||||||
26
src/game.py
26
src/game.py
@@ -169,6 +169,11 @@ class DuckGame:
|
|||||||
new_level = self.bot.levels.calculate_player_level(player)
|
new_level = self.bot.levels.calculate_player_level(player)
|
||||||
if new_level != old_level:
|
if new_level != old_level:
|
||||||
self.bot.levels.update_player_magazines(player)
|
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()
|
self.db.save_database()
|
||||||
return {
|
return {
|
||||||
'success': True,
|
'success': True,
|
||||||
@@ -230,6 +235,10 @@ class DuckGame:
|
|||||||
if new_level != old_level:
|
if new_level != old_level:
|
||||||
self.bot.levels.update_player_magazines(player)
|
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()
|
self.db.save_database()
|
||||||
return {
|
return {
|
||||||
'success': True,
|
'success': True,
|
||||||
@@ -297,3 +306,20 @@ class DuckGame:
|
|||||||
'chargers': player['magazines'] - 1 # Spare magazines (excluding current)
|
'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