- Check if pieces is a list (NexusArmorSet) or dict (ArmorSet)
- Route to API method for NexusArmorSet
- Keep hardcoded logic for ArmorSet from combo box
- 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
- 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
- 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
- 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
- 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()
- 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
- 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
- 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
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)
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.
- 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.
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.
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
- 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
- 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
- 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
- Implemented ArmorSelectorDialog for selecting armors from API
- Search functionality by name
- Displays protection stats (Impact, Cut, Stab, etc.)
- Fixes ImportError in ui/__init__.py
- 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