Marker signs
Everything here is done by placing a sign in the build and re-saving the tile. No config, no restart, no plugin release.
The short version
Section titled “The short version”Put a sign in the room. The first line is the keyword and the rest say what goes there:
[mob] [loot] [npc] [info]grunt rare exit stats50% 30%Then re-select the tile and run:
/maze savetile v1 <tilename>savetile re-reads the set as it writes, so the next dungeon has it. There is no
separate reload step.
The sign itself never appears in the dungeon. It is read out of the schematic and replaced with air, and whatever it asked for is placed at exactly that block. The sign is not a label next to the thing; it stands where the thing will stand.
Line one: which kind
Section titled “Line one: which kind”| Keyword | Means |
|---|---|
[mob] |
something to fight stands here |
[loot] |
a chest goes here |
[npc] |
somebody to talk to stands here |
[info] |
a board to read hangs here |
Anything else on line one is an ordinary sign, left in the build. Case does not matter.
The other three lines
Section titled “The other three lines”After line one the sign is read as tokens rather than positions. Each token is identified by its shape, so you can write the lines in whichever order looks best and leave any of them blank:
| Token looks like | Read as |
|---|---|
50% or 0.5 |
chance this appears at all |
x3 or 3 |
how many |
| anything else | the role, first one wins |
grunt x3 50% on one line and grunt / 50% / x3 on three lines are the same
sign. Chance defaults to 1 and count to 1.
A sign with a keyword but no role is ignored. [mob] on its own is not an error,
it is just not a marker.
What chance is for
Section titled “What chance is for”A tile gets placed many times in one dungeon. A day’s maze is 141 to 234 rooms
built from about thirty tiles, so a corridor tile appears dozens of times. At
100% a marker in a corridor means a monster in every one of them; at 25% you
are not tired of it by room forty. Chance is rolled per placement, so the same
tile is populated differently everywhere it appears.
Rooms that exist once, like the boss room, want 100%, which is the default.
[mob] roles
Section titled “[mob] roles”Line two is a role rather than a monster. The role is resolved against the day’s
element, which is what lets one corridor tile work in all five dungeons: place
grunt and you get an ice grunt on an ice day and a fire grunt on a fire day.
| Role | What it becomes |
|---|---|
grunt |
the day’s trash: four per element plus six that work anywhere |
elite |
one of five mini-bosses, rare on purpose |
boss |
steers the boss’s position in a boss_ room, see below |
| an exact MythicMob id | that mob, ignoring the theme |
The last row is the escape hatch. [mob] / grunt_ice_shiverling puts a
shiverling there every day of the year. Use it for a room built around one
specific monster and use roles for everything else.
The boss marker is different
Section titled “The boss marker is different”A [mob] boss sign in a boss_ room does not summon the boss. It says where the
boss will stand when somebody pulls the lever. Spawning it earlier would leave it
standing at full health from the moment the maze exists, and the lever would mean
nothing.
A boss room with no boss marker gets one placed automatically, by searching down
from mid-height for solid floor near the centre. That works but it does not know
where you wanted the fight.
boss in a room whose name does not start with boss_ does nothing useful.
[loot] tiers
Section titled “[loot] tiers”Line two is a tier from dungeon/config.yml. Five ship today:
| Tier | Stars | Draws | Also pulls from |
|---|---|---|---|
common |
✦✧✧✧✧ | 2 | nothing |
uncommon |
✦✦✧✧✧ | 2 | the day’s trinkets |
rare |
✦✦✦✧✧ | 3 | the day’s gear |
epic |
✦✦✦✦✧ | 3 | the day’s gear |
boss |
✦✦✦✦✦ | 4 | the day’s gear |
Adding a tier is an edit to loot.tiers in config.yml plus /dungeon reload, so
a builder can use a new tier the same day.
The tier on the sign is a floor
Section titled “The tier on the sign is a floor”A tier can name others it sometimes upgrades into, so the sign asks for a floor
rather than an exact chest. As shipped, a common chest is common 80% of the
time, uncommon 15% and rare 5%; uncommon reaches epic; rare reaches epic
one time in five. epic and boss never move, so five stars stay boss-only.
Two things follow from how this works:
It is one hop. A common that rolls rare is a rare chest and is not then rolled
against rare’s own upgrades, because compounding would make the real distribution
stop resembling the written one.
It is rolled once per chest rather than per player, since the stars over the lid are a single shared entity. What stays per-player is which items come out.
A consequence worth knowing before you place a lot of common: the cheapest chest
in the dungeon can now reach the gear pool, which it could not before.
The chest holds something different for every player, rolled on first open. The real chest never opens: clicking it is cancelled and you get your own inventory. Two people standing at one chest is fine, so there is no reason to place eight chests where the room wants one.
A misspelled tier is not silently ignored. That chest is skipped and the server log says which name it did not recognise.
[npc] roles
Section titled “[npc] roles”Line two is a role from the npcs: block in dungeon/config.yml. One ships:
| Role | Who |
|---|---|
exit |
click twice to end your run |
A role says what they look like (any entity type, and PLAYER takes a skin), what
they say, how many clicks they need, and what commands run. Commands run as the
clicker unless prefixed console:, which runs them as the server for anything a
player should not have permission to do. %player% and %run% are filled in.
npcs: shop: name: "<aqua>Quartermaster</aqua>" type: PLAYER skin: Notch says: ["<gray>Trading, are we?</gray>"] clicks: 1 commands: ["console: give %player% emerald 1"]Names are MiniMessage and are parsed for both the nameplate and the chat prefix.
Adding a role is a config edit plus /dungeon reload, the same as a loot tier.
These NPCs are not saved in Citizens’ saves.yml and cannot be made with
/npc create. A dungeon world is built at the start of a run and deleted at the
end, so a saved NPC would point at a world that no longer exists, once per night
forever. They are spawned into an in-memory registry instead.
If Citizens is uninstalled, [npc] signs do nothing and the rest of the dungeon
is unaffected.
[info] boards
Section titled “[info] boards”Line two says which board. Two exist:
| Role | Shows | Seen by |
|---|---|---|
dungeon |
today’s element, its boss, room count, date | everyone |
stats |
your shards, runs, clears, deaths | only you |
These signs go on the floor and the board is lifted above them, set by
info.lift in dungeon/config.yml. Put the sign where you want to stand to read
the board rather than where you want the board.
A tile has three blocks of vertical space counting the sign’s own block, so the whole board has to fit in the two above it. The default scale of 1.0 and lift of 1.2 fit a five-line board. Raising either can push the top rows into the ceiling, where they are hidden.
Both boards are fixed-facing, like the boss gate sign: they hang the way the sign faced and do not swivel to follow you.
The stats board is one entity per player. A text display carries one string for every viewer, so a shared board would show whoever placed it to everybody. Each member gets their own copy, spawned invisible and shown only to them. A party of eight is eight displays in one block, each seen by one person.
Boards redraw when your numbers change rather than on a timer.
Which way things face
Section titled “Which way things face”The sign’s facing is the spawned thing’s facing. For a wall sign that is the direction the text reads towards you, so a sign on the north wall of a room, readable as you look north, faces south into the room.
A chest’s front comes out the same way, so a [loot] sign you can read is a chest
whose latch you can see. Put the sign where you want to be standing when you open
it.
Standing signs are read on all sixteen points, so a sign turned to a diagonal
gives a mob or an NPC facing that diagonal. Turn the sign a notch and the thing
turns 22.5 degrees with it. (A chest is still one of four, because a chest block
only has four facings, so a [loot] sign on a diagonal rounds to the nearest.)
Rotation and mirroring are handled. The maze places tiles in all four orientations and markers turn with the blocks around them.
Things worth knowing before you place fifty of them
Section titled “Things worth knowing before you place fifty of them”A [mob] sign switches off that room’s auto-grunt. With no signs anywhere, 45% of
rooms get a grunt stood in the middle so the dungeon is playable at all. Any room
with a [mob] sign is left exactly as you authored it, so the stopgap disappears
room by room as you build instead of having to be hunted down later. A [loot]
sign does not count, so a treasure room keeps its guards.
Put the sign where the thing goes in three dimensions. A wall sign at head height means a chest floating at head height. For chests, a standing sign on the floor is usually what you want.
Do not put two [loot] signs side by side. They become two separate single chests
rather than one double chest.
The entry room never gets a monster from the fallback, but a [mob] sign you
place there is honoured. Being jumped before you can see the room is not
difficulty.
The front face is read first and the back face is the fallback, so a blank front and a marker on the back works if you want the sign facing into a wall.
Checking your work
Section titled “Checking your work”/dungeon dryrun v1 builds a whole dungeon from the console, reports the room
count, the monsters by kind, the chest count, the boss room and the lever, then
throws it away. No player needed. /dungeon dryrun v1 7 does the same for a week
from now, which is how you find out whether a marker only works on the element you
happened to test on.