Compare commits

...

2 Commits

Author SHA1 Message Date
Refactoring Agent f61ed00ac1 FIX: Skill perks multiplier values (Deep Basin + others) - fix 0.20 to 1.20 for +20% effects
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m46s
2026-04-26 00:30:02 +02:00
Refactoring Agent 2355be66e9 Task 2: StatsTab - Lock Fire/Water/Air/Earth at start, only Transference unlocked 2026-04-25 19:42:25 +02:00
3 changed files with 19 additions and 14 deletions
+1 -1
View File
@@ -74,4 +74,4 @@ export const ELEMENT_ICON_NAMES: Record<string, string> = {
};
// ─── Base Unlocked Elements ───────────────────────────────────────────────────
export const BASE_UNLOCKED_ELEMENTS = ['fire', 'water', 'air', 'earth'];
export const BASE_UNLOCKED_ELEMENTS = ['transference'];
+7 -7
View File
@@ -51,20 +51,20 @@ const MANA_WELL_TIERS: SkillTierDef[] = [
// L5 Perks (Choose 1 of 3)
l5Perks: [
createPerk('mw_t1_l5_a', 'Deep Basin', '+20% Max Mana', 'A',
{ type: 'multiplier', stat: 'maxMana', value: 0.20 }, false, 1.5, 5),
{ type: 'multiplier', stat: 'maxMana', value: 1.20 }, false, 1.5, 5),
createPerk('mw_t1_l5_b', 'Pure Stream', '+10% Regen', 'B',
{ type: 'multiplier', stat: 'regen', value: 0.10 }, false, 1.5, 5),
{ type: 'multiplier', stat: 'regen', value: 1.10 }, false, 1.5, 5),
createPerk('mw_t1_l5_c', 'Spark Gap', '+5% Spell Damage', 'C',
{ type: 'multiplier', stat: 'spellDamage', value: 0.05 }, false, 1.5, 5),
{ type: 'multiplier', stat: 'spellDamage', value: 1.05 }, false, 1.5, 5),
],
// L10 Perks (Choose 1 of 3)
l10Perks: [
createPerk('mw_t1_l10_a', 'Expanded Volume', '+30% Max Mana', 'A',
{ type: 'multiplier', stat: 'maxMana', value: 0.30 }, false, 2.0, 10),
{ type: 'multiplier', stat: 'maxMana', value: 1.30 }, false, 2.0, 10),
createPerk('mw_t1_l10_b', 'Rapid Flow', '+15% Regen', 'B',
{ type: 'multiplier', stat: 'regen', value: 0.15 }, false, 2.0, 10),
{ type: 'multiplier', stat: 'regen', value: 1.15 }, false, 2.0, 10),
createPerk('mw_t1_l10_c', 'Overcharge', '+10% Spell Damage', 'C',
{ type: 'multiplier', stat: 'spellDamage', value: 0.10 }, false, 2.0, 10),
{ type: 'multiplier', stat: 'spellDamage', value: 1.10 }, false, 2.0, 10),
],
},
// TIER 2
@@ -83,7 +83,7 @@ const MANA_WELL_TIERS: SkillTierDef[] = [
],
l10Perks: [
createPerk('mw_t2_l10_a', 'Oceanic Reach', '+50% Max Mana.', 'A',
{ type: 'multiplier', stat: 'maxMana', value: 0.50 }, false, 2.5, 10),
{ type: 'multiplier', stat: 'maxMana', value: 1.50 }, false, 2.5, 10),
createPerk('mw_t2_l10_b', 'Unstoppable Current', 'Regen cannot be reduced below 50% of base by Incursion.', 'B',
{ type: 'special', specialId: 'unstoppableCurrent', specialDesc: 'Regen floor at 50% base' }, false, 2.5, 10),
createPerk('mw_t2_l10_c', 'Discharge', 'Expending 50% of your tank in one spell triples its power.', 'C',
@@ -190,10 +190,14 @@ describe('ManaStore', () => {
it('should have base elements unlocked', () => {
const state = useManaStore.getState();
expect(state.elements.fire.unlocked).toBe(true);
expect(state.elements.water.unlocked).toBe(true);
expect(state.elements.air.unlocked).toBe(true);
expect(state.elements.earth.unlocked).toBe(true);
// Only transference should be unlocked at start
expect(state.elements.transference.unlocked).toBe(true);
// Base elements should be locked
expect(state.elements.fire.unlocked).toBe(false);
expect(state.elements.water.unlocked).toBe(false);
expect(state.elements.air.unlocked).toBe(false);
expect(state.elements.earth.unlocked).toBe(false);
});
it('should have exotic elements locked', () => {
@@ -208,13 +212,14 @@ describe('ManaStore', () => {
it('should convert raw mana to elemental', () => {
useManaStore.setState({ rawMana: 200 });
const result = useManaStore.getState().convertMana('fire', 1);
// Transference is unlocked at start
const result = useManaStore.getState().convertMana('transference', 1);
expect(result).toBe(true);
const state = useManaStore.getState();
expect(state.rawMana).toBe(100);
expect(state.elements.fire.current).toBe(1);
expect(state.elements.transference.current).toBe(1);
});
it('should not convert when not enough raw mana', () => {