- Created core/attachments.py with full attachment type system
- Supports: Amplifiers, Scopes, Absorbers, Finder Amps, Platings, Enhancers, Implants
- Added DPP display to HUD overlay
- Attachment compatibility validation rules
- Project vision and completed features
- Current sprint: Advanced Loadout Manager
- Future sprints: Analytics, Export, Hunter/Miner/Crafter modules
- Attachment system planned
- Full cost tracking scope defined
- Non-Shrapnel loot = definite kill
- Shrapnel: every 2 Shrapnel = 1 kill (since mobs drop 1-2 Shrapnel)
- This handles mobs that drop only Shrapnel
- Reset Shrapnel counter on session start
- Add shots_fired counter to HUDStats
- Display SHOTS in HUD next to DAMAGE DEALT/TAKEN
- Track 1 shot per damage event
- Fix kills: count when non-Shrapnel loot is received
- Shrapnel excluded from kill count (every mob drops it)
- Use actual weapon decay (PEC) from API instead of broken DPP calculation
- Add decay and ammo_burn to weapon stats passed from Gear Selector
- Cost per shot = decay (in PEC) / 100 = PED
- HUD now shows: LOOT, COST, and PROFIT/LOSS (P/L)
- Profit/Loss color-coded: Green=profit, Red=loss, White=break-even
- Cost estimated from weapon DPP and damage dealt
- Weapon stats (DPP, cost/hour) passed when starting session
- Tracks cost per shot based on damage output
- All stats persisted in HUDStats dataclass
- Loads 3099+ real weapons from api.entropianexus.com
- Shows: Name, Type, Damage, DPP, Cost/hour, Efficiency
- Async loading in background thread (no UI freeze)
- Search by name
- Detailed stats preview
- Ready for production use
- Real API endpoint: https://api.entropianexus.com/weapons
- Loads 3099+ weapons from live database
- WeaponStats with full damage breakdown (stab, cut, impact, burn, etc.)
- Auto-calculated DPP and cost per hour
- Search by name
- Caching for performance
Example: ArMatrix BC-10 (L) - DPP: 0.05, Cost/hour: ~201 PED
- Full API client with async support
- Search, get_weapon, get_armor, get_tool methods
- Comprehensive data classes: WeaponStats, ArmorStats, ToolStats, GearLoadout
- Mock data fallback (6 weapons, 5 armors, 4 tools)
- Caching support for performance
- Ready for real API - just set mock_mode=False when endpoints available
API endpoints documented but not publicly available yet.
Using mock data for development and testing.
- Remove auto-kill counting on loot (was overcounting)
- Add GearSelectorDialog to select weapons/armor/tools from Nexus API
- Add Tools → Select Gear menu (Ctrl+G)
- Selected weapon now shows in HUD during session
- Uses mock data from nexus_api.py for now
- LogWatcher callbacks now queue events instead of direct DB access
- Main thread processes queue every 100ms
- Fixes 'SQLite objects created in a thread can only be used in that same thread' error
- Loot will now be properly recorded to database
- log_debug/info/warning/error now use _append_log directly
- Avoids AttributeError when log_watcher is None during init
- LogWatcher is only used for game events, not UI logging
- main_window: Actually call hud.start_session() to reset stats and start timer
- hud_overlay: Add SetWindowPos refresh after WinAPI style changes
- This fixes stats not resetting and drag not working on Windows
- Detect when Entropia Universe window is in foreground
- Auto-hide HUD when game loses focus (optional, enabled by default)
- Add set_auto_hide_with_game() method to toggle behavior
- Uses Windows API: GetForegroundWindow, GetWindowText
- Official REST API found at api.entropianexus.com
- Update integration strategy to use API instead of scraping
- Sprint 2 plan now reflects real API approach
- Add PLAYER_NAME setting to .env.example for avatar name configuration
- Add personal_global patterns for Swedish and English:
- EN: '[Globals] Player killed a creature (Creature) for X PED'
- SV: '[Globala] Player dödade ett kreatur (Creature) med X PED'
- Distinguish personal globals from other players' globals
- Show 🎉🎉🎉 YOUR GLOBAL notification with creature name
- Track personal_globals separately in session summary
Fixes#42 - Users can now see when THEY global vs others.
- Add pattern for broken enhancers: 'Your enhancer X on your Y broke'
- Track enhancer breaks with type and weapon info
- Display 💔 ENHANCER BROKEN notifications
- Include enhancers_broken in session summary
Based on user-provided reference code but with cleaner regex pattern.
- Add English self-heal: 'You healed yourself X points'
- Add English attribute gain: 'Your Agility has improved by X' / 'You gained X Agility'
- Update EVENT_PATTERNS with all language variants
- Add parsing logic for English heal and attribute events
Based on user-provided regex reference code.
- Add English critical hit pattern: 'Critical hit - Additional damage! You inflicted X'
- Display 💀 CRITICAL notifications with damage
- Filter out Universal Ammo from loot (converted shrapnel, not real loot)
- Critical hits count toward damage_dealt stats
Fixes loot inflation from shrapnel conversion and tracks critical strikes.
- Add English tier pattern: 'Your Weapon has reached tier X'
- Track weapon tier progression in real-time
- Display ⬆️ TIER UP notifications
- Include weapon_tiers in session summary
Gear progression now tracked alongside skills and loot.
- Fix skill pattern: 'You have gained' (not just 'You gained')
- Add level_up pattern: 'You have advanced to level X in Skill'
- Track skill experience gains in real-time
- Display 🎉 LEVEL UP notifications
- Include level_ups in session summary
- Add level_up event subscription
Skill progression now tracked alongside combat and loot events.
- Add English damage taken pattern: 'You took X points of damage'
- Add damage_dealt, damage_taken, evade subscriptions in main.py
- Update evade pattern for 'The target Evaded your attack' and 'The attack missed you'
- Show combat stats in session summary
- Display real-time damage dealt/taken/evade events
Combat events now tracked alongside loot for complete hunting analytics.
- Add python-dotenv to load .env configuration
- Read USE_MOCK_DATA and EU_CHAT_LOG_PATH from environment
- Use real game log when USE_MOCK_DATA=false
- Show correct mode (Mock vs Live) in header
- Import os module for environment access
Fixes issue where app always used mock data regardless of .env settings.
- English loot uses parentheses: 'x (2)' not 'x 2'
- Add English damage pattern: 'You inflicted X points of damage'
- Support both Swedish and English damage dealt events
- Fix empty bracket pattern: [System] [] Message
Tested with real log output showing English client format.