fix: Bug fixes #218 #222 #220 #223 #215 #216 - attunement free mana, transference circular ref, guardian defeat tracking, discipline negative mana, guardian data, crafting refunds
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s

This commit is contained in:
2026-05-30 22:28:45 +02:00
parent 737a23bec3
commit e4f4b297e8
10 changed files with 289 additions and 165 deletions
+11 -2
View File
@@ -124,11 +124,20 @@ export interface CraftingCancelResult {
logMessage: string;
}
export function cancelEquipmentCrafting(blueprintId: string, manaSpent: number): CraftingCancelResult {
export function cancelEquipmentCrafting(blueprintId: string, manaSpent: number, currentProgress?: number, requiredProgress?: number): CraftingCancelResult {
const recipe = CRAFTING_RECIPES[blueprintId];
if (!recipe) return { manaRefund: 0, logMessage: 'Invalid crafting recipe.' };
const manaRefund = Math.floor(manaSpent * MANA_REFUND_RATE);
// Refund proportional to remaining progress: unspent portion + half of spent portion
let refundRate: number;
if (currentProgress !== undefined && requiredProgress && requiredProgress > 0) {
const remainingFraction = Math.max(0, (requiredProgress - currentProgress) / requiredProgress);
// Full refund for unspent progress, flat 50% for spent progress
refundRate = remainingFraction + (1 - remainingFraction) * MANA_REFUND_RATE;
} else {
refundRate = MANA_REFUND_RATE;
}
const manaRefund = Math.floor(manaSpent * refundRate);
return { manaRefund, logMessage: `🚫 Equipment crafting cancelled. Refunded ${manaRefund} mana.` };
}