VWMUD Master 2026 - User Documentation

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.

Table of Contents

Getting Started & the Main Window

Opening a MUD and connecting

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.

The main window, top to bottom

AreaWhat it shows / does
HP / MP / CR barsColor-coded health bars, parsed live from the MUD's own status text using the labels/max values you set in Settings > Health Bars.
Target AcquisitionThe 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 meterLocal or Zulu (GMT) time depending on Settings > Behavior, and a 10-segment threat bar - see Defense Condition.
Output paneThe 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 padN, S, E, W, NE, NW, SE, SW, Up, Down, Out - eleven buttons, no Look button (Look lives in Common Actions). Configurable in Mapping > Set Direction Keys...
Common ActionsLook, Inventory, Score, Connect/Linkdead, "look at <target>" (caption updates live with your current target), Kill. The commands these send are configurable in Triggers & Functions > Common Actions...
Quick Access sidebarRun 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 barTemporarily scales the output pane's font for readability - doesn't touch your configured base font size.
Status barA heart icon that pulses with traffic, the clock, and the connection state.
Minimizing: if Settings > Window Behavior > Minimize to system tray is checked, minimizing the window (via the minimize button or taskbar) sends it to the tray instead - double-click the tray icon to restore. Closing the window with the X always exits the program (with a confirmation prompt), regardless of that setting.

back to top

File

ItemDoes
Open Mud File...Loads a different .mud profile.
Connect... / DisconnectOpens or drops the connection to the configured host.
ExitCloses the program (confirms first).

Automation

ItemDoes
Send Startup Sequence NowFires 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.

Triggers & Functions

ItemDoes
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 AllRe-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 DebuggingWhile 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.

Mapping

ItemDoes
Start Mapping / Stop MappingToggles 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 DirectionDrops 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.

Help

ItemDoes
About VWMUD Master 2026...Version/build info.

back to top

Triggers

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.:

Substitution values are lower-cased when sent back (some MUDs don't recognize their own capitalization echoed back at them).

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 Settings > Files), read top to bottom, and can be edited with a text editor, on the command line with #TRIGGER, or through Triggers & Functions > Triggers.

#TRIGGER {pattern}{action}

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}

#TRIGOFF

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}

#TRIG / #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

#FIRE trigger-text

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.

#REFRESH

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 Triggers & Functions > Refresh All.

back to top

Aliases

An alias is a shortcut for a longer command set, invoked with /name.

#ALIAS name command1;command2;command3

#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 Triggers & Functions > Aliases.

Arguments

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 .

back to top

Variables & Math

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 Triggers & Functions > Custom Variables or with the commands below).

System variables

VariableValue
%timeCurrent GMT (Zulu) time
%ltimeCurrent local time
%dateCurrent GMT date
%lcCurrent iteration count of a running *num repeat loop
%llIterations remaining in a running *num repeat loop
%targetThe current target (same value as *h)
%hp / %mp / %cr (or whatever labels you've configured)Current Hit Points / Mana / Carry values
%f1 - %f24The command set currently assigned to that function key
%trashNot a readable value - a trigger-pattern token meaning "match and discard the rest of the line" (see Triggers)
%lineWhatever the most recent %trash in a firing trigger swallowed
%linex (e.g. %line3)Line x of the file currently loaded with #READ
%linerndA random line from the file loaded with #READ
%vwmudClient version string

View these live (with current values) under Triggers & Functions > System Variables.

#SET / #VAR name = value

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
The variable's own name has no % when you declare it with #SET, but needs one every time you reference its value afterward.

#INC name / #DEC name

Increases or decreases a variable by 1.

See also: #ADD, #SUB

#ADD name value / #SUB name value

Increases or decreases a variable by an arbitrary amount.

#TRIGGER {you find %xx dollars.}{#ADD gold %xx}

#RND name maxvalue

Assigns a random integer from 1 to maxvalue.

#TRIGGER {says: pick a number}{#RND nn 10;say %nn}

back to top

Conditional Commands

#IF [condition] command

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 formEquivalent
#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

back to top

Targeting

The Target Acquisition box on the main window auto-fills from configured "watch phrases" (Automation > Targetting Settings) - 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.

#AUTOLOCK / #AUTOFREE

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}

#TARGET name (or #TARGET *h)

Sets and locks the target explicitly.

#TRIGGER {%yy hit you.}{#TARGET %yy;jumpkick %yy}

back to top

Defense Condition

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."

#DEFCON1 / #DEFCON2 / #DEFCON3

Forces a Defcon level directly. 1 is the most urgent (fastest heartbeat). Usually set automatically, but can be forced from a trigger.

#IFDEFCON1 / #IFDEFCON2 / #IFDEFCON3 action

Runs action only if the client is currently at that Defcon level.

#TRIGGER {%xx hit you.}{#IFDEFCON1 say This guy is mad!}

back to top

Timers, Rescue & Idle

Triggers & Functions > Timers & Function Keys 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.

#RESCUEON / #RESCUEOFF

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}

#TIMERON / #TIMEROFF

Starts or stops the periodic Action Timer.

#TRIGGER {You arrive at base}{#TIMERON}
#TRIGGER {You leave your base}{#TIMEROFF}

#IDLEON (#AWAY) / #IDLEOFF (#NOTAWAY)

Marks you idle/away, or clears it - same as the Away checkbox. #AWAY/ #NOTAWAY are the older names.

#IFIDLE action / #IFNOTIDLE action

Runs action only if you are (or aren't) currently marked idle.

#TRIGGER {%ss tells you: hi}{#IFIDLE tell %ss I'm away}

back to top

Mapping

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 Mapping menu or directly from the command line with the same underlying commands.

  1. Start recording (Mapping > Start Mapping or #MARK)
  2. Move around - every recognized direction you send gets appended automatically
  3. Stop and save (Mapping > Stop Mapping, or #MARK again)

Which raw commands count as "a direction," and what each one's reverse is, is configured under Mapping > Configure Mapping (a table of pairs like n↔s, e↔w).

#MARK

Starts mapping if it's off, or stops it (prompting to save, if anything was recorded) if it's already on.

#PATH

Shows the currently-unsaved path on the status bar. Empty means either mapping isn't active or nothing's been recorded yet.

#MAP direction

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.

#RETURN

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.

back to top

File Handling

#LOGFILE filename (or *AUTO)

Sets the log file name and turns logging on. *AUTO uses a daily file named autolog-yyyy-mm-dd.txt.

#LOG / #LOGENABLE - #LOGDISABLE / #LOGDISABLED

Turns logging on/off - same as the Logging checkbox.

#READ filename

Loads a text file into memory. Individual lines become available as %line1, %line2, etc., plus %linernd for a random one.

#FLUSH

Clears whatever #READ loaded from memory.

#TYPE filename

Prints a file's contents to your own screen only - nothing is sent anywhere.

#WRITE (optional line number)

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.)

#APPEND filename text

Appends a line of text (with variables resolved) to a file, creating it if needed.

#APPEND kill.log Killed %target at %time

#PLAY filename

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.

back to top

Screen, Notify & Connection

#ECHO text

Writes a line to the status bar (not the MUD or the main output pane).

#CAPTION text

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}

#COLOR backcolor,forecolor

Sets the Target Acquisition box's colors (any standard HTML color name).

#SCREEN backcolor,forecolor

Sets the main output pane's colors. ANSI handling, if on, overrides this.

#ANSION / #ANSIOFF

Turns ANSI color interpretation on/off - same as the ANSI checkbox. Turn it off if you see stray codes like [1;32m around words.

#NOTIFY message

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.

#INPUT

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.

#LINKDEAD

Drops the connection immediately - same as the Connect/Linkdead button. Useful as a last-resort "get me off the server right now."

#BOUNCE (optional seconds, default 5)

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}

back to top

Automation Extras

#MAIL address message

Sends an email (or an SMS via a carrier's email-to-text gateway) using the SMTP settings under Settings. 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}

#SHELL command line

Runs an external program or script.

#TRIGGER {%xx says: hey geek}{#SHELL cscript geek.vbs %xx says hi}

#SHELLSTYLE 1-5

Sets the window style external commands launched by #SHELL use.

#DOHIST index

Re-runs a recent command from your history, where 0 is the last command you sent, 1 the one before that, and so on.

back to top

The Settings Dialog

Triggers & Functions > Settings (or Automation > Targetting/Health Value Settings to jump straight to the relevant tab) is one tabbed dialog covering everything the original split across four separate windows:

TabCovers
ConnectionMUD host, port, window title, auto-connect on startup.
Startup SequenceWhen to send it (never / on connect / after password prompt) and the command set itself.
DisplayFont (native picker), foreground/background colors, ANSI handling, Reverse black/white.
BehaviorFlood protection, reconnect-on-socket-error, Zulu clock, heartbeat indicator, whether mouse-driven commands count toward history.
Window BehaviorMinimize to system tray, replay last 20 lines on restore, auto-"look" on restore.
FilesMax connection retries, trigger file path, log file path.
Health BarsHP/MP/CR labels, max values, and per-bar color inversion.
TargetingThe *h substitution character, mouse-click action, up to 5 watch phrases, pronoun exclusion.
NotesFree-form notes about this MUD profile.

back to top

What's Changed Since 2006

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:

Genuinely new

Documented in 2006 but never actually implemented, in either version

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

Renamed / reorganized, not removed

back to top

Quick Command Reference

CommandOne-line summary
#ADD name valueAdd value to a variable
#ALIAS name cmdsCreate a shortcut, run with /name
#ANSION / #ANSIOFFToggle ANSI color handling
#APPEND file textAppend a line to a file
#AUTOLOCK / #AUTOFREELock / release the target
#BOUNCE [seconds]Drop and reconnect
#CAPTION textSet the target box caption
#COLOR back,foreSet target box colors
#DEC nameDecrease a variable by 1
#DEFCON1/2/3Force a Defcon level
#DOHIST nRe-run a recent command
#ECHO textWrite to the status bar
#FIRE textRun trigger-check against text as if received
#FLUSHClear a #READ'd file from memory
#IDLEON/#AWAY, #IDLEOFF/#NOTAWAYMark yourself idle / not idle
#IF [cond] cmdConditional execution
#IFDEFCON1/2/3 cmdRun cmd at a given Defcon level
#IFIDLE/#IFNOTIDLE cmdRun cmd based on idle state
#INC nameIncrease a variable by 1
#INPUTMini input window while minimized
#LINKDEADDrop the connection
#LOG/#LOGENABLE, #LOGDISABLE/#LOGDISABLEDToggle logging
#LOGFILE nameSet the log file name
#MAIL addr textSend email/SMS
#MAP directionAdd a step to the mapping path without moving
#MARKStart/stop mapping
#NOTIFY textPopup message box
#PATHShow the current mapping path
#PLAY fileSend a file raw, line by line
#READ fileLoad a file into memory
#REFRESHReload triggers/aliases/switches from disk
#RESCUEON/#RESCUEOFFArm/disarm HP rescue
#RETURNPlay the current path backwards
#RND name maxRandom value into a variable
#SCREEN back,foreSet output pane colors
#SET/#VAR name = valueAssign a custom variable
#SHELL cmdRun an external command
#SHELLSTYLE 1-5Window style for #SHELL
#SUB name valueSubtract value from a variable
#TARGET nameSet and lock the target
#TIMERON/#TIMEROFFToggle the Action Timer
#TRIGGER {p}{a}Create a trigger
#TRIGOFF, #TRIG/#TRIGONDisable / re-enable trigger processing
#TYPE filePrint a file to your own screen
#WRITE [n]Send the in-memory file to the MUD, line by line

back to top