fix: Crystal-Steel Hybrid frame unlock now only requires Fabricator 5 (was incorrectly dual-gated with Enchanter 5)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s

This commit is contained in:
2026-06-08 14:14:38 +02:00
parent 9200cf3ce0
commit a1b86d82c5
4 changed files with 9 additions and 9 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# Circular Dependencies # Circular Dependencies
Generated: 2026-06-08T11:29:45.994Z Generated: 2026-06-08T12:08:47.398Z
Found: 1 circular chain(s) — these MUST be fixed before modifying involved files. Found: 1 circular chain(s) — these MUST be fixed before modifying involved files.
1. 1) stores/golem-combat-actions.ts > stores/golem-combat-helpers.ts 1. 1) stores/golem-combat-actions.ts > stores/golem-combat-helpers.ts
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"_meta": { "_meta": {
"generated": "2026-06-08T11:29:44.022Z", "generated": "2026-06-08T12:08:45.389Z",
"description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.", "description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.",
"usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry." "usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry."
}, },
+3 -3
View File
@@ -126,9 +126,9 @@ const CRYSTAL_STEEL_HYBRID_FRAME: FrameDefinition = {
specialEffect: 'guardianConstruct', specialEffect: 'guardianConstruct',
summonCost: [elemCost('crystal', 20), elemCost('metal', 15), rawCost(15)], summonCost: [elemCost('crystal', 20), elemCost('metal', 15), rawCost(15)],
unlockRequirement: { unlockRequirement: {
type: 'dual_attunement', type: 'attunement_level',
attunements: ['fabricator', 'enchanter'], attunement: 'fabricator',
levels: [5, 5], level: 5,
}, },
}; };
@@ -98,11 +98,11 @@ describe('Unlock requirements', () => {
expect(isComponentUnlocked(req, { invoker: { active: true, level: 5 }, fabricator: { active: true, level: 5 } }, [], [])).toBe(false); expect(isComponentUnlocked(req, { invoker: { active: true, level: 5 }, fabricator: { active: true, level: 5 } }, [], [])).toBe(false);
}); });
it('crystalSteelHybrid frame requires Fabricator 5 + Enchanter 5', () => { it('crystalSteelHybrid frame requires Fabricator 5 only', () => {
const req = FRAMES.crystalSteelHybrid.unlockRequirement; const req = FRAMES.crystalSteelHybrid.unlockRequirement;
expect(req.type).toBe('dual_attunement'); expect(req.type).toBe('attunement_level');
expect(isComponentUnlocked(req, { fabricator: { active: true, level: 5 }, enchanter: { active: true, level: 5 } }, [], [])).toBe(true); expect(isComponentUnlocked(req, { fabricator: { active: true, level: 5 } }, [], [])).toBe(true);
expect(isComponentUnlocked(req, { fabricator: { active: true, level: 5 }, enchanter: { active: true, level: 4 } }, [], [])).toBe(false); expect(isComponentUnlocked(req, { fabricator: { active: true, level: 4 } }, [], [])).toBe(false);
}); });
it('sand frame requires sand mana unlocked', () => { it('sand frame requires sand mana unlocked', () => {