- HuntingSession dataclass with full cost/loot tracking
- Real-time cost calculations (weapon + armor + healing)
- Profit/Loss with return percentage
- Cost per kill and cost per hour metrics
- SessionManager for multiple sessions
- JSON export for session data
- Excludes shrapnel/UA from profit calculations
- Linear decay per damage point (0.05 PEC per HP)
- Plate only decays for damage it actually absorbs
- Added block_chance support for upgraded plates
- Improved documentation
- Ammo Burn from API is in ammo units, not PEC
- 1 ammo = 0.01 PEC = 0.0001 PED
- Was treating 848 ammo as 848 PEC (WRONG)
- Now correctly: 848 ammo = 8.48 PEC
- Fixes cost calculation: 30,552 PED/hr → ~330 PED/hr
- 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.