diff --git a/scripts/hv-unified.user.js b/scripts/hv-unified.user.js index f7750cf..6dd1fa8 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.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) { diff --git a/scripts/latest.user.js b/scripts/latest.user.js index f7750cf..6dd1fa8 100644 --- a/scripts/latest.user.js +++ b/scripts/latest.user.js @@ -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) { diff --git a/src/config.js b/src/config.js index 50f1367..237226f 100644 --- a/src/config.js +++ b/src/config.js @@ -2,7 +2,7 @@ // CONFIG — default settings // ═══════════════════════════════════════════════════════════════════════ -const VERSION = '0.14.25'; +const VERSION = '0.14.26'; const CFG = { // — Battle automation diff --git a/src/header.user.js b/src/header.user.js index b3e5893..2bc5427 100644 --- a/src/header.user.js +++ b/src/header.user.js @@ -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/* diff --git a/src/strategy-engine.js b/src/strategy-engine.js index 1d3dc92..ca81185 100644 --- a/src/strategy-engine.js +++ b/src/strategy-engine.js @@ -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) {