fix: resolve priority 4 issues — discipline mutation, skill→discipline migration, uiStore persistence, game loop interval, toast listener leak, page re-renders
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
- Issue 70: Fix discipline-slice.ts nested element mutation (use immutable spread) - Issue 71: Add persist middleware to uiStore for paused/gameOver/victory - Issue 72: Wire discipline effects into calcDamage (spell-casting, void-manipulation) - Issue 73: Fix useGameLoop interval recreation (use getState() + empty deps) - Issue 74: Fix use-toast.ts listener leak (change [state] dep to []) - Issue 75: Reduce page.tsx re-renders with useShallow for multi-field subscriptions - Issue 76: Fix createGatherMana hardcoded click mana (use computeClickMana with discipline effects) - Issue 77: Pass discipline effects to computeMaxMana/computeRegen/calcInsight in tick() - Export DisciplineBonuses type and useDisciplineStore from barrel exports - Update tests to match new function signatures
This commit is contained in:
@@ -169,7 +169,7 @@ describe('computeMaxMana', () => {
|
||||
skillUpgrades: {},
|
||||
skillTiers: {},
|
||||
};
|
||||
const effects = { maxManaBonus: 0, maxManaMultiplier: 1 };
|
||||
const effects = { maxManaBonus: 0, maxManaMultiplier: 1 } as any;
|
||||
const result = computeMaxMana(state, effects);
|
||||
expect(result).toBe(100);
|
||||
});
|
||||
@@ -181,7 +181,7 @@ describe('computeMaxMana', () => {
|
||||
skillUpgrades: {},
|
||||
skillTiers: {},
|
||||
};
|
||||
const effects = { maxManaBonus: 0, maxManaMultiplier: 1 };
|
||||
const effects = { maxManaBonus: 0, maxManaMultiplier: 1 } as any;
|
||||
const result = computeMaxMana(state, effects);
|
||||
expect(result).toBe(100 + 5 * 500); // Base + 500 per level
|
||||
});
|
||||
@@ -193,7 +193,7 @@ describe('computeMaxMana', () => {
|
||||
skillUpgrades: {},
|
||||
skillTiers: {},
|
||||
};
|
||||
const effects = { maxManaBonus: 0, maxManaMultiplier: 1.5 };
|
||||
const effects = { maxManaBonus: 0, maxManaMultiplier: 1.5 } as any;
|
||||
const result = computeMaxMana(state, effects);
|
||||
expect(result).toBe(150); // 100 * 1.5
|
||||
});
|
||||
@@ -205,7 +205,7 @@ describe('computeMaxMana', () => {
|
||||
skillUpgrades: {},
|
||||
skillTiers: {},
|
||||
};
|
||||
const effects = { maxManaBonus: 50, maxManaMultiplier: 1 };
|
||||
const effects = { maxManaBonus: 50, maxManaMultiplier: 1 } as any;
|
||||
const result = computeMaxMana(state, effects);
|
||||
expect(result).toBe(150); // 100 + 50
|
||||
});
|
||||
@@ -218,8 +218,9 @@ describe('computeRegen', () => {
|
||||
prestigeUpgrades: {},
|
||||
skillUpgrades: {},
|
||||
skillTiers: {},
|
||||
attunements: {},
|
||||
};
|
||||
const effects = { regenBonus: 0, regenMultiplier: 1, permanentRegenBonus: 0 };
|
||||
const effects = { regenBonus: 0, regenMultiplier: 1, permanentRegenBonus: 0 } as any;
|
||||
const result = computeRegen(state, effects);
|
||||
// Base regen is 2 (this test provides effects, so no attunement bonus)
|
||||
expect(result).toBe(2);
|
||||
@@ -230,12 +231,9 @@ describe('computeClickMana', () => {
|
||||
it('should return base click mana with no skills', () => {
|
||||
const state = {
|
||||
skills: {},
|
||||
prestigeUpgrades: {},
|
||||
skillUpgrades: {},
|
||||
skillTiers: {},
|
||||
};
|
||||
const effects = { clickManaBonus: 0, clickManaMultiplier: 1 };
|
||||
const result = computeClickMana(state, effects);
|
||||
const discipline = { bonuses: {}, multipliers: {} };
|
||||
const result = computeClickMana(state, discipline);
|
||||
expect(result).toBeGreaterThanOrEqual(1);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user