v0.13.10 - Only consume channeling on buffs that need refresh (<10 turns)

- findBestChannelingTarget: skip buffs with >10 remaining turns
- When all buffs are fresh, falls through to cheap damage spell
  instead of wasting channeling on a nearly-full duration buff
- This prevents recasting Spark of Life at 15 turns just because
  its score happens to be highest among all fresh buffs
This commit is contained in:
GaboGG 2026-07-26 13:38:31 -04:00
parent 71da9b1214
commit e13b4c5206
3 changed files with 6 additions and 0 deletions

View file

@ -881,6 +881,8 @@ function findBestChannelingTarget() {
if (b.icon === 'regen' && STATE.hp >= CFG.cureRegenHP) continue; if (b.icon === 'regen' && STATE.hp >= CFG.cureRegenHP) continue;
// Skip completely fresh Heartseeker (> 50 turns means just cast) // Skip completely fresh Heartseeker (> 50 turns means just cast)
if (b.icon === 'heartseeker' && dur > 50) continue; if (b.icon === 'heartseeker' && dur > 50) continue;
// Only consider buffs that would benefit from a refresh
if (dur > 10) continue; // Still fresh, don't waste channeling
const sp = findSpell(b.spell); const sp = findSpell(b.spell);
const mpCost = sp ? sp.mp : 0; const mpCost = sp ? sp.mp : 0;
// Score: higher MP cost + lower remaining turns = better channeling target // Score: higher MP cost + lower remaining turns = better channeling target

View file

@ -881,6 +881,8 @@ function findBestChannelingTarget() {
if (b.icon === 'regen' && STATE.hp >= CFG.cureRegenHP) continue; if (b.icon === 'regen' && STATE.hp >= CFG.cureRegenHP) continue;
// Skip completely fresh Heartseeker (> 50 turns means just cast) // Skip completely fresh Heartseeker (> 50 turns means just cast)
if (b.icon === 'heartseeker' && dur > 50) continue; if (b.icon === 'heartseeker' && dur > 50) continue;
// Only consider buffs that would benefit from a refresh
if (dur > 10) continue; // Still fresh, don't waste channeling
const sp = findSpell(b.spell); const sp = findSpell(b.spell);
const mpCost = sp ? sp.mp : 0; const mpCost = sp ? sp.mp : 0;
// Score: higher MP cost + lower remaining turns = better channeling target // Score: higher MP cost + lower remaining turns = better channeling target

View file

@ -233,6 +233,8 @@ function findBestChannelingTarget() {
if (b.icon === 'regen' && STATE.hp >= CFG.cureRegenHP) continue; if (b.icon === 'regen' && STATE.hp >= CFG.cureRegenHP) continue;
// Skip completely fresh Heartseeker (> 50 turns means just cast) // Skip completely fresh Heartseeker (> 50 turns means just cast)
if (b.icon === 'heartseeker' && dur > 50) continue; if (b.icon === 'heartseeker' && dur > 50) continue;
// Only consider buffs that would benefit from a refresh
if (dur > 10) continue; // Still fresh, don't waste channeling
const sp = findSpell(b.spell); const sp = findSpell(b.spell);
const mpCost = sp ? sp.mp : 0; const mpCost = sp ? sp.mp : 0;
// Score: higher MP cost + lower remaining turns = better channeling target // Score: higher MP cost + lower remaining turns = better channeling target