52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
# Issue #149: Technomancer Resonance Attribute and Submersion Tracking
|
|
|
|
## Summary
|
|
Add Resonance as a special attribute for Technomancers (already partially tracked in Attributes) and implement Submersion tracking (the Technomancer equivalent of initiation). Submersion increases max Resonance, costs karma, and grants Echoes (special abilities). This requires a new model class, migration, UI panel, string resources, and test tags.
|
|
|
|
## Implementation Plan
|
|
|
|
### Step 1: Create Echo and Submersion model classes
|
|
- Create `/model/magic/Echo.kt` with:
|
|
- `PredefinedEcho` enum listing common Echoes (Overclocking, Skinlink, Living Network, Neurofilter, Resonance Link, etc.)
|
|
- `Echo` data class with name, description, isCustom fields
|
|
- Create `/model/magic/Submersion.kt` with:
|
|
- `Submersion` data class tracking grade, echoes list, and calculated karma costs
|
|
- `submersionKarmaCost(newGrade: Int): Int = 13 + 3 * newGrade`
|
|
- `maxResonance(baseMax: Int = 6): Int = baseMax + grade`
|
|
|
|
### Step 2: Add submersion field to ShadowrunCharacter
|
|
- Add `submersion: Submersion = Submersion()` to ShadowrunCharacter
|
|
- Add helper methods:
|
|
- `maxResonance(): Int` — returns 6 + submersion grade
|
|
- `effectiveResonance(): Int` — reduced by essence loss (floor of current essence, capped at maxResonance)
|
|
|
|
### Step 3: Create schema migration v0.12 -> v0.13
|
|
- New `MigrationV12ToV13` adding empty submersion object with grade=0, echoes=[]
|
|
- Update `SchemaVersion` to add V0_13 and set CURRENT = "v0.13"
|
|
- Register in MigrationRegistry
|
|
|
|
### Step 4: Add string resources
|
|
- Add submersion panel strings to strings.xml
|
|
|
|
### Step 5: Create SubmersionPanel UI
|
|
- Panel showing current submersion grade, max resonance, echo list
|
|
- Add/remove echoes (predefined and custom)
|
|
- Submerse button showing karma cost for next grade
|
|
- Display in MagicContent section of CharacterSheetPage (for Technomancer characters)
|
|
|
|
### Step 6: Add test tags
|
|
- Add submersion-related test tags to TestTags.kt
|
|
|
|
### Step 7: Compile and test
|
|
|
|
## AC Verification Checklist
|
|
1. Resonance attribute tracked as special attribute (like Magic) — already exists in Attributes.kt
|
|
2. Resonance displayed prominently for Technomancers — verify in UI
|
|
3. Submersion grade tracking with karma cost calculation — Submersion model + UI
|
|
4. Echo selection at each submersion grade — Echo model + UI
|
|
5. Predefined list of common Echoes — PredefinedEcho enum
|
|
6. Max Resonance increases with submersion grade (6 + grade) — maxResonance() method
|
|
7. Resonance loss from essence reduction — effectiveResonance() considers essence
|
|
8. UI for submersion management — SubmersionPanel
|
|
9. Serialization support — @Serializable + migration
|