da4f9eccb3
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
- Add PerkBonus type and optional bonus field to DisciplinePerk - Populate bonus data on 39 perks across base, elemental, elemental-regen, elemental-regen-advanced, and invoker discipline files - Rewrite computeDisciplineEffects() to apply once/infinite/capped perk bonuses through known stat keys (maxManaBonus, baseDamageBonus, regen_*, elementCap_*) - Add per-element cap bonus routing in effects.ts computeAllEffects() - Remove dead enchantPower bonus (no consumer in effects pipeline)
198 lines
6.0 KiB
TypeScript
198 lines
6.0 KiB
TypeScript
// ─── Elemental Regen Disciplines (Composite + Exotic) ─────────────────────────
|
|
// Regen disciplines for composite and exotic mana types.
|
|
// All are BASE attunement so they are available to every role once the element is unlocked.
|
|
|
|
import { DisciplinesAttunementType } from '../../types/disciplines';
|
|
import type { DisciplineDefinition } from '../../types/disciplines';
|
|
|
|
export const elementalRegenAdvancedDisciplines: DisciplineDefinition[] = [
|
|
// ── Composite Elements ─────────────────────────────────────────────────────
|
|
{
|
|
id: 'regen-metal',
|
|
name: 'Metal Mana Flow',
|
|
attunement: DisciplinesAttunementType.BASE,
|
|
manaType: 'metal',
|
|
baseCost: 12,
|
|
description: 'Attune your metal mana to regenerate passively over time.',
|
|
statBonus: { stat: 'regen_metal', baseValue: 0.35, label: 'Metal Regen/tick' },
|
|
difficultyFactor: 160,
|
|
scalingFactor: 80,
|
|
drainBase: 2,
|
|
requires: ['metal'],
|
|
perks: [
|
|
{
|
|
id: 'regen-metal-1',
|
|
type: 'once',
|
|
threshold: 150,
|
|
value: 0,
|
|
description: '+0.35 Metal Regen/tick',
|
|
bonus: { stat: 'regen_metal', amount: 0.35 },
|
|
},
|
|
{
|
|
id: 'regen-metal-inf',
|
|
type: 'infinite',
|
|
threshold: 400,
|
|
value: 100,
|
|
description: 'Every 100 XP: +0.15 Metal Regen/tick',
|
|
bonus: { stat: 'regen_metal', amount: 0.15 },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: 'regen-sand',
|
|
name: 'Sand Mana Flow',
|
|
attunement: DisciplinesAttunementType.BASE,
|
|
manaType: 'sand',
|
|
baseCost: 12,
|
|
description: 'Attune your sand mana to regenerate passively over time.',
|
|
statBonus: { stat: 'regen_sand', baseValue: 0.35, label: 'Sand Regen/tick' },
|
|
difficultyFactor: 160,
|
|
scalingFactor: 80,
|
|
drainBase: 2,
|
|
requires: ['sand'],
|
|
perks: [
|
|
{
|
|
id: 'regen-sand-1',
|
|
type: 'once',
|
|
threshold: 150,
|
|
value: 0,
|
|
description: '+0.35 Sand Regen/tick',
|
|
bonus: { stat: 'regen_sand', amount: 0.35 },
|
|
},
|
|
{
|
|
id: 'regen-sand-inf',
|
|
type: 'infinite',
|
|
threshold: 400,
|
|
value: 100,
|
|
description: 'Every 100 XP: +0.15 Sand Regen/tick',
|
|
bonus: { stat: 'regen_sand', amount: 0.15 },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: 'regen-lightning',
|
|
name: 'Lightning Mana Flow',
|
|
attunement: DisciplinesAttunementType.BASE,
|
|
manaType: 'lightning',
|
|
baseCost: 12,
|
|
description: 'Attune your lightning mana to regenerate passively over time.',
|
|
statBonus: { stat: 'regen_lightning', baseValue: 0.35, label: 'Lightning Regen/tick' },
|
|
difficultyFactor: 160,
|
|
scalingFactor: 80,
|
|
drainBase: 2,
|
|
requires: ['lightning'],
|
|
perks: [
|
|
{
|
|
id: 'regen-lightning-1',
|
|
type: 'once',
|
|
threshold: 150,
|
|
value: 0,
|
|
description: '+0.35 Lightning Regen/tick',
|
|
bonus: { stat: 'regen_lightning', amount: 0.35 },
|
|
},
|
|
{
|
|
id: 'regen-lightning-inf',
|
|
type: 'infinite',
|
|
threshold: 400,
|
|
value: 100,
|
|
description: 'Every 100 XP: +0.15 Lightning Regen/tick',
|
|
bonus: { stat: 'regen_lightning', amount: 0.15 },
|
|
},
|
|
],
|
|
},
|
|
// ── Exotic Elements ────────────────────────────────────────────────────────
|
|
{
|
|
id: 'regen-crystal',
|
|
name: 'Crystal Mana Flow',
|
|
attunement: DisciplinesAttunementType.BASE,
|
|
manaType: 'crystal',
|
|
baseCost: 18,
|
|
description: 'Attune your crystal mana to regenerate passively over time.',
|
|
statBonus: { stat: 'regen_crystal', baseValue: 0.25, label: 'Crystal Regen/tick' },
|
|
difficultyFactor: 220,
|
|
scalingFactor: 110,
|
|
drainBase: 3,
|
|
requires: ['crystal'],
|
|
perks: [
|
|
{
|
|
id: 'regen-crystal-1',
|
|
type: 'once',
|
|
threshold: 200,
|
|
value: 0,
|
|
description: '+0.25 Crystal Regen/tick',
|
|
bonus: { stat: 'regen_crystal', amount: 0.25 },
|
|
},
|
|
{
|
|
id: 'regen-crystal-inf',
|
|
type: 'infinite',
|
|
threshold: 500,
|
|
value: 100,
|
|
description: 'Every 100 XP: +0.1 Crystal Regen/tick',
|
|
bonus: { stat: 'regen_crystal', amount: 0.1 },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: 'regen-stellar',
|
|
name: 'Stellar Mana Flow',
|
|
attunement: DisciplinesAttunementType.BASE,
|
|
manaType: 'stellar',
|
|
baseCost: 18,
|
|
description: 'Attune your stellar mana to regenerate passively over time.',
|
|
statBonus: { stat: 'regen_stellar', baseValue: 0.25, label: 'Stellar Regen/tick' },
|
|
difficultyFactor: 220,
|
|
scalingFactor: 110,
|
|
drainBase: 3,
|
|
requires: ['stellar'],
|
|
perks: [
|
|
{
|
|
id: 'regen-stellar-1',
|
|
type: 'once',
|
|
threshold: 200,
|
|
value: 0,
|
|
description: '+0.25 Stellar Regen/tick',
|
|
bonus: { stat: 'regen_stellar', amount: 0.25 },
|
|
},
|
|
{
|
|
id: 'regen-stellar-inf',
|
|
type: 'infinite',
|
|
threshold: 500,
|
|
value: 100,
|
|
description: 'Every 100 XP: +0.1 Stellar Regen/tick',
|
|
bonus: { stat: 'regen_stellar', amount: 0.1 },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: 'regen-void',
|
|
name: 'Void Mana Flow',
|
|
attunement: DisciplinesAttunementType.BASE,
|
|
manaType: 'void',
|
|
baseCost: 18,
|
|
description: 'Attune your void mana to regenerate passively over time.',
|
|
statBonus: { stat: 'regen_void', baseValue: 0.25, label: 'Void Regen/tick' },
|
|
difficultyFactor: 220,
|
|
scalingFactor: 110,
|
|
drainBase: 3,
|
|
requires: ['void'],
|
|
perks: [
|
|
{
|
|
id: 'regen-void-1',
|
|
type: 'once',
|
|
threshold: 200,
|
|
value: 0,
|
|
description: '+0.25 Void Regen/tick',
|
|
bonus: { stat: 'regen_void', amount: 0.25 },
|
|
},
|
|
{
|
|
id: 'regen-void-inf',
|
|
type: 'infinite',
|
|
threshold: 500,
|
|
value: 100,
|
|
description: 'Every 100 XP: +0.1 Void Regen/tick',
|
|
bonus: { stat: 'regen_void', amount: 0.1 },
|
|
},
|
|
],
|
|
},
|
|
];
|