feat: Add Mana Circulation discipline with regen multiplier and meditation cap perks
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
This commit is contained in:
@@ -124,29 +124,40 @@ export function computeClickMana(
|
||||
|
||||
// ─── Meditation Bonus ─────────────────────────────────────────────────────────
|
||||
|
||||
export function getMeditationBonus(meditateTicks: number, skills: Record<string, number>, meditationEfficiency: number = 1): number {
|
||||
export function getMeditationBonus(
|
||||
meditateTicks: number,
|
||||
skills: Record<string, number>,
|
||||
meditationEfficiency: number = 1,
|
||||
disciplineMeditationCap: number = 0,
|
||||
): number {
|
||||
const hasMeditation = skills.meditation === 1;
|
||||
const hasDeepTrance = skills.deepTrance === 1;
|
||||
const hasVoidMeditation = skills.voidMeditation === 1;
|
||||
|
||||
const hours = meditateTicks * HOURS_PER_TICK;
|
||||
|
||||
// Base meditation: ramps up over 4 hours to 1.5x
|
||||
// Determine the hard cap for this meditation session.
|
||||
// disciplineMeditationCap adds +0.5 per point (e.g. from Mana Circulation discipline).
|
||||
// Base max is 5.0 (Void Meditation), each discipline bonus adds +0.5.
|
||||
const maxMultiplier = 5.0 + disciplineMeditationCap;
|
||||
|
||||
// Base meditation: ramps up over 4 hours, capped at 1.5x or discipline cap
|
||||
let bonus = 1 + Math.min(hours / 4, 0.5);
|
||||
bonus = Math.min(bonus, maxMultiplier);
|
||||
|
||||
// With Meditation Focus: up to 2.5x after 4 hours
|
||||
if (hasMeditation && hours >= 4) {
|
||||
bonus = 2.5;
|
||||
bonus = Math.min(2.5, maxMultiplier);
|
||||
}
|
||||
|
||||
// With Deep Trance: up to 3.0x after 6 hours
|
||||
if (hasDeepTrance && hours >= 6) {
|
||||
bonus = 3.0;
|
||||
bonus = Math.min(3.0, maxMultiplier);
|
||||
}
|
||||
|
||||
// With Void Meditation: up to 5.0x after 8 hours
|
||||
// With Void Meditation: up to maxMultiplier after 8 hours
|
||||
if (hasVoidMeditation && hours >= 8) {
|
||||
bonus = 5.0;
|
||||
bonus = maxMultiplier;
|
||||
}
|
||||
|
||||
// Apply meditation efficiency from upgrades
|
||||
|
||||
Reference in New Issue
Block a user