A single-use signup link. Share it directly — nothing is emailed, so whoever holds the link can claim an account.
What you're carrying. Press i to open or close. Usable items (potions, scrolls) drop onto the hotbar below — fire them with number keys 1–9 without opening the bag.
Spells you've learned — cast with mana, never used up. Put one on the hotbar to fire it with a number key.
Be a PNG, an emoji, or an animated version of either — with a coloured border to match. Changes show up live for everyone near you.
Pick or type an emoji to use it as your avatar. Clear the box to go back to your uploaded PNG.
Everyone gets a border. Leave this off for an auto colour, or pick your own. It rides the avatar, so it animates right along with it.
How the game controls on your device. Saved on this device, so each phone can set its own.
By default a swipe drags the ground (swipe left → walk right). Turn this on to walk the way you swipe instead.
Show Up / Down / Left / Right buttons in the bottom-left corner for tap-to-move, alongside (or instead of) swiping.
Move the arrow pad to the bottom-right and the chat button to the bottom-left — handier if you steer with your right thumb.
Left or right pins the quick-use bar down that edge as one vertical column — in thumb's reach, with the whole screen height to stretch out in.
Sound settings follow your character — set them once and every device you play on hears the same.
Move (or tap) once to turn sound on — browsers keep audio off until you interact with the page.
A tiny MIDI soundtrack for this area, played by moria's own synth — it crossfades when players arrive and leave, and keeps playing across doors between two areas scored the same. Pick a composer, then a piece (yes, the Bach list is long — worth it) — or upload your own .mid and it becomes a track for this area only.
.mid
Recolor this area's floor — the empty-tile background and the faint grid lines. Changes preview live as you pick; set ground makes them real for everyone here, and back to stone restores the plain default.
Set this area's weather — everyone here sees (and hears) the same sky. Changes preview live as you pick; set weather makes them real for everyone, and clear skies calms it back down.
a level-wide loop from the sound library (compose one in ⚙ admin → 🔊 sounds) — blank for a silent sky.
Pick a key item: anyone holding one may enter. You (and admins) always can — nobody gets locked out of their own area, and a lock only gates entry: anyone inside can always walk out. Doors into a locked area refuse strangers with a 🔒 message naming the key.
Promote a friend to admin, or disable an account. A disabled account is signed out and can't log back in until re-enabled. You can't change your own account.
A recipe applies at any crafting station (a chest with a matching station tag). Matching is strict: the pot must hold exactly the inputs — right counts, nothing extra. Players don't see a recipe until they've crafted it once; guessing it right is the discovery.
new recipe
optional third ingredient: a one-of-a-kind item that must be IN the station and is never consumed. Set copies > 0 to yield clones of it (they open the same locks it does) instead of the outputs.
makes this a labeling recipe: the crafter names one copy of the subject and it becomes a one-of-a-kind item (an already-unique subject is renamed). The inputs above are the cost; the named subject is the whole yield.
a repair only mends a damaged item (one below its full durability) — a pristine copy is refused, nothing to fix.
A class is Rob-authored, like a recipe. The id is a slug (lowercase letters/digits/-/_) — the word a grant a class dialog choice names. Modifiers are percentages over the biology quartet: 100 (or blank) leaves an axis unchanged, 70 shrinks it, 130 boosts it. Players take a class through a dialog choice; joining is one-way for now.
new class
e.g. a sorcerer: max HP 70, max MP 130, mana cost 70. A merchant: 💰 gain 130, 💰 cost 80. Costs never round below 1.
A faction is a free word typed on a mob definition (the faction field). Tribes here fight (or befriend) each other wherever players witness them; any pair not listed is neutral. Summoned allies always side with their summoner.
Every way a tile reaches a player automatically: pulled from the gacha machine 🎰 by rarity, or awarded on crossing a level, earning a badge, or resetting a class. A tile can wear both. This is the whole table — nothing here changes what a tile is, only how it's handed out.
Add or edit a prize
Prestige awards are granted on EVERY class reset whose traded level meets this — the replay reward.
Author a sound, name it, and reference the name wherever a tile makes noise. Everything's synthesized — nothing to upload. Deleting a name just quiets the tiles using it until you name one again.
New sound
Longer stages = a longer sound. Total length ≈ the three combined.
Crush grinds the tone gnarlier (16-bit → ~2-bit); sweep drifts that grind up or down over the sound's life; downsample drops the sample rate for a grittier, lower-res feel. All at zero = clean.
Layer other named sounds to play at the same time — a growl from a rumble plus a snarl. (Author & name those first; a sound can't layer itself.)
no sound chosen yet — pick one above.
Level up to earn pulls; each pull unlocks a new tile for your own levels. No duplicates, ever — every pull is something new.
Tell the wizards what went wrong — what you did, what you expected, what happened instead.
Every player death, newest first — who died, what killed them, and where.
Every destroyed unique item (written books, charted maps…), newest first. Restore re-creates it — pages, drawings, name and all — in your own bag; hand it back in person. Purge deletes the record forever. A tombstone whose tile type was deleted can't restore until a definition with that id exists again.
Send this player to a level and tile. Works whether they're online or off; a stuck player (lost in the void) lands somewhere solid.
Setting a flag turns it on; the ✕ beside a flag clears it. The list suggests every flag your dialogs and mobs mention — a flag you expect but don't see here is set by nothing yet (likely a typo).
🖐 takes the item into your own bag (a pickpocket, not a delete — drop it on the ground if you truly want it gone).
Click a tile to start placing it — drag across the world to paint a whole area. Everyone sees placements appear live.
Give it a look three ways — upload art, build a CSS shape, or drop in an emoji — then name it, pick a kind, and place it. Everyone sees it appear.
⚠️ This is the auto-seeded death-drop container — the server finds it by this exact name. Re-skin it freely (glyph, art, animation); renaming it makes the server seed a fresh default-look one (after the next restart or deploy).
plays the moment this item wears out to 0 — a snap, a shatter (compose one in the sound designer).
A door teleports whoever steps on it. You'll pick where it leads when you place it.
A sign shows a message when bumped. You'll type it when you place the sign, and can edit it later by clicking the sign.
Leave empty to keep the current art.
Loops continuously for anyone near a placed copy — louder up close, silent past the radius. The pause knob spaces out repeats (a drip every few seconds, an occasional distant creak) instead of a seamless drone.
A text is picked up and read from the bag with the “read” verb, one page at a time. Separate pages with a line containing just ---.
---
A canvas holds one drawing, painted in-game with the 🖌 draw verb — it starts blank; tick editable to let holders repaint their copy.
Stepping onto this consumes it. XP/HP/GP are granted on the spot; collectible items are kept in the bag. Leave all blank for decorative scenery. Tick collectible to make it a usable potion/scroll or an equippable weapon — since those are used straight from your bag. A miasma hazes the finder's whole view (a gas trap): give it turns to last a number of the finder's moves, or set turns to 0 and ms for a brief flash.
Optional: named spawn profiles a signal flips between — "quiet" (chance 0), "alarm" (chance 90). The first is the default; while any exist they replace the chance/max/cooldown above. Name a profile in the signal to set it; a blank signal toggles to the next.
Give this mob alternate looks it wears as it fights. The first look is its normal (calm, healthy) one. Tick when hostile for a look worn only while it's actively hunting you — eyes turn red as it turns on you. Set HP ≤ % for a look worn once its health drops to that fraction — a boss goes bloodied at 50. Looks are checked top to bottom and the last one that fits wins, so list more-specific looks lower (a look with both conditions is its enraged-and-wounded form). Each look is a colour or an emoji (art per look comes later), so a mob using uploaded art should give its normal look a colour/emoji too.
Optional voices for combat moments, each its own little synth cue. The cross-cutting sound effect section above stays this mob's default growl (first spotting a player, and friendly bumps); an event you don't set here simply stays quiet — except aggro, which replaces that growl when set.
Give it HP to make it breakable: bump it to mine it by hand, or blast it with an item whose “can break walls” box is ticked. AC is how hard it is to hit; XP break is what you earn for destroying it (leave 0 for a wall that shouldn't grind). Leave HP 0 for an unbreakable wall. Drops when broken spill onto its tile — a rock that yields ore. Pushable makes it a shove-block (a crate onto a plate); a block that's both breakable and pushable is broken when bumped, not pushed — so mine it with an item to keep it shovable.
Stock these waters with fish (any items — each row rolls its % independently, so a rare boot at 5% keeps anglers dreaming). Players fish with a fishing rod item — a usable whose effect is fishing rod 🎣 — cast at this tile: wait for the bite, then tap the water again fast to hook it. The catch flops onto the bank beside them. No rows = plain water, no fishing.
A gate switches between looks. Its default look is the display up top — art, a colour+texture, or an emoji — authored once, in one place. Add the states it can switch to below; each has the same full look controls (art / colour+texture / emoji), and a state drawn invisible is an open doorway. A switch on the same channel flips it — a bumpable switch tile, or a usable switch item. Naming a state sets it; leaving it blank toggles to the next. Two gate groups? Give them different channels.
On an obstacle you bump it to throw it (a lever, a big red button); on decor you step on it (a pressure plate — the trap tile: walk over it and every gate on its channel flips). Name a state to force it (a lever that always opens), or leave it blank to toggle. Give it a look up top. Make it a gate too (tick “a gate” with the same channel) and firing it flips its own look — a lever's handle, a plate that visibly depresses.
Bumping this NPC opens a conversation. Each node is one thing it says; each choice is a button the player can pick — leading to another node, or ending the talk. A choice can be gated (needs an item / quest flag / gold) and can hand out a reward or charge a price. Start from a template, then tweak.
Riders make multi-effect items: a bolt that damages the mob and heals you (vampiric), booze that restores ✦ mana and blurs your vision (author the miasma as the main effect, the mana as a rider on yourself). Damage riders always hit the target; the others choose.
Make a collectible item usable from the bag. A potion heals you; a scroll damages an enemy in range (walls block the shot). “die” rolls 1–die and adds “flat”, so die 8 + flat 4 = 5–12. A killing blow earns the mob's XP. Teleport blinks you: to a fixed Δx/Δy step (target myself) or to a spot you tap (target a spot). Status puts a timed effect on you — a shield (+AC), regen (heal each turn), poison (damage each turn), or swift (stride extra tiles per move — boots of swiftness, but as a potion/spell) — that ticks down on your moves (standing still is safe). Place a tile lets the holder drop the chosen tile on an empty spot in range — a brick that builds a wall, a trap you seed — optionally lasting only so many seconds before it vanishes (0 = forever). Everyone around me (AOE) zaps every enemy within range at once (walls shield them) — force lightning! Restore mana ✦ refills your mana; Teach a spell makes this item a tome that adds the chosen spell to the reader's hotbar (build the spell as its own usable item first, then point a tome at it). Costs can charge a use: HP, mana ✦, gold, and/or a number of another held item — spells lean on mana, which refills as you walk. Using an item takes a turn, so nearby monsters get to act.
An on-hit effect fires on you every time this weapon lands a blow — a vampiric blade heals as it bites, a leech drinks mana. It stacks with the damage above (a weapon can do more than one thing).
Pick this up, then equip it from your bag and it becomes your bump attack — no hotbar slot. A hit rolls 1–die and adds “flat” (die 8 + flat 2 = 3–10 damage); leave die 0 for a flat-only weapon. “to-hit +” is added to your attack roll, so a heavier blade lands more often. Bare-handed is 1–6, no bonus. Tick can mine to make it a digging tool — only a wall-breaker mines a breakable obstacle on a bump; fists and ordinary blades leave it standing.
Pick it up, then wear it from your bag. Effects apply while worn and never stack with a duplicate protection — the best piece wins. A head item's own art perches on your avatar for everyone to see.
Make this door the mouth of a delve: walking through it drops you in your own copy of the dungeon below, minted on the spot. Whoever follows you through the same door joins your party. When everyone's gathered and gone inward, the door disappears — one door, one run. Leave the delve set to — none — for an ordinary door.
A chest holds an inventory. Bumping a placed one opens a transfer panel between the chest and your bag. Seed its starting loot below; the contents are per-placed-chest after that.
The player must hold the key item (it isn't consumed — it just unlocks), and/or carry at least that much gold, to open the chest.
full — wears the display authored up top (its art / colour / emoji). Give the empty look below.
Give the chest an empty look — uploaded art, a colour+texture, or an emoji (drawn invisible for a chest that vanishes when drained) — and it repaints for everyone as its contents cross zero, back to the display up top once it holds anything. Cosmetic only: it still blocks and opens the same. Leave off for a chest whose look never changes.
Players can't see past this tile, like a wall. Obstacles block sight by default; untick it for a fence or window you can see through but not walk past. Decor is see-through unless you tick it (a passable “fake wall”).
Pick a destination level and the tile the player arrives on — or scry one of your portals and choose the exact spot to come out beside it. One-way — place a matching door on the far side to come back.
Carve the chosen level from a style + seed and scatter mobs, loot, and traps by depth. Replaces everything on the level (an auto-snapshot is taken first). The same seed always digs the same dungeon — share it.
What does this sign say? A player reads it by bumping into it — signs block movement, so they're read, not walked through.
chest
your bag
moria is upgrading — hang tight, treasure awaits the attentive.
Descending into moria…