This replaces vwmudhelp.pdf (2006). It covers the same trigger/alias/scripting language the original documented, updated against the actual behavior of the 2026 .NET rebuild - and the new menu structure (File / Automation / Triggers & Functions / Mapping / Help) that replaced the placeholder View menu from earlier builds of this rebuild. Every command below was checked against the current source, not just carried over from the old file, so a few things have changed since 2006 - see What's Changed Since 2006 if you're coming from the old docs and something seems to behave differently than you remember.
File > Open Mud File... loads a .mud profile (an INI-style config
file holding your host/port, triggers file, aliases, settings and any saved custom
variables). File > Connect... opens the connection; File > Disconnect
drops it. The Connect/Linkdead button on the Common Actions panel does the same
thing with one click - its caption switches to Linkdead once you're connected.
| Area | What it shows / does |
|---|---|
| HP / MP / CR bars | Color-coded health bars, parsed live from the MUD's own status text using the labels/max values you set in Settings > Health Bars. |
| Target Acquisition | The currently detected or locked target, plus a caption line you can drive with #CAPTION and colors with #COLOR. Lock Target freezes it; see Targeting. |
| Status checkboxes (2x4 grid) | Triggers, Echo Sends, Away, ANSI, Logging, Timer, Rescue - each is a live on/off switch with a #-command equivalent (hover any checkbox for its exact command pair). |
| Clock & Threat meter | Local or Zulu (GMT) time depending on Settings > Behavior, and a 10-segment threat bar - see Defense Condition. |
| Output pane | The MUD's text. Click any word to set the *c substitution token to it (see Targeting). Right-click for Copy / Clear Screen / Save Transcript. |
| Direction pad | N, S, E, W, NE, NW, SE, SW, Up, Down, Out - eleven buttons, no Look button (Look lives in Common Actions). Configurable in |
| Common Actions | Look, Inventory, Score, Connect/Linkdead, "look at <target>" (caption updates live with your current target), Kill. The commands these send are configurable in |
| Quick Access sidebar | Run an Alias dropdown, REPEAT last command, Quick Commands dropdown (from CommonCommand/CommandList), a big LOCK TARGET button, and live read-outs of the current *h and *c substitution values. |
| Zoom bar | Temporarily scales the output pane's font for readability - doesn't touch your configured base font size. |
| Status bar | A heart icon that pulses with traffic, the clock, and the connection state. |
| Item | Does |
|---|---|
| Open Mud File... | Loads a different .mud profile. |
| Connect... / Disconnect | Opens or drops the connection to the configured host. |
| Exit | Closes the program (confirms first). |
| Item | Does |
|---|---|
| Send Startup Sequence Now | Fires your configured login/startup command set on demand - works even if "Send after connecting" is set to Never, and doesn't care whether it already auto-fired once this connection. |
| Targetting Settings... | Opens Settings directly on the Targeting tab (watch phrases, the *h substitution character, pronoun exclusion). |
| Health Value Settings... | Opens Settings directly on the Health Bars tab (labels, max values, color inversion per bar). |
| Replay a File to Mud... | Pick a text file; each non-blank line is sent exactly as if you'd typed it and pressed Enter, so aliases/triggers/repeats all apply. |
| Item | Does |
|---|---|
| Timers & Function Keys... | Assign F1-F24, and wire the Rescue and Action Timer automations to a key. See Timers, Rescue & Idle. |
| Common Actions... | Edit the actual commands the Look/Inv/Score/Kill/"look at" buttons send. |
| Aliases... | Grid editor for your /shortcuts. See Aliases. |
| Triggers... | Grid editor for your .tri file. See Triggers. |
| Custom Variables... | Grid editor for variables you (or #SET/#INC/etc.) have defined. See Variables & Math. |
| System Variables... | Read-only reference showing every built-in %variable and its current live value. |
| Refresh All | Re-syncs the Aliases/Quick Commands dropdowns and direction-pad captions from config, and reloads the trigger file from disk - useful after hand-editing a .mud/.tri file while the client is running. |
| Turn on/off Debugging | While on, every trigger match (pattern, matched text, resolved action) is appended to a session-only timestamped log file, for diagnosing a trigger that isn't firing as expected. |
| Settings... | The full tabbed settings dialog. See The Settings Dialog. |
| Item | Does |
|---|---|
| Start Mapping / Stop Mapping | Toggles path recording. While active, every direction you send (pad click, typed, or trigger-fired) that matches a configured direction is appended to the path. Stopping a non-empty path offers to save it. |
| Undo Last Direction | Drops the most recently recorded step (and its matching reverse step) from the in-progress path. |
| Save Path as Alias... | Names the current path and its computed reverse, and saves both as a pair of aliases (e.g. church / unchurch). |
| Configure Mapping... | Edits the direction/reverse-direction pairs (e.g. n↔s) that path recording and #RETURN use to compute a reverse path. |
| Set Direction Keys... | Edits what command each compass-pad button on the main window actually sends - separate from Configure Mapping, which only affects reverse-path computation, not the buttons. |
| Item | Does |
|---|---|
| About VWMUD Master 2026... | Version/build info. |
Triggers are the core of the client. The MUD sends a line of text, the client checks it
against every trigger pattern in order, and any match fires its action - which can be a
plain command, an alias, another #-command, or a whole semicolon-separated
command set.
#TRIGGER {%someone looks at you.}{wave %someone}
#TRIGGER {Sid looks at you.}{wave %someone}
#TRIGGER {%someone looks at you}{wave %someone}
#TRIGGER {[Harry looks at you.]}{wave %someone}
#TRIGGER {%someone looks %trash}{#IF [%someone = harry] say hi!}
If the MUD sends Harry looks at you.:
%someone becomes harry, sends wave harry.monster hit you vs. idiot says: monster hit you).Triggers can contain aliases, commands, variables and full command sets - anything you
could type on the command line. They live in a .tri file (named in your
.mud file, editable in ), read
top to bottom, and can be edited with a text editor, on the command line with
#TRIGGER, or through .
Creates a trigger. Braces are required on the command line (the GUI form adds them for you). Also works typed directly as a command:
#TRIGGER {You arrive at your base}{#RESCUEOFF;#IDLEON}
Turns off more than triggers: triggers, aliases, event handling, command-set
handling (except the set currently running), #-command handling, and variable
processing - effectively a dumb client. The only way back on is #TRIGON from
inside the same command set, or the Triggers checkbox.
#TRIGGER {You arrive at base}{#TRIGOFF;drop all;#TRIGON}
Turns triggers back on. #TRIGON only works as part of a command set that
also contains the #TRIGOFF that disabled things - it can't be used standalone
once everything is off. #TRIG is kept for old trigger files.
See also: #TRIGOFF
Runs the full trigger-check pipeline against whatever text you give it, exactly as if the MUD had sent it - useful for indirection (calling a trigger like a subroutine) or for testing a trigger from the command line.
{%someone hit you}{#IF [%someone = harry] #FIRE ZZAP harry}
{ZZAP %someone}{#TARGET %someone;jumpkick %someone}
The first trigger checks who's attacking; if it's Harry, it fires the made-up word
ZZAP harry back through the pipeline, which the second trigger picks up.
Reloads triggers/aliases/switches from disk. Only needed if you hand-edit a trigger file with a text editor while connected - the GUI editors already refresh automatically. Same as .
An alias is a shortcut for a longer command set, invoked with /name.
#ALIAS is the one command that ignores semicolons in its own
definition rather than splitting on them, so a whole command set can live in one alias:
#ALIAS happy say hi *h;jump;say the time is %time
Calling /happy runs all three in order. Equivalent to
.
Extra words after the alias name are available inside the definition as
$1, $2, etc. (the $ character is configurable under
Alias/CharSub):
#ALIAS wallnog wall@ nogs in agreement with $1 .
Typing /wallnog Fred sends wall@ nogs in agreement with Fred .
Three kinds of variable: System (built-in, read-only, listed below), Temporary
(a trigger's %captures - lost once the trigger finishes unless saved with
#SET), and Custom (yours, persisted to the .mud file, editable
under or with the
commands below).
| Variable | Value |
|---|---|
| %time | Current GMT (Zulu) time |
| %ltime | Current local time |
| %date | Current GMT date |
| %lc | Current iteration count of a running *num repeat loop |
| %ll | Iterations remaining in a running *num repeat loop |
| %target | The current target (same value as *h) |
| %hp / %mp / %cr (or whatever labels you've configured) | Current Hit Points / Mana / Carry values |
| %f1 - %f24 | The command set currently assigned to that function key |
| %trash | Not a readable value - a trigger-pattern token meaning "match and discard the rest of the line" (see Triggers) |
| %line | Whatever the most recent %trash in a firing trigger swallowed |
| %linex (e.g. %line3) | Line x of the file currently loaded with #READ |
| %linernd | A random line from the file loaded with #READ |
| %vwmud | Client version string |
View these live (with current values) under .
Assigns a value to a custom variable, persisted to the .mud file.
#VAR is the older name, kept for old trigger files.
#TRIGGER {%zz looks at you}{#SET keep = %zz;say hi %keep!}
Simple math is supported in square brackets, referencing other variables with %:
#SET hg = [1 + 2];say %hg #SET hg = [%hg + 1];say %hg
% when you declare it
with #SET, but needs one every time you reference its value afterward.Increases or decreases a variable by 1.
See also: #ADD, #SUB
Increases or decreases a variable by an arbitrary amount.
#TRIGGER {you find %xx dollars.}{#ADD gold %xx}
Assigns a random integer from 1 to maxvalue.
#TRIGGER {says: pick a number}{#RND nn 10;say %nn}
The general-purpose conditional. If the bracketed condition is true, the command runs;
either way, anything after it in the same command set still runs independently - so chain
#FIRE calls if you want "otherwise, do this instead" behavior:
#IF [%xx = fred] #FIRE helloFred; #IF [%xx = bert] #FIRE helloBert
Older, single-purpose equivalents (kept for old trigger files - use #IF for
new ones):
| Old form | Equivalent |
|---|---|
#IFEQ p1 p2 cmd | #IF [%p1 = %p2] cmd |
#IFNE p1 p2 cmd | #IF [%p1 <> %p2] cmd |
#IFLT p1 p2 cmd | #IF [%p1 < %p2] cmd |
#IFLE p1 p2 cmd | #IF [%p1 <= %p2] cmd |
#IFGT p1 p2 cmd | #IF [%p1 > %p2] cmd |
#IFGE p1 p2 cmd | #IF [%p1 >= %p2] cmd |
The Target Acquisition box on the main window auto-fills from configured "watch phrases" () - whoever's name appears right before one of those phrases becomes the target, and *h (or %target) resolves to it. Clicking a word in the output pane sets a second, independent value, *c - use it for "act on whatever I just clicked," separate from the auto-detected target.
Locks or releases the target box (same as the Lock Target checkbox). Locking stops new watch-phrase matches from stealing the target mid-fight.
#TRIGGER {*h hit you.}{#AUTOLOCK;jumpkick *h}
#TRIGGER {*h died.}{#AUTOFREE}
Sets and locks the target explicitly.
#TRIGGER {%yy hit you.}{#TARGET %yy;jumpkick %yy}
The colored button on the main window (and the 10-segment threat meter) reflects how much of your remaining HP the last hit took - crossing certain thresholds automatically raises Defcon and speeds up the client/MUD "heartbeat."
Forces a Defcon level directly. 1 is the most urgent (fastest heartbeat). Usually set automatically, but can be forced from a trigger.
Runs action only if the client is currently at that Defcon level.
#TRIGGER {%xx hit you.}{#IFDEFCON1 say This guy is mad!}
assigns command sets to F1-F24 and wires two of them up to automations:
Both default to F1 if you haven't chosen an override. A separate Idle Timer tab watches for keyboard inactivity: after N minutes with no keystrokes, it can send a command set and optionally reset itself afterward as if you'd typed something.
Arms or disarms HP monitoring. Turning it on doesn't fire anything immediately - it just
starts watching. Turn it off in safe zones, since a garbled HP reading from a dropped
connection (HP: 100% truncated to HP: 10) can trigger it by
mistake.
#TRIGGER {You arrive at your base}{#RESCUEOFF}
Starts or stops the periodic Action Timer.
#TRIGGER {You arrive at base}{#TIMERON}
#TRIGGER {You leave your base}{#TIMEROFF}
Marks you idle/away, or clears it - same as the Away checkbox. #AWAY/
#NOTAWAY are the older names.
Runs action only if you are (or aren't) currently marked idle.
#TRIGGER {%ss tells you: hi}{#IFIDLE tell %ss I'm away}
Mapping records a path as you move, then saves it as a pair of aliases (outbound +
computed reverse) so you don't have to keep retyping s;e;e;e;w;u. It can be
driven from the menu or directly from the command
line with the same underlying commands.
#MARK)#MARK again)Which raw commands count as "a direction," and what each one's reverse is, is configured under (a table of pairs like n↔s, e↔w).
Starts mapping if it's off, or stops it (prompting to save, if anything was recorded) if it's already on.
Shows the currently-unsaved path on the status bar. Empty means either mapping isn't active or nothing's been recorded yet.
Adds a direction to the path without actually sending it - useful for a step you know is hazardous and want to map without walking through it right now.
Plays the current path backwards to get you out quickly. Not all paths are guaranteed
reversible (MUD-side one-way doors, traps, etc.) - directions sent by #RETURN
aren't themselves re-recorded into the path.
Sets the log file name and turns logging on. *AUTO uses a daily file named
autolog-yyyy-mm-dd.txt.
Turns logging on/off - same as the Logging checkbox.
Loads a text file into memory. Individual lines become available as %line1, %line2, etc., plus %linernd for a random one.
Clears whatever #READ loaded from memory.
Prints a file's contents to your own screen only - nothing is sent anywhere.
Sends the file currently in memory (via #READ) to the MUD, line by line -
or, given a number, just that one line. (In the original 2006 client this command's real
behavior always matched what its own documentation called #LIST - the actual
#LIST case had already been retired in favor of the Aliases dropdown even
then. This rebuild keeps the behavior that was actually shipped.)
Appends a line of text (with variables resolved) to a file, creating it if needed.
#APPEND kill.log Killed %target at %time
Sends a file to the MUD raw, line by line, with triggers off for the duration and no
variable substitution at all - independent of #READ.
Writes a line to the status bar (not the MUD or the main output pane).
Sets the caption line under the Target Acquisition box - handy for a running commentary on your opponent's condition:
{is in good shape.}{#COLOR green,chartreuse;#CAPTION Good Shape}
{is in bad shape.}{#COLOR magenta,black;#CAPTION Bad Shape}
Sets the Target Acquisition box's colors (any standard HTML color name).
Sets the main output pane's colors. ANSI handling, if on, overrides this.
Turns ANSI color interpretation on/off - same as the ANSI checkbox. Turn it off if you
see stray codes like [1;32m around words.
Pops up a message box, even while minimized to the tray. Blocks further MUD activity until dismissed - use sparingly, it can cause you to idle out.
While minimized, pops up a small window with the recent screen text and an input box, so you can react without restoring the full client.
Drops the connection immediately - same as the Connect/Linkdead button. Useful as a last-resort "get me off the server right now."
Drops the connection and reconnects after a delay - handy for a MUD reboot you know takes roughly that long.
#TRIGGER {MudOS Driver Shutting Down!}{#BOUNCE 20}
Sends an email (or an SMS via a carrier's email-to-text gateway) using the SMTP settings under . No STARTTLS support - use a server that accepts plain or AUTH PLAIN authentication.
#TRIGGER {%xx says: hey geek}{#MAIL geekme@myaddress.com %xx says hi}
Runs an external program or script.
#TRIGGER {%xx says: hey geek}{#SHELL cscript geek.vbs %xx says hi}
Sets the window style external commands launched by #SHELL use.
Re-runs a recent command from your history, where 0 is the last command you
sent, 1 the one before that, and so on.
(or to jump straight to the relevant tab) is one tabbed dialog covering everything the original split across four separate windows:
| Tab | Covers |
|---|---|
| Connection | MUD host, port, window title, auto-connect on startup. |
| Startup Sequence | When to send it (never / on connect / after password prompt) and the command set itself. |
| Display | Font (native picker), foreground/background colors, ANSI handling, Reverse black/white. |
| Behavior | Flood protection, reconnect-on-socket-error, Zulu clock, heartbeat indicator, whether mouse-driven commands count toward history. |
| Window Behavior | Minimize to system tray, replay last 20 lines on restore, auto-"look" on restore. |
| Files | Max connection retries, trigger file path, log file path. |
| Health Bars | HP/MP/CR labels, max values, and per-bar color inversion. |
| Targeting | The *h substitution character, mouse-click action, up to 5 watch phrases, pronoun exclusion. |
| Notes | Free-form notes about this MUD profile. |
The 2026 rebuild is checked against the real, shipped 2006 client's actual behavior - not always the same thing the old documentation claimed. Where they disagreed, the code (not the prose) was treated as the spec of record. Here's the honest diff:
#FIRE - documented in 2006 but never actually wired up even then; implemented for real in this rebuild.#MAIL - documented and used by real trigger files, but also missing from the 2006 client's actual command table; implemented for real here.These appeared in the old PDF but had no corresponding code even in the original 2006 client - they're not available here either:
#QUIT, #RESTART, #MAXIMIZE, #MINIMIZE, #RESET, #PIC, #LIST
%rnddir, %cmdline, %linenext
| Command | One-line summary |
|---|---|
#ADD name value | Add value to a variable |
#ALIAS name cmds | Create a shortcut, run with /name |
#ANSION / #ANSIOFF | Toggle ANSI color handling |
#APPEND file text | Append a line to a file |
#AUTOLOCK / #AUTOFREE | Lock / release the target |
#BOUNCE [seconds] | Drop and reconnect |
#CAPTION text | Set the target box caption |
#COLOR back,fore | Set target box colors |
#DEC name | Decrease a variable by 1 |
#DEFCON1/2/3 | Force a Defcon level |
#DOHIST n | Re-run a recent command |
#ECHO text | Write to the status bar |
#FIRE text | Run trigger-check against text as if received |
#FLUSH | Clear a #READ'd file from memory |
#IDLEON/#AWAY, #IDLEOFF/#NOTAWAY | Mark yourself idle / not idle |
#IF [cond] cmd | Conditional execution |
#IFDEFCON1/2/3 cmd | Run cmd at a given Defcon level |
#IFIDLE/#IFNOTIDLE cmd | Run cmd based on idle state |
#INC name | Increase a variable by 1 |
#INPUT | Mini input window while minimized |
#LINKDEAD | Drop the connection |
#LOG/#LOGENABLE, #LOGDISABLE/#LOGDISABLED | Toggle logging |
#LOGFILE name | Set the log file name |
#MAIL addr text | Send email/SMS |
#MAP direction | Add a step to the mapping path without moving |
#MARK | Start/stop mapping |
#NOTIFY text | Popup message box |
#PATH | Show the current mapping path |
#PLAY file | Send a file raw, line by line |
#READ file | Load a file into memory |
#REFRESH | Reload triggers/aliases/switches from disk |
#RESCUEON/#RESCUEOFF | Arm/disarm HP rescue |
#RETURN | Play the current path backwards |
#RND name max | Random value into a variable |
#SCREEN back,fore | Set output pane colors |
#SET/#VAR name = value | Assign a custom variable |
#SHELL cmd | Run an external command |
#SHELLSTYLE 1-5 | Window style for #SHELL |
#SUB name value | Subtract value from a variable |
#TARGET name | Set and lock the target |
#TIMERON/#TIMEROFF | Toggle the Action Timer |
#TRIGGER {p}{a} | Create a trigger |
#TRIGOFF, #TRIG/#TRIGON | Disable / re-enable trigger processing |
#TYPE file | Print a file to your own screen |
#WRITE [n] | Send the in-memory file to the MUD, line by line |