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:
parent
205f1cd631
commit
48e5103655
5 changed files with 15 additions and 12 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name HV Unified
|
// @name HV Unified
|
||||||
// @namespace hvunified
|
// @namespace hvunified
|
||||||
// @version 0.14.2
|
// @version 0.14.3
|
||||||
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
||||||
// @author GaboGG + Hermes
|
// @author GaboGG + Hermes
|
||||||
// @match *://*.hentaiverse.org/*
|
// @match *://*.hentaiverse.org/*
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
// CONFIG — default settings
|
// CONFIG — default settings
|
||||||
// ═══════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
const VERSION = '0.14.2';
|
const VERSION = '0.14.3';
|
||||||
|
|
||||||
const CFG = {
|
const CFG = {
|
||||||
// — Battle automation
|
// — Battle automation
|
||||||
|
|
@ -963,15 +963,16 @@ function castInitialBuffs() {
|
||||||
|
|
||||||
if (candidates.length === 0) return null;
|
if (candidates.length === 0) return null;
|
||||||
|
|
||||||
|
// Log which mode we're in
|
||||||
if (STATE.channeling) {
|
if (STATE.channeling) {
|
||||||
// Channeling is charged — cast the MOST expensive buff for best value
|
// Channeling is charged — cast the MOST expensive buff for best value
|
||||||
candidates.sort((a, b) => b.mpCost - a.mpCost);
|
candidates.sort((a, b) => b.mpCost - a.mpCost);
|
||||||
|
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'initCh' };
|
||||||
} else {
|
} else {
|
||||||
// No channeling — cast the CHEAPEST buff first for more proc attempts
|
// No channeling — cast the CHEAPEST buff first for more proc attempts
|
||||||
candidates.sort((a, b) => a.mpCost - b.mpCost);
|
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() {
|
function kickstartChanneling() {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name HV Unified
|
// @name HV Unified
|
||||||
// @namespace hvunified
|
// @namespace hvunified
|
||||||
// @version 0.14.2
|
// @version 0.14.3
|
||||||
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
||||||
// @author GaboGG + Hermes
|
// @author GaboGG + Hermes
|
||||||
// @match *://*.hentaiverse.org/*
|
// @match *://*.hentaiverse.org/*
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
// CONFIG — default settings
|
// CONFIG — default settings
|
||||||
// ═══════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
const VERSION = '0.14.2';
|
const VERSION = '0.14.3';
|
||||||
|
|
||||||
const CFG = {
|
const CFG = {
|
||||||
// — Battle automation
|
// — Battle automation
|
||||||
|
|
@ -963,15 +963,16 @@ function castInitialBuffs() {
|
||||||
|
|
||||||
if (candidates.length === 0) return null;
|
if (candidates.length === 0) return null;
|
||||||
|
|
||||||
|
// Log which mode we're in
|
||||||
if (STATE.channeling) {
|
if (STATE.channeling) {
|
||||||
// Channeling is charged — cast the MOST expensive buff for best value
|
// Channeling is charged — cast the MOST expensive buff for best value
|
||||||
candidates.sort((a, b) => b.mpCost - a.mpCost);
|
candidates.sort((a, b) => b.mpCost - a.mpCost);
|
||||||
|
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'initCh' };
|
||||||
} else {
|
} else {
|
||||||
// No channeling — cast the CHEAPEST buff first for more proc attempts
|
// No channeling — cast the CHEAPEST buff first for more proc attempts
|
||||||
candidates.sort((a, b) => a.mpCost - b.mpCost);
|
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() {
|
function kickstartChanneling() {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// CONFIG — default settings
|
// CONFIG — default settings
|
||||||
// ═══════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
const VERSION = '0.14.2';
|
const VERSION = '0.14.3';
|
||||||
|
|
||||||
const CFG = {
|
const CFG = {
|
||||||
// — Battle automation
|
// — Battle automation
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name HV Unified
|
// @name HV Unified
|
||||||
// @namespace hvunified
|
// @namespace hvunified
|
||||||
// @version 0.14.2
|
// @version 0.14.3
|
||||||
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
// @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse
|
||||||
// @author GaboGG + Hermes
|
// @author GaboGG + Hermes
|
||||||
// @match *://*.hentaiverse.org/*
|
// @match *://*.hentaiverse.org/*
|
||||||
|
|
|
||||||
|
|
@ -238,15 +238,16 @@ function castInitialBuffs() {
|
||||||
|
|
||||||
if (candidates.length === 0) return null;
|
if (candidates.length === 0) return null;
|
||||||
|
|
||||||
|
// Log which mode we're in
|
||||||
if (STATE.channeling) {
|
if (STATE.channeling) {
|
||||||
// Channeling is charged — cast the MOST expensive buff for best value
|
// Channeling is charged — cast the MOST expensive buff for best value
|
||||||
candidates.sort((a, b) => b.mpCost - a.mpCost);
|
candidates.sort((a, b) => b.mpCost - a.mpCost);
|
||||||
|
return { type: 'spell', name: candidates[0].spell, selfTarget: true, _reason: 'initCh' };
|
||||||
} else {
|
} else {
|
||||||
// No channeling — cast the CHEAPEST buff first for more proc attempts
|
// No channeling — cast the CHEAPEST buff first for more proc attempts
|
||||||
candidates.sort((a, b) => a.mpCost - b.mpCost);
|
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() {
|
function kickstartChanneling() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue