Deduct mana conversion rates from raw regen (Bug 10)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m35s
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:
@@ -8,6 +8,7 @@ export {
|
||||
computeElementMax,
|
||||
computeRegen,
|
||||
computeEffectiveRegen,
|
||||
computeEffectiveRegenForDisplay,
|
||||
computeClickMana,
|
||||
getMeditationBonus
|
||||
} from './mana-utils';
|
||||
|
||||
@@ -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)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user