v0.14.3 - Add reason tags to castInitialBuffs (init/initCh)

- castInitialBuffs now tags actions with _reason='init' (cheapest-first
  sort, no channeling) or _reason='initCh' (most-expensive-first,
  channeling already charged)
- Makes the log clearly show which buff path fired
This commit is contained in:
GaboGG 2026-07-27 14:43:40 -04:00
parent 205f1cd631
commit 48e5103655
5 changed files with 15 additions and 12 deletions

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.2
// @version 0.14.3
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
// @author GaboGG + Hermes
// @match *://*.hentaiverse.org/*
@ -17,7 +17,7 @@
// CONFIG — default settings
// ═══════════════════════════════════════════════════════════════════════
const VERSION = '0.14.2';
const VERSION = '0.14.3';
const CFG = {
// — Battle automation
@ -963,15 +963,16 @@ function castInitialBuffs() {
if (candidates.length === 0) return null;
// Log which mode we're in
if (STATE.channeling) {
// Channeling is charged — cast the MOST expensive buff for best value
candidates.sort((a, b) => b.mpCost - a.mpCost);
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'initCh' };
} else {
// No channeling — cast the CHEAPEST buff first for more proc attempts
candidates.sort((a, b) => a.mpCost - b.mpCost);
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'init' };
}
return { type: 'spell', name: candidates[0].spell, selfTarget: true };
}
function kickstartChanneling() {

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.2
// @version 0.14.3
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
// @author GaboGG + Hermes
// @match *://*.hentaiverse.org/*
@ -17,7 +17,7 @@
// CONFIG — default settings
// ═══════════════════════════════════════════════════════════════════════
const VERSION = '0.14.2';
const VERSION = '0.14.3';
const CFG = {
// — Battle automation
@ -963,15 +963,16 @@ function castInitialBuffs() {
if (candidates.length === 0) return null;
// Log which mode we're in
if (STATE.channeling) {
// Channeling is charged — cast the MOST expensive buff for best value
candidates.sort((a, b) => b.mpCost - a.mpCost);
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'initCh' };
} else {
// No channeling — cast the CHEAPEST buff first for more proc attempts
candidates.sort((a, b) => a.mpCost - b.mpCost);
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'init' };
}
return { type: 'spell', name: candidates[0].spell, selfTarget: true };
}
function kickstartChanneling() {

View file

@ -2,7 +2,7 @@
// CONFIG — default settings
// ═══════════════════════════════════════════════════════════════════════
const VERSION = '0.14.2';
const VERSION = '0.14.3';
const CFG = {
// — Battle automation

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.2
// @version 0.14.3
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
// @author GaboGG + Hermes
// @match *://*.hentaiverse.org/*

View file

@ -238,15 +238,16 @@ function castInitialBuffs() {
if (candidates.length === 0) return null;
// Log which mode we're in
if (STATE.channeling) {
// Channeling is charged — cast the MOST expensive buff for best value
candidates.sort((a, b) => b.mpCost - a.mpCost);
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'initCh' };
} else {
// No channeling — cast the CHEAPEST buff first for more proc attempts
candidates.sort((a, b) => a.mpCost - b.mpCost);
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'init' };
}
return { type: 'spell', name: candidates[0].spell, selfTarget: true };
}
function kickstartChanneling() {