From 2d6042df64a8da6ad7aea3f560fde46090e89af1 Mon Sep 17 00:00:00 2001 From: GaboGG Date: Tue, 28 Jul 2026 10:43:07 -0400 Subject: [PATCH] v0.14.30 - Ignore high threat when 2 or fewer enemies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Step 0e (emergency weapon skills): requires STATE.monsters.length >= 3. With 1-2 enemies, basic attack and tank the hits — better to farm OC. - Step 11 (normal weapon skills): isHighThreat trigger also requires >= 3. If OC >= 60 naturally, skills still fire regardless of enemy count. - Great Cleave on rares still works at lower OC since rares are worth killing fast regardless of group size. --- scripts/hv-unified.user.js | 11 ++++++----- scripts/latest.user.js | 11 ++++++----- src/config.js | 2 +- src/header.user.js | 2 +- src/strategy-engine.js | 7 ++++--- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/scripts/hv-unified.user.js b/scripts/hv-unified.user.js index f493c25..6ada40a 100644 --- a/scripts/hv-unified.user.js +++ b/scripts/hv-unified.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.29 +// @version 0.14.30 // @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.29'; +const VERSION = '0.14.30'; const CFG = { // — Battle automation @@ -1471,11 +1471,12 @@ function strategyVeteran() { // Reset flag if spirit got turned off externally if (!STATE.spiritStance) STATE._spiritForSkill = 0; - // 0e. HIGH-THREAT WEAPON SKILLS — after survival items/cure + // 0e. HIGH-THREAT WEAPON SKILLS — only when 3+ enemies + // Skip if ≤2 enemies — basic attacks build OC for next wave instead. const SINGLE_THREAT = Math.round(120 * 90 / 100); const anyImminent = STATE.monsters.some((m, i) => (STATE.monsterSp[i] || 0) > SINGLE_THREAT); const isHighThreatEarly = hasHighThreat(THREAT_PX); - if ((isHighThreatEarly || anyImminent) && STATE.oc >= 20) { + if ((isHighThreatEarly || anyImminent) && STATE.oc >= 20 && STATE.monsters.length >= 3) { if (STATE.monsters.length >= 3 && STATE.skillsKnown.includes('Rending Blow')) { // Use findOptimalDominoTarget for max AoE coverage (target + 2 left + 2 right) const t = findOptimalDominoTarget(); @@ -1590,7 +1591,7 @@ function strategyVeteran() { if (isHighThreat) console.log('%c[HV] ⚠ HIGH THREAT: 2+ monsters with SP >85%', 'color:#f44'); const askillOC3 = CFG.skillOC || 80; - if (STATE.oc >= askillOC3 || isHighThreat) { + if (STATE.oc >= askillOC3 || (isHighThreat && STATE.monsters.length >= 3)) { if (isHighThreat && STATE.oc < askillOC3) console.log('%c[HV] ⚠ emergency: using skill at OC=' + STATE.oc.toFixed(0), 'color:#f80'); // Emergency: 2+ monsters about to special — spend OC to kill them fast // Rending Blow: AoE armor pen vs 3+ enemies. Target center monster for max 5-target splash. diff --git a/scripts/latest.user.js b/scripts/latest.user.js index f493c25..6ada40a 100644 --- a/scripts/latest.user.js +++ b/scripts/latest.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.29 +// @version 0.14.30 // @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.29'; +const VERSION = '0.14.30'; const CFG = { // — Battle automation @@ -1471,11 +1471,12 @@ function strategyVeteran() { // Reset flag if spirit got turned off externally if (!STATE.spiritStance) STATE._spiritForSkill = 0; - // 0e. HIGH-THREAT WEAPON SKILLS — after survival items/cure + // 0e. HIGH-THREAT WEAPON SKILLS — only when 3+ enemies + // Skip if ≤2 enemies — basic attacks build OC for next wave instead. const SINGLE_THREAT = Math.round(120 * 90 / 100); const anyImminent = STATE.monsters.some((m, i) => (STATE.monsterSp[i] || 0) > SINGLE_THREAT); const isHighThreatEarly = hasHighThreat(THREAT_PX); - if ((isHighThreatEarly || anyImminent) && STATE.oc >= 20) { + if ((isHighThreatEarly || anyImminent) && STATE.oc >= 20 && STATE.monsters.length >= 3) { if (STATE.monsters.length >= 3 && STATE.skillsKnown.includes('Rending Blow')) { // Use findOptimalDominoTarget for max AoE coverage (target + 2 left + 2 right) const t = findOptimalDominoTarget(); @@ -1590,7 +1591,7 @@ function strategyVeteran() { if (isHighThreat) console.log('%c[HV] ⚠ HIGH THREAT: 2+ monsters with SP >85%', 'color:#f44'); const askillOC3 = CFG.skillOC || 80; - if (STATE.oc >= askillOC3 || isHighThreat) { + if (STATE.oc >= askillOC3 || (isHighThreat && STATE.monsters.length >= 3)) { if (isHighThreat && STATE.oc < askillOC3) console.log('%c[HV] ⚠ emergency: using skill at OC=' + STATE.oc.toFixed(0), 'color:#f80'); // Emergency: 2+ monsters about to special — spend OC to kill them fast // Rending Blow: AoE armor pen vs 3+ enemies. Target center monster for max 5-target splash. diff --git a/src/config.js b/src/config.js index 3221022..bd1106f 100644 --- a/src/config.js +++ b/src/config.js @@ -2,7 +2,7 @@ // CONFIG — default settings // ═══════════════════════════════════════════════════════════════════════ -const VERSION = '0.14.29'; +const VERSION = '0.14.30'; const CFG = { // — Battle automation diff --git a/src/header.user.js b/src/header.user.js index acf3ac8..8befc49 100644 --- a/src/header.user.js +++ b/src/header.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.29 +// @version 0.14.30 // @description HV Unified — battle automation, guidance, and UI enhancements for HentaiVerse // @author GaboGG + Hermes // @match *://*.hentaiverse.org/* diff --git a/src/strategy-engine.js b/src/strategy-engine.js index 2fb1368..7747eee 100644 --- a/src/strategy-engine.js +++ b/src/strategy-engine.js @@ -745,11 +745,12 @@ function strategyVeteran() { // Reset flag if spirit got turned off externally if (!STATE.spiritStance) STATE._spiritForSkill = 0; - // 0e. HIGH-THREAT WEAPON SKILLS — after survival items/cure + // 0e. HIGH-THREAT WEAPON SKILLS — only when 3+ enemies + // Skip if ≤2 enemies — basic attacks build OC for next wave instead. const SINGLE_THREAT = Math.round(120 * 90 / 100); const anyImminent = STATE.monsters.some((m, i) => (STATE.monsterSp[i] || 0) > SINGLE_THREAT); const isHighThreatEarly = hasHighThreat(THREAT_PX); - if ((isHighThreatEarly || anyImminent) && STATE.oc >= 20) { + if ((isHighThreatEarly || anyImminent) && STATE.oc >= 20 && STATE.monsters.length >= 3) { if (STATE.monsters.length >= 3 && STATE.skillsKnown.includes('Rending Blow')) { // Use findOptimalDominoTarget for max AoE coverage (target + 2 left + 2 right) const t = findOptimalDominoTarget(); @@ -864,7 +865,7 @@ function strategyVeteran() { if (isHighThreat) console.log('%c[HV] ⚠ HIGH THREAT: 2+ monsters with SP >85%', 'color:#f44'); const askillOC3 = CFG.skillOC || 80; - if (STATE.oc >= askillOC3 || isHighThreat) { + if (STATE.oc >= askillOC3 || (isHighThreat && STATE.monsters.length >= 3)) { if (isHighThreat && STATE.oc < askillOC3) console.log('%c[HV] ⚠ emergency: using skill at OC=' + STATE.oc.toFixed(0), 'color:#f80'); // Emergency: 2+ monsters about to special — spend OC to kill them fast // Rending Blow: AoE armor pen vs 3+ enemies. Target center monster for max 5-target splash.