2.6 KiB
2.6 KiB
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.ktwith:PredefinedEchoenum listing common Echoes (Overclocking, Skinlink, Living Network, Neurofilter, Resonance Link, etc.)Echodata class with name, description, isCustom fields
- Create
/model/magic/Submersion.ktwith:Submersiondata class tracking grade, echoes list, and calculated karma costssubmersionKarmaCost(newGrade: Int): Int = 13 + 3 * newGrademaxResonance(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 gradeeffectiveResonance(): Int— reduced by essence loss (floor of current essence, capped at maxResonance)
Step 3: Create schema migration v0.12 -> v0.13
- New
MigrationV12ToV13adding empty submersion object with grade=0, echoes=[] - Update
SchemaVersionto 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
- Resonance attribute tracked as special attribute (like Magic) — already exists in Attributes.kt
- Resonance displayed prominently for Technomancers — verify in UI
- Submersion grade tracking with karma cost calculation — Submersion model + UI
- Echo selection at each submersion grade — Echo model + UI
- Predefined list of common Echoes — PredefinedEcho enum
- Max Resonance increases with submersion grade (6 + grade) — maxResonance() method
- Resonance loss from essence reduction — effectiveResonance() considers essence
- UI for submersion management — SubmersionPanel
- Serialization support — @Serializable + migration