Deduct mana conversion rates from raw regen (Bug 10)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m35s

- Added getTotalAttunementConversionDrain function to calculate total conversion drain
- Updated computeRegen to include attunement regen bonus
- Added computeEffectiveRegenForDisplay function for UI display
- Added conversionDrains to GameState to track per-attunement drain
- Updated tick function to track and persist conversion drains
- Build passes successfully
This commit is contained in:
Refactoring Agent
2026-04-27 12:25:17 +02:00
parent 8261baab54
commit ebb9d15e9e
7 changed files with 121 additions and 12 deletions
+1
View File
@@ -8,6 +8,7 @@ export {
computeElementMax,
computeRegen,
computeEffectiveRegen,
computeEffectiveRegenForDisplay,
computeClickMana,
getMeditationBonus
} from './mana-utils';
+23 -1
View File
@@ -3,6 +3,7 @@
import type { GameState } from '../types';
import type { ComputedEffects } from '../upgrade-effects';
import { HOURS_PER_TICK } from '../constants';
import { getTotalAttunementRegen, getTotalAttunementConversionDrain } from '../data/attunements';
export function computeMaxMana(
state: Pick<GameState, 'skills' | 'prestigeUpgrades' | 'skillUpgrades' | 'skillTiers'>,
@@ -36,7 +37,7 @@ export function computeElementMax(
}
export function computeRegen(
state: Pick<GameState, 'skills' | 'prestigeUpgrades' | 'skillUpgrades' | 'skillTiers'>,
state: Pick<GameState, 'skills' | 'prestigeUpgrades' | 'skillUpgrades' | 'skillTiers' | 'attunements'>,
effects?: ComputedEffects
): number {
const pu = state.prestigeUpgrades;
@@ -49,6 +50,10 @@ export function computeRegen(
let regen = base * temporalBonus;
// Add attunement raw mana regen
const attunementRegen = getTotalAttunementRegen(state.attunements || {});
regen += attunementRegen;
// Apply upgrade effects if provided
if (effects) {
regen = (regen + effects.regenBonus + effects.permanentRegenBonus) * effects.regenMultiplier;
@@ -57,6 +62,23 @@ export function computeRegen(
return regen;
}
// Compute the effective regen (raw regen minus conversion drains) for display purposes
export function computeEffectiveRegenForDisplay(
state: Pick<GameState, 'skills' | 'prestigeUpgrades' | 'skillUpgrades' | 'skillTiers' | 'attunements'>,
effects?: ComputedEffects
): { rawRegen: number; conversionDrain: number; effectiveRegen: number } {
// Get the full raw regen (without conversion drain)
const rawRegen = computeRegen(state, effects);
// Calculate conversion drain
const conversionDrain = getTotalAttunementConversionDrain(state.attunements || {});
// Effective regen is what actually increases raw mana
const effectiveRegen = Math.max(0, rawRegen - conversionDrain);
return { rawRegen, conversionDrain, effectiveRegen };
}
/**
* Compute regen with dynamic special effects (needs current mana, max mana, incursion)
*/