Commit graph

37 commits

Author SHA1 Message Date
megaproxy
ac655b07e6 Remove \!swap command and redirect pet management to web interface
- Removed \!swap command as team management moved to website
- Added redirect messages pointing users to team builder web interface
- Streamlined pet management workflow through unified web experience
- Maintained existing \!pets command functionality with web redirect

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 16:58:35 +01:00
megaproxy
d05b2ead53 Fix exploration and battle system state management bugs
- Fixed exploration bug: prevent multiple \!explore when encounter is active
- Fixed battle bug: prevent starting multiple battles from exploration encounters
- Enforced exploration encounter workflow: must choose fight/capture/flee before exploring again
- Fixed \!gym challenge to use player's current location instead of requiring location parameter
- Added proper state management to prevent race conditions
- Improved user experience with clear error messages for active encounters

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 16:58:18 +01:00
megaproxy
3c628c7f51 Implement team order persistence and validation system
- Added team_order column migration for numbered team slots (1-6)
- Implemented get_next_available_team_slot() method
- Added team composition validation for team builder
- Created pending team change system with PIN verification
- Added apply_team_change() for secure team updates
- Enhanced team management with proper ordering and constraints

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 16:57:54 +01:00
megaproxy
61463267c8 Redirect inventory commands to web interface with jump points
- Updated \!inventory, \!inv, and \!items commands to redirect to player profile
- Added #inventory jump point for direct section navigation
- Improved user experience with web-based inventory management
- Enhanced UX with helpful explanatory messages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 16:57:27 +01:00
megaproxy
30dcb7e4bc Update bot initialization to pass bot instance to webserver
- Modified PetBotWebServer instantiation to include bot parameter
- Enables IRC PIN delivery for team builder functionality
- Maintains existing webserver functionality while adding IRC integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 16:56:55 +01:00
megaproxy
ff14710987 Fix team builder interface and implement working drag-and-drop functionality
- Completely rewrote team builder with unified template system
- Fixed center alignment issues with proper CSS layout (max-width: 1200px, margin: 0 auto)
- Implemented working drag-and-drop between storage and numbered team slots (1-6)
- Added double-click backup method for moving pets
- Fixed JavaScript initialization and DOM loading issues
- Added proper visual feedback during drag operations
- Fixed CSS syntax errors that were breaking f-string templates
- Added missing send_json_response method for AJAX requests
- Integrated IRC PIN delivery system for secure team changes
- Updated PetBotWebServer constructor to accept bot instance for IRC messaging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 16:55:58 +01:00
megaproxy
8e9ff2960f Implement case-insensitive command processing across all bot modules
Added normalize_input() function to BaseModule for consistent lowercase conversion of user input. Updated all command modules to use normalization for commands, arguments, pet names, location names, gym names, and item names. Players can now use any capitalization for commands and arguments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 21:57:51 +01:00
megaproxy
39ba55832d Fix team builder issues, Added startup import checks for consistency
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 21:48:18 +01:00
megaproxy
08f7aa8ea8 Fix database constraints and team builder save functionality
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 21:10:28 +01:00
megaproxy
60dbcae113 Fix drag-and-drop dataTransfer errors and add double-click backup
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 17:19:37 +01:00
megaproxy
bbaba99020 Rewrite drag-and-drop with comprehensive testing and debugging
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 17:17:33 +01:00
megaproxy
d245454231 Fix drag-and-drop functionality in team builder
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 17:14:53 +01:00
megaproxy
7d49730a5f Enhance team builder with full drag-and-drop and detailed pet stats
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 17:11:54 +01:00
megaproxy
9cf2231a03 Implement secure team builder with PIN verification system
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 17:08:02 +01:00
megaproxy
3098be7f36 Implement pet nicknames system - database, IRC command, validation
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 16:57:41 +01:00
megaproxy
4de0c1a124 Update documentation - 2025-07-14 16:44
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 16:44:35 +01:00
megaproxy
124336e65f Update documentation - 2025-07-14 16:41
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 16:41:48 +01:00
megaproxy
9552cfbe4e Update documentation - 2025-07-14 16:39
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 16:39:46 +01:00
megaproxy
729984be66 Fix critical player profile crash with encounter data
Bug Fix:
- Fixed 'int' object has no attribute 'split' error when viewing player profiles
- Issue was incorrect column mapping in encounter data SQL query
- species_id (integer) was being treated as first_encounter_date (string)

Technical Changes:
- Use existing database.get_player_encounters() method with proper row factory
- Use existing database.get_encounter_stats() method for consistency
- Added robust error handling for date formatting in both encounters and gym badges
- Added try/catch blocks to prevent profile crashes from data issues

Data Safety:
- Added isinstance() checks before calling .split() on date strings
- Graceful fallback to 'Unknown' for malformed dates
- Error handling ensures other users won't experience crashes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 16:36:00 +01:00
megaproxy
1ce7158200 Add comprehensive web interface enhancements and encounter tracking
Major Features Added:
- Complete petdex page showing all available pets with stats, types, evolution info
- Encounter tracking system recording pet discoveries and catch statistics
- Gym badges display on player profiles with victory counts and dates
- Enhanced player profiles with discovery progress and completion percentages

Technical Implementation:
- New /petdex route with rarity-organized pet encyclopedia
- Database encounter tracking with automatic integration into exploration/catch
- Updated webserver.py with encounter data fetching and display
- Fixed battle_system.py syntax error in gym battle completion logic
- Organized project by moving unused bot files to backup_bots/ folder

Database Changes:
- Added player_encounters table for tracking discoveries
- Added methods: record_encounter, get_player_encounters, get_encounter_stats
- Enhanced player profile queries to include gym badges and encounters

Web Interface Updates:
- Petdex page with search stats, rarity grouping, and spawn location info
- Player profiles now show species seen, completion %, gym badges earned
- Encounter section displaying discovered pets with catch statistics
- Updated navigation to include petdex link on main game hub

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 16:32:25 +01:00
megaproxy
bd455f1be5 Implement comprehensive experience and leveling system
**NEW FEATURES:**
- Complete EXP system with Pokemon-style stat calculation
- Level-based stat growth and automatic HP restoration on level up
- Experience gain from catches and battle victories
- Visual level up notifications with stat increases

**EXPERIENCE SOURCES:**
- Successful catches: 5 EXP × caught pet level
- Wild battle victories: 10 EXP × defeated pet level
- Gym battle victories: 20 EXP × defeated pet level (2x multiplier)

**LEVELING MECHANICS:**
- Cubic growth formula: level³ × 4 - 12 (smooth progression)
- Level cap at 100
- Stats recalculated on level up using Pokemon formulas
- Full HP restoration on level up
- Real-time stat increase display

**EXPERIENCE DISPLAY:**
- \!team command now shows "EXP: X to next" for active pets
- Level up messages show exact stat gains
- Experience awarded immediately after catch/victory

**STAT CALCULATION:**
- HP: (2 × base + 31) × level / 100 + level + 10
- Other stats: (2 × base + 31) × level / 100 + 5
- Progressive growth ensures meaningful advancement

**BATTLE INTEGRATION:**
- EXP awarded after wild battles, gym individual battles, and catches
- Different multipliers for different victory types
- First active pet receives all experience

This creates proper RPG progression where pets grow stronger through gameplay,
encouraging both exploration (catches) and combat (battles) for advancement.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 16:11:20 +01:00
megaproxy
6053161b6e Fix gym battle completion error handling
- Fixed tuple index out of range error in end_gym_battle()
- Added proper row factory and named column access in database queries
- Added exception handling and bounds checking in gym battle completion
- Added debug logging to track gym battle state issues
- Improved error messages for gym battle failures

Fixes: "tuple index out of range" error when gym battles complete

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 13:11:10 +01:00
megaproxy
710ff5ac9c Implement interactive gym battle system with full battle engine integration
**NEW FEATURES:**
- Full 3-pet gym battles with turn-based combat
- Interactive attack selection (\!attack <move>)
- Item usage during gym battles (\!use <item>)
- Progressive battles through gym leader's team
- Proper gym battle state tracking and advancement

**BATTLE MECHANICS:**
- Players fight through all 3 gym pets sequentially
- Can use all battle commands: \!attack, \!moves, \!use
- Cannot flee from gym battles (must \!forfeit instead)
- Battle engine integration maintains all existing combat features
- Automatic progression to next gym pet when one is defeated

**GYM BATTLE FLOW:**
1. \!gym challenge "gym name" - starts battle with first pet
2. Standard turn-based combat using \!attack <move>
3. When gym pet defeated, automatically advance to next pet
4. Complete victory after defeating all 3 gym pets
5. \!forfeit available to quit gym battle with honor

**DATABASE UPDATES:**
- Added active_gym_battles table for state tracking
- Gym battle progression and team management
- Integration with existing player_gym_battles for victory tracking

**COMMANDS ADDED:**
- \!forfeit - quit current gym battle
- Enhanced \!gym challenge with full battle system
- Battle system now handles gym vs wild battle contexts

This creates the proper Pokemon-style gym experience where players strategically
battle through the gym leader's team using their full arsenal of moves and items.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 13:08:25 +01:00
megaproxy
dc49e5f9c9 Add missing get_active_pets method to database
- Added get_active_pets() method that returns all active pets for a player
- Method includes pet details and species information needed for gym battles
- Fixes "get_active_pets" AttributeError in gym challenge command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 13:00:34 +01:00
megaproxy
c1f82b6c6d Improve gym challenge command with location-aware and case-insensitive search
- Updated gym challenge to automatically search in player's current location first
- Made gym search case-insensitive (forest guardian, Forest Guardian, FOREST GUARDIAN all work)
- Added helpful error messages showing available gyms in current location
- Updated gym info command to also prioritize current location and be case-insensitive
- Added get_gym_by_name_in_location() database method for location-specific searches
- Improved user experience by removing need to travel between locations to challenge gyms

Fixes: \!gym challenge forest guardian now works correctly

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 12:57:36 +01:00
megaproxy
4ccfdd3505 Update help page styling to match players page design
- Added back link to Game Hub for consistent navigation
- Updated header styling to match other pages (smaller, consistent padding)
- Restructured sections to use section-content wrapper like other pages
- Removed custom background gradients for consistency
- Updated title to match "PetBot - Command Help" pattern
- Maintained all existing content and functionality

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 12:53:11 +01:00
megaproxy
c2eb846b77 Update help page with comprehensive gym battle documentation
- Added complete gym battle system documentation
- Added visual gym leader cards for all 6 gyms
- Updated inventory system with item rarity information
- Applied proper dark theme styling to match other web pages
- Added "NEW\!" badges for recent features
- Updated to version 0.2.0
- Organized content into logical sections for better readability

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 12:43:05 +01:00
megaproxy
87eff2a336 Implement gym battle system with location-based challenges
🏛️ Gym Battle System - Phase 1:
- Complete database schema with 4 new tables (gyms, gym_teams, player_gym_battles)
- 6 unique gyms across all locations with themed leaders and badges
- Location-based challenges (must travel to gym location)
- Difficulty scaling system (gets harder with each victory)
- Badge tracking and progress system

🎯 Features Added:
- \!gym - List gyms in current location with progress
- \!gym list - Show all gyms across all locations
- \!gym challenge "<name>" - Challenge a gym (location validation)
- \!gym info "<name>" - Get detailed gym information
- \!gym status - Quick status overview

🏆 Gym Roster:
- Starter Town: Forest Guardian (Grass) - Trainer Verde
- Whispering Woods: Nature's Haven (Grass) - Elder Sage
- Electric Canyon: Storm Master (Electric) - Captain Volt
- Crystal Caves: Stone Crusher (Rock) - Miner Magnus
- Frozen Tundra: Ice Breaker (Ice/Water) - Arctic Queen
- Dragon's Peak: Dragon Slayer (Fire) - Champion Drake

⚔️ Battle Mechanics:
- Teams scale with victory count (20% stat increase per win)
- First victory awards badge + bonus rewards
- Repeat challenges give scaling rewards
- Simulated battles (full battle system integration pending)

🔧 Technical Implementation:
- Config-driven gym system (config/gyms.json)
- Scalable database design for easy expansion
- Location validation prevents remote challenges
- Automatic gym data loading on startup

Next phase: Integrate with full battle system and add web interface badges.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 12:36:40 +01:00
megaproxy
d74c6f2897 Migrate repository from GitHub to Forgejo
🔄 Repository Migration:
- Migrated from GitHub to self-hosted Forgejo server
- Updated git remote to ssh://git@192.168.1.249:2230/megaproxy/Petbot.git
- Updated README.md with correct clone URL
- Removed GitHub-specific setup files (GITHUB_AUTH_SETUP.md, setup-github.sh)
- Cleaned up temporary debugging files from database fix

🏠 New Repository Location:
- Server: 192.168.1.249:2230 (Forgejo)
- Repository: megaproxy/Petbot
- All commit history and tags preserved

 Migration Complete:
- All commits successfully pushed to Forgejo
- Version tags (v0.1, v0.2.0) migrated
- Future commits will automatically push to Forgejo server

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 12:26:50 +01:00
megaproxy
86b5fa998c Prevent future database orphaning by reverting to INSERT OR IGNORE
🛡️ Prevention Fix:
- Reverted pet_species loading back to INSERT OR IGNORE
- Reverted locations loading back to INSERT OR IGNORE
- Reverted location_spawns loading back to INSERT OR IGNORE
- Kept achievements as INSERT OR REPLACE (they need updates)

🔧 Why This Fix:
- INSERT OR REPLACE deletes existing records and creates new ones with new IDs
- This orphans any player data that references the old IDs
- INSERT OR IGNORE preserves existing records and their IDs
- New pets/locations can still be added, but existing ones won't be deleted

 Result:
- Current players: Already fixed with manual database repair
- Future players: Will use existing stable IDs
- Data updates: Achievements can still be updated, reference data is stable
- No more orphaned foreign key references possible

This ensures the database ID orphaning issue can never happen again.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 12:13:20 +01:00
megaproxy
821c6f570c Fix database loading to update existing records
🐛 Problem Fixed:
- Achievement changes weren't being applied because INSERT OR IGNORE doesn't update
- New pets and location spawns weren't being loaded for the same reason
- Database was stuck with old configuration data

🔧 Changes:
- Changed INSERT OR IGNORE to INSERT OR REPLACE for achievements
- Changed INSERT OR IGNORE to INSERT OR REPLACE for pet species
- Changed INSERT OR IGNORE to INSERT OR REPLACE for locations and spawns
- This ensures config file changes are properly loaded into database

⚠️ Restart Required:
- Bot needs to be restarted to reload the updated configurations
- After restart, Whispering Woods should be unlocked by Pet Collector achievement
- New Grass pets (Vinewrap, Bloomtail) will be available in Whispering Woods

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 11:55:47 +01:00
megaproxy
38ef0b8899 Fix achievement progression by moving Whispering Woods unlock
🎯 Achievement System Improvements:
- Pet Collector achievement (5 pets) now unlocks Whispering Woods
- Nature Explorer achievement (3 Grass species) no longer unlocks location
- Added 2 new Grass-type pets: Vinewrap and Bloomtail
- Updated Whispering Woods spawns to include new Grass pets

🐛 Problem Solved:
- Broke the catch-22 where players needed achievements to access locations
- But needed species from those locations to earn achievements
- Now players can progress naturally: 5 pets → Whispering Woods → more Grass species

🆕 New Pets:
- Vinewrap (Grass) - Defensive grass pet with vine abilities
- Bloomtail (Grass) - Fast grass pet with flower-based attacks

🔧 Updated Spawns:
- Whispering Woods: 3 Grass species (Leafy, Vinewrap, Bloomtail) + rare Flamey
- Players can now complete Nature Explorer achievement after accessing Whispering Woods

📚 Documentation:
- Updated README with new achievement progression
- Clarified unlock sequence and achievement relationships

This change makes the game progression much more logical and accessible for new players.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 11:46:35 +01:00
megaproxy
6791d49c80 Fix travel command location name matching
🐛 Fixed Issues:
- "dragon's peak" now properly matches "Dragon's Peak" location
- "dragons peak" (without apostrophe) now works
- Added case-insensitive location name matching
- Added common variations mapping for all locations

🔧 Changes:
- modules/exploration.py: Enhanced \!travel command with location mappings
- Added support for variations like "dragons peak", "dragon peak", "dragons-peak"
- Maintains backward compatibility with existing location names

Now players can use various formats to travel to locations without worrying about exact capitalization or apostrophes.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 00:33:12 +01:00
megaproxy
3f3b66bfaa Update all web links to use petz.rdx4.com domain
🌐 Updated URLs:
- \!help command now points to http://petz.rdx4.com/help
- \!pets command now points to http://petz.rdx4.com/player/{nickname}
- README.md updated to reference petz.rdx4.com
- Web server startup messages show both local and public URLs

🔧 Changes:
- modules/core_commands.py: Updated help URL
- modules/pet_management.py: Updated player profile URL
- webserver.py: Added public URL display in startup messages
- README.md: Updated web interface section

Users will now receive public URLs that work externally instead of localhost URLs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 00:27:53 +01:00
megaproxy
db144da24f Add complete item collection system (v0.2.0)
🎒 Item Collection System:
- 16 unique items across 5 categories (healing, battle, rare, location, special)
- Rarity tiers: Common, Uncommon, Rare, Epic, Legendary with symbols
- 30% chance to find items during exploration
- Location-specific items (shells, mushrooms, crystals, runes)
- Inventory management with \!inventory and \!use commands
- Web interface integration showing player inventories
- Consumable items: healing potions, battle boosters, lucky charms

🔧 Technical Updates:
- Added items and player_inventory database tables
- New Inventory module for item management
- Updated game engine with item discovery system
- Enhanced web interface with inventory display
- Item initialization from config/items.json

🆕 New Commands:
- \!inventory / \!inv / \!items - View collected items by category
- \!use <item name> - Use consumable items on active pets

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 00:19:57 +01:00
megaproxy
e0edcb391a Add version control and changelog system
 Added automatic version management:
- CHANGELOG.md with complete v0.1.0 history
- Version control helper script for automated commits
- GitHub setup script for easy repository connection
- Semantic versioning support (Major.Minor.Patch)

🔄 Future workflow automation:
- Automatic changelog updates
- Descriptive commit messages
- Version tagging for releases
- Automatic GitHub pushes

🔧 Generated with Claude Code
🤖 Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 00:01:54 +01:00
megaproxy
47f160a295 Initial commit: Complete PetBot IRC Game
🎮 Features implemented:
- Pokemon-style pet collection and battles
- Multi-location exploration system
- Dynamic weather with background updates
- Achievement system with location unlocks
- Web dashboard for player stats
- Modular command system
- Async database with SQLite
- PM flood prevention
- Persistent player data

🌤️ Weather System:
- 6 weather types with spawn modifiers
- 30min-3hour dynamic durations
- Background task for automatic updates
- Location-specific weather patterns

🐛 Recent Bug Fixes:
- Database persistence on restart
- Player page SQLite row conversion
- Achievement count calculations
- Travel requirement messages
- Battle move color coding
- Locations page display

🔧 Generated with Claude Code
🤖 Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 23:57:39 +01:00