hv-unified/references/hentaiverse-analysis.md
GaboGG 402db6bb2f Initial commit: HV Unified v0.11.0 structure
- 23 source files in src/ (build via scripts/build.sh)
- Forum-sourced player knowledge in references/
- DESIGN.md with architecture and corrections
- References to existing scripts (Monsterbation, jpx, HV Utils)
2026-07-20 19:30:26 -04:00

25 KiB

HentaiVerse — Complete Game Analysis & Automation Architecture

Prepared for headless automation / Chrome extension / harness design

=============================================================================

1. GAME ARCHITECTURE

HentaiVerse is a server-authoritative browser RPG. All logic runs server-side; the browser is a thin client rendering HTML pages. Key architectural facts:

  • URL: https://hentaiverse.org/ (subdomain of e-hentai.org)
  • Transport: HTTP(S) POST/GET with session cookies from e-hentai.org
  • State: Pure server-side. Browser refreshes the full page per turn/round.
  • Page structure: The battle page is a single HTML document. Each turn ("attack", "cast spell", "use skill", "use item") is an HTTP POST that returns a new page with updated state.
  • Anti-automation: Server-side rate limit of 4 turns per second. RiddleMaster anti-bot popups appear between rounds at random intervals.
  • Stamina: Anti-cheating mechanic — only 99 stamina max, regenerates 1/hr. You cannot grind indefinitely without items or waiting.

HTTP Flow (Battle)

GET  /?s=BATTLE&...           ← Enter battle (from Arena/Grindfest/etc.)
POST /?s=BATTLE&action=attack ← Click "Attack" → server processes → returns new HTML
POST /?s=BATTLE&action=cast&spell=14&target=2  ← Cast spell on monster #2
POST /?s=BATTLE&action=skill&skill=1            ← Use skill
POST /?s=BATTLE&action=item&item=3&target=player ← Use item on self
POST /?s=BATTLE&action=flee                     ← Flee
POST /?s=BATTLE&action=defend                   ← Defend
POST /?s=BATTLE&action=focus                    ← Focus

The response HTML contains:

  • Updated monster HP/MP/status bars (parsed from HTML tables)
  • Updated player vitals
  • New battle log text
  • Buff/debuff durations
  • If monsters are dead → link to "next round" or "exit to bazaar"

Key Observation

Because the game is server-authoritative and every action returns full HTML, an automation tool doesn't need to simulate complex state. It just needs to:

  1. Parse the current page HTML to extract game state
  2. Decide the optimal action based on state + strategy
  3. POST the action form
  4. Parse the new page HTML
  5. Repeat

This is exactly how existing userscripts (jpx, Monsterbation) work.

=============================================================================

2. GAMEPLAY LOOP

LOGIN → BAZAAR → SELECT BATTLE MODE → [ENTER BATTLE] →
  ROUND 1: fight monsters → ROUND N: ... → EXIT → BAZAAR

Pre-Battle (Bazaar)

  • Equip gear (Character → Equipment)
  • Allocate ability/mastery points (Character → Abilities)
  • Train skills (Character → Training)
  • Shrine artifacts
  • Manage items/inventory
  • Monster Lab management

Battle Loop (per round)

1. Page loads → parse enemy list, player vitals, buffs/debuffs
2. Select action:
   - Physical Attack (target monster)
   - Cast Spell (target monster(s))
   - Use Skill (target monster or self)
   - Use Item (target self)
   - Defend / Focus / Flee
   - Toggle Spirit Stance
3. POST action → server resolves:
   - Player attack lands/misses/crits
   - Elemental strike proc checks
   - Equipment proc checks
   - Monster attacks resolved (speed-based, can be multiple)
   - Status effect durations decremented
   - Vital regeneration ticks
4. New HTML page loads → go to step 2 or "Next Round"

Post-Battle

  • Loot popup (equipment/items/credits)
  • Return to Bazaar
  • Train / shrine / sell / repair equipment
  • Repeat from Step 1 until stamina exhausted

=============================================================================

3. CHARACTER SYSTEM — COMPLETE FORMULAS

3.1 Primary Attributes (6 stats)

Stat Key Effects
STR +2 phys dmg / pt, +1% Overwhelming Strikes per 100
END +6 HP/pt, +1 phys mit/pt, +1 mag mit/pt
DEX +1 phys dmg/pt, +0.5 acc, +0.4 parry
INT +2 mag dmg/pt, +1% Coalesced Mana per 100
AGI +0.5 phys mit/pt, +0.4 evade, +attack speed
WIS +1 MP/pt, +1 mag dmg/pt, +0.5 mag acc, +0.4 resist

EXP cost to raise: (current_stat + 1)^(2.5475566751265^(1+(current_stat/950)))

3.2 Derived Stats — Key Formulas

Physical Base Damage:

= (log(3330 + STR*2 + DEX, 1.0003) - 27039.81)
  + (weapon_prof * TYPE) + sum(all_equip_ADB)

Where TYPE = 5 (DW), 4 (1H), 3 (2H/Staff)

Magic Base Damage:

= (log(3330 + INT*2 + WIS, 1.0003) - 27039.81)
  + (staff_prof * 0.5) + sum(all_equip_MDB)

Physical Hit Chance:

= 80% + DEX*0.04% + prof_bonus + sum(equip_acc)

Magical Hit Chance:

= 80% + WIS*0.04% + prof_bonus + sum(equip_mag_acc)

Physical Crit (layered):

= 1 - Π(1 - layer_n)

Layers: base (5%), stats, prof, each equipment piece independently. Burden penalty: crit_chance *= Max(1 - (Max(burden-70,0) * 0.02)^1.5, 0)

Magic Crit (layered): Same structure, interference penalty instead of burden.

Attack Speed:

1 - Π(1 - layer_n)  with layers from AGI, prof, each equipment piece
Burden penalty: speed *= (1 - Min((Max(burden-40, 0) * 0.02)^1.5, 1))

Cast Speed (additive):

= (1 + equip_bonus + prof_bonus)

Evade:

= 1 - (1 - shadow_veil) * (burden_penalty) * (1-eq) * (1-title) * (1 - AGI*0.04%)

Parry:

= 1 - Π(1 - layer_n)   // layers from DEX, prof, equipment

Mitigation:

Phys: 1 - (1 - eq_bonus) * (900/(900 + END + AGI/2))
Mag:  1 - (1 - eq_bonus) * (900/(900 + END + WIS/2))

HP / MP / SP:

HP = (500 + level*10 + END*6) * HP_Tank * vigorous_vitality
MP = (10 + level + WIS) * MP_Tank * effluent_ether
SP = (1 + sum(all_6_stats)/5) * SP_Tank * suffusive_spirit

Battle Regen (per "tick" = 100 time units):

MP/tick = 5 + (WIS/25) * perk_bonus
SP/tick = 1 + (sum_all_stats/600) * perk_bonus

3.3 Action Speed & Time Units

action_speed = 100 / (1 - cast_speed) / specific_action_speed
              / prof_factor_multiplier * (1 + haste)

time_units = clamp(20, 10000 / action_speed, 500)

Key action base speeds:

  • Physical attack: 1.0
  • T1 offensive spell: 1.2
  • T2 offensive spell: 1.4
  • T3 offensive spell: 1.6
  • Curative spells: ~0.2
  • Support spells: ~0.1

A "tick" = 100 time units. Buffs/debuffs decrement every tick. Faster actions = more attacks per tick before buffs expire.

Server bottleneck: max 4 turns/sec (anti-bot measure).

=============================================================================

4. COMBAT SYSTEM

4.1 Damage Formula

Physical damage delivered:

damage = base_physical_dmg
         * (1 + hath_bonus)         // Daemon Duality 10-50%
         * (1 + tower_bonus)        // 0.1% per isekai floor
         * (1 + crit_mod)           // +50% base, +equip bonuses
         * (1 + heartseeker_bonus)  // 25% if active
         * (1 + spirit_stance)      // 100% if active

Then applied to target:

damage_taken = damage * (1 - phys_mitigation) * (1 - specific_mitigation)

Where specific mitigation = elemental type (fire/cold/elec/wind/holy/dark) OR physical type (slash/pierce/crush).

Mitigations are multiplicative, cannot go below 0.

4.2 Elemental Strikes

Weapons may have elemental strikes (Fire/Cold/Elec/Wind/Holy/Dark/Void). Each strike deals ~50% of normal physical damage as a separate attack in the same turn. Counts as physical for mitigation purposes (goes through phys mit + specific elemental mit).

4.3 Avoidance (layered multiplicative)

Physical avoidance = 1 - (1-evade') * (1-block') * (1-parry')
Magical avoidance   = 1 - (1-evade') * (1-block') * (1-resist')

Where primed values account for anti-evade/anti-block/anti-parry/anti-resist from custom monsters.

Resist rolls (for spells): 3 independent rolls.

  • 0 rolls: 0% reduction
  • 1 roll: 50% reduction
  • 2 rolls: 75% reduction
  • 3 rolls: 90% reduction

4.4 Equipment Procs

Weapon-specific procs trigger on hit:

  • Bleeding Wound (Axe, Shortsword, Wakizashi, Longsword, Katana) — DoT
  • Stun (Club, Mace) — target can't act
  • Penetrated Armor (Rapier, Estoc) — reduces phys/mag mitigation by 25%/stack
  • Ether Theft (Staff) — steal MP

Stacking: Penetrated Armor up to 3 stacks (75%). Bleeding Wound up to 100 stacks.

4.5 Skills (Overcharge-based)

Skills cost Overcharge (yellow bar built by dealing/taking damage). Key skills by fighting style:

1H + Shield:

  • Shield Bash (25 OC, 10 CD) — Stun 5 turns
  • Vital Strike (50 OC, 10 CD) — 100 Bleeding Wound stacks on stunned enemy
  • Merciful Blow (100 OC, 10 CD) — execute <25% HP bleeding target

Dual Wield:

  • Iris Strike (50 OC, 5 CD) — Blind 100 turns
  • Backstab (50 OC, 5 CD) — 2x damage to blinded, poison
  • Frenzied Blows (75 OC, 10 CD) — 10-20 hits across 5 targets

2H:

  • Great Cleave (50 OC, 5 CD) — guaranteed crit
  • Rending Blow (50 OC, 5 CD) — 3 Penetrated Armor to 5 targets, bypasses phys mit
  • Shatter Strike (50 OC, 5 CD) — Stun 5 turns to 5 targets with Penetrated Armor

Staff (Mage):

  • Concussive Strike (50 OC, 10 CD) — Stun 5 turns, magic damage

4.6 Spirit Stance

  • Toggle state: +100% damage dealt, +25% mana costs
  • Drains SP while active (10% of base overcharge per turn)
  • Cannot be maintained without sufficient SP

4.7 Core Spells (for automation strategy)

Offensive (Elemental):

Tier Fire Cold Elec Wind Lvl Cost
1 Fiery Blast Freeze Shockblast Gale 15-45 6%
2 Inferno Blizzard Chained Lightning Downburst 95-125 14%
3 Flames of Loki Fimbulvetr Wrath of Thor Storms of Njord 175-205 21%

Cost is % of player level. T2/T3 hit multiple targets (5-10 depending on abilities).

Deprecating (mandatory for mages):

  • Imperil (Lvl 130, 10% cost, 3 CD) — REDUCES enemy phys/mag/elemental mitigation
  • Weaken (Lvl 70, 10% cost, 3 CD) — REDUCES enemy damage by 50%
  • Slow (Lvl 10, 18% cost, 3 CD) — slows enemy actions
  • Sleep (Lvl 80, 22% cost, 7 CD) — incapacitates target
  • MagNet (Lvl 250, 22% cost, 15 CD) — prevents evade AND resist

Supportive:

  • Haste (Lvl 60, 30% cost, 0 CD) — +50% action speed
  • Protection (Lvl 10, 25% cost, 0 CD) — -25% damage taken
  • Shadow Veil (Lvl ~130) — base evade that ignores burden
  • Regen (Lvl 50, 22.5% cost, 0 CD) — HP regen/turn
  • Cure (Lvl 5, 20% cost, 5 CD) — instant heal
  • Heartseeker (Lvl 200+) — +25% phys damage
  • Spirit Shield (Lvl 200+) — absorb damage with SP

Spell cost modified by:

MP_cost = roundup(level * base_cost/100 * (1 + interference*0.5%)
          * (1 - mana_conservation) * (1 - spirit_stance)
          * (1 - coalesced))

=============================================================================

5. BATTLE MODES

Arena

  • Fixed monster sets, fixed round counts
  • Best credits/hour in early-mid game
  • Available once/day per challenge
  • Higher level challenges have more rounds, better credit bonuses
  • Max: "Eve of Death" (Lvl 180, 70 rounds)
  • First clear bonus is higher than subsequent clears

Grindfest

  • Infinite rounds (until you die or flee)
  • Monsters scale with rounds (harder over time)
  • 1 stamina entry cost, no per-round stamina
  • Best EXP/proficiency grind for sustained play
  • Drop multiplier increases at high round counts

Item World

  • Level up equipment stats (potency)
  • Costs all stamina upfront based on rounds to clear
  • Quality of equipment affects difficulty
  • Higher difficulty → better potency gains

Random Encounter

  • Triggered randomly while browsing E-Hentai
  • Does NOT cost stamina
  • Special loot tables
  • Scripts (HV Utils) auto-detect and notify

Ring of Blood

  • Boss fights
  • 1/day attempt
  • Unique rewards

The Tower (Isekai)

  • Seasonal competitive mode
  • Separate character (Isekai mode)
  • Rankings and special rewards

=============================================================================

6. ECONOMY

Credits (primary currency)

  • Earned from battles (Arena most reliable)
  • Spent on: training, equipment repairs, item shop, market

Credits per Arena (first clear):

Challenge Rounds First Clear Credits
Fresh Meat (Lvl 50) 12 5,000 C
Endgame (Lvl 100) 35 10,000 C
Exile (Lvl 130) 50 20,000 C
To Kill a God (Lvl 165) 65 35,000 C
Eve of Death (Lvl 180) 70 40,000 C

Hath (premium currency)

  • Earned from H@H (our other project) and donations
  • Buy Hath Perks (permanent account upgrades)
  • Exchange for Credits on Hath Exchange (currently ~3,038 C/Hath)
  • Earned from H@H hits (0.1 GP/hit)
  • Earned from HV battles (slower)
  • Used in bounty system

Training (credit sink, permanent upgrades)

Training Effect Levels Initial Cost
Adept Learner +1% EXP/level 300 100 C
Scavenger +1% loot drop chance 50 500 C
Ability Boost +1 Ability Point 500 100 C
Assimilator +10% prof gain rate 25 50K C
Quartermaster +5% equip drop chance 20 5K C
Archaeologist +10% artifact drop chance 10 25K C
Luck of the Draw +1% rare equip chance 25 2K C

Items (battle consumables)

  • Energy Drink: +10 stamina (from donator daily reward)
  • Caffeinated Candy: +5 stamina (lottery)
  • Potions/Scrolls/Gems: various battle effects
  • Infusions: temporary elemental damage

=============================================================================

7. AUTOMATION RULES (CRITICAL)

From the official wiki ("Scripts & Tools" → "Forbidden Actions"):

EXPLICITLY FORBIDDEN (full ban):

  1. Fully automated/unattended play — clearing multiple battles without ANY manual input from the player
  2. Automatic monster feeding — collecting benefits without player input
  3. Automating RiddleMaster — including ML-based solving
  4. Auto-starting new battles — anything that chains battles together

ALLOWED:

  1. Per-round auto-battlers that require a human click to advance (jpx)
  2. UI enhancements (HV Utils, Monsterbation)
  3. Statistical tracking, alerts, quality-of-life scripts
  4. Hotkey rebinding

The grey area: "per round" means a script may decide what action to take this round, but the player must manually click to execute or advance. The existing approved script jpx works exactly this way — it recommends the optimal action, the player clicks to execute, the script processes the result and recommends the next action.

PENALTIES

Full account ban — not just the HV game. You lose:

  • Access to e-hentai.org galleries
  • Forum account
  • All H@H clients
  • All Hath, Credits, equipment

=============================================================================

8. EXISTING AUTOMATION TOOLS (patterns to study)

jpx (approved, active)

  • Type: Tampermonkey userscript
  • Function: "Manually triggered per round auto-battler"
  • Pattern: Press a hotkey → script recommends action → press another hotkey → script submits the action → page reloads → script parses new state → repeat
  • Has: auto-battle ruleset manager, battle statistics tracker
  • URL: Listed on wiki's Scripts & Tools page (v2026.07.06)

Monsterbation (approved)

  • Type: Tampermonkey userscript (v1.4.1.3)
  • Function: "All-purpose hovering script for melee and mage"
  • Pattern: Hover-based UI that overlays recommendations

HV Utils (approved)

  • Type: Tampermonkey userscript (v4.2.3)
  • Function: Out-of-battle automation
  • Automates: shrine, equipment shop (auto-sell/salvage bad gear), RE detection, inline equipment changer

HV Toolbox

  • Type: Tampermonkey userscript
  • Function: Shop management, MoogleMail, shrine

9. IMPLEMENTATION OPTIONS

What: JavaScript userscript injected into hentaiverse.org How: Leverages the browser's DOM + cookies for authenticated requests. Compliance: Requires one human click per round = fully within rules.

Architecture:

┌─────────────────────────────────────┐
│ hentaiverse.org page (browser)       │
│ ┌─────────────────────────────────┐ │
│ │ Tampermonkey Userscript          │ │
│ │ ┌─────────┐ ┌──────┐ ┌───────┐ │ │
│ │ │ Parser  │ │ Strat │ │Action │ │ │
│ │ │(DOM→obj)│→│ Engine│→│ Submitter│ │
│ │ └─────────┘ └──────┘ └──┬────┘ │ │
│ │                        │ POST  │ │
│ └────────────────────────┼───────┘ │
│        ← HTML response ←─┘         │
└─────────────────────────────────────┘

Pros:

  • Low development effort (pure JS, ~2000-3000 lines)
  • Uses existing browser session/cookies (no auth headache)
  • Can be published as a Tampermonkey script
  • Hotkey-driven: press "F" to execute recommended action

Cons:

  • Requires a browser open (can't be fully headless)
  • Must comply with per-round click requirement
  • Cannot auto-chain battles (within rules anyway)

Option B: Headless Browser + Puppeteer/Playwright

What: Node.js script controlling headless Chromium with puppeteer How: Full browser automation — can click buttons, fill forms, parse HTML Compliance: DANGER ZONE — easy to accidentally cross into full automation

Pros:

  • Can run on VPS headless 24/7
  • Full DOM access
  • Can take screenshots for debugging

Cons:

  • Resource heavy (Chromium + Node.js)
  • Very easy to get banned if fully automated
  • The 4-turns/sec rate limit still applies
  • RiddleMaster will appear faster with full automation and flag you

Option C: Direct HTTP Client (Python/Node.js)

What: Script that directly sends HTTP POST requests to hentaiverse.org How: Parse HTML responses, POST action forms, manage cookies Compliance: HIGH RISK — indistinguishable from botting

Pros:

  • Zero overhead (no browser)
  • Can run on VPS headless
  • Fastest possible throughput

Cons:

  • Must reverse-engineer exact form fields, CSRF tokens, cookie handling
  • No JavaScript execution — some game mechanics may rely on JS
  • Extremely high ban risk if performed unattended
  • Cannot solve RiddleMaster without AI/OCR (which is explicitly forbidden)

Option D: Hybrid — Chrome Extension

What: Chrome extension that bridges between manual and headless How: Extension runs a WebSocket server; a remote harness connects and controls

Pros:

  • Browser handles auth/rendering
  • Remote harness can run on VPS
  • Clean separation of concerns

Cons:

  • Browser still needs to be open
  • Complex architecture
  • Extension review policy may flag it

=============================================================================

Short-term: Tampermonkey script (Option A)

Build a per-round auto-battler modeled after jpx:

┌──────────────────────────────────────────────┐
│ Strategy Engine (what the script decides)     │
│                                              │
│  MAGE MODE (simplest to automate):           │
│  1. Check if Imperil needed → cast           │
│  2. Check if Weaken needed → cast            │
│  3. Check mana → if low, use Draught/Focus   │
│  4. Check if Haste active → if not, cast     │
│  5. Check if Shadow Veil active → cast       │
│  6. Cast strongest available AoE spell       │
│     Pick element based on target weakness:   │
│     - Scan each monster for lowest resist    │
│     - Match spell element to weakness        │
│  ALL BY HOTKEY: PRESS ONE KEY TO EXECUTE     │
│                                              │
│  MELEE MODE:                                 │
│  1. Check Overcharge → use skills if enough  │
│  2. Attack lowest-HP monster first (sweep)   │
│  3. Use Spirit Stance when full OC/SP        │
│  4. Heartseeker before big skills            │
│                                              │
│  ITEM MODE (optional, stamina recovery):     │
│  - Consume Energy Drink if stamina < 10      │
└──────────────────────────────────────────────┘

Mid-term: Add out-of-battle automation like HV Utils

  • Auto-sell/salvage low-quality equipment
  • Auto-shrine artifacts
  • Auto-train when credits available
  • Monster Lab feeding reminders

Long-term (IF server offset goal is serious):

Run H@H 24/7 for passive Hath (our primary project), and supplement with Hath→Credit exchange (3,038 Cr/Hath). This is the legit, no-ban-risk path to monetize the game's economy without botting.

NEVER build:

  • Fully automated battle chaining (Arena → exit → next Arena → ...)
  • RiddleMaster auto-solver
  • Anything that runs with zero human interaction for >1 round

=============================================================================

11. KEY TECHNICAL NOTES FOR IMPLEMENTATION

HTML Parsing

The battle page structure (from wiki screenshots):

  • Top bar: stamina, credits, HP/MP/SP bars
  • Center: enemy list (table with HP bars, status icons, names)
  • Bottom: action buttons (Attack dropdown, Spell grid, Skill list, Item list)
  • Battle log: text output of last action

Monster Data Extraction (from HTML tables)

<table class="monster_list">
  <tr> <!-- per monster -->
    <td>HP bar (width = current/max %)</td>
    <td>Status icons</td>
    <td>Name (text)</td>
    <td>Level/PL</td>
  </tr>
</table>

Player State Extraction

HP: parse from "Health: X / Y" text
MP: parse from "Magic: X / Y"
SP: parse from "Spirit: X / Y"
Overcharge: parse from yellow bar width
Current buffs: check status icon presence

Form Submission

// Attack monster #2
document.forms['battle'].elements['action'].value = 'attack';
document.forms['battle'].elements['target'].value = '2';
document.forms['battle'].submit();

// OR via fetch to avoid full page reload (if game supports AJAX):
fetch('?s=BATTLE', {
  method: 'POST',
  body: new URLSearchParams({action:'attack', target:2})
}).then(r => r.text()).then(html => { /* re-parse */ });

Elemental Weakness Matching

Monsters have 6 resistance values (Fire, Cold, Elec, Wind, Holy, Dark). The Scan skill reveals these. Without scanning, a script can track damage numbers and infer resistances:

If Fire spell did 1000 damage and Cold did 2000 → target is fire-resistant.
Track per-monster-type for future encounters (Monster Lab data).

RiddleMaster Bypass (DON'T — EXPLICITLY FORBIDDEN)

The RiddleMaster is a CAPTCHA-like puzzle that appears between rounds at random intervals. The wiki explicitly states:

"Any kind of attempts to automate the RiddleMaster in any way, including scripts that automatically scrape riddles for the purposes of machine learning."

The ONLY legitimate approach: pause the script and require the human to solve it manually. Play a sound or flash the tab to get attention.

=============================================================================

12. CREDIT-FARMING MATH

Credits per Arena run (approximate, mid-level)

Arena Rounds ~Time Credits (first) Credits (repeat)
Fresh Meat (50) 12 3-5 min 5,000 1,000
Killzone (90) 30 8-10 min 9,000 ~1,800
Endgame (100) 35 10-12 min 10,000 ~2,000
Exile (130) 50 15-20 min 20,000 ~4,000
To Kill a God (165) 65 20-25 min 35,000 ~7,000

A dedicated player running ~14 arenas/day at mid-tier earns roughly 50,000-150,000 Credits/day from Arenas, plus equipment/artifact drops worth 10-50K more.

Hath vs Credits comparison

From earlier calculation: 1 Hath = ~3,038 Credits (exchange rate). Our H@H client (58,000 KB/s, 400 GB) may earn 5-150 Hath/day depending on ramp-up. That's 15,190 - 455,700 Credits/day equivalent — orders of magnitude more efficient than manually grinding HV.

=============================================================================

13. FILE STRUCTURE (Tampermonkey script template)

/scripts/hv-auto/
├── hv-auto.user.js          ← Main userscript (manifest + bootstrap)
├── parser.js                ← HTML→gameState parser
├── strategy.js              ← Action decision engine
├── actions.js               ← Form submission helpers
├── constants.js             ← Monster DB, spell tables, damage type matrix
├── monitor.js               ← Stamina/credit/profit tracking
└── ui.js                    ← Optional overlay UI

=============================================================================

14. BOTTOM LINE

H@H is your passive income engine (build it, forget it, cash Hath).
HV scripts are your quality-of-life supplements (speed up Arena runs, manage inventory, train efficiently).

Don't risk a full account ban trying to fully automate HV. The per-round semi-automation path (Option A) is proven by jpx/Monsterbation, fully within rules, and saves 90% of the tedium.