Skip to content

Players

A name with no saved file enters at once as a newbie. A newbie can use the commands that were already in the game, except shout, !, and prompt. lsu, term_width, time, main, and remote are for every rank, including a newbie. A newbie cannot use prompt, resident, nuke, disconnect, su, se, st, lsn, connections, promote, demote, or shutdown.

A saved name asks for a password. A wrong password is answered with Wrong password. and asked again. The third wrong password disconnects. password is for every rank. A newbie is told they have no saved password. A saved player is asked for the current password, then the new one, twice. A saved name must be typed in the spelling it was saved with. Any other case is told how the name is saved and asked for again.

A saved player who logs in while that name is already in a room takes over that session. The old connection is told it has been reconnected from elsewhere. The room hears [Bea has reconnected], not a disconnect and a connect. A super user or the admin in that room sees the address on that line.

Rank What they can do
Newbie Not saved. Commands in the game, except shout and !. Not prompt or any super-user command.
Resident Saved, with a password. May shout, prompt, and lsu.
Super User Also resident, nuke, disconnect, su, se, st, lsn, and connections.
Admin Also shutdown, promote, and demote, and cannot be removed.

The players/ directory is one file per person, named by the lowercase name, such as players/bea.yml. Each file holds the saved spelling of the name, the rank, a bcrypt password hash, the total seconds they have been connected, the prompt they chose with prompt when it is not the usual one, and, once they have left, the UTC time they logged out. A normal quit writes the logout time and the total. The file is also written every five minutes while they are here. The password is never stored as typed.

The first time the admin name is typed, it has to come from localhost, and no other name can log in until that password is saved. The server asks for a password twice, saves the admin, and lets them in. After that, the admin can connect from any address. A super user or the admin runs resident <name> on a connected newbie, who is then asked for a password twice and is saved as a resident. nuke <name> <reason> deletes a saved player and disconnects them if they are here. Only the admin runs promote <name>, to make a resident a super user, and demote <name>, to make a super user a resident again.

examine <name> is open to everyone. Someone in a room is shown with their name, location, this login, total login, and idle. Examining yourself also adds the terminal size. me is the player who typed it. A connected newbie is found only by the exact spelling. A saved name shows that same block when they are here. When they are logged out it shows rank, the logged-out time as a calendar phrase such as Monday 12th October 2026, 13:45:03 UTC, how long ago that was, and their total login. Logged out: unknown has no Ago line when the file has no logout time. A name with nobody here and no file is not found. x Bea is examine, and xBea is not.

Super users and the admin share a channel. su <message> speaks on it, se <message> emotes, and st <message> thinks, each shown as < SU > Ada says 'hello'. The sender sees You in place of their name. Residents and newbies hear nothing, and for them these commands do not exist. resident, nuke, disconnect, promote, and demote each add a line to that channel. staff runs lsu, which lists the connected super users and the admin in a frame with their rank, room, and idle. Every rank can run it. lsn lists the connected newbies in a frame with the hostname, the room, and idle. A super user or the admin in the room sees the address on connect, disconnect, reconnect, and examine. On examine, that line is Logged in from when the player is here and Last from when they are logged out.