v0.14.26 - Fix threat threshold (70%->80%) + stalling on single enemy

- Threat threshold raised from 70% (84px) to 80% (96px) — stops
  wasting OC on Rending Blow when enemies are at 89 SP (31 points
  from actually specialing). In the log, RB fired at OC=50 on 89SP
  mobs which wasn't an emergency.
- Single-monster stalling now triggers regardless of enemy SP level.
  Previously blocked by !hasHighThreat — if the last enemy had high
  SP, stalling was skipped and the script killed immediately, wasting
  the stall opportunity for skill cooldown recovery.
This commit is contained in:
GaboGG 2026-07-28 10:14:08 -04:00
parent 3618198081
commit ff728fe68f
5 changed files with 21 additions and 15 deletions

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.25
// @version 0.14.26
// @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.25';
const VERSION = '0.14.26';
const CFG = {
// — Battle automation
@ -771,8 +771,8 @@ function shouldBuff(name, minTurns) {
// Known buffs with their priority, icon name, spell name, and refresh threshold
// Threat detection: SP bar max is 120px, monsters >70% are dangerous
const THREAT_PX = Math.round(120 * 70 / 100); // ~84px — triggers earlier on IWBTH
// Threat detection: SP bar max is 120px, monsters >80% are dangerous
const THREAT_PX = Math.round(120 * 80 / 100); // ~96px — triggers when genuinely close to specialing
// NOTE: Heartseeker and Arcane Focus are mutually exclusive. For a 2H (physical) build,
// Heartseeker is preferred (+25% phys dmg, +10% crit). Arcane Focus is for magic builds.
@ -1646,7 +1646,9 @@ function strategyVeteran() {
// ── Stalling: when 1 normal enemy remains, prefer buff refreshes over killing
// This gives weapon skill cooldowns time to tick down before next round.
if (STATE.monsters && STATE.monsters.length === 1 && !anyRareMonster() && !hasHighThreat(THREAT_PX)) {
// Always stall regardless of enemy SP — the last enemy will special anyway,
// and one extra turn of buff refresh > killing immediately with skills on CD.
if (STATE.monsters && STATE.monsters.length === 1 && !anyRareMonster()) {
for (const b of BUFF_PRIORITY) {
const dur = buffDuration(b.icon);
if (dur === 0 || dur < 15) {

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.25
// @version 0.14.26
// @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.25';
const VERSION = '0.14.26';
const CFG = {
// — Battle automation
@ -771,8 +771,8 @@ function shouldBuff(name, minTurns) {
// Known buffs with their priority, icon name, spell name, and refresh threshold
// Threat detection: SP bar max is 120px, monsters >70% are dangerous
const THREAT_PX = Math.round(120 * 70 / 100); // ~84px — triggers earlier on IWBTH
// Threat detection: SP bar max is 120px, monsters >80% are dangerous
const THREAT_PX = Math.round(120 * 80 / 100); // ~96px — triggers when genuinely close to specialing
// NOTE: Heartseeker and Arcane Focus are mutually exclusive. For a 2H (physical) build,
// Heartseeker is preferred (+25% phys dmg, +10% crit). Arcane Focus is for magic builds.
@ -1646,7 +1646,9 @@ function strategyVeteran() {
// ── Stalling: when 1 normal enemy remains, prefer buff refreshes over killing
// This gives weapon skill cooldowns time to tick down before next round.
if (STATE.monsters && STATE.monsters.length === 1 && !anyRareMonster() && !hasHighThreat(THREAT_PX)) {
// Always stall regardless of enemy SP — the last enemy will special anyway,
// and one extra turn of buff refresh > killing immediately with skills on CD.
if (STATE.monsters && STATE.monsters.length === 1 && !anyRareMonster()) {
for (const b of BUFF_PRIORITY) {
const dur = buffDuration(b.icon);
if (dur === 0 || dur < 15) {

View file

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

View file

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

View file

@ -45,8 +45,8 @@ function shouldBuff(name, minTurns) {
// Known buffs with their priority, icon name, spell name, and refresh threshold
// Threat detection: SP bar max is 120px, monsters >70% are dangerous
const THREAT_PX = Math.round(120 * 70 / 100); // ~84px — triggers earlier on IWBTH
// Threat detection: SP bar max is 120px, monsters >80% are dangerous
const THREAT_PX = Math.round(120 * 80 / 100); // ~96px — triggers when genuinely close to specialing
// NOTE: Heartseeker and Arcane Focus are mutually exclusive. For a 2H (physical) build,
// Heartseeker is preferred (+25% phys dmg, +10% crit). Arcane Focus is for magic builds.
@ -920,7 +920,9 @@ function strategyVeteran() {
// ── Stalling: when 1 normal enemy remains, prefer buff refreshes over killing
// This gives weapon skill cooldowns time to tick down before next round.
if (STATE.monsters && STATE.monsters.length === 1 && !anyRareMonster() && !hasHighThreat(THREAT_PX)) {
// Always stall regardless of enemy SP — the last enemy will special anyway,
// and one extra turn of buff refresh > killing immediately with skills on CD.
if (STATE.monsters && STATE.monsters.length === 1 && !anyRareMonster()) {
for (const b of BUFF_PRIORITY) {
const dur = buffDuration(b.icon);
if (dur === 0 || dur < 15) {