Commit Graph

163 Commits

Author SHA1 Message Date
LemonNexus 61c45fac8b refactor: remove separate shrapnel display option
- Shrapnel is now integrated in the loot summary box (S: prefix)
- Remove show_shrapnel config option
- Remove shrapnel UI section from _setup_ui
- Remove shrapnel checkbox from settings dialog
- Update window size calculation
- Keep shrapnel data in HUDStats for internal tracking
2026-02-09 23:12:13 +00:00
LemonNexus e356b037ac style: add dividers and styled boxes to HUD sections
- Add horizontal line separator after header
- Add styled boxes with borders for: gear, P/L, cost metrics, cost breakdown, combat, damage
- Add separators between major sections
- Footer separator before time/drag hint
- Each section has distinct background color and border
2026-02-09 23:09:52 +00:00
LemonNexus ab89b3350f style: remove all emojis from HUD, use text labels instead
- Change 🏆 Best: to Highest:
- Replace gear emojis with W:/A:/L: prefixes
- Replace 💎 with S: (Shrapnel)
- Replace 📦 with R: (Regular)
- Change settings button from ⚙️ to ... with border styling
- Clean, minimal text-based UI ready for custom icons later
2026-02-09 23:07:26 +00:00
LemonNexus e5c6878c6a fix: track highest loot per-kill (sum of all items from one mob)
- Use time-based grouping: loot within 2 seconds = same kill
- Sum all items from a kill to calculate total loot value
- Update highest_loot when a kill is complete (gap > 2 sec)
- Initialize kill tracking fields on session start
- Check final kill on session stop
2026-02-09 23:05:05 +00:00
LemonNexus ad3003b808 feat: add highest single loot tracking to HUD
- Add highest_loot field to HUDStats
- Display 🏆 Best: X.XX in loot summary section
- Track highest loot value in update_loot()
- Add to to_dict for persistence
- Gold color with trophy emoji for visibility
2026-02-09 23:03:16 +00:00
LemonNexus 6204b82c88 feat: detailed loot breakdown in HUD (Total, Shrapnel, Regular)
- Add loot_other field to HUDStats for non-shrapnel loot
- Loot summary now shows: Total | 💎 Shrapnel | 📦 Regular
- Each type with distinct color coding
- update_loot() now accepts is_shrapnel parameter
- Remove duplicate shrapnel UI section (now integrated in summary)
- Update window height for two-row summary
2026-02-09 22:59:16 +00:00
LemonNexus 64a68f3857 fix: add logger import and safe widget access for HUD rebuild
- Add logging import and logger instance
- Add _safe_set_text() helper to handle deleted widgets gracefully
- Use safe access in _refresh_display to prevent RuntimeError on rebuild
- Wrap stylesheet updates in try/except for safety
2026-02-09 22:55:22 +00:00
LemonNexus 7a55e3b246 feat: show both Cost and Loot together in summary row
- Change total cost display to show both Cost (red) and Loot (green) side by side
- Styled with background highlight for visibility
- Settings checkbox renamed to 'Cost & Loot Summary'
- Both values show PED amount
2026-02-09 22:53:42 +00:00
LemonNexus 61d2ad2019 fix: add missing UI elements for damage stats and shrapnel
- Add damage_dealt and damage_taken to HUDStats
- Add shrapnel_total to HUDStats
- Add UI elements for damage stats in _setup_ui
- Add UI element for shrapnel in _setup_ui
- Update window size calculation for new elements
- Update _refresh_display to show damage and shrapnel
- Add update_damage() and update_shrapnel() public methods
2026-02-09 22:52:33 +00:00
LemonNexus 5c4ce8f307 feat: add total cost display to HUD
- Add show_total_cost config option (enabled by default)
- Add total cost row between P/L and cost metrics
- Add Total Cost checkbox to settings dialog
- Update window size calculation for total cost row
- Update _refresh_display to show total cost
2026-02-09 22:49:10 +00:00
LemonNexus 4c084bd0cd fix: HUD rebuild stability and end_session compatibility
- Add end_session() as alias for stop_session() for backward compatibility
- Use delayed rebuild with QTimer.singleShot to avoid UI glitches
- Add container.show() at end of _setup_ui to ensure visibility
- Add error handling in _do_rebuild for recovery
2026-02-09 22:45:14 +00:00
LemonNexus f9b4d9a44b fix: add missing weapon_dpp and weapon_cost_per_hour parameters to start_session
- Added for backward compatibility with main_window.py
- These parameters are accepted but not used in the clean HUD
- Fixes TypeError when starting session
2026-02-09 22:41:49 +00:00
LemonNexus cd5f03c002 fix: HUD overlay initialization order and rebuild logic
- Create container before calling _update_window_size in _setup_ui
- Fix _rebuild_ui to delete and recreate container properly
- Add VISION_PLAN.md with comprehensive computer vision/OCR plan
2026-02-09 22:38:49 +00:00
LemonNexus 60fbf8d257 feat: new clean customizable HUD overlay
- hud_overlay_clean.py: Completely redesigned HUD
- Default view shows only essentials (P/L, Return %, Cost metrics, Gear)
- Optional stats hidden by default (cost breakdown, combat, damage)
- Settings button (⚙️) to customize visible elements
- Compact mode option
- Auto-sizing based on enabled features
- HUD_REDESIGN.md: Documentation and migration guide
2026-02-09 22:34:16 +00:00
LemonNexus 2959bfff89 fix: use loadout's cost_per_hit instead of armor decay tracker lookup
- Disable ArmorDecayTracker (it requires armor to be in hardcoded database)
- Use cost_per_hit from loadout directly when damage is taken
- This allows any armor to work, not just ones in the database
- Simplified approach: pre-calculate costs in loadout, use during session
2026-02-09 22:29:05 +00:00
LemonNexus 6cc10b14f1 fix: HUD drag functionality - auto-manage click-through mode
- Don't enable click-through on show (allows initial interaction)
- Disable click-through when mouse enters HUD (allows clicking/dragging)
- Enable click-through when mouse leaves (so HUD doesn't block game)
- Remove duplicate leaveEvent handler
- User can now hold Ctrl and drag without issues
2026-02-09 22:27:33 +00:00
LemonNexus ff31c68a44 fix: use ammo_burn and range_val in loadout_manager_simple _set_weapon
- weapon.ammo -> weapon.ammo_burn
- weapon.range -> weapon.range_val
2026-02-09 22:23:37 +00:00
LemonNexus ab266e9da9 fix: remove duplicate old code in weapon_selector _on_select
- Remove duplicate code block that used 'ammo' instead of 'ammo_burn'
- The old code was left behind after adding try/except wrapper
2026-02-09 22:21:23 +00:00
LemonNexus 3ae25503d6 fix: comprehensive null/invalid value handling in weapon selector
- Add detailed logging for skipped weapons
- Handle 'null', 'None', empty strings in decay/ammo values
- Safe Decimal conversion with try/except blocks
- Safe tooltip formatting for all weapon fields
- Safe preview update with error handling
2026-02-09 22:06:31 +00:00
LemonNexus f6ec57d2a2 fix: better error logging and validation in weapon selector
- Add debug logging for skipped weapons
- Handle empty strings and 'null' values
- Verify all files use correct API attribute names
2026-02-09 22:01:02 +00:00
LemonNexus d8b6ef998d fix: correct API attribute names in selectors
- weapon_selector: use ammo_burn (not ammo), range_val (not range)
- armor_selector: use id (not set_id)
- healing_selector: use get_all_healing_tools/get_all_healing_chips
- Add safe null handling for all API values
2026-02-09 21:59:46 +00:00
LemonNexus 5a9ffe5fb8 fix: correct import and handle null values in selectors
- loadout_manager_simple: use ArmorSelectorDialog (not ArmorSelectionDialog)
- weapon_selector: handle null/invalid decay/ammo values from API
- Add safe Decimal conversion with InvalidOperation handling
- Filter out weapons with invalid data before populating list
2026-02-09 21:56:33 +00:00
LemonNexus fe5efa181d fix: add missing selector dialogs for simplified loadout manager
- weapon_selector.py: Simple weapon selection with cost preview
- armor_selector.py: Armor set selection with decay estimation
- healing_selector.py: Healing tool selection with economy info
- All selectors calculate cost per use in real-time
- Search/filter functionality for quick finding
2026-02-09 21:51:54 +00:00
LemonNexus cdc9f5b825 refactor: simplified cost-focused Loadout Manager
- New LoadoutManagerSimple with clean cost-focused design
- LoadoutConfig now stores only: cost_per_shot/hit/heal + display names
- Legacy format support for backward compatibility
- Simplified LoadoutSelectionDialog with clear cost preview
- Updated MainWindow to use new simplified structure
- Removed 3 overlapping armor systems, replaced with single decay value
- JSON serialization is now simple and reliable

Key principle: Only store what's needed for cost tracking.
2026-02-09 21:41:55 +00:00
LemonNexus 83084252cc fix: save and load new armor system fields properly
- _get_current_config now includes new armor fields
- to_dict properly serializes current_armor_decay as string
- from_dict properly deserializes new armor fields
- _set_config restores new armor fields when loading
- Armor decay now flows from LoadoutManager to session
2026-02-09 21:21:32 +00:00
LemonNexus 0c843df4a7 fix: fix to_dict to handle new armor system fields
- Properly serialize current_armor_protection (ProtectionProfile)
- Properly serialize current_armor_pieces (list of ArmorPiece)
- Convert Decimals to strings for JSON serialization
2026-02-09 21:11:24 +00:00
LemonNexus 877ee96bcc fix: add new armor fields to LoadoutConfig and fix label references
- Added current_armor_set_name, current_armor_pieces, current_armor_protection, current_armor_decay to LoadoutConfig
- Fixed armor_set_label reference to use armor_summary_label
- Added hasattr checks for backward compatibility with old save files
2026-02-09 21:06:39 +00:00
LemonNexus 67eaf2d6a7 feat: rewrite armor system to use API-based sets with proper decay
- Created new ArmorSelectionDialog with two tabs:
  1. Full Armor Sets: Browse and select complete sets from API
  2. Custom Set: Build custom sets from individual pieces
- Armor sets show proper protection and decay per hit
- Decay calculated using official formula: 0.05 * (1 - durability/100000)
- New armor data flows correctly to session cost tracking
- Removed old hardcoded armor set methods
2026-02-09 21:00:43 +00:00
LemonNexus ca8f9f8eb3 fix: pass full loadout info to session and display gear names in HUD
- Updated loadout_selected signal to emit dict with full loadout info
- _on_loadout_selected_for_session now extracts weapon/armor/healing names
- HUD now shows gear names from selected loadout
- Cost tracker skipped for JSON-based loadouts (need DB save first)
2026-02-09 20:50:26 +00:00
LemonNexus d7f1e61533 feat: connect loadout selection to session cost tracking
- start_session now uses _session_loadout_name for HUD display
- Added _setup_session_cost_tracker to initialize SessionCostTracker
- Added _on_cost_update callback to update HUD with live costs
- Loadout name now appears in HUD instead of 'Default'
2026-02-09 20:44:28 +00:00
LemonNexus 43657eaf1e fix: correct cost calculations in loadout selection dialog
- weapon_decay_pec is in PEC (divide by 100 to get PED)
- weapon_ammo_pec is ammo count (multiply by 0.0001 to get PED)
- armor_decay_pec is in PEC (divide by 100 to get PED)
- heal_cost_pec is in PEC (divide by 100 to get PED)
2026-02-09 20:37:52 +00:00
LemonNexus f5a0cf1514 debug: add debug output to trace cost calculation issue in loadout selection 2026-02-09 20:34:04 +00:00
LemonNexus 2c2249f45e fix: loadout selection dialog now reads from both database and JSON files
- Added support for loading JSON-saved loadouts
- Dialog now scans ~/.lemontropia/loadouts/ directory
- Displays both database and file-based loadouts
- Calculates costs from JSON data for preview
2026-02-09 20:30:00 +00:00
LemonNexus c71f6a8647 feat: add loadout selection dialog when starting session
- Modified on_start_session to show LoadoutSelectionDialog first
- Added _on_loadout_selected_for_session callback
- User can now select a loadout or skip before session starts
- Selected loadout info is logged and stored for session
2026-02-09 20:26:51 +00:00
LemonNexus fb0d1b4e40 fix: add mindforce_decay_pec to decimal_fields in LoadoutConfig.from_dict
- Was causing 'Decimal + str' error when loading saved loadouts
- Added 'mindforce_decay_pec' to the list of fields converted to Decimal
2026-02-09 20:23:24 +00:00
LemonNexus 97af63cbf9 fix: add safe decimal conversion to AttachmentConfig.from_dict and better error logging
- AttachmentConfig.from_dict now uses safe_decimal() for all decimal fields
- Added traceback logging to _load_saved_loadouts to see exact error location
- Handles int/float/Decimal/string values for all numeric fields
2026-02-09 20:20:58 +00:00
LemonNexus a0211a8425 fix: handle both NexusArmorSet and ArmorSet types in _on_equip_full_set
- Check if pieces is a list (NexusArmorSet) or dict (ArmorSet)
- Route to API method for NexusArmorSet
- Keep hardcoded logic for ArmorSet from combo box
2026-02-09 19:30:48 +00:00
LemonNexus 32cebbc001 debug: add detailed debug info to armor set equip popup
- Shows set protection values (Impact, Cut, Stab, etc.)
- Shows each piece's assigned total protection
- Shows first equipped piece's actual protection value
- Helps trace where protection is getting lost
2026-02-09 19:28:27 +00:00
LemonNexus 343142162f fix: correct _on_armor_changed to handle NexusArmorSet type
- NexusArmorSet.pieces is List[str], not Dict
- Removed code that tried to call .items() on the list
- Now simply clears current_armor_set when pieces are modified
2026-02-09 19:27:09 +00:00
LemonNexus fa427188d9 fix: add error handling and validation to LoadoutConfig.from_dict
- Added try/except with logging around from_dict
- Added validation for armor_plates to handle non-dict values
- Added error handling for Decimal/int conversions
- Better error messages to diagnose loading issues
2026-02-09 19:25:56 +00:00
LemonNexus d265bc2113 debug: add logging to trace armor calculation issue
- Added debug logging to _get_current_config to see pieces found
- Added debug logging to _update_calculations to see equipped armor state
- This will help diagnose why armor shows 0 protection
2026-02-09 19:20:01 +00:00
LemonNexus 22b4e6e8bb fix(api): use armor set's total protection for each piece
- API returns 0 protection for individual armor pieces
- Protection values are only at the armor set level (Defense field)
- Now each piece gets the full set protection values assigned
- Removed equip_full_set call with wrong type (NexusArmorSet vs ArmorSet)
- Individual pieces now have correct protection for calculations
2026-02-09 19:16:55 +00:00
LemonNexus 437f6b3027 fix(ui): properly update ArmorSlotWidget UI when setting piece from API
- Fixed set_piece() to use protection_label instead of non-existent piece_name_label
- Now updates protection display when piece is set
- Adds piece to combo if not already present
- Properly stores current_piece and calls _update_total()
2026-02-09 19:08:35 +00:00
LemonNexus a349a85cbe fix(ui): use Decimal for armor decay calculation to avoid type error
- Fixed: Decimal * float is not supported
- Now using Decimal for all operands in decay calculation
2026-02-09 19:04:21 +00:00
LemonNexus 297552fd1c fix(ui): improve armor set piece slot detection
- Added name-based slot detection as fallback when Type field doesn't match
- Added more slot mapping variations (chest, armguards, thighguards, etc.)
- Added _get_slot_from_name() helper for name-based detection
- Now correctly equips all 7 pieces of armor sets like Frontier Adjusted
2026-02-09 19:01:23 +00:00
LemonNexus f2d1162d27 fix(ui): correct attribute name for armor slots in loadout manager
- Changed self.armor_slots to self.slot_widgets to match actual attribute name
- Fixes AttributeError when selecting full armor sets
2026-02-09 18:52:00 +00:00
LemonNexus 3bdf86ab4c fix(api): handle absorber-specific fields (absorption instead of decay)
- Absorbers don't have Decay in Economy, only Absorption
- Updated parser to set decay=0 and absorption from Economy.Absorption for absorbers
- Updated UI to show absorption % in Decay column for absorbers
- Updated preview panel to display absorption for absorbers
2026-02-09 17:16:29 +00:00
LemonNexus 7f1e111a83 fix(ui): remove attachment_type overwrite in loader to preserve parsed type
- Removed code that was overwriting attachment_type for all items
- Type is now correctly parsed from API (scope vs sight)
- Sights tab now correctly shows items with Type='Sight'
2026-02-09 17:14:47 +00:00
LemonNexus e8f0d7860e fix(api): correct attachment field parsing for all attachment types
- Fixed NexusAttachment.from_api() to parse correct API structure:
  - Amplifiers: Damage values from Properties.Damage
  - Scopes: Skill bonuses from Properties.SkillModification/SkillBonus, zoom from Properties.Zoom
  - Absorbers: Absorption from Economy.Absorption
- Added zoom and absorption fields to NexusAttachment
- Updated attachment selector UI to show type-specific columns
- Added zoom and absorption to preview panel
2026-02-09 17:12:44 +00:00
LemonNexus 4ef03d96c8 fix(api): improve NexusAttachment field parsing for weapon amplifiers
- Updated from_api() to check multiple possible field names
- Added fallback checks for Damage, Range, Decay, Efficiency fields
- Type detection from both API Type field and item name
- Improved display formatting in attachment selector
2026-02-09 17:07:31 +00:00
LemonNexus 1be69b1879 feat(ui): add armor set selection to armor selector
- Added tabs to ArmorSelectorDialog: Individual Pieces and Full Sets
- Armor sets show total protection across all 7 pieces
- Selecting a full set auto-populates all 7 armor slots in loadout manager
- Added armor_set_selected signal for full set selection
- Shows summary of equipped pieces and any missing ones
2026-02-09 17:04:21 +00:00
LemonNexus 1b176b96a8 feat(hud): integrate loadout-based cost tracking in HUD
- Added LoadoutSelectionDialog for choosing loadout when starting session
- Added set_cost_tracker() method to HUDOverlay for SessionCostTracker integration
- Added new display row for loadout metrics: $/shot, $/hit, $/heal, hits, heals
- Added mindforce cost support
- Updated start_session() to accept loadout_id and per-action costs
- Updated _refresh_display() to show new cost metrics
2026-02-09 16:14:51 +00:00
LemonNexus af624b26e0 feat(core): add loadout-session integration and cost tracking
- Added loadouts table to schema with full gear configuration
- Created LoadoutDatabase for CRUD operations on loadouts
- Created SessionCostTracker for real-time cost tracking based on loadout
- Added cost per shot/hit/heal tracking to HUDStats
- Added mindforce cost support throughout
- Database schema updated with loadout_id foreign key in hunting_sessions
2026-02-09 16:11:15 +00:00
LemonNexus b58af87533 feat(loadout): add mindforce implant field and tier-based enhancers to LoadoutConfig
- Added mindforce_implant and mindforce_decay_pec fields
- Changed enhancers from list to Dict[int, NexusEnhancer] for tier-based system
- Updated get_total_decay_per_shot() to include enhancer and mindforce decay
- Max 10 tiers, 1 enhancer per tier
2026-02-09 16:01:16 +00:00
LemonNexus 1e115db548 feat(ui): add armor set and mindforce implant selectors
- Created ArmorSetSelectorDialog for browsing full armor sets
- Created MindforceImplantSelectorDialog for MF chips/implants
- Both dialogs integrate with Entropia Nexus API
- Filter by type, search, and preview functionality included
2026-02-09 15:59:29 +00:00
LemonNexus a5f286a76b fix(ui): update attachment selector to use new API endpoints
- Updated AttachmentLoaderThread to fetch from separate endpoints:
  - /weaponamplifiers for amplifiers
  - /weaponvisionattachments for scopes
  - /absorbers for absorbers
- Fixed get_all_attachments() AttributeError
2026-02-09 15:49:11 +00:00
LemonNexus 09e07984a0 fix(calc): correct PEC to PED conversion for cost/shot display
Cost per shot was showing PEC values labeled as PED (100x too high).
Now properly converts PEC to PED by dividing by 100 before display.

Before: 916.80 PEC displayed as 9.1680 PED (wrong)
After: 916.80 PEC displayed as 0.0917 PED (correct)
2026-02-09 15:12:39 +00:00
LemonNexus bd6abd60c2 refactor(ui): replace per-hour metrics with per-action cost metrics
Removed confusing per-hour calculations and replaced with practical
per-action metrics that players actually need:

New Metrics Displayed:
- ⚔️ Weapon: Cost/Shot (PED), DPS, DPP
- 🛡️ Armor: Cost/Hit (PED), Protection
- 💚 Healing: Cost/Heal (PED), HP/PEC

Removed:
- Activity Settings section (Shots/Hour, Hits/Hour, Heals/Hour)
- Per-hour cost calculations

The Break-Even calculator remains based on mob HP.

These metrics represent actual costs per action taken:
- Each shot fired costs X PED
- Each hit taken costs Y PED
- Each heal used costs Z PED

Much more intuitive for tracking hunt profitability.
2026-02-09 15:02:56 +00:00
LemonNexus 2183b79ce8 feat(ui): add separate Left/Right ring slots in loadout manager
- Split accessories section into Left Ring and Right Ring selectors
- Added Clothing and Pet buttons
- Updated AccessoriesSelectorDialog to accept slot_filter parameter
- Filter rings by Left Finger/Right Finger slot when selecting
- Store current_left_ring and current_right_ring in loadout
- Display ring effects (multi-effect support) in the UI

Ring effects like 'Decreased Critical Damage Taken 4%, Increased
Dodge Chance 4%' are now properly displayed.
2026-02-09 14:46:35 +00:00
LemonNexus 1db965f92a fix(ui): update ring selection to use effects dict
Fixed AttributeError in _on_ring_selected - NexusRing now uses
effects dict instead of effect_type/effect_value fields.
2026-02-09 14:39:50 +00:00
LemonNexus ad3d8e535a fix(api): correct rings endpoint to /clothings with Type=Ring filter
- Changed endpoint from /rings to /clothings (correct plural form)
- Filter clothings for Type=Ring to get actual ring data
- Updated NexusRing dataclass to match API structure:
  - slot: 'Left Finger', 'Right Finger'
  - gender: 'Both', 'Male', 'Female'
  - effects: Dict of effect name -> value
  - max_tt/min_tt: PED values from Economy
- Updated UI to display effects dict properly
- Maintained hardcoded fallback
2026-02-09 14:28:14 +00:00
LemonNexus 032245ccad fix(ui): emit LoadoutConfig object instead of just name
The loadout_saved signal was emitting a string (loadout name) but
on_loadout_selected expected an object with .name attribute.
Now emits the full LoadoutConfig so all gear data is available.
2026-02-09 14:18:19 +00:00
LemonNexus 499c4c7383 fix(ui): show message when rings/clothing API data unavailable
The Entropia Nexus API doesn't have /rings or /clothing endpoints (404).
Added placeholder messages in the accessories selector instead of showing
empty lists. Pets endpoint works correctly (84 pets loaded).
2026-02-09 14:17:06 +00:00
LemonNexus 4d7d4e7545 fix(ui): add missing QComboBox import in accessories_selector.py
Selector dialog was failing to open due to NameError on QComboBox.
2026-02-09 14:14:02 +00:00
LemonNexus 36bc075e95 fix(armor): correct decay_per_hit to decay_per_hp field name
Fixed AttributeError where code was referencing non-existent 'decay_per_hit'
instead of the correct 'decay_per_hp' field on ArmorPiece and ArmorPlate.

- ui/loadout_manager.py: _get_current_config() plate/piece copy
- core/armor_system.py: equip_armor_selection() piece copy
2026-02-09 14:13:07 +00:00
LemonNexus d9921993c8 fix(ui): remove non-existent AttachmentManagerWidget from imports 2026-02-09 13:44:59 +00:00
LemonNexus 48bce51d0f fix(loadout): add missing Nexus imports
- NexusAttachment, NexusEnhancer, NexusRing, NexusClothing, NexusPet
2026-02-09 13:08:01 +00:00
LemonNexus ad9cd2cd4c fix(loadout): remove leftover code causing indentation error
- Removed old attachment selection dialog code
- Fixed _on_attach() method
2026-02-09 13:06:05 +00:00
LemonNexus 78234da448 feat(loadout): complete data model for all gear types
- LoadoutConfig now includes:
  - weapon_enhancers: List of up to 10 enhancer configs
  - armor_plates: Dict of plate configs per slot
  - left_ring, right_ring: Ring selections
  - clothing_items: List of clothing
  - pet: Selected pet

- Cost calculations updated:
  - get_total_decay_per_shot() includes enhancer decay
  - calculate_armor_cost_per_hour() includes plate decay

- Serialization updated:
  - to_dict() handles enhancers and plates
  - from_dict() handles all new fields with defaults
2026-02-09 12:05:16 +00:00
LemonNexus cf7c4ab5de feat(loadout): add plate search button to each armor slot
- Each armor slot now has a 🔍 button for plate selection
- Opens PlateSelectorDialog filtered by armor's highest protection type
- Selected plates from API are added to the slot's combo box
- Plates auto-selected after API selection
2026-02-09 11:59:06 +00:00
LemonNexus 88a3c8b551 feat(loadout): wire ALL selectors into LoadoutManager
- Attachment buttons now open AttachmentSelectorDialog (API-based)
- NEW: Enhancer selection button with warning about breakage
- NEW: Accessories section (Rings, Clothing, Pets)
- Methods for all selectors:
  - _on_select_attachment() - Amps, Scopes, Absorbers
  - _on_select_enhancer() - Weapon/Armor enhancers
  - _on_select_accessories() - Rings, Clothing, Pets
  - _on_ring_selected(), _on_clothing_selected(), _on_pet_selected()

Complete gear selection now available!
2026-02-09 11:57:27 +00:00
LemonNexus c490a84982 feat(selectors): add enhancer and accessories selectors
- NEW: ui/enhancer_selector.py - Weapon/Armor enhancer browser
  - Filter by type (Damage, Economy, Range, etc.)
  - Filter by tier (1-5+)
  - Risk level indicator (Low/Medium/High break chance)
  - Warning about enhancer breakage

- NEW: ui/accessories_selector.py - Rings, Clothing, Pets browser
  - Tabbed interface: Rings / Clothing / Pets
  - Rings: Limited items highlighted
  - Clothing: Buff display, cosmetic indicator
  - Pets: Effect display, level requirements
2026-02-09 11:54:00 +00:00
LemonNexus 1c0d684c4c feat(selectors): add plate and attachment selectors
- NEW: ui/plate_selector.py - Searchable plate browser
  - Filter by protection type (Impact, Cut, etc.)
  - Filter by minimum protection
  - Highlights plates matching mob damage type

- NEW: ui/attachment_selector.py - Tabbed attachment browser
  - Tabs: All, Amplifiers, Scopes, Sights, Absorbers
  - Search within each category
  - Color-coded by attachment type
2026-02-09 11:50:45 +00:00
LemonNexus 649aa77bc9 feat(loadout): wire armor and healing API selectors into LoadoutManager
- Added 'Search Entropia Nexus Armors' button
- Added 'Search Healing Tools from Nexus' button
- New methods: _on_select_armor_from_api(), _on_select_healing_from_api()
- Armor selection shows durability and protection summary
- Healing selection auto-updates cost and heal amount fields
2026-02-09 11:47:51 +00:00
LemonNexus dceafbc69f feat(api): full Entropia Nexus API integration + searchable selectors
- NEW: core/nexus_full_api.py - Complete API for all gear types
  - Weapons, Armors, Plates, Attachments, Enhancers
  - Healing Tools, Rings, Clothing, Pets
  - Search across all categories

- NEW: ui/armor_selector.py - Searchable armor browser
  - Real-time search, filter by protection type
  - Preview panel with economy info

- NEW: ui/healing_selector.py - Searchable healing tool browser
  - Filter by type (FAP/Chip/Limited)
  - Filter by heal amount
  - Color-coded economy ratings

All gear now searchable like weapons!
2026-02-09 11:43:25 +00:00
LemonNexus 8e26602069 fix(ui): update ArmorSlotWidget to use new Nexus slot names
- CHEST -> TORSO
- LEFT_ARM/RIGHT_ARM -> ARMS
- LEFT_HAND/RIGHT_HAND -> HANDS
- THIGHS -> LEGS
- Added SHINS and FEET
2026-02-09 11:18:26 +00:00
LemonNexus 95a511bbfd feat(gear): add real healing tools and Frontier armor set
- LoadoutManager now uses real healing_tools.py database (25+ tools)
- Added categorized healing tools: Medical Tools and Restoration Chips
- Added Frontier Set (Adjusted) with all 7 pieces
- Includes Regeneration Chip IV (L) for test run
2026-02-09 10:51:32 +00:00
LemonNexus c8128e954f fix(ui): correct signal name loadout_saved (not loadout_selected) 2026-02-09 10:46:11 +00:00
LemonNexus 37302d6a5a fix(ui): add missing ArmorSelectorDialog class
- Implemented ArmorSelectorDialog for selecting armors from API
- Search functionality by name
- Displays protection stats (Impact, Cut, Stab, etc.)
- Fixes ImportError in ui/__init__.py
2026-02-09 10:42:32 +00:00
LemonNexus dd2fce8b62 docs: add comprehensive test hunt guide
- Step-by-step instructions for first test hunt
- Pre-test checklist
- Expected cost calculations
- Troubleshooting section
- Post-test review steps
2026-02-09 10:40:46 +00:00
LemonNexus 66f36b4a89 feat(armor): complete armor system with sets and 7-slot plates
- Full armor sets (Ghost, Gremlin, Angel, etc.)
- Individual armor piece mix & match
- 7 plate slots (one per armor piece)
- Plate takes damage FIRST (shield layer)
- Separate decay calculation for plate + armor
- NEW: core/armor_system.py (44KB)
- Integrated into LoadoutManager
2026-02-09 10:31:56 +00:00
LemonNexus ae182f408b feat(armor): implement official decay formula (VU 15.15)
- Formula: Decay = damage * 0.05 * (1 - durability/100000)
- Added armor_decay.py with complete calculation module
- Database of 30+ armors with durability values
- Economy comparison: Ghost (20.41) → Perseus L (23.53) hp/pec
- Example: 15 dmg on Ghost = 0.00735 PED decay
2026-02-09 10:27:05 +00:00
LemonNexus 08aec368a9 docs: add official armor guide from PlanetCalypsoForum 2020 edition
- Loot 2.0 armor changes (June 2017)
- Correct decay mechanics (plate/armor independent)
- Armor progression guide (Gremlin → Ghost → Adj Nemesis)
- 20 hp/pec base economy standard
- Damage absorption flow and formulas
2026-02-09 10:21:57 +00:00
LemonNexus dca96662b0 fix(loadout): convert ammo units to PEC correctly (1 ammo = 0.01 PEC)
- 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
2026-02-09 10:09:19 +00:00
LemonNexus d24d5e149e feat(swarm): Agent swarm - Loadout Manager v2.0, Armor Decay, Attachments
- Loadout Manager v2.0 with full Nexus API integration (3,099 weapons, 1,985 armors)
- Attachment system: Amplifiers, Scopes, Absorbers, Armor Platings
- Weapon/Armor/Attachment selectors with real data
- Armor decay tracking when hit (cost added to HUD)
- Complete cost calculations (weapon + armor + attachments + healing)
- NEW: ui/attachment_selector.py standalone module
- Updated core/nexus_api.py with decay fields
- DPP display in HUD overlay
2026-02-09 09:28:41 +00:00
LemonNexus 32e095350b feat(attachments): add attachment system and DPP display
- 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
2026-02-09 09:15:03 +00:00
LemonNexus 8014b63e75 feat(hud): estimated kills - each loot event = 1 kill
- Every loot batch (You received [item]) = 1 estimated kill
- Label shows 'EST. KILLS' to indicate estimated value
- Simple and consistent kill tracking
2026-02-08 23:54:54 +00:00
LemonNexus b3d257a42d fix(hud): simplify kill tracking - only count non-Shrapnel loot
- Shrapnel-only mobs undercounted, but no overcounting
- Better to undercount than overcount for profit analysis
- Removes complex Shrapnel heuristic
2026-02-08 23:52:33 +00:00
LemonNexus 31ead88886 fix(hud): reset Shrapnel counter on non-Shrapnel loot
- Non-Shrapnel loot = 1 kill AND reset Shrapnel counter
- Prevents overcounting when mob drops Shrapnel + Oil
- Shrapnel counted as 1 kill per 2 pieces
2026-02-08 23:51:02 +00:00
LemonNexus ff7b304c78 fix(hud): improved kill tracking with Shrapnel heuristic
- 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
2026-02-08 23:47:37 +00:00
LemonNexus 647728a1d4 feat(hud): add shots fired counter and fix kill tracking
- 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)
2026-02-08 23:43:37 +00:00
LemonNexus 3a3e389f05 fix(hud): correct cost calculation using weapon decay from Nexus API
- 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
2026-02-08 23:34:02 +00:00
LemonNexus 0a12b22498 fix(hud): fix Decimal/float division error in cost calculation
- Convert both damage and dpp to Decimal before division
- Proper Decimal arithmetic for precision
2026-02-08 23:28:44 +00:00
LemonNexus 445d0bb6f3 fix(hud): add missing kills and globals layout definitions 2026-02-08 23:24:35 +00:00
LemonNexus 7c38b398f3 feat(hud): cost tracking and profit/loss calculation
- 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
2026-02-08 23:22:13 +00:00
LemonNexus e9dc72df23 fix(gui): remove duplicate code causing IndentationError in gear_selector.py 2026-02-08 23:14:22 +00:00
LemonNexus 3cd0613e10 feat(gui): full gear selection - weapons, armors, and finders
- Gear Selector now supports: Weapons, Armors, Finders
- Weapons: 3,099 items with DPP, cost/hour, damage
- Armors: 1,985 items with protection values
- Finders: 106 items with depth/radius
- Menu: Tools → Select Gear → Weapon/Armor/Finder
- Shortcuts: Ctrl+W (weapon), Ctrl+Shift+A (armor), Ctrl+Shift+F (finder)
- Sync API for simpler code
2026-02-08 23:11:07 +00:00
LemonNexus f8ddb8f650 feat(gui): update Gear Selector to use real Nexus API
- 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
2026-02-08 23:04:22 +00:00
LemonNexus b8e7a892ff feat(gui): add Gear Selector and fix kill counting
- 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
2026-02-08 22:42:55 +00:00
LemonNexus 0f4d1271f8 fix(gui): ProjectStatsDialog uses correct ProjectData fields
- Remove references to non-existent description, session_count, last_session
- Use project.type, project.status, project.metadata for description
- Fixes AttributeError when viewing project stats
2026-02-08 22:34:00 +00:00