GM Guide¶
The operator's manual for Game Masters: how GM powers are granted, all GM commands, and how to read and set player progression and combat values.
For how the underlying systems work from a player perspective, see the rest of this wiki. This page covers the admin side.
Becoming a GM¶
GM powers are gated by an allowlist of character names (Game:GmNames). The flag is re-derived from this list at login — it cannot be set in-game, cannot be persisted from a previous session, and cannot be toggled. Change the allowlist, then disconnect and reconnect.
A non-GM receives I don't recognize that command. for every GM verb — identical to a typo, by design.
| Launch method | How to set GmNames |
|---|---|
| Visual Studio | launchSettings.json → Game__GmNames__0 |
run-local.ps1 |
-Gm YourName parameter |
| appsettings / env | Game:GmNames array, or PHOENIX_GM_NAMES (comma-separated) |
Confirm with /showplayer self (GM-only) or check HELP — the GM help category only appears when gm == 1.
GM command reference¶
All GM verbs start with /, are case-insensitive, and are gated by GM status. Most act on your current room or yourself unless a player name is specified.
Player management¶
| Command | Aliases | Description |
|---|---|---|
/showplayer <self\|player> |
/inspect |
Full player sheet: level, exp, TP, stats, HP, mana, silver, skills |
/set <self\|player> <field> <value> |
/setplayer |
Set a player field — see §Set fields below |
/award <self\|player> <exp> |
/grantexp, /giveexp |
Grant experience (negative removes); runs normal level-up + TP grant |
/levelup <self\|player> [n] |
/advance |
Advance n levels (default 1; negative de-levels) |
/heal <self\|player> |
/restore, /revive, /raise |
Fully restore HP + mana, clear all effects/roundtime, raise if dead |
/reroll <self\|player> |
/remake |
Preview a character re-roll (destructive — see below) |
/reroll <self\|player> confirm |
— | Execute the re-roll (wipes items + silver, resets to level 1) |
Player moderation¶
Discipline live players. See §Moderation below for the details.
| Command | Aliases | Description |
|---|---|---|
/smite <self\|player> [kill] [reason] |
/wrath |
Call down a thunderbolt on any online player from anywhere: bare, it leaves them at 1 HP and prone; kill slays outright through the normal death path |
/timeout <player> [minutes] [reason] |
/jail |
Confine a disruptive player to the timeout room (a Warded Cell, room 9000, pre-built and pre-wired) — only quiet verbs work until it lifts (default Game:TimeoutDefaultMinutes). Survives a relog. Repoint with /config timeoutroom <vnum> |
/free <player> |
/untimeout, /unjail, /pardon |
End a time-out early and return the player where they were pulled from |
/ban <player> [perm\|Nd\|Nh\|Nm] [reason] |
— | Ban an account (default permanent); persisted + enforced at login; an online target is disconnected at once. Refuses you and bootstrap-GM accounts |
/unban <player> |
— | Lift any ban on an account |
/banlist |
/bans |
List every account still under a ban (lift time or "permanent", plus reason) |
/kick <player> [reason] |
/disconnect, /boot |
Drop an online player's connection — no ban, they can reconnect |
World/room manipulation¶
| Command | Aliases | Description |
|---|---|---|
/goto <room vnum> |
/teleport |
Teleport yourself to a room (e.g. /goto 1007) |
/spawnmob <nameKey> [qty] |
/spawncreature, /spawnenemy |
Spawn 1–10 mobs from template into your room |
/spawnitem <nameKey> [qty] |
/spawnobj, /spawn |
Spawn 1–10 items onto the ground here |
/spawnbox [tier] |
/makebox |
Spawn a random treasure box (tier 1–10, default 3) |
/spawnpick [material] |
/makepick |
Spawn a lockpick (copper…starsteel, default steel) |
/spawnarmor <slot> [group] |
/makearmor |
Spawn wearable armor (slot = head/chest/legs/…; group = cloth…plate) |
/deleteobj <name\|id> |
/delitem, /delobj |
Delete an object and its contents |
/track <item\|guid> |
/whereis |
Locate an item: current location, owner, drop history |
/dragon |
/flyover |
Demand a dragon flyover: a three-beat staged sky event starting within ~20s, seen from outdoor rooms (indoor rooms catch a shadow or sound at most). Natural flights run every 45–100 min of real time — Game:Environment:Dragon |
/ferry [go] |
/ferries, /boat |
List every timed NPC boat (where she is, seconds to the next leg); /ferry go ends every boat's current leg on the next tick (~10s) so a full crossing demos in under a minute. Ferries are room data (ferry.* vars); kill switch Game:Ferry:Enabled=false |
/event [kind\|stop] |
/events, /sky |
Status of the sky, or force a world event for a demo: storm, heatwave, coldsnap, meteor, comet, aurora (begins within ~20s, eligibility skipped so it plays under any sky); /event stop ends the active one. Natural events roll on their own — tune live with /config events (on/off) and /config eventgap (mean minutes). Cold snaps slicken ice, meteor showers drop forageable sky-iron, the aurora quickens outdoor recovery |
NPC configuration¶
| Command | Aliases | Description |
|---|---|---|
/makecaster <mob> <words> |
/spellmob |
Flag a room mob as a caster with specific incantation |
/makevendor <npc> |
/makeshop |
Flag an NPC as a general merchant |
/makegemshop <npc> |
/makegemseller |
Flag an NPC as a gemshop (premium gem pricing) |
/makementor <npc> <WORD> |
/maketeacher |
Flag an NPC as an element word mentor |
/makecleric <npc> |
/makepriest |
Flag an NPC as a temple cleric: dead bodies in their room stop decaying and get the paid CONFIRM raise offer (fee = 100 + 30×level silver) |
Diagnostics¶
| Command | Aliases | Description |
|---|---|---|
/debug <guid\|phrase> |
— | Dump entity identity, flags, all vars, container slots, scripts (your room only) |
/boxes |
/listboxes |
Audit all treasure boxes in the world |
/afflict <self\|target> <effect> [args] |
— | Apply timed effects for testing (see §Afflict below) |
/killself |
/die |
Run the real death/respawn path on yourself (death-rest + DEPART, the grave-chill, region respawn at half HP) |
/regions |
/region |
List the realm's regions (anchor, resting place, room count, seams) and which one you stand in |
/set — setting player fields¶
/set uses the real progression helpers so derived values stay consistent. Target is self/me or an online player's name.
/set self level 10
/set self str 90
/set self skill.edged 40
/set self skill.lore.fire 25
/set self profession Wizard
/set self mana.cur 999
/set Nitefallz silver 5000
Field reference¶
| Field | Value | Notes |
|---|---|---|
level |
1–100 | Sets exp to that level's threshold; grants all TP up to that level |
exp |
≥ 0 | Sets experience; re-derives level + TP |
ptp (tp.physical) |
≥ 0 | Unspent physical training points |
mtp (tp.mental) |
≥ 0 | Unspent mental training points |
silver |
≥ 0 | Currency |
str con dex agi dis aur log int wis inf |
1–100 | A core stat (value, not bonus). Recomputes mana. Does not retroactively change HP or already-granted TP. |
hp.max |
≥ 1 | Max HP. The fitness cap is 150; /set allows higher for testing. |
hp.cur (hp) |
1..max | Current HP. Won't drop below 1 — use /killself for death. |
mana.cur (mana) |
0..max | Current mana. Raise max first if needed. |
skill.<name> |
≥ 0 | Skill ranks (e.g. skill.edged, skill.lore.fire, skill.harnesspower). skill.harnesspower recomputes mana. |
profession |
profession name | Recomputes mana; does not refund spent TP or re-apply race mods. |
stance |
offensive…defensive | Combat stance |
posture |
standing/kneeling/sitting/prone | Body position |
Delta notation¶
Any numeric field accepts +N or -N to add or subtract instead of setting:
/set bob exp +5000 grant 5000 exp (level-up and TP grant run as normal)
/set self str +5 raise Strength by 5
/set self skill.edged +3 add 3 ranks
/set bob silver -100 confiscate 100 silver
Important constraints¶
- HP from CON is creation-time only. Changing CON later will not change HP — use
hp.maxdirectly. - Max mana is derived. Setting
mana.curonly tops up the current pool; to give more capacity, raise level,skill.harnesspower, profession, or the prime stat. - Level is derived from exp. A hand-set
levelvar is overwritten on the next exp gain. Setexpto the level's threshold instead.
/afflict — applying test effects¶
/afflict applies temporary effects without touching base stats. Target is self/me or a living mob in your room (you cannot afflict another player).
/afflict self stun 2 stun yourself for 2 rounds (10 seconds)
/afflict self bleed 5 5 HP per pulse bleed on chest
/afflict self buff as 30 60 +30 AS for 60 seconds
/afflict kobold debuff ds 20 30 −20 DS on the kobold for 30 seconds
/afflict self clear remove all effects on yourself
Syntax:
| Sub-command | Args | Effect |
|---|---|---|
stun <rounds> |
rounds × 5s | Stun effect |
bleed <hp/pulse> |
HP drained per 6s tick | Wound at "chest" |
buff <stat> <magnitude> <seconds> |
stat = as ds str con dex agi dis aur log int wis inf |
Positive timed modifier |
debuff <stat> <magnitude> <seconds> |
Same (magnitude forced negative) | Negative timed modifier |
clear |
— | Remove all effects on target |
Moderation — smite, time-out, ban, kick¶
Tools for disciplining live players. Unlike /afflict and /heal (which touch only creatures in your room), these reach any online player by name from anywhere. All refuse to act on a fellow GM, and /ban//kick//timeout refuse to act on you.
/smite <self|player> [kill] [reason]¶
Calls down a pillar of divine fire. Bare, it takes the target to 1 HP and leaves them prone (a scare, not a death). Add kill (or slay/dead) to slay them outright through the normal death path — the grave-chill, chapel respawn, and all. A trailing reason is whispered to them.
/smite Griefer thunderbolt — 1 HP, prone
/smite Griefer kill last warning slay outright, whisper the reason
/timeout <player> [minutes] [reason] — the in-game time-out¶
Whisks a disruptive player to the timeout room and confines them there. While the sentence runs they can only look, say, check their sheets, and wait — moving, fighting, casting, and everything else is refused. The sentence is stored on the character, so relogging doesn't dodge it, and it self-expires: the moment it's up they're freed in place and can walk out.
- Default length is
Game:TimeoutDefaultMinutes(5)./free <player>(aliases/untimeout,/pardon) ends it early and returns them where they were pulled from. - The cell is already built and wired: A Warded Cell (room 9000), a still pocket apart from the world with a single warded door north back to the Town Square (1007), flagged Safe + NoMagic.
Game:TimeoutRoomdefaults to it — no setup needed. Repoint it at any other room with/config timeoutroom <vnum>if you'd rather.
/timeout Griefer 10 spamming say ten-minute time-out
/free Griefer release early
/config timeoutroom 1099 (optional) use a different cell
/ban, /unban, /banlist — account bans¶
/ban <player> [duration] [reason] closes the realm to an account. It's persisted (players.banned_until) and enforced at login, so it outlives a restart; an online target is disconnected immediately. Duration is perm (the default when omitted), or Nd / Nh / Nm (days/hours/minutes); a bare number is days. /ban refuses you and any Game:GmNames bootstrap-GM account.
/ban Cheater perm botting permanent
/ban Griefer 7d spamming seven days
/unban Griefer lift it
/banlist who's banned, and why
Temp bans self-clear on the first login attempt after they expire.
/kick <player> [reason] — drop a connection¶
/kick <player> disconnects an online player without a ban — they can reconnect at once. Use it to break up a scene or bounce a stuck session; reach for /ban when they shouldn't come back.
/reroll — resetting a character¶
/reroll <player> re-rolls an existing online character: resets them to level 1, wipes all items and silver (a carried pet is spared), and routes them through character creation again. The name is kept.
Two-step: /reroll <player> previews what would be lost. /reroll <player> confirm performs it.
The character stays in the world during re-roll. A disconnect mid-creation rolls back cleanly.
GM recipes¶
Make a level-10 melee fighter ready to swing:
/set self level 10
/set self str 90
/set self skill.edged 40
/set self skill.dodge 20
/set self hp.max 200
/spawnitem broadsword
GET broadsword.
Make a test caster with sufficient casting competence:
/set self profession Wizard
/set self level 10
/set self aur 90
/set self skill.harnesspower 25
/set self skill.lore.fire 25
/showplayer self (confirm mana max > 0)
INCANT BOLTAR IGNAGA kobold
Test the lockpicking loop:
/spawnbox 6 tier-6 box (likely locked, likely trapped)
/spawnpick starsteel
/set self skill.lockpicking 30
/set self skill.disarmtraps 30
DISARM box
PICK box
OPEN box
LOOT box
/boxes audit all live boxes
Spawn a caster mob:
/spawnmob kobold
/makecaster kobold BOLTAR IGNARA
KILL kobold
Server console keys¶
When the GameServer runs with a console, single keypresses control the live world:
| Key | Action |
|---|---|
S |
World entity stats |
N |
NPC vitals (room, drives, behavior) |
R |
Reload scripts |
W |
Dump world snapshot to JSON |
P |
Toggle world clock auto-pulse |
M |
Fire one manual clock pulse |
Q |
Graceful shutdown |
H / ? |
Console help |
P then M steps the clock one tick at a time — useful for testing time-of-day events.
Notes and limitations¶
- No PvP. Combat cannot target players; only hostile mobs are valid.
/afflictcannot target another player (only self or a room mob).gmflag is always re-derived at login — it cannot be set with/setand will not persist.- Profession changes via
/setrecompute mana but do not re-apply race stat mods or refund TP. - AS/DS use stat bonuses, not raw values. The combat snapshot converts each raw stat to
floor((raw − 50) / 2)before feeding AS/DS, sostat.str = 86contributes its +18 bonus, not 86. An absent stat reads as a neutral 50 (bonus 0). (Mob offense inputs — STR and weapon ranks — are additionally floored to6 + level.) - GM commands bypass the stun lockout. You can always
/heal,/goto, or/setyour way out of an uncontrolled test state.