[priority: medium-low] refactor: Redesign Invoker disciplines to improve pact bonuses and guardian boons #142
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The two current Invoker disciplines (
spell-castingandvoid-manipulation) are generic combat stat boosts (base damage, damage multiplier). The Invoker attunement is thematically about forming pacts with guardians and gaining their elemental affinity — but its disciplines don't reinforce that at all.New Design
Invoker disciplines should focus on:
uniquePerkfield on guardians) that guardians provideCurrent Guardian Boons (from
guardian-data.ts)Each guardian has a
uniquePerkthat grants a specific bonus. Examples:Proposed Invoker Disciplines
1. "Pact Attunement" (replaces spell-casting)
pactAffinityBonus(reduces pact signing time, increases pact power)once@ 100: Unlock pact affinity scalinginfinite@ 200: Every 100 XP: increase pact affinity by 5%2. "Guardian's Boon" (replaces void-manipulation)
guardianBoonMultiplier(generic multiplier that enhances all guardian unique perks)once@ 100: Active guardian boons gain +10% effectivenesscapped@ 200: Each tier adds +5% to guardian boon effectiveness (max tier at 5000 XP for +50%)Suggested additions (optional stretch)
Prerequisites
Invoker disciplines should be locked until the player has signed at least one guardian pact (has
signedPacts.length > 0). This prevents access before the player engages with the pact system.What Needs to Change
Data Layer
src/lib/game/data/disciplines/invoker.ts— full rewrite of both disciplinespactAffinityBonus,guardianBoonMultiplierType Layer
src/lib/game/types/disciplines.ts— ensure new stat keys are supported inDisciplineDefinition.statBonus.statEffect Layer
src/lib/game/effects/discipline-effects.ts— handle new stat keyssrc/lib/game/stores/gameStore.ts— applypactAffinityBonusin pact signing time reduction, applyguardianBoonMultiplierto guardian perk calculationsInvoker Attunement Guard
src/lib/game/stores/discipline-slice.ts— invoker disciplines should check forsignedPacts.length > 0before allowing activationPrerequisite Display
src/lib/game/utils/discipline-math.ts— prerequisite for invoker should display something like"Requires: signed guardian pact"instead of a raw IDFiles
src/lib/game/data/disciplines/invoker.ts(full rewrite)src/lib/game/effects/discipline-effects.tssrc/lib/game/effects.ts— ensure new stat keys merge correctlysrc/lib/game/stores/gameStore.ts— apply pact affinity and boon bonusessrc/lib/game/stores/discipline-slice.ts— invoker-specific activation guardsrc/lib/game/utils/discipline-math.ts— prereq display for invokerDependency
refactor: Redesign Invoker disciplines to improve pact bonuses and guardian boonsto [priority: medium-low] refactor: Redesign Invoker disciplines to improve pact bonuses and guardian boonsStarting work on Invoker discipline redesign. Reading all affected files first.
Successfully completed the Invoker discipline redesign. Here's a summary of all changes:
Data Layer (
src/lib/game/data/disciplines/invoker.ts):spell-castingandvoid-manipulationdisciplinespact-attunement(light): XP-scaled pact affinity bonus, reduces pact signing time, boosts pact power. Includesonceperk at 100 XP (unlock scaling),infiniteperk at 200 XP (+5% affinity per 100 XP), andcappedperk at 500 XP (+3% boon strength per 200 XP, max 5 tiers)guardians-boon(dark): Guardian boon multiplier that scales all guardian unique perks. Includesonceperk at 100 XP (+10% effectiveness) andcappedperk at 200 XP (+5% per 350 XP, max 5 tiers)signed_pactprerequisiteType/Effect Layer:
discipline-effects.ts: AddedpactAffinityBonusandguardianBoonMultiplierto KNOWN_BONUS_STATSeffects.ts: AddedpactAffinityBonusandguardianBoonMultipliertoUnifiedEffectsinterface andcomputeAllEffects()merge logicStore Layer:
gameStore.ts: Pact signing now incorporates disciplinepactAffinityBonusalongside prestige upgrade bonus (capped at 90%)discipline-slice.ts: Invoker disciplines gated behindsignedPacts.length > 0; addedsignedPactstoactivategameState typeUtility Layer:
discipline-math.ts:checkDisciplinePrerequisiteshandlessigned_pactrequirement → displays "Signed guardian pact"combat-utils.ts:getBoonBonusesaccepts optionalguardianBoonMultiplierparameter (default 1.0) that scales all boon valuesUI Layer:
DisciplinesTab.tsx: PassessignedPactsfrom prestige store toactivatecallAll 885 tests pass. Commit:
1aea72c