v0.14.5 - Conservative debuffs: Imperil only on bosses/rares or 5+ mobs

- Imperil no longer casts on every 2-mob wave (Estoc's native Penetrated
  Armor handles armor-breaking for <5 targets)
- Imperil threshold raised from MP>20% to MP>35%
- Imperil now only fires on bosses/rares OR 5+ monster waves (Grindfest)
- Weaken now only on high-threat (SP>85%) or bosses, not every 3-mob wave
- Formerly: Imperil on 2+ mobs, Weaken on 3+ mobs — drained MP fast
This commit is contained in:
GaboGG 2026-07-27 14:46:39 -04:00
parent 0a41f9d7c5
commit 9af0237754
5 changed files with 45 additions and 42 deletions

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.4
// @version 0.14.5
// @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.4';
const VERSION = '0.14.5';
const CFG = {
// — Battle automation
@ -1337,14 +1337,15 @@ function strategyAdept() {
}
}
// 4. Debuffs — Imperil on 2+ mobs or bosses; Weaken on high-threat
if (CFG.autoDebuff && STATE.mp > 0.20) {
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 2)) {
// 4. Debuffs — conservative: Imperil on bosses/rares or 5+ mobs
// Weaken only on high-threat or bosses. Estoc handles <5.
if (CFG.autoDebuff && STATE.mp > 0.35) {
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'imperil'))
return { type: 'spell', name: 'Imperil', target: b, _reason: 'imperil' };
}
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(80) || STATE.monsters.length >= 3)) {
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(THREAT_PX))) {
const b = findDangerousMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'weaken'))
return { type: 'spell', name: 'Weaken', target: b, _reason: 'weaken' };
@ -1497,18 +1498,18 @@ function strategyVeteran() {
}
}
// 4. Debuffs — Imperil on any 2+ mobs or bosses; Weaken on high-threat enemies
// On IWBTH, non-boss elites hit hard — debuffs are worth the MP cost
if (CFG.autoDebuff && STATE.mp > 0.20) {
// Imperil: reduce physical mitigation by 25-50% (stacks with Penetrated Armor)
// Use on any tanky enemy when facing 2+ monsters or a rare
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 2)) {
// 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) {
// Imperil: bosses only, or 5+ mobs in Grindfest (Estoc handles <5)
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'imperil'))
return { type: 'spell', name: 'Imperil', target: b, _reason: 'imperil' };
}
// Weaken: reduce incoming damage by 50% — use on high-threat or 3+ mobs
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(80) || STATE.monsters.length >= 3)) {
// Weaken: only on monsters about to use special attacks (high SP) or bosses
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(THREAT_PX))) {
const b = findDangerousMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'weaken'))
return { type: 'spell', name: 'Weaken', target: b, _reason: 'weaken' };

View file

@ -1,7 +1,7 @@
// ==UserScript==
// @name HV Unified
// @namespace hvunified
// @version 0.14.4
// @version 0.14.5
// @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.4';
const VERSION = '0.14.5';
const CFG = {
// — Battle automation
@ -1337,14 +1337,15 @@ function strategyAdept() {
}
}
// 4. Debuffs — Imperil on 2+ mobs or bosses; Weaken on high-threat
if (CFG.autoDebuff && STATE.mp > 0.20) {
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 2)) {
// 4. Debuffs — conservative: Imperil on bosses/rares or 5+ mobs
// Weaken only on high-threat or bosses. Estoc handles <5.
if (CFG.autoDebuff && STATE.mp > 0.35) {
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'imperil'))
return { type: 'spell', name: 'Imperil', target: b, _reason: 'imperil' };
}
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(80) || STATE.monsters.length >= 3)) {
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(THREAT_PX))) {
const b = findDangerousMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'weaken'))
return { type: 'spell', name: 'Weaken', target: b, _reason: 'weaken' };
@ -1497,18 +1498,18 @@ function strategyVeteran() {
}
}
// 4. Debuffs — Imperil on any 2+ mobs or bosses; Weaken on high-threat enemies
// On IWBTH, non-boss elites hit hard — debuffs are worth the MP cost
if (CFG.autoDebuff && STATE.mp > 0.20) {
// Imperil: reduce physical mitigation by 25-50% (stacks with Penetrated Armor)
// Use on any tanky enemy when facing 2+ monsters or a rare
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 2)) {
// 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) {
// Imperil: bosses only, or 5+ mobs in Grindfest (Estoc handles <5)
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'imperil'))
return { type: 'spell', name: 'Imperil', target: b, _reason: 'imperil' };
}
// Weaken: reduce incoming damage by 50% — use on high-threat or 3+ mobs
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(80) || STATE.monsters.length >= 3)) {
// Weaken: only on monsters about to use special attacks (high SP) or bosses
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(THREAT_PX))) {
const b = findDangerousMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'weaken'))
return { type: 'spell', name: 'Weaken', target: b, _reason: 'weaken' };

View file

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

View file

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

View file

@ -612,14 +612,15 @@ function strategyAdept() {
}
}
// 4. Debuffs — Imperil on 2+ mobs or bosses; Weaken on high-threat
if (CFG.autoDebuff && STATE.mp > 0.20) {
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 2)) {
// 4. Debuffs — conservative: Imperil on bosses/rares or 5+ mobs
// Weaken only on high-threat or bosses. Estoc handles <5.
if (CFG.autoDebuff && STATE.mp > 0.35) {
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'imperil'))
return { type: 'spell', name: 'Imperil', target: b, _reason: 'imperil' };
}
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(80) || STATE.monsters.length >= 3)) {
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(THREAT_PX))) {
const b = findDangerousMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'weaken'))
return { type: 'spell', name: 'Weaken', target: b, _reason: 'weaken' };
@ -772,18 +773,18 @@ function strategyVeteran() {
}
}
// 4. Debuffs — Imperil on any 2+ mobs or bosses; Weaken on high-threat enemies
// On IWBTH, non-boss elites hit hard — debuffs are worth the MP cost
if (CFG.autoDebuff && STATE.mp > 0.20) {
// Imperil: reduce physical mitigation by 25-50% (stacks with Penetrated Armor)
// Use on any tanky enemy when facing 2+ monsters or a rare
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 2)) {
// 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) {
// Imperil: bosses only, or 5+ mobs in Grindfest (Estoc handles <5)
if (hasReadySpell('Imperil') && (anyRareMonster() || STATE.monsters.length >= 5)) {
const b = findStrongestMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'imperil'))
return { type: 'spell', name: 'Imperil', target: b, _reason: 'imperil' };
}
// Weaken: reduce incoming damage by 50% — use on high-threat or 3+ mobs
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(80) || STATE.monsters.length >= 3)) {
// Weaken: only on monsters about to use special attacks (high SP) or bosses
if (hasReadySpell('Weaken') && (anyRareMonster() || hasHighThreat(THREAT_PX))) {
const b = findDangerousMonster();
if (b >= 0 && !checkMonsterDebuff(b, 'weaken'))
return { type: 'spell', name: 'Weaken', target: b, _reason: 'weaken' };