fix: three bug fixes - library XP scaling, prep time floor, dual design slot logic
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
Fixes #297: Library room XP now uses 25× rate without undocumented floor multiplier Fixes #305: Prep time mana-per-tick now applies Math.floor(capacity/50) per spec Fixes #304: Dual design slot correctly returns false when first slot is empty
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# Circular Dependencies
|
# Circular Dependencies
|
||||||
Generated: 2026-06-08T12:54:52.991Z
|
Generated: 2026-06-08T12:59:39.710Z
|
||||||
Found: 1 circular chain(s) — these MUST be fixed before modifying involved files.
|
Found: 1 circular chain(s) — these MUST be fixed before modifying involved files.
|
||||||
|
|
||||||
1. 1) stores/golem-combat-actions.ts > stores/golem-combat-helpers.ts
|
1. 1) stores/golem-combat-actions.ts > stores/golem-combat-helpers.ts
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"generated": "2026-06-08T12:54:50.978Z",
|
"generated": "2026-06-08T12:59:37.733Z",
|
||||||
"description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.",
|
"description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.",
|
||||||
"usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry."
|
"usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry."
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -143,8 +143,7 @@ export function isSecondDesignSlotAvailable(
|
|||||||
designProgress2: DesignProgress | null,
|
designProgress2: DesignProgress | null,
|
||||||
hasEnchantMastery: boolean
|
hasEnchantMastery: boolean
|
||||||
): boolean {
|
): boolean {
|
||||||
if (!designProgress && !designProgress2) return true;
|
if (!designProgress) return false;
|
||||||
if (!designProgress && designProgress2) return false;
|
|
||||||
return !!(designProgress && !designProgress2 && hasEnchantMastery);
|
return !!(designProgress && !designProgress2 && hasEnchantMastery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ function tickLibraryRoom(get: GetFn, set: SetFn, hours: number, advance: Advance
|
|||||||
const required = room.libraryRequired || 1;
|
const required = room.libraryRequired || 1;
|
||||||
|
|
||||||
const BASE_LIBRARY_XP_PER_HOUR = 50;
|
const BASE_LIBRARY_XP_PER_HOUR = 50;
|
||||||
const xpGrant = Math.floor(BASE_LIBRARY_XP_PER_HOUR * (1 + s.currentFloor / 10) * 25 * hours);
|
const xpGrant = Math.floor(BASE_LIBRARY_XP_PER_HOUR * 25 * hours);
|
||||||
|
|
||||||
if (xpGrant > 0) {
|
if (xpGrant > 0) {
|
||||||
const disciplineStore = useDisciplineStore.getState();
|
const disciplineStore = useDisciplineStore.getState();
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ export function processEnchantingTicks(
|
|||||||
writes.combat = { ...(writes.combat || {}), currentAction: 'meditate' };
|
writes.combat = { ...(writes.combat || {}), currentAction: 'meditate' };
|
||||||
addLog('Preparation failed: equipment not found.');
|
addLog('Preparation failed: equipment not found.');
|
||||||
} else {
|
} else {
|
||||||
const manaPerTick = (instance.totalCapacity * 10) / (2 + instance.totalCapacity / 50) * HOURS_PER_TICK;
|
const manaPerTick = (instance.totalCapacity * 10) / (2 + Math.floor(instance.totalCapacity / 50)) * HOURS_PER_TICK;
|
||||||
const prepResult = calculatePreparationTick(
|
const prepResult = calculatePreparationTick(
|
||||||
prepProgress.progress,
|
prepProgress.progress,
|
||||||
prepProgress.required,
|
prepProgress.required,
|
||||||
|
|||||||
Reference in New Issue
Block a user