v0.14.31 - Skip debuffs during spirit burst (flag >= 1) to prevent toggle loops

Bug: spirit toggle ON → Imperil intercepts → toggle OFF → never fires skill.
The 3-state flag for spirit burst worked, but debuffs (Imperil at step 6)
came before weapon skills (step 11) in the priority chain. Each time the
flag advanced past 1, Imperil fired instead of Rending Blow, consuming
the turn and causing spirit to toggle off without ever using the skill.

Fix: debuffs now check _spiritForSkill === 0 before firing. When spirit
burst is pending (flag >= 1), skip Imperil/Weaken so the weapon skills
section fires uninterrupted.
This commit is contained in:
GaboGG 2026-07-29 12:35:50 -04:00
parent 2d6042df64
commit 3ec8932b86
5 changed files with 12 additions and 18 deletions

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.30
// @version 0.14.31
// @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.30';
const VERSION = '0.14.31';
const CFG = {
// — Battle automation
@ -1567,10 +1567,8 @@ function strategyVeteran() {
}
}
// 4. Debuffs — conservative: Imperil only on bosses/rares or 5+ mobs (Grindfest)
// Weaken only on high-threat (SP >85%) or bosses. Estoc already applies
// Penetrated Armor natively, so Imperil on 2-mob waves is wasteful.
if (CFG.autoDebuff && STATE.mp > 0.35) {
// 4. Debuffs — only when NOT in spirit burst mode (flag >= 1 means skill pending)
if (STATE._spiritForSkill === 0 && CFG.autoDebuff && STATE.mp > 0.35) {
// Imperil: bosses only, or 5+ mobs in Grindfest (Estoc handles <5)
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.30
// @version 0.14.31
// @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.30';
const VERSION = '0.14.31';
const CFG = {
// — Battle automation
@ -1567,10 +1567,8 @@ function strategyVeteran() {
}
}
// 4. Debuffs — conservative: Imperil only on bosses/rares or 5+ mobs (Grindfest)
// Weaken only on high-threat (SP >85%) or bosses. Estoc already applies
// Penetrated Armor natively, so Imperil on 2-mob waves is wasteful.
if (CFG.autoDebuff && STATE.mp > 0.35) {
// 4. Debuffs — only when NOT in spirit burst mode (flag >= 1 means skill pending)
if (STATE._spiritForSkill === 0 && CFG.autoDebuff && STATE.mp > 0.35) {
// Imperil: bosses only, or 5+ mobs in Grindfest (Estoc handles <5)
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();

View file

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

View file

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

View file

@ -841,10 +841,8 @@ function strategyVeteran() {
}
}
// 4. Debuffs — conservative: Imperil only on bosses/rares or 5+ mobs (Grindfest)
// Weaken only on high-threat (SP >85%) or bosses. Estoc already applies
// Penetrated Armor natively, so Imperil on 2-mob waves is wasteful.
if (CFG.autoDebuff && STATE.mp > 0.35) {
// 4. Debuffs — only when NOT in spirit burst mode (flag >= 1 means skill pending)
if (STATE._spiritForSkill === 0 && CFG.autoDebuff && STATE.mp > 0.35) {
// Imperil: bosses only, or 5+ mobs in Grindfest (Estoc handles <5)
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();