158 lines
5.6 KiB
Markdown
158 lines
5.6 KiB
Markdown
# 2026-02-09 - Lemontropia Suite Development
|
|
|
|
## Session Summary
|
|
Completed full integration between Loadout Manager and Hunting Sessions. Users can now configure complete loadouts and use them to track costs during actual hunting.
|
|
|
|
## Bug Fixes
|
|
|
|
### Plate Selector Crash
|
|
- **Issue**: `AttributeError: 'NexusPlate' object has no attribute 'protection_acid'`
|
|
- **Root Cause**: `NexusPlate` dataclass was missing `protection_acid` and `protection_electric` fields
|
|
- **Fix**: Added missing fields to dataclass and updated `from_api()` method
|
|
- **Commit**: `b8fc0a8`
|
|
|
|
### Attachment Selector Error
|
|
- **Issue**: "object has no attribute get_all_attachments"
|
|
- **Fix**: Updated `AttachmentLoaderThread` to use separate endpoints:
|
|
- `/weaponamplifiers` for amplifiers
|
|
- `/weaponvisionattachments` for scopes/sights
|
|
- `/absorbers` for absorbers
|
|
- **Commit**: `a5f286a`
|
|
|
|
## New Features Implemented
|
|
|
|
### 1. Armor Set Selection
|
|
- **File**: `ui/armor_set_selector.py`
|
|
- **API**: Added `NexusArmorSet` dataclass and `get_all_armor_sets()` method
|
|
- **Endpoint**: `/armorsets`
|
|
- **Features**:
|
|
- Browse full armor sets (e.g., "Ghost Set", "Shogun Set")
|
|
- Shows pieces in set, total protection, set bonuses
|
|
- Search by set name or piece name
|
|
- **Commit**: `6bcd0ca`, `1e115db`
|
|
|
|
### 2. Mindforce Implants
|
|
- **File**: `ui/mindforce_selector.py`
|
|
- **API**: Added `NexusMindforceImplant` dataclass and `get_all_mindforce_implants()` method
|
|
- **Endpoint**: `/mindforceimplants`
|
|
- **Features**:
|
|
- Supports healing, damage, and utility chip types
|
|
- Shows decay cost per use
|
|
- Color-coded by type
|
|
- **Commit**: `6bcd0ca`, `1e115db`
|
|
|
|
### 3. Tier-Based Enhancer System
|
|
- **Change**: Updated `LoadoutConfig.enhancers` from `List[NexusEnhancer]` to `Dict[int, NexusEnhancer]`
|
|
- **Structure**: `{tier_number: enhancer}` where tier 1-10
|
|
- **Logic**: Each tier can hold exactly 1 enhancer type
|
|
- **Decay**: All equipped enhancers contribute to total decay per shot
|
|
- **Commit**: `b58af87`
|
|
|
|
## Loadout-Session Integration (NEW)
|
|
|
|
### Database Schema Updates
|
|
- **New table**: `loadouts` - stores complete gear configurations
|
|
- Weapon with attachments (amp, scope, absorber)
|
|
- Armor with plates (JSON)
|
|
- Healing tool
|
|
- Mindforce implant
|
|
- Accessories (rings, pet, clothing)
|
|
- Enhancers (JSON with tier mapping)
|
|
- Pre-calculated per-action costs
|
|
- **Updated table**: `hunting_sessions` - added `loadout_id` foreign key
|
|
- **File**: `core/schema.sql`
|
|
|
|
### Core Modules
|
|
|
|
#### LoadoutDatabase (`core/loadout_db.py`)
|
|
- CRUD operations for loadouts
|
|
- `save_loadout()` - Save complete configuration
|
|
- `get_loadout()` - Retrieve by name
|
|
- `list_loadouts()` - List all saved
|
|
- `set_active_loadout()` - Mark as default
|
|
- `link_loadout_to_session()` - Associate with hunting session
|
|
- `update_session_costs()` - Calculate costs based on loadout
|
|
|
|
#### SessionCostTracker (`core/session_cost_tracker.py`)
|
|
- Real-time cost tracking during hunting
|
|
- Tracks per-action costs:
|
|
- Cost per shot (weapon + ammo + enhancers + amp)
|
|
- Cost per hit (armor decay)
|
|
- Cost per heal (FAP/chip decay)
|
|
- Mindforce decay (if using implants)
|
|
- Callback system for live HUD updates
|
|
- Automatic database persistence
|
|
|
|
### UI Components
|
|
|
|
#### LoadoutSelectionDialog (`ui/loadout_selection_dialog.py`)
|
|
- Shown when starting a hunting session
|
|
- Lists all saved loadouts with preview
|
|
- Shows per-action costs for comparison
|
|
- Option to skip (no cost tracking)
|
|
|
|
#### HUDOverlay Updates
|
|
- New display row for loadout metrics:
|
|
- $/shot - Cost per weapon shot
|
|
- $/hit - Cost per armor hit taken
|
|
- $/heal - Cost per heal used
|
|
- Hits - Number of hits taken
|
|
- Heals - Number of heals used
|
|
- `set_cost_tracker()` method for live updates
|
|
- Mindforce cost tracking support
|
|
|
|
### Usage Flow
|
|
```
|
|
1. User creates loadout in Loadout Manager
|
|
→ Saved to database with per-action costs calculated
|
|
|
|
2. User starts hunting session
|
|
→ LoadoutSelectionDialog appears
|
|
→ User selects loadout (or skips)
|
|
→ Session linked to loadout_id
|
|
|
|
3. During hunting
|
|
→ LogWatcher detects events
|
|
→ SessionCostTracker calculates costs
|
|
→ HUD updates in real-time with loadout-based costs
|
|
|
|
4. After session
|
|
→ Complete cost breakdown stored in database
|
|
→ Can compare against loot for true P/L
|
|
```
|
|
|
|
## Data Model Updates
|
|
|
|
### LoadoutConfig additions:
|
|
- `mindforce_implant: Optional[str]` - Selected MF chip
|
|
- `mindforce_decay_pec: Decimal` - Decay per use
|
|
- `enhancers: Dict[int, NexusEnhancer]` - Tier-based slots
|
|
|
|
### HUDStats additions:
|
|
- `mindforce_cost_total: Decimal` - Accumulated MF costs
|
|
- `hits_taken: int` - Number of armor hits
|
|
- `heals_used: int` - Number of heals
|
|
- `cost_per_shot: Decimal` - From loadout
|
|
- `cost_per_hit: Decimal` - From loadout
|
|
- `cost_per_heal: Decimal` - From loadout
|
|
- `loadout_id: Optional[int]` - Linked loadout
|
|
|
|
## Git Commits
|
|
- `b8fc0a8` - fix(api): fix NexusPlate dataclass
|
|
- `a5f286a` - fix(ui): update attachment selector to use new API endpoints
|
|
- `6bcd0ca` - feat(api): add armor sets and mindforce implants endpoints
|
|
- `1e115db` - feat(ui): add armor set and mindforce implant selectors
|
|
- `b58af87` - feat(loadout): add mindforce implant field and tier-based enhancers
|
|
- `af624b2` - feat(core): add loadout-session integration and cost tracking
|
|
- `1b176b9` - feat(hud): integrate loadout-based cost tracking in HUD
|
|
|
|
## Status
|
|
✅ Complete loadout-to-session integration ready for testing
|
|
|
|
### Next Steps:
|
|
1. Test loadout selection dialog when starting hunt
|
|
2. Verify cost tracking accuracy during live session
|
|
3. Add "Loadout" button to main window toolbar
|
|
4. Implement actual log parsing to trigger cost updates
|
|
5. Add session summary view showing loadout vs actual costs
|