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
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
This commit is contained in:
@@ -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,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."
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user