diff --git a/scripts/hv-unified.user.js b/scripts/hv-unified.user.js index 047e2e9..724258e 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.27 +// @version 0.14.28 // @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.27'; +const VERSION = '0.14.28'; const CFG = { // — Battle automation @@ -1503,6 +1503,19 @@ function strategyVeteran() { } } + // 2c. OC-building priority: when 5+ monsters, OC < 60, and AoE skills ready, + // skip debuffs/non-essential buffs and basic attack to build OC fast. + const needsOC = STATE.monsters && STATE.monsters.length >= 5 + && STATE.oc < (CFG.skillOC || 60) + && STATE.skillsKnown.includes('Rending Blow') + && document.querySelector(`.btqs[onmouseover*="set_infopane_spell('Rending Blow'"], .btsd[onmouseover*="set_infopane_spell('Rending Blow'"]`) + ?.hasAttribute('onclick'); + if (needsOC && STATE.hp > 0.40 && STATE.mp > 0.20) { + const t = hasHighThreat(THREAT_PX) ? findDangerousMonster() : findOptimalDominoTarget(); + if (t >= 0 && STATE.monsters[t] && STATE.monsters[t].hasAttribute('onclick')) + return { type: 'attack', target: t, _reason: 'oc_build' }; + } + // 3. Buffs // On first round, cast cheapest-first to proc channeling if (CFG.autoBuff) { diff --git a/scripts/latest.user.js b/scripts/latest.user.js index 047e2e9..724258e 100644 --- a/scripts/latest.user.js +++ b/scripts/latest.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.27 +// @version 0.14.28 // @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.27'; +const VERSION = '0.14.28'; const CFG = { // — Battle automation @@ -1503,6 +1503,19 @@ function strategyVeteran() { } } + // 2c. OC-building priority: when 5+ monsters, OC < 60, and AoE skills ready, + // skip debuffs/non-essential buffs and basic attack to build OC fast. + const needsOC = STATE.monsters && STATE.monsters.length >= 5 + && STATE.oc < (CFG.skillOC || 60) + && STATE.skillsKnown.includes('Rending Blow') + && document.querySelector(`.btqs[onmouseover*="set_infopane_spell('Rending Blow'"], .btsd[onmouseover*="set_infopane_spell('Rending Blow'"]`) + ?.hasAttribute('onclick'); + if (needsOC && STATE.hp > 0.40 && STATE.mp > 0.20) { + const t = hasHighThreat(THREAT_PX) ? findDangerousMonster() : findOptimalDominoTarget(); + if (t >= 0 && STATE.monsters[t] && STATE.monsters[t].hasAttribute('onclick')) + return { type: 'attack', target: t, _reason: 'oc_build' }; + } + // 3. Buffs // On first round, cast cheapest-first to proc channeling if (CFG.autoBuff) { diff --git a/src/config.js b/src/config.js index 8cb020c..7809283 100644 --- a/src/config.js +++ b/src/config.js @@ -2,7 +2,7 @@ // CONFIG — default settings // ═══════════════════════════════════════════════════════════════════════ -const VERSION = '0.14.27'; +const VERSION = '0.14.28'; const CFG = { // — Battle automation diff --git a/src/header.user.js b/src/header.user.js index e12d408..f9e99a1 100644 --- a/src/header.user.js +++ b/src/header.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name HV Unified // @namespace hvunified -// @version 0.14.27 +// @version 0.14.28 // @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 ca81185..2e6e615 100644 --- a/src/strategy-engine.js +++ b/src/strategy-engine.js @@ -777,6 +777,19 @@ function strategyVeteran() { } } + // 2c. OC-building priority: when 5+ monsters, OC < 60, and AoE skills ready, + // skip debuffs/non-essential buffs and basic attack to build OC fast. + const needsOC = STATE.monsters && STATE.monsters.length >= 5 + && STATE.oc < (CFG.skillOC || 60) + && STATE.skillsKnown.includes('Rending Blow') + && document.querySelector(`.btqs[onmouseover*="set_infopane_spell('Rending Blow'"], .btsd[onmouseover*="set_infopane_spell('Rending Blow'"]`) + ?.hasAttribute('onclick'); + if (needsOC && STATE.hp > 0.40 && STATE.mp > 0.20) { + const t = hasHighThreat(THREAT_PX) ? findDangerousMonster() : findOptimalDominoTarget(); + if (t >= 0 && STATE.monsters[t] && STATE.monsters[t].hasAttribute('onclick')) + return { type: 'attack', target: t, _reason: 'oc_build' }; + } + // 3. Buffs // On first round, cast cheapest-first to proc channeling if (CFG.autoBuff) {