# EQ Dream Solo Assist 2026.09.09.4

## First installation — easiest route
1. Close EverQuest. Run the EQ Dream Launcher and choose Patch / Repair.
2. Download EQDream-MacroQuest-Solo-Assist.zip from https://triune.siliconsoul.cloud/#solo-assist.
3. Extract ALL files into a NEW folder such as Documents/EQDream-MacroQuest. Do not extract into your EQ folder or over an existing MacroQuest installation.
4. Run MacroQuest.exe from that folder before opening EverQuest. It stays in the system tray. You do not need to set up AutoLogin; handle any password dialog yourself.
5. Open the EQ Dream Launcher and Play. Log into your character, then type /eqd.
6. Choose a clear camp, check the options, and click Start. Combat never starts automatically at login.

## Already have RoF2 MacroQuest?
Close EQ and MacroQuest. After Patch / Repair, open SoloAssist in your EQ folder and double-click Install-Solo-Assist.cmd. Select the folder containing your RoF2 MacroQuest.exe. This copies our three Lua scripts, preserves per-character settings, backs up replaced files, and adds the login command without replacing other login commands.
The small EQDream-Solo-Assist-Update.zip contains the same installer: extract the whole ZIP before opening Install-Solo-Assist.cmd.
If script execution is blocked by your organization, use the manual steps instead; do not change security settings.

## Manual installation
Copy lua/eqdream_control.lua, lua/eqdream_solo.lua and lua/eqdream_settings.lua to MacroQuest's lua folder. Add /lua run eqdream_control quiet on its own line to config/ingame.cfg, preserving existing lines. Or type /lua run eqdream_control in game each session.

## Everyday use
Start MacroQuest first, then EQ Dream. Type /eqd to open the compact window. Stop before moving camp or changing settings. Start sets your current position as camp.
/eqd show — show controls
/eqd hide — hide controls (combat continues)
/eqd start — start with saved options
/eqd stop — stop combat routine
/eqdstop — emergency stop while the routine is running
/lua run eqdream_control — load the controls if /eqd is unknown
Ctrl + ` hides/shows the large MacroQuest console. The compact Solo Assist window is separate.
Optional EQ hotbutton: /hotbutton SoloAssist /eqd

## Options and limits
Pull method: choose Distant Strike, Spell gem, or Defend only. Spell gem REPLACES the old hotbar-button option. Select the gem containing a memorized single-target detrimental spell; the menu displays its name. Pulling checks mana, cooldown, line of sight, spell range and your Maximum pull range. Retry seconds controls repeated attempts, with at most three attempts before stopping if no attacker arrives. No Distant Strike AA is needed for gem pulls. Fresh pulls exclude named mobs and pets. Set the proper gem after updating if you previously used hotbar pulling.
Auto snare: OFF by default. Enable the checkbox and choose the gem containing your single-target snare spell. It acts on an existing attacker, skips a snare visible in target buffs, and retries unconfirmed casts at Snare retry seconds (default10). After three unconfirmed attempts it pauses60seconds for that target, avoiding constant casts on resistant/immune mobs. Buff visibility depends on the client/server; absence from the display is not proof of a resist. Healing takes priority before starting a new snare. Only one spell cast runs at a time. No fresh enemies are pulled by the snare option.
Auto self-heal: OFF by default. Stop Solo Assist, check Auto self-heal, choose Self-heal spell or Lifetap on my attacker, and select the gem containing your memorized spell. The menu shows the spell name. Set Heal at HP % (default65) and Heal retry seconds (default3), then Start. Self-heal targets you and works between fights too. Lifetap requires an existing attacker in range and line of sight; it never pulls a new mob to heal. Uses mana and spell-readiness checks, holds the target through casting, then resumes defense. Select a real healing spell for self-heal mode, or a single-target lifetap such as Lifespike for tap mode. Healing does not run while Solo Assist is stopped. Fizzles and failed casts retry at the configured interval after the cast attempt clears. Existing emergency Mend behavior remains. Observe the first fights to confirm your chosen spell is effective.
Pet assist: sends an existing pet to attack. It does not summon or replace pets.
Rest: recover health between fights. Low health pauses fresh pulls, keeps defending, and tries Mend when available; it cannot guarantee survival.
Radius: 30–150 units. Level range: 0–10 below and 0–10 above your level. Start conservatively and observe your first fights.
Defaults: Distant Strike, maximum spell pull range120, retry6seconds, radius120, 4 levels below/1 above, rest90%, low health35%, pull/pet/rest enabled. Adjust for your camp and gear.
Settings save per server and character. Stops on death, zoning, or manual movement over20 units from camp. Automatic melee positioning permits bounded movement. No roaming, automatic resurrection, pet replacement, full spellcaster rotation, or guaranteed unattended leveling. Loot and selling use NMS's own rules: /nmsloot opens those controls. SSF restrictions still apply; Solo Assist does not toggle SSF.

## Updates and troubleshooting
Run Patch / Repair with EQ closed for client updates. For Solo Assist updates, close EQ/MacroQuest and rerun the installer from the updated SoloAssist folder in your EQ installation. The launcher updates the setup files; it cannot update a separate MacroQuest folder until you run that installer.
Do not run two copies of MacroQuest. Use the RoF2 build, not the Live-client build. If MQ was started after EQ and commands do not work, restart EQ with MQ running first.
If /eqd is unknown: /plugin MQ2Lua load, then /lua run eqdream_control. If /plugin is also unknown, MQ has not attached correctly.
If NMS window is missing: /nmsloot reset. If the latest-client warning returns after zoning: exit EQ, Patch / Repair, relaunch with MQ running first, and report the zone/time if it persists.
To stop automatic loading, remove only the eqdream_control line from config/ingame.cfg. With EQ closed, you may remove the three eqdream Lua files; keep settings if you want them for reinstall.

## Release and testing
2026.09.09.4 replaces hotbar pulling with spell-gem pulling and adds optional snaring, retaining healing and the tested authentication refresh fix for the existing NMS DLL. Ordinary zoning, death-return outside Bazaar, NMS window and selling passed in-game with MacroQuest on Captsplitter. Solo Assist window, combat, pet assist, low-health recovery and saved settings were tested in Mistmoore. Other characters/camps need their own supervised setup.
SSF consumption: fresh bound duplicates without recorded progression can feed the matching power-source item. Existing item-family/tier restrictions still apply. Items with recorded power-source energy or progression are rejected. This correction runs on the server.
Sympathetic Strike: when triggered by a lifetap, its Prismatic Strike damage now heals the caster as well. The server fix passed a player test. Pulling, snare and healing menu/engine regression tests passed; the new gem pulling and snare controls still need supervised in-game testing.
The full bundle uses the official MacroQuest RoF2 release plus the three EQ Dream scripts and a login command. It contains no developer accounts, passwords, personal settings or game client. Upstream licenses remain included. Upstream: https://github.com/macroquest/macroquest/releases/tag/rel-emu-rof2


AUTOMATIC MELEE POSITIONING — 2026.09.12.2
Automatic melee positioning: Solo Assist faces the current enemy, moves comfortably inside melee range, and restores melee attack if it gets turned off. It follows existing attackers at every health level, including runners; no Chase runners checkbox is required. Maximum combat distance from camp is adjustable from 20 to 100 (default 60), also limited by Pull radius. Fresh ranged pulls still wait for an attacker before advancing. Healing and snaring stop movement before casting; melee resumes afterward. After the fight it returns to camp. MQ2MoveUtils is required and loads automatically; it is included in the full bundle. Movement requires a clear path and does not navigate around walls. Blocked or interrupted movement stops the routine. A fight stops after two minutes without damage progress, rather than after two minutes of active fighting. Stop, death, and zoning cancel movement. NMS continues to handle loot.


TAVERN DUELS
# Tavern Duels — live EQ Dream release

## Players

1. Close EQ and run the EQ Dream launcher’s **Patch / Repair**.
2. Open **SoloAssist** inside your EQ folder, run **Install-Solo-Assist.cmd**, and select your MacroQuest folder. This installs Tavern Duels alongside Solo Assist and preserves your character settings.
3. Start MacroQuest, open EQ Dream, and log into your character.
4. Type **/tavern**. Claim a starter deck in Packs, open your welcome packs and start a practice duel. Host a table and share its code to play another player, or visit the Trading post to exchange cards.

The updated full MacroQuest bundle already includes Tavern Duels. Extract it into a new folder and run MacroQuest from there. Microsoft Edge WebView2 Runtime is required; if missing, install it from [Microsoft](https://developer.microsoft.com/en-us/microsoft-edge/webview2/).

`/tavern` opens/closes the card window; `/tavern close` closes it. If the command is unavailable, use `/lua run eqdream_tavern_live`. The window closes when you leave the character or zone. Closing it does not erase your duel or cards. Use windowed EQ.

Live cards are stored on the server and tied to the EQ character ID. All players use the same service for duels and trading. Test-server and original website collections are separate. Cards are not EQ inventory items and do not alter SSF, loot, AA or currency. Reopening requests a private, short-lived sign-in from the game server. No EQ account password is entered into the card window.

## Maintainers

`eqdream_tavern_live.lua` registers `/tavern`, requests `!tavern` via the existing player speech hook, consumes the private `[Tavern Access]` message and launches the WebView2 host. The native host embeds in the requesting EQ process and permits only the configured live HTTPS origin. Test clients use the separate `eq-test` bridge.

The server-only Perl plugin uses OS randomness, a 60-second ticket and the authenticated character's numeric ID. A root-created ticket directory with the service group gives the dedicated service access. HTTP redemption atomically claims a ticket and issues a secure, HTTP-only, same-site cookie. Session tokens are hashed at rest. The web service ignores client-provided identity headers, validates request origins, limits request size/rate and reuses the original authoritative game rules. All gameplay mutations are serialized, with SQLite transactions for card exchanges.

The service is `eqdream-tavern.service`; shared cards and sessions are in `/var/lib/eqdream-tavern/data/cards.sqlite`. Back up this database with SQLite's backup API, including a tested restore procedure. Short-lived tickets are under `/var/lib/eqdream-tavern/tickets`. Nginx routes `/tavern/` to loopback port 17867 and suppresses access logging on that route so launch tickets do not enter its access log. Other website authentication remains unchanged.

Build from the project directory:

```powershell
node node_modules/vite/bin/vite.js build --config live/vite.config.mjs
node live/build-service.mjs
node live/test.mjs
./live/build-window.ps1
```

The deployment script targets this EQ Dream installation and backs up the touched server files. It installs a separate Node runtime and service; it does not replace the system Node or restart gameplay services. After a quest/plugin change, activate it with a global quest reload or a scheduled zone-server restart.

Release checks cover server-issued tickets, expiry/replay, identity isolation, cross-origin rejection, multiplayer hands, shared trading, persistence, Lua launch arguments and actual HTTPS delivery. The original test window was confirmed working inside EQ by the server owner. Live end-to-end activation must also be checked after the quest reload.


MELEE UPDATE — 2026.09.12.2
Automatic melee positioning: Solo Assist faces the current enemy, moves comfortably inside melee range, and restores melee attack if it gets turned off. It follows existing attackers at every health level, including runners; no Chase runners checkbox is required. Maximum combat distance from camp is adjustable from 20 to 100 (default 60), also limited by Pull radius. Fresh ranged pulls still wait for an attacker before advancing. Healing and snaring stop movement before casting; melee resumes afterward. After the fight it returns to camp. MQ2MoveUtils is required and loads automatically; it is included in the full bundle. Movement requires a clear path and does not navigate around walls. Blocked or interrupted movement stops the routine. A fight stops after two minutes without damage progress, rather than after two minutes of active fighting. Stop, death, and zoning cancel movement. NMS continues to handle loot.
Update: close EQ, use launcher Patch / Repair, then run SoloAssist/Install-Solo-Assist.cmd to update your MacroQuest folder. Keep your existing character settings. Restart MacroQuest and EQ, then use /eqd.
