- Reorganized config.json into logical sections: connection, duck_spawning, duck_types, player_defaults, gameplay, features, limits
- Enhanced get_config() method to support dot notation (e.g., 'duck_types.normal.xp')
- Added comprehensive configurable parameters for all game mechanics
- Updated player creation to use configurable starting values
- Added individual timeout settings per duck type
- Made XP rewards, accuracy mechanics, and game limits fully configurable
- Fixed syntax errors in duck_spawn_loop function
Features:
- Three duck types spawn randomly with configurable chances
- All duck types use same spawn message - type is hidden until shot/timeout
- Golden ducks: 3-5 HP, 15 XP base, reveal type when hit but still alive
- Fast ducks: 1 HP, 12 XP, fly away in 30s instead of 60s
- Normal ducks: 1 HP, 10 XP, standard 60s timeout
Configuration options:
- golden_duck_chance: 0.15 (15% spawn rate)
- fast_duck_chance: 0.25 (25% spawn rate)
- golden_duck_xp: 15, golden_duck_min/max_hp: 3-5
- fast_duck_xp: 12, fast_duck_timeout: 30s
Duck type is revealed when:
- Shot (different messages for each type)
- Flies away (type-specific fly away messages)
- Golden ducks reveal immediately when hit (before death)
Maintains backward compatibility with existing game mechanics.
- 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
- Remove duplicate handle_rearm function definition
- Fix indentation in setup_signal_handlers function
- Add missing handle_disarm method
- Remove duplicate send_message in handle_ducklaunch
- All syntax errors resolved, bot should now start properly
- Add level-based magazine system (3 mags at L1, 2 at L3-5, 1 at L6-8)
- Replace ammo/chargers with current_ammo/magazines/bullets_per_magazine
- Add inventory system for storing and using shop items
- Add Magazine item to shop (15 XP, adds 1 magazine)
- Auto-migrate existing players from old ammo system
- Auto-update magazines when players level up
- Fix method name bugs (get_player_level -> calculate_player_level)
- Added configurable shop system with shop.json
- Created ShopManager class for modular shop handling
- Implemented level system with levels.json for difficulty scaling
- Added multiple duck spawn messages with random selection
- Enhanced message system with color placeholders
- Added ducks_befriended tracking separate from ducks_shot
- Updated help system and admin commands
- All systems tested and working correctly
- Remove all comments from Python source files for cleaner code
- Add comprehensive README.md with installation and usage instructions
- Add .gitignore to exclude runtime files and sensitive configuration
- Preserve all functionality while improving code readability
- Add dropped items tracking with timestamps per channel
- Items drop to ground (10% chance on duck kills) for any player to grab
- Add 60-second timeout for unclaimed items
- Background cleanup task removes expired items automatically
- First-come-first-served basis for item collection
- Eggdrop-style messaging for drops and successful snatches
- Reduced bread cost from 50 to 10 in all shop definitions
- Added channel_bread tracking system to track deployed bread per channel
- Added check in buy function to limit maximum 3 bread items per channel
- Initialized bread tracking in bot constructor
- Next step: implement bread deployment in use command
- Updated private message handler from delignore to unignore
- Fixed string length calculation for command parsing (10 chars for unignore vs 11 for delignore)
- Updated help text in private message handler to show unignore
- Added player_stats message type to force_public config
- Stats messages now always appear in public channel instead of as notices
- Non-admin users no longer see ignore/unignore commands in help
- Removed the 'Unknown command! Use !duckhelp' message for unrecognized commands
- Bot now only responds to valid duckhunt commands and stays silent for others
- This allows other bots in the channel to handle their own commands without interference
- Changed new player default 'notices' setting from True to False
- Added specific message types for duck_miss and wild_shot events
- Added duck_miss and wild_shot to force_public config settings
- All miss/wild shot messages now go to public channel by default
- Legacy users with notices=True will still get notices, but new users get public messages
- Fixed incomplete channel_records initialization in shoot command
- Fixed incomplete channel_records initialization in wild shot tracking
- All channel records now properly include: fastest_shot, last_duck, total_ducks, total_shots
- Resolves runtime error when update_channel_records tries to access fastest_shot field
✅ Completely removed all rate limiting functionality
✅ Made messages less compact and more readable
✅ Removed duck detector and auto shotgun from shop
Changes:
- Removed rate limiting: check_rate_limit(), is_rate_limited(), command_cooldowns
- Improved message formats with natural language
- Hit messages: 'Duck shot in X.Xs!' instead of 'X.Xs'
- Miss messages: 'You missed the duck!' instead of 'MISS'
- Reload messages: 'You reloaded your gun!' instead of 'RELOADED'
- Stats display: Full words instead of abbreviations
- Shop cleanup: Removed items #14 (auto shotgun) and #22 (duck detector)
- Better spacing and punctuation throughout
- Maintained efficiency while improving readability
✅ Fixed indentation issue in handle_shop function
✅ Added missing 'magenta' color code for IRC
✅ Shop command now works without errors
Fixes:
- Removed extra indentation causing syntax error
- Added magenta color (\x0313) to colors dictionary
- Shop display now shows all categories properly
✅ Fixed all syntax errors and indentation issues
✅ Made all command outputs more compact and readable
✅ Fixed shop display with full item names
✅ Improved message formats for better IRC experience
Changes:
- Fixed broken try-except blocks and indentation
- Compacted hit/miss/reload messages
- Fixed color code issues in logging
- All syntax errors resolved - bot fully functional
- Added inventory capacity limits (configurable, default 20 slots)
- Items are stored in inventory before use for strategic gameplay
- Fixed indentation issues and syntax errors
- Inventory system fully configurable via config.json settings