fix: meditation multiplier cap 2.5x, discipline reactivation, Spire crash, earthShard recipe, fabricator E2E test
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m53s

This commit is contained in:
2026-05-31 16:12:47 +02:00
parent d081acb8da
commit 0232f2ac85
11 changed files with 312 additions and 19 deletions
+1 -1
View File
@@ -89,7 +89,7 @@ export const DisciplinesTab: React.FC = () => {
const handleToggle = useCallback((id: string, paused: boolean) => {
if (paused) {
activate(id, { elements, signedPacts });
activate(id, { elements, signedPacts, rawMana });
} else {
deactivate(id);
}
@@ -102,12 +102,30 @@ export function SpireCombatPage() {
insight: s.insight,
})));
const equippedInstances = useCraftingStore((s) => s.equippedInstances);
const equipmentInstances = useCraftingStore((s) => s.equipmentInstances);
const { equippedInstances, equipmentInstances } = useCraftingStore(useShallow((s) => ({
equippedInstances: s.equippedInstances,
equipmentInstances: s.equipmentInstances,
})));
const { maxMana, baseRegen } = useSpireStats(prestigeUpgrades, equippedInstances, equipmentInstances);
const totalRooms = useMemo(() => getRoomsForFloor(currentFloor), [currentFloor]);
// Use a deterministic seed based on floor to avoid Math.random() causing
// referential instability and infinite re-render loops.
const seededRandom = useMemo(() => {
let seed = currentFloor * 12345;
return () => {
seed = (seed * 16807 + 0) % 2147483647;
return (seed - 1) / 2147483646;
};
}, [currentFloor]);
const totalRooms = useMemo(() => {
if (isGuardianFloor(currentFloor)) return 1;
const base = 5;
const range = 10;
const floorBonus = Math.min(range, Math.floor(currentFloor / 20));
const randomVariation = Math.floor(seededRandom() * 3);
return base + floorBonus + randomVariation;
}, [currentFloor, seededRandom]);
useEffect(() => {
setRoomsCleared(0);