feat: implement Active Disciplines system
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 31s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 31s
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
type DisciplineDefinition = {
|
||||
name: string;
|
||||
attunement: DisciplinesAttunementType;
|
||||
manaType: ManaType;
|
||||
baseCost: number;
|
||||
description: string;
|
||||
requires?: DisciplineDefinition[];
|
||||
};
|
||||
|
||||
enum DisciplinesAttunementType {
|
||||
base,
|
||||
enchanter,
|
||||
fabricator,
|
||||
invoker
|
||||
};
|
||||
|
||||
export const baseDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
name: "Embercraft",
|
||||
attunement: DisciplinesAttunementType.base,
|
||||
manaType: "fire",
|
||||
baseCost: 10,
|
||||
description: "Basic flame projection with autocrit on combustion explosion",
|
||||
requires: []
|
||||
},
|
||||
{
|
||||
name: "Earthbind",
|
||||
attunement: DisciplinesAttunementType.base,
|
||||
manaType: "earth",
|
||||
baseCost: 12,
|
||||
description: "Basic mana chains with passive ground stability",
|
||||
requires: []
|
||||
}
|
||||
];
|
||||
@@ -0,0 +1,56 @@
|
||||
// ─── Base Disciplines ─────────────────────────────────────────────────────────
|
||||
// Disciplines available to all attunements
|
||||
|
||||
import type { DisciplineDefinition } from '../../types/disciplines';
|
||||
|
||||
export const baseDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
id: 'raw-mastery',
|
||||
name: 'Raw Mana Mastery',
|
||||
attunement: 'base',
|
||||
manaType: 'raw',
|
||||
baseCost: 5,
|
||||
description: 'Learn to harness raw mana more efficiently.',
|
||||
statBonus: { stat: 'maxManaBonus', baseValue: 10 },
|
||||
difficultyFactor: 100,
|
||||
scalingFactor: 50,
|
||||
drainBase: 1,
|
||||
perks: [
|
||||
{
|
||||
id: 'raw-mastery-1',
|
||||
type: 'once',
|
||||
threshold: 100,
|
||||
value: 0,
|
||||
description: '+50 Max Mana',
|
||||
},
|
||||
{
|
||||
id: 'raw-mastery-2',
|
||||
type: 'infinite',
|
||||
threshold: 500,
|
||||
value: 100,
|
||||
description: 'Every 100 XP: +25 Max Mana',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'elemental-attunement',
|
||||
name: 'Elemental Attunement',
|
||||
attunement: 'base',
|
||||
manaType: 'fire',
|
||||
baseCost: 10,
|
||||
description: 'Begin focusing raw mana into fire.',
|
||||
statBonus: { stat: 'elementCap_fire', baseValue: 5 },
|
||||
difficultyFactor: 150,
|
||||
scalingFactor: 75,
|
||||
drainBase: 2,
|
||||
perks: [
|
||||
{
|
||||
id: 'elem-attunement-1',
|
||||
type: 'once',
|
||||
threshold: 200,
|
||||
value: 0,
|
||||
description: '+10 Fire Capacity',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,34 @@
|
||||
type DisciplineDefinition = {
|
||||
name: string;
|
||||
attunement: DisciplinesAttunementType;
|
||||
manaType: ManaType;
|
||||
baseCost: number;
|
||||
description: string;
|
||||
requires?: DisciplineDefinition[];
|
||||
};
|
||||
|
||||
enum DisciplinesAttunementType {
|
||||
base,
|
||||
enchanter,
|
||||
fabricator,
|
||||
invoker
|
||||
};
|
||||
|
||||
export const enchanterDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
name: "Soulforge",
|
||||
attunement: DisciplinesAttunementType.enchanter,
|
||||
manaType: "light",
|
||||
baseCost: 25,
|
||||
description: "Mana chains that create permanent elemental storage nodes",
|
||||
requires: [{name: "Embercraft"}]
|
||||
},
|
||||
{
|
||||
name: "Mana Prism",
|
||||
attunement: DisciplinesAttunementType.enchanter,
|
||||
manaType: "light",
|
||||
baseCost: 30,
|
||||
description: "Prismatic mana focusing that reflexes attacks as fixed ratio",
|
||||
requires: [{name: "Soulforge"}]
|
||||
}
|
||||
];
|
||||
@@ -0,0 +1,56 @@
|
||||
// ─── Enchanter Discipline Files ──────────────────────────────────────────────
|
||||
// Attunement-focused disciplines for Enchanter role
|
||||
|
||||
import type { DisciplineDefinition } from '../../types/disciplines';
|
||||
|
||||
export const enchanterDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
id: 'enchant-crafting',
|
||||
name: 'Enchantment Crafting',
|
||||
attunement: 'enchanter',
|
||||
manaType: 'transference',
|
||||
baseCost: 8,
|
||||
description: 'Improve your ability to apply enchantments to equipment.',
|
||||
statBonus: { stat: 'enchantPower', baseValue: 8 },
|
||||
difficultyFactor: 120,
|
||||
scalingFactor: 60,
|
||||
drainBase: 3,
|
||||
perks: [
|
||||
{
|
||||
id: 'enchant-1',
|
||||
type: 'infinite',
|
||||
threshold: 150,
|
||||
value: 5,
|
||||
description: '+5 Enchantment Power (stacks with skill tiers)',
|
||||
},
|
||||
{
|
||||
id: 'enchant-2',
|
||||
type: 'capped',
|
||||
threshold: 300,
|
||||
value: 20,
|
||||
description: 'Double enchantment duration at 300 XP',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'mana-channeling',
|
||||
name: 'Mana Channeling',
|
||||
attunement: 'enchanter',
|
||||
manaType: 'lightning',
|
||||
baseCost: 12,
|
||||
description: 'Use lightning to transfer mana to equipment.',
|
||||
statBonus: { stat: 'clickManaMultiplier', baseValue: 0.3 },
|
||||
difficultyFactor: 180,
|
||||
scalingFactor: 90,
|
||||
drainBase: 5,
|
||||
perks: [
|
||||
{
|
||||
id: 'channel-1',
|
||||
type: 'once',
|
||||
threshold: 250,
|
||||
value: 0,
|
||||
description: 'Unlock lightning mana boosting',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,21 @@
|
||||
import type { DisciplineDefinition } from '../../types/disciplines';
|
||||
|
||||
const fabricatorDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
name: 'Metalworking',
|
||||
attunement: 'fabricator',
|
||||
manaType: 'metal',
|
||||
baseCosts: { mana: 28, time: 7 },
|
||||
description: 'Increase metal equipment crafting speed',
|
||||
thresholds: { xp: 140, interval: 70 }
|
||||
},
|
||||
{
|
||||
name: 'Crystal Shaping',
|
||||
attunement: 'fabricator',
|
||||
manaType: 'crystal',
|
||||
baseCosts: { mana: 30, time: 8 },
|
||||
description: 'Increase crystal equipment durability',
|
||||
thresholds: { xp: 160, interval: 80 }
|
||||
}
|
||||
];
|
||||
export default fabricatorDisciplines;
|
||||
@@ -0,0 +1,56 @@
|
||||
// ─── Fabricator Discipline Files ──────────────────────────────────────────────
|
||||
// Attunement-focused disciplines for Fabricator role
|
||||
|
||||
import type { DisciplineDefinition } from '../../types/disciplines';
|
||||
|
||||
export const fabricatorDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
id: 'golem-crafting',
|
||||
name: 'Golem Crafting',
|
||||
attunement: 'fabricator',
|
||||
manaType: 'earth',
|
||||
baseCost: 10,
|
||||
description: 'Improve your ability to craft and maintain golems.',
|
||||
statBonus: { stat: 'golemCapacity', baseValue: 2 },
|
||||
difficultyFactor: 150,
|
||||
scalingFactor: 80,
|
||||
drainBase: 4,
|
||||
perks: [
|
||||
{
|
||||
id: 'golem-1',
|
||||
type: 'once',
|
||||
threshold: 200,
|
||||
value: 0,
|
||||
description: 'Unlock golem summoning',
|
||||
},
|
||||
{
|
||||
id: 'golem-2',
|
||||
type: 'capped',
|
||||
threshold: 500,
|
||||
value: 5,
|
||||
description: 'Double golem capacity at 500 XP',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'crafting-efficiency',
|
||||
name: 'Crafting Efficiency',
|
||||
attunement: 'fabricator',
|
||||
manaType: 'sand',
|
||||
baseCost: 12,
|
||||
description: 'Reduce material costs for crafting.',
|
||||
statBonus: { stat: 'craftingCostReduction', baseValue: 15 },
|
||||
difficultyFactor: 180,
|
||||
scalingFactor: 90,
|
||||
drainBase: 6,
|
||||
perks: [
|
||||
{
|
||||
id: 'efficiency-1',
|
||||
type: 'once',
|
||||
threshold: 300,
|
||||
value: 0,
|
||||
description: 'Unlock reduced crafting costs',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,21 @@
|
||||
import type { DisciplineDefinition } from '../../types/disciplines';
|
||||
|
||||
const invokerDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
name: 'Lightning Surge',
|
||||
attunement: 'invoker',
|
||||
manaType: 'lightning',
|
||||
baseCost: 30,
|
||||
description: 'Boost lightning spell damage',
|
||||
thresholds: { xp: 150, interval: 75 }
|
||||
},
|
||||
{
|
||||
name: 'Void Echo',
|
||||
attunement: 'invoker',
|
||||
manaType: 'void',
|
||||
baseCost: 35,
|
||||
description: 'Increase void spell cast speed',
|
||||
thresholds: { xp: 180, interval: 90 }
|
||||
}
|
||||
];
|
||||
export default invokerDisciplines;
|
||||
@@ -0,0 +1,56 @@
|
||||
// ─── Invoker Discipline Files ─────────────────────────────────────────────────
|
||||
// Attunement-focused disciplines for Invoker role
|
||||
|
||||
import type { DisciplineDefinition } from '../../types/disciplines';
|
||||
|
||||
export const invokerDisciplines: DisciplineDefinition[] = [
|
||||
{
|
||||
id: 'spell-casting',
|
||||
name: 'Spell Casting',
|
||||
attunement: 'invoker',
|
||||
manaType: 'light',
|
||||
baseCost: 10,
|
||||
description: 'Improve spell power and effectiveness.',
|
||||
statBonus: { stat: 'baseDamageBonus', baseValue: 6 },
|
||||
difficultyFactor: 130,
|
||||
scalingFactor: 65,
|
||||
drainBase: 3,
|
||||
perks: [
|
||||
{
|
||||
id: 'spell-1',
|
||||
type: 'once',
|
||||
threshold: 200,
|
||||
value: 0,
|
||||
description: '+10 Base Damage',
|
||||
},
|
||||
{
|
||||
id: 'spell-2',
|
||||
type: 'infinite',
|
||||
threshold: 400,
|
||||
value: 30,
|
||||
description: 'Every 300 XP: +5 Base Damage',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'void-manipulation',
|
||||
name: 'Void Manipulation',
|
||||
attunement: 'invoker',
|
||||
manaType: 'void',
|
||||
baseCost: 15,
|
||||
description: 'Master the exotic void mana for devastating effects.',
|
||||
statBonus: { stat: 'baseDamageMultiplier', baseValue: 0.15 },
|
||||
difficultyFactor: 200,
|
||||
scalingFactor: 100,
|
||||
drainBase: 7,
|
||||
perks: [
|
||||
{
|
||||
id: 'void-1',
|
||||
type: 'once',
|
||||
threshold: 300,
|
||||
value: 0,
|
||||
description: 'Unlock void damage multiplier',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user