- 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)
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:
- Parse the current page HTML to extract game state
- Decide the optimal action based on state + strategy
- POST the action form
- Parse the new page HTML
- 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)
Gallery Points (GP)
- 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):
- Fully automated/unattended play — clearing multiple battles without ANY manual input from the player
- Automatic monster feeding — collecting benefits without player input
- Automating RiddleMaster — including ML-based solving
- Auto-starting new battles — anything that chains battles together
ALLOWED:
- Per-round auto-battlers that require a human click to advance (jpx)
- UI enhancements (HV Utils, Monsterbation)
- Statistical tracking, alerts, quality-of-life scripts
- 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
Option A: Tampermonkey Userscript (Recommended)
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
=============================================================================
10. RECOMMENDED STRATEGY
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.