Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f61ed00ac1 | |||
| 2355be66e9 |
@@ -74,4 +74,4 @@ export const ELEMENT_ICON_NAMES: Record<string, string> = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// ─── Base Unlocked Elements ───────────────────────────────────────────────────
|
// ─── Base Unlocked Elements ───────────────────────────────────────────────────
|
||||||
export const BASE_UNLOCKED_ELEMENTS = ['fire', 'water', 'air', 'earth'];
|
export const BASE_UNLOCKED_ELEMENTS = ['transference'];
|
||||||
|
|||||||
@@ -51,20 +51,20 @@ const MANA_WELL_TIERS: SkillTierDef[] = [
|
|||||||
// L5 Perks (Choose 1 of 3)
|
// L5 Perks (Choose 1 of 3)
|
||||||
l5Perks: [
|
l5Perks: [
|
||||||
createPerk('mw_t1_l5_a', 'Deep Basin', '+20% Max Mana', 'A',
|
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',
|
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',
|
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)
|
// L10 Perks (Choose 1 of 3)
|
||||||
l10Perks: [
|
l10Perks: [
|
||||||
createPerk('mw_t1_l10_a', 'Expanded Volume', '+30% Max Mana', 'A',
|
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',
|
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',
|
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
|
// TIER 2
|
||||||
@@ -83,7 +83,7 @@ const MANA_WELL_TIERS: SkillTierDef[] = [
|
|||||||
],
|
],
|
||||||
l10Perks: [
|
l10Perks: [
|
||||||
createPerk('mw_t2_l10_a', 'Oceanic Reach', '+50% Max Mana.', 'A',
|
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',
|
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),
|
{ 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',
|
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', () => {
|
it('should have base elements unlocked', () => {
|
||||||
const state = useManaStore.getState();
|
const state = useManaStore.getState();
|
||||||
|
|
||||||
expect(state.elements.fire.unlocked).toBe(true);
|
// Only transference should be unlocked at start
|
||||||
expect(state.elements.water.unlocked).toBe(true);
|
expect(state.elements.transference.unlocked).toBe(true);
|
||||||
expect(state.elements.air.unlocked).toBe(true);
|
|
||||||
expect(state.elements.earth.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', () => {
|
it('should have exotic elements locked', () => {
|
||||||
@@ -208,13 +212,14 @@ describe('ManaStore', () => {
|
|||||||
it('should convert raw mana to elemental', () => {
|
it('should convert raw mana to elemental', () => {
|
||||||
useManaStore.setState({ rawMana: 200 });
|
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);
|
expect(result).toBe(true);
|
||||||
|
|
||||||
const state = useManaStore.getState();
|
const state = useManaStore.getState();
|
||||||
expect(state.rawMana).toBe(100);
|
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', () => {
|
it('should not convert when not enough raw mana', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user