Files
Mana-Loop/docs/specs/attunements/fabricator/systems/item-fabrication-spec.md
T
n8n-gitea b506f0bcc3
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
feat: implement DoT/debuff runtime system (spec §6, AC-12, AC-13)
- Add ActiveEffect, EffectType types to game.ts; activeEffects + effectiveArmor on EnemyState
- Add SpellOnHitEffect + onHitEffect field to SpellDefinition
- Wire onHitEffect to fire (burn), death (curse), lightning (armor_corrode), frost (freeze), soul (bypassArmor burn)
- Add applyOnHitEffect() — applies on-hit effect on successful spell hit (spec §6.2)
- Add processDoTPhase() — ticks all active effects after weapon/golem attacks (spec §6.3)
- Add bypassArmor/bypassBarrier support in applyEnemyDefenses() (AC-13)
- Export standalone applyEnemyDefenses from combat-tick.ts for DoT pipeline
- Split DoT runtime into separate dot-runtime.ts (135 lines) to keep combat-actions.ts under 400 lines
- Update all enemy generation sites with activeEffects/effectiveArmor defaults
- Fix test helpers for new required fields

All 921 tests pass (45 test files)
2026-06-03 18:38:01 +02:00

16 KiB
Raw Blame History

Item Fabrication System — Design Spec

Describes the Fabricator attunement's crafting system: recipe categories, unlock gates, material costs, crafting flow, and how fabricated items differ from base loot.


1. Objective

Item Fabrication is the Fabricator attunement's non-combat crafting system. It allows the player to craft materials and equipment using mana and component items. Recipes are unlocked through Fabricator discipline perks, and the resulting equipment can carry pre-applied enchantments, making fabrication a parallel path to the Enchanter's enchanting system.

Design goals:

  • Fabricated equipment provides an alternative to loot drops
  • Material crafting creates a multi-tier resource pipeline
  • Discipline-gated recipe unlocks reward Fabricator attunement investment
  • Pre-applied enchantments on crafted gear offer unique combinations
  • Crafting Efficiency discipline reduces material costs

2. Recipe Categories

2.1 Overview

Category File Count Unlock Gate
Material Recipes fabricator-material-recipes.ts 15 None (base recipes)
Core Equipment (Elemental) fabricator-recipes.ts 12 Study Fabricator Recipes discipline
Wizard Branch fabricator-wizard-recipes.ts 14 Study Wizard Equipment discipline
Physical Branch fabricator-physical-recipes.ts 7 Study Physical Equipment discipline
Total 48

2.2 Recipe Type Structure

interface FabricatorRecipe {
  id: string;
  name: string;
  description: string;
  manaType: string;              // Mana type required (must be unlocked)
  equipmentTypeId: string;       // Equipment type ID produced
  slot: EquipmentSlot;           // Slot the equipment occupies
  materials: Record<string, number>;  // materialId -> count required
  manaCost: number;              // Mana cost in the recipe's mana type
  craftTime: number;             // Craft time in hours
  rarity: 'common' | 'uncommon' | 'rare' | 'epic' | 'legendary';
  gearTrait: string;             // Flavor text for gear properties
  bonusEnchantments?: AppliedEnchantment[];  // Pre-applied enchantments
  recipeType?: 'equipment' | 'material';
  resultMaterial?: string;       // For material recipes: material ID produced
  resultAmount?: number;         // For material recipes: how many are produced
}

3. Material Recipes

3.1 Tier 1: Basic Materials

ID Name Mana Type Mana Cost Input Output Time
manaCrystal Mana Crystal raw 500 1× manaCrystal 1h
manaCrystalDustCraft Mana Crystal Dust raw 10 1× manaCrystal 2× manaCrystalDust 1h

3.2 Tier 2: Elemental Crystals

All cost 100 of the respective element mana, take 1 hour, produce 1 crystal.

ID Mana Type Element
fireCrystal fire Fire
waterCrystal water Water
airCrystal air Air
earthCrystal earth Earth
lightCrystal light Light
darkCrystal dark Dark
metalCrystal metal Metal
crystalCrystal crystal Crystal

3.3 Tier 3: Shards and Cores

ID Mana Type Mana Cost Input Output Time
earthShardCraft earth 50 1× earthCrystal 1× earthShard 1h
elementalCore raw 100 10× manaCrystal 1× elementalCore 10h

3.4 Tier 4: Advanced Materials

ID Mana Type Mana Cost Input Output Time
aetherWeave air 500 3× airCrystal, 3× lightCrystal, 2× elementalCore 1× aetherWeave 12h
voidCloth dark 500 3× airCrystal, 3× darkCrystal, 2× voidEssence 1× voidCloth 12h
liquidCrystalLattice crystal 800 5× crystalCrystal, 3× elementalCore, 2× voidEssence, 1× celestialFragment 1× liquidCrystalLattice 20h

3.5 Material Dependency Chain

Raw Mana (500) → Mana Crystal (1)
Mana Crystal (1) + Raw Mana (10) → Mana Crystal Dust (2)
Mana Crystal (1) + Element Mana (100) → Element Crystal (1) [per element]
Element Crystal (1) + Element Mana (50) → Element Shard (1) [earth only]
Mana Crystal (10) + Raw Mana (100) → Elemental Core (1) [10hr]
Air Crystal (3) + Light Crystal (3) + Elemental Core (2) → Aether Weave (1) [12hr]
Air Crystal (3) + Dark Crystal (3) + Void Essence (2) → Void Cloth (1) [12hr]
Crystal Crystal (5) + Elemental Core (3) + Void Essence (2) + Celestial Fragment (1) → Liquid Crystal Lattice (1) [20hr]

4. Equipment Recipes

4.1 Earth Gear (Unlock: Study Fabricator Recipes @ 50 XP)

ID Name Slot Mana Cost Materials Rarity Time
earthHelm Earthen Helm head 200 earth 4× manaCrystalDust, 2× earthShard uncommon 3h
earthChest Stoneguard Armor body 500 earth 8× manaCrystalDust, 4× earthShard, 1× elementalCore rare 6h
earthBoots Stonegreaves feet 150 earth 3× manaCrystalDust, 1× earthShard uncommon 2h

4.2 Metal Gear (Unlock: Study Fabricator Recipes @ 100 XP)

ID Name Slot Mana Cost Materials Rarity Time
metalBlade Metal Blade mainHand 400 metal 6× manaCrystalDust, 3× metalShard, 2× elementalCore rare 5h
metalShield Metal Spell Focus offHand 450 metal 7× manaCrystalDust, 4× metalShard, 1× elementalCore rare 5h
metalGloves Metalweave Gauntlets hands 250 metal 4× manaCrystalDust, 2× metalShard uncommon 3h

4.3 Sand Gear (Unlock: Study Fabricator Recipes @ 150 XP)

ID Name Slot Mana Cost Materials Rarity Time
sandBoots Sandstrider Boots feet 120 sand 3× manaCrystalDust, 1× sandShard uncommon 2h
sandGloves Sandweave Gloves hands 140 sand 3× manaCrystalDust, 2× sandShard uncommon 2h
sandVest Sandcloth Vest body 300 sand 5× manaCrystalDust, 2× sandShard, 1× elementalCore rare 4h

4.4 Crystal Gear (Unlock: Study Fabricator Recipes @ 200 XP)

ID Name Slot Mana Cost Materials Rarity Time
crystalWand Crystal Focus Wand mainHand 600 crystal 10× manaCrystalDust, 5× crystalShard, 3× elementalCore epic 6h
crystalRing Crystal Ring accessory1 350 crystal 5× manaCrystalDust, 3× crystalShard, 1× elementalCore rare 3h
crystalAmulet Crystal Pendant accessory2 400 crystal 6× manaCrystalDust, 3× crystalShard, 2× elementalCore rare 4h

4.5 Wizard Branch (Unlock: Study Wizard Equipment discipline)

ID Name Slot Unlock (XP) Mana Cost Materials Rarity Time
oakStaff Oak Staff mainHand 50 200 earth 5× manaCrystalDust, 2× earthShard uncommon 3h
arcanistStaff Arcanist Staff mainHand 100 700 crystal 12× manaCrystalDust, 6× crystalShard, 3× elementalCore epic 8h
battlestaff Battlestaff mainHand 150 500 metal 8× manaCrystalDust, 4× metalShard, 2× elementalCore rare 6h
arcanistCirclet Arcanist Circlet head 150 300 crystal 6× manaCrystalDust, 2× crystalShard, 1× lightCrystal rare 4h
arcanistRobe Arcanist Robe body 150 800 crystal 14× manaCrystalDust, 7× crystalShard, 3× elementalCore epic 8h
voidCatalyst Void Catalyst mainHand 200 600 crystal 10× manaCrystalDust, 3× darkCrystal, 2× voidEssence, 2× elementalCore epic 7h
arcanistPendant Arcanist Pendant accessory1 250 500 crystal 8× manaCrystalDust, 4× crystalShard, 2× elementalCore epic 5h

Advanced Wizard Gear:

ID Name Slot Mana Cost Materials Rarity Time
aetherRobe Aetherweave Robe body 1200 crystal 3× aetherWeave, 15× manaCrystalDust, 8× crystalShard, 4× elementalCore legendary 15h
aetherCirclet Aetherweave Circlet head 900 crystal 2× aetherWeave, 10× manaCrystalDust, 3× lightCrystal, 3× elementalCore epic 10h
voidRobe Voidweave Robe body 1200 sand 3× voidCloth, 15× manaCrystalDust, 8× crystalShard, 3× voidEssence legendary 15h
voidCowl Voidweave Cowl head 900 sand 2× voidCloth, 10× manaCrystalDust, 3× darkCrystal, 2× voidEssence epic 10h
latticeStaff Crystal Lattice Staff mainHand 2000 crystal 2× liquidCrystalLattice, 2× aetherWeave, 2× voidCloth, 5× elementalCore legendary 25h
latticeAmulet Crystal Lattice Amulet accessory1 1500 crystal 1× liquidCrystalLattice, 5× crystalCrystal, 4× elementalCore, 2× voidEssence legendary 18h

4.6 Physical Branch (Unlock: Study Physical Equipment discipline)

ID Name Slot Unlock (XP) Mana Cost Materials Rarity Time
crystalBlade Crystal Blade mainHand 50 500 crystal 8× manaCrystalDust, 4× crystalShard, 2× elementalCore rare 5h
arcanistBlade Arcanist Blade mainHand 100 600 metal 10× manaCrystalDust, 5× metalShard, 3× elementalCore epic 7h
voidBlade Void-Touched Blade mainHand 150 550 crystal 9× manaCrystalDust, 3× darkCrystal, 2× voidEssence, 2× elementalCore epic 6h
battleHelm Battle Helm head 200 350 metal 6× manaCrystalDust, 3× metalShard, 1× elementalCore rare 4h
battleRobe Battle Robe body 200 400 sand 8× manaCrystalDust, 3× sandShard, 2× elementalCore rare 5h
battleBoots Battle Boots feet 250 180 sand 4× manaCrystalDust, 2× sandShard uncommon 3h
combatGauntlets Combat Gauntlets hands 300 300 metal 5× manaCrystalDust, 2× metalShard, 1× elementalCore uncommon 3h

5. Recipe Unlock Gates

5.1 Study Fabricator Recipes Discipline

XP Threshold Recipes Unlocked
50 Earth gear (helm, chest, boots)
100 Metal gear (blade, shield, gloves)
150 Sand gear (boots, gloves, vest)
200 Crystal gear (wand, ring, amulet)

5.2 Study Wizard Equipment Discipline

XP Threshold Recipes Unlocked
50 Oak Staff
100 Arcanist Staff
150 Battlestaff, Arcanist Circlet, Arcanist Robe
200 Void Catalyst
250 Arcanist Pendant
300 (advanced recipes via material availability)

5.3 Study Physical Equipment Discipline

XP Threshold Recipes Unlocked
50 Crystal Blade
100 Arcanist Blade
150 Void Blade
200 Battle Helm, Battle Robe
250 Battle Boots
300 Combat Gauntlets

6. Crafting Flow

6.1 Pre-Craft Checks

checkFabricatorCosts(recipe, materials, rawMana, elements):
  - Verify all material counts are sufficient
  - Verify mana (raw or elemental) is sufficient
  - Return { canCraft, missingMana, missingMaterials }

6.2 Crafting Execution

executeMaterialCraft(recipe, materials):
  1. Deduct mana cost from raw or elemental pool
  2. Deduct input materials from inventory
  3. Add resultAmount of resultMaterial to inventory

makeFabricatorProgress(recipeId, equipmentTypeId, craftTime, manaCost):
  1. Create EquipmentCraftingProgress object
  2. blueprintId = "fabricator-{recipeId}"
  3. Progress accumulates at HOURS_PER_TICK per tick
  4. On completion: create equipment instance with bonusEnchantments

6.3 Cancellation Refund

remainingFraction = (required - progress) / required
refundRate = remainingFraction + (1 - remainingFraction) × 0.5
manaRefund = floor(manaSpent × refundRate)
materialRefund = floor(materialsSpent × 0.5)

7. Crafting Efficiency Discipline Interaction

The Crafting Efficiency discipline provides:

Source Effect
Base stat bonus craftingCostReduction +15
Perk efficiency-1 (once @ 300 XP) +10% Crafting Cost Reduction

The craftingCostReduction stat reduces material costs for all fabrication recipes. Applied as: actualCost = baseCost × (1 - craftingCostReduction / 100).

At maximum: 15 (base) + 10 (perk) = 25% cost reduction.


8. How Fabricated Items Differ from Base Loot

Property Loot Drops Fabricated Items
Source Enemy drops, treasure rooms Crafting recipes
Enchantments None (must be enchanted) Pre-applied bonusEnchantments
Rarity Random (commonlegendary) Fixed per recipe
Quality Random (0100) Fixed per recipe
Stats Base for type Base for type + enchantment bonuses
Control None (random) Full (player chooses recipe)

Fabricated items are created with bonusEnchantments — pre-applied enchantment objects with effectId, stacks, and actualCost. These enchantments are permanent and cannot be removed without the Enchanter's disenchant process.


9. Equipment Types Producible via Fabrication

Slot Equipment Types
mainHand Metal Blade, Crystal Focus Wand, Oak Staff, Arcanist Staff, Battlestaff, Void Catalyst, Crystal Lattice Staff
offHand Metal Spell Focus
head Earthen Helm, Arcanist Circlet, Aetherweave Circlet, Voidweave Cowl, Battle Helm
body Stoneguard Armor, Sandcloth Vest, Arcanist Robe, Aetherweave Robe, Voidweave Robe, Battle Robe
hands Metalweave Gauntlets, Sandweave Gloves, Combat Gauntlets
feet Stonegreaves, Sandstrider Boots, Battle Boots
accessory1 Crystal Ring, Arcanist Pendant, Crystal Lattice Amulet
accessory2 Crystal Pendant

10. Rarity Distribution

Rarity Count Examples
common 2 Mana Crystal Dust, Earth Shard
uncommon 14 Earth gear, Sand gear, Oak Staff, Battle Boots, Combat Gauntlets, Mana Crystal
rare 14 Earth Chest, Metal gear, Crystal Ring/Amulet, Sand Vest, Crystal Blade, Battle Helm/Robe
epic 10 Crystal Wand, Arcanist Staff/Robe, Void Blade/Catalyst, Arcanist Pendant, Aether Circlet, Void Cowl
legendary 5 Aether Robe, Void Robe, Lattice Staff, Lattice Amulet, Liquid Crystal Lattice

11. Acceptance Criteria

# Criterion
AC-1 All 48 recipes are accessible when the Fabricator attunement is active.
AC-2 Recipe unlock gates fire at the correct discipline XP thresholds.
AC-3 Material crafting correctly consumes mana and input materials, producing the correct output.
AC-4 Equipment crafting produces items with the correct pre-applied enchantments.
AC-5 Crafting Efficiency discipline reduces material costs by the correct percentage.
AC-6 Cancellation refunds mana at the blended rate (100% unspent, 50% spent) and materials at 50%.
AC-7 Fabricated items cannot be crafted without the required mana type unlocked.
AC-8 Material dependency chain is correct: Mana Crystal → Element Crystal → Elemental Core → Advanced Materials.
AC-9 Craft time ranges from 1h (basic materials) to 25h (Crystal Lattice Staff).
AC-10 Mana cost ranges from 10 (Mana Crystal Dust) to 2000 (Crystal Lattice Staff).

12. Files Reference

File Role
src/lib/game/data/fabricator-material-recipes.ts Material recipes (15)
src/lib/game/data/fabricator-recipes.ts Core equipment recipes (12)
src/lib/game/data/fabricator-wizard-recipes.ts Wizard branch recipes (14)
src/lib/game/data/fabricator-physical-recipes.ts Physical branch recipes (7)
src/lib/game/data/fabricator-recipe-types.ts Recipe type definitions
src/lib/game/crafting-fabricator.ts Fabrication crafting logic
src/lib/game/data/disciplines/fabricator.ts Fabricator disciplines (5)
src/components/game/tabs/CraftingTab.tsx Crafting tab wrapper
src/components/game/tabs/CraftingTab/FabricatorSubTab.tsx Fabricator crafting UI