[priority: critical] Disciplines cannot be practiced - multiple blocking issues #194
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?
CRITICAL BUG: Disciplines system is effectively non-functional
Bug Summary
Multiple issues prevent players from practicing disciplines, blocking a core progression system.
Issues Found
Issue A:
signed_pactprerequisite always fails (permanently locked)src/lib/game/utils/discipline-math.ts, lines 136-139signed_pactprerequisite check ALWAYS reports as missing, unconditionally pushing tomissingPrereqswithout checking whether the player has actually signed pactssigned_pactis permanently shown as locked in the UIgameState?.signedPactslength > 0 before marking as missingIssue B: Concurrent limit silently blocks activation
src/lib/game/stores/discipline-slice.ts, lines 85-86activate()silently returns without any feedbackIssue C: Button disabled but no explanation
src/components/game/tabs/DisciplinesTab.tsxandDisciplineCard.tsxisLocked || missingSourceMana.length > 0, but the player isn't told WHY it's disabledSteps to Reproduce
Technical Details
canProceedDiscipline()indiscipline-math.ts(lines 70-88) - checks mana drain but has flawed prerequisite logiccheckDisciplinePrerequisites()indiscipline-math.ts(lines 124-161) -signed_pactcheck is hardcoded to failactivate()indiscipline-slice.ts(lines 73-90) - silent failure at concurrent limitconcurrentLimitstarts at 1 and expands by 1 per 500 total XP (max 4) per AGENTS.mdPriority
CRITICAL - Blocks discipline progression system entirely
Starting investigation of discipline practice bugs: signed_pact prerequisite always failing, concurrent limit silent failure, and missing UI feedback.
Fixed three discipline bugs:
A) signed_pact prerequisite: Updated checkDisciplinePrerequisites() to accept a signedPacts parameter and only report 'Signed guardian pact' as missing when the player hasn't actually signed any pacts. Updated all call sites (discipline-slice.ts activate() and DisciplinesTab CardWrapper) to pass signedPacts.
B) Concurrent limit feedback: The activate() function still silently returns at the limit (by design, to prevent invalid state), but the DisciplineCard now shows "At Limit (N/M)" button text when the concurrent discipline limit is reached, giving players clear feedback.
C) Button disabled explanation: DisciplineCard now shows separate messages for lock reasons (prerequisites, missing mana) and concurrent limit status, so players understand why the button is disabled.