feat: add fabricator disciplines for recipe unlocks
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s

- Add unlocksRecipes field to DisciplinePerk type
- Add study-fabricator-recipes discipline (earth/metal/sand/crystal recipes)
- Add study-wizard-branch discipline (wizard equipment recipes)
- Add study-physical-branch discipline (physical combat equipment recipes)
- Collect unlocksRecipes during discipline tick processing
- Pass recipe unlocks to crafting store via gameStore
- Add unlockRecipes action to craftingStore with persistence
- Filter fabricator recipes by unlock status in FabricatorSubTab UI
This commit is contained in:
2026-05-29 15:42:09 +02:00
parent 9e49aa1ca6
commit 644b76f16d
10 changed files with 216 additions and 8 deletions
@@ -136,6 +136,7 @@ export function FabricatorSubTab() {
const [branchFilter, setBranchFilter] = useState<BranchFilter>('all');
const lootInventory = useCraftingStore((s) => s.lootInventory);
const unlockedRecipes = useCraftingStore((s) => s.unlockedRecipes);
const equipmentCraftingProgress = useCraftingStore((s) => s.equipmentCraftingProgress);
const rawMana = useManaStore((s) => s.rawMana);
const elements = useManaStore((s) => s.elements);
@@ -156,8 +157,8 @@ export function FabricatorSubTab() {
} else if (branchFilter === 'physical') {
recipes = recipes.filter(r => isPhysicalBranch(r));
}
return recipes.filter(r => r.manaType === selectedManaType);
}, [selectedManaType, branchFilter]);
return recipes.filter(r => r.manaType === selectedManaType && unlockedRecipes.includes(r.id));
}, [selectedManaType, branchFilter, unlockedRecipes]);
const isCrafting = equipmentCraftingProgress !== null;