Lonelog: Dungeon Crawling Add-on
Optional Room Tracking for Dungeon Exploration
Dungeon Crawling Add-on
Overview
Lonelog was built for narrative-driven solo play—the kind where you care more about what happened and why than where am I and what do I have left. Dungeon crawling pulls in a different direction: spatial relationships matter, rooms accumulate state, and you’re constantly asking “did I already loot that chest?”
That tension is real. Text notation is never going to replace a good map. But it can help you track room state—what you found, what you cleared, what’s still waiting behind a locked door—alongside the narrative Lonelog already handles well.
This add-on introduces one new persistent element: the Room tag [R:]. That’s it. Everything else—actions, rolls, oracle questions, consequences, threads, clocks—stays exactly the same. You’re adding rooms to the vocabulary of things Lonelog can track.
If the dungeon is more narrative backdrop than mechanical challenge, or if you’re moving through spaces quickly without tracking state, stick with core Lonelog. The [L:] location tag handles simple spatial context fine. This add-on earns its keep when rooms have meaningful state that changes over time.
What This Add-on Adds
[R:ID|status:state]— Track a room’s current exploration state. Example:[R:3|status:cleared][R:ID|status:state|desc]— Room tag with optional description. Example:[R:3|status:cleared|library]exits:DIR ID— Record connections between rooms (optional). Example:exits:N R2, E R3[#R:ID]— Reference a previously established room. Example:[#R:3][DUNGEON STATUS]/[/DUNGEON STATUS]— Session-opening snapshot of all room states. Example: Multiple[R:]tags grouped
No new core symbols. This add-on introduces no additions to @, ?, d:, ->, or =>.
Design Principles
State over space. A map handles spatial relationships better than text ever will. Room tags track what changed—cleared, looted, locked—not where rooms sit relative to each other. Use the right tool for each job.
Minimal vocabulary. One new tag covers the entire add-on. Every other element—scene headers, oracle questions, consequences, clocks—uses the core notation you already know. The cognitive overhead of adding dungeon crawling to a Lonelog session is one tag format.
Map-friendly by design. Room tags are built to work alongside a visual map, not replace one. Room IDs connect your log to your map. Mark them on graph paper; reference the same IDs in your tags. The two systems reinforce each other.
Block tags follow the core convention. Structural blocks use [BLOCK] / [/BLOCK] bracket syntax — identical to [COMBAT] / [/COMBAT] in the Combat Add-on. For analog notebooks, use --- BLOCK --- / --- END BLOCK --- dashed separators instead.
1. The Room Tag
The Room tag [R:] tracks a room’s current state. It works like any other Lonelog persistent element: you tag it when something changes, update it as the situation evolves, and reference it later.
Format:
[R:ID|status:state|description|exits:DIR ID, DIR ID]
Fields — the ID comes first; the rest can come in any order, because each one says what it is:
ID— unique identifier for the room, typically a number (1,2,3) matching your map. The tag’sRprefix is part of the name you say and write elsewhere:[R:3]is room R3, in exits, in prose and on a Maplog map.level:— optional, for multi-level dungeons:[R:8|level:2]status:— current exploration state (see below)- description — optional brief label to jog your memory, written as a plain value
exits:— optional connections to adjacent rooms
status: and exits: are categories (core §4.1): writing one again replaces what it held. That’s what lets a room go from unexplored to cleared without ending up both.
1.1 Room Status
Status tells you the current state of a room at a glance. Use whatever terms fit your game:
[R:1|status:unexplored]— Haven’t entered yet[R:1|status:active]— Currently exploring[R:1|status:cleared]— Enemies defeated or threats resolved[R:1|status:cleared, looted]— Cleared and treasure taken[R:1|status:locked]— Can’t get in yet[R:1|status:trapped]— Known hazard present[R:1|status:safe]— Verified clear, usable as refuge[R:1|status:collapsed]— No longer accessible
Combine statuses when it makes sense: cleared, looted tells you both that the fight is over and there’s nothing left to grab.
Example — minimal:
[R:4|status:active]
Example — expanded:
S5 *North corridor*
@ Open the door carefully
? Is it locked?
d: d6=5 -> No
=> The door swings open easily.
[R:4|status:active|storage room, dusty shelves|exits:S R2, E R5]
@ Search the shelves
d: Investigation d6=5 vs TN 4 -> Success
=> I find a rusty key behind a loose brick.
(note: might open R5?)
? Are there enemies?
d: d6=6 -> No, and...
=> The room is completely undisturbed. Years of dust.
[R:4|status:cleared, looted]
1.2 Updating Room Status
When a room’s state changes, write the new status. It replaces the old one:
[R:1|status:unexplored]
... you enter and fight ...
[R:1|status:cleared]
... you search ...
[R:1|status:cleared, looted]
To add one state without rewriting the rest, put + inside the category; - takes one away:
[R:1|status:+looted]
1.3 Room Descriptions
The description field is optional and brief—just enough to jog your memory:
[R:1|status:cleared|guard room]
[R:2|status:active|library, candles still lit]
[R:3|status:unexplored|sounds of water]
For richer descriptions, use regular Lonelog narrative after the tag:
[R:4|status:active|ritual chamber]
=> The air hums with energy. A circle of runes glows faintly on the floor.
2. Room Connections
To record which rooms connect where, use the exits: category inside the tag. Each exit is a direction and a room, separated by a space:
[R:1|status:cleared|guard room|exits:N R2, E R3, S R4]
Read this as: “Room 1 is cleared, it’s a guard room, with exits north to Room 2, east to Room 3, and south to Room 4.”
Directional shortcuts: N, S, E, W, NE, NW, SE, SW, U (up), D (down).
If direction doesn’t matter, just list the rooms:
[R:5|status:unexplored|exits:R4, R6, R7]
You don’t have to record exits at all. If you’re keeping a visual map, the exits live there and you only need the Room tag for status. exits: is for when you want a fully text-based record, or when you discover a specific connection mid-play. Writing exits: again replaces the whole list, so add a single new exit with +:
=> I find a hidden passage behind the bookshelf!
[R:3|exits:+E R7 secret]
Example — minimal:
[R:6|status:unexplored|exits:R5, R8]
Example — expanded:
@ Check the far wall for exits
d: Perception d6=6 vs TN 4 -> Success
=> A concealed door—well-disguised but not locked.
[R:6|status:active|crypt|exits:W R5, N R8, E R9 secret]
(note: update map with R9)
3. The Dungeon Status Block
When you sit down for a new session mid-dungeon, you need a snapshot: which rooms are cleared, where haven’t you been, what’s still locked. The Dungeon Status Block gives you that at a glance.
Format:
[DUNGEON STATUS]
[R:1|status:state|description]
[R:2|status:state|description]
...
[/DUNGEON STATUS]
When to open a block: At the top of a session when resuming a dungeon crawl, before your first scene.
When to update it: At session end, or at the start of the next session, to reflect what changed.
Example — digital:
[DUNGEON STATUS]
[R:1|status:cleared, looted|entry cave|exits:N R2, E R3]
[R:2|status:cleared|guard room|exits:S R1, W R5]
[R:3|status:active|library|exits:W R1]
[R:4|status:unexplored]
[R:5|status:locked|heavy door|exits:E R2]
[/DUNGEON STATUS]
Example — analog:
=== Session 3: The Orc Warren ===
[Date] 2025-10-15
[Duration] 1h30
[Recap] Found the warren entrance. Need to recover the stolen relic.
--- DUNGEON STATUS ---
R1: cleared, looted (entry cave)
R2: cleared (guard room)
R3: active (library)
R4: unexplored
R5: locked (heavy door)
--- END STATUS ---
This is a convenience, not a requirement. If your dungeon has three rooms, you don’t need a status block—just tag rooms as you go. For larger dungeons, or when picking up a session after a break, it’s a quick way to orient yourself.
Cross-Add-on Interactions
- Combat breaks out in a room — Dungeon Crawling + Combat —
[R:],[COMBAT],[F:] - Tracking torches and rations per room — Dungeon Crawling + Resource Tracking —
[R:],[Inv:Name|#] - Combat while tracking resources — All three add-ons —
[R:],[COMBAT],[Inv:]
Combined example — Dungeon Crawling + Combat:
S6 *Approaching the barracks*
@ Move quietly down the corridor
d: Stealth d6=4 vs TN 4 -> Success
=> I creep forward unseen.
[R:5|status:active|barracks, stench of sweat|exits:S R3, W R6, N R7]
? How many guards?
tbl: d6=3 -> "Three enemies"
=> Two eating, one sharpening a blade.
[COMBAT]
[PC:Alex|HP 12|pos:Engaged]
[F:Guard 1|HP 5|pos:Close|eating]
[F:Guard 2|HP 5|pos:Close|eating]
[F:Guard 3|HP 5|pos:Close|alert]
Rd1
@ Ambush the alert guard first
d: d20+4=18 vs AC 12 -> Hit, 1d8=7
=> [F:Guard 3|dead]
@(Guard 1) Grabs weapon and charges
d: d20+3=11 vs AC 14 -> Miss
Rd2
@ Sweep at both remaining guards
d: d20+4=15 vs AC 12 -> Hit, 1d8=5 => [F:Guard 1|dead]
d: d20+4=12 vs AC 12 -> Hit, 1d8=3 => [F:Guard 2|dead]
[/COMBAT]
=> Room clear before they could raise an alarm.
[R:5|status:cleared]
@ Search the barracks
tbl: d20=8 -> "Rations and a crude map"
=> A rough map scratched on hide. Shows rooms to the west!
[R:5|status:cleared, looted]
[R:6|status:unexplored|marked on orc map]
(note: update my map with R6)
System Adaptations
OSR Systems (Old School Essentials, Basic/Expert D&D)
Classic dungeon crawl procedures map naturally to this add-on. Turn-based exploration, wandering monster checks, and the six-minute turn structure all generate natural tag update points. Use Room tags at the end of each turn or when something significant changes.
[DUNGEON STATUS]
[R:1|status:cleared, looted|entry hall|exits:N R2, E R3]
[R:2|status:cleared|guard room|exits:S R1, W R5]
[R:3|status:active|crypt|exits:W R1, D R8]
[/DUNGEON STATUS]
S4 *R3, crypt, turn 3*
[Timer:Torch-1]
@ Search the sarcophagi
d: Secret door 1-in-6 d6=2 -> None found
d: Wandering d6=5 -> No
@ Light the wall sconces and examine the inscriptions
d: INT check d20=8 vs DC 12 -> Fail
=> The script is too archaic—I can't make sense of it.
[R:3|status:cleared]
Ironsworn / Starforged
Ironsworn’s Delve mechanic uses themed sectors rather than numbered rooms. Map sectors to Room IDs and use the Delve the Depths move result to determine what you find. Progress tracks work naturally alongside Room status.
[Track:Iron Barrow 2/10]
[DUNGEON STATUS]
[R:1|status:cleared|Threshold – rusted gate|exits:N R2]
[R:2|status:active|Shadow – collapsed corridor]
[/DUNGEON STATUS]
@ Delve the Depths (Shadow theme)
d: d6+2=7 vs d10=4, d10=9 -> Weak Hit
tbl: Shadow Feature d100=44 -> "Symbols of a forsaken god"
=> I find ritual markings. Progress, but at a cost.
[Track:Iron Barrow+2]
[R:2|status:cleared|Shadow – forsaken markings|exits:N R3]
[R:3|status:unexplored]
[Thread:The Forsaken God|Open]
Dungeon World (PbtA)
Dungeon World generates dungeon content through fictional framing and GM moves rather than room-by-room procedure. Use Room tags loosely—tag significant locations as you discover them, without worrying about exhaustive status tracking.
@ Discern Realities as I enter the chamber
d: 2d6+1=10 -> 10+ Hit: ask three questions
? What here is useful or valuable?
-> A sealed chest on the altar dais.
? What is about to happen?
-> The shadows in the corner are moving.
? Who made this place?
-> Cult sigils everywhere—same as the ones on the road.
[R:4|status:active|ritual chamber, living shadows]
[Thread:The Cult's Purpose|Open]
Best Practices
Do: Use Room tags for state, your map for space
✔ [R:4|status:cleared, looted|exits:N R7]
(note: add the door to R7 on map)
Don’t: Try to replace your map with exit chains
A chain of exits is harder to navigate than a sketch:
✗ [R:1|status:cleared|exits:N R2, E R3]
[R:2|status:cleared|exits:S R1, N R4, E R5]
[R:3|status:active|exits:W R1, N R6, E R7, SE R8]
✔ Draw the map. Use Room tags only for state.
Do: Update status immediately when it changes
✔ @ Search the room after the fight
d: Investigation d6=5 vs TN 4 -> Success
=> I find a key and some coin.
[R:3|status:cleared, looted]
Don’t: Leave status ambiguous and reconstruct later
✗ (Three scenes of exploration with no tag updates)
(note: I think R3 and R4 are cleared? need to check)
✔ Tag each change as it happens.
Do: Open a Dungeon Status Block when resuming a session
✔ === Session 4 ===
[DUNGEON STATUS]
[R:1|status:cleared, looted|entry]
[R:2|status:cleared|barracks]
[R:3|status:unexplored]
[R:4|status:locked|iron door]
[/DUNGEON STATUS]
Don’t: Reconstruct dungeon state by scanning the whole log
✗ (Scrolling back through two sessions of notes to figure out
which rooms are cleared)
✔ Write the status block at session end. Start the next session
with a current picture.
Do: Keep descriptions brief in the tag, expand in prose
✔ [R:7|status:active|throne room]
=> The ceiling is forty feet high. A cracked obsidian throne
dominates the far wall. Something has nested in it recently.
Don’t: Overload the tag with narrative detail
✗ [R:7|active|massive vaulted throne room, cracked obsidian throne
on a raised dais, old nesting material and bones, forty-foot ceiling,
faded tapestries depicting a forgotten dynasty, cold draft from the north]
Quick Reference
Status Terms
| Status | Meaning |
|---|---|
unexplored |
Haven’t entered yet |
active |
Currently exploring |
cleared |
Threats resolved |
cleared, looted |
Cleared and searched |
locked |
Cannot enter yet |
trapped |
Known hazard present |
safe |
Verified clear, usable as refuge |
collapsed |
No longer accessible |
Structural Blocks
| Block | Opens When | Closes When |
|---|---|---|
[DUNGEON STATUS] / [/DUNGEON STATUS] |
Session start when resuming a dungeon | [/DUNGEON STATUS] after the last room; write a fresh block next session |
Directional Shortcuts
N S E W NE NW SE SW U (up) D (down)
Complete Example
[DUNGEON STATUS]
[R:1|status:cleared, looted|entry cave|exits:N R2, E R3]
[R:2|status:unexplored] [R:3|status:unexplored]
[/DUNGEON STATUS]
S7 *North passage*
@ Approach R2 quietly
d: Stealth d6=4 vs TN 4 -> Success
[R:2|status:active|barracks|exits:S R1, W R4]
? Enemies?
d: d6=2 -> Yes
=> Two guards, armed.
...combat...
[R:2|status:cleared, looted]
[R:4|status:unexplored|marked on guard's map]
FAQ
Q: Do I need a separate map, or can I use exits to track layout? A: A visual map is almost always better for layout and navigation. Use exits in your Room tags only when you want a fully text-based record, or when you discover a specific connection (like a secret door) that’s worth noting in the log. For everything else, draw the map.
Q: What Room ID system should I use? A: Numbers are simplest: [R:1], [R:2], [R:3] are rooms R1, R2, R3, matching a numbered map. Sub-rooms can take letters ([R:1A], [R:1B]). For several levels, keep the numbers and add a level: category, [R:8|level:2], which matches the level tags (L2) Maplog writes on a map. Use whatever helps you connect tags to your map at a glance.
Q: Can I use this alongside the Combat Add-on? A: Yes—they’re designed to work together. When combat breaks out in a room, open a [COMBAT] block inside the scene. When it ends, close it and update the Room tag status. The Cross-Add-on Interactions section has a full example.
Q: What if I’m using a published dungeon with its own room numbering? A: Use the published room numbers as your IDs. [R:12|status:cleared|Goblin Warrens p.4] works perfectly—the published map handles layout, the tag handles state.
Q: How does the Dungeon Status Block work in an analog notebook? A: Write it with dashed separators: --- DUNGEON STATUS ---. List one room per line with status and a brief label. Cross out or update entries as rooms change. At the start of each new session, write a fresh status block with current information rather than patching the old one.
Q: Do I need to tag every room I pass through? A: Only rooms where something worth tracking happens. If you walk through an empty corridor, you don’t need a tag—just describe it in prose. Tag rooms when their status has meaning: when you clear them, find something, lock them, or need to return later.
Q: What about dungeon features that aren’t rooms—corridors, traps, doors? A: Use core Lonelog notation. A trap that springs or a door that gives way is an event ([E:Trap Sprung]); otherwise, keep them as temporary context in prose. Corridors usually don’t need persistent tracking. The Room tag is specifically for spaces with ongoing state that matters across multiple scenes or sessions.
Credits & License
© 2025 Roberto Bisceglie
This add-on extends Lonelog by Roberto Bisceglie.
Written to address the request of u/Jollto13 on r/Solo_Roleplaying.
Version History:
- v 1.2.0:
[R:3]is room R3 everywhere;level:category for multi-level dungeons; new §4.4 on exploration turns with core notation (timers, wandering checks); Dungeon World answers use->. Aligned with Lonelog v1.7:status:andexits:are categories, so a new status replaces the old one and fields can come in any order; exits are writtenexits:N R2, E R7 secret;[E:]marks events that happened; table result format; standard[Track:]counters; explanations moved out of code blocks. - v 1.1.1: Map reminders note what to draw, not room state; state stays in the Room tag
- v 1.1.0: Block tags unified with
[BLOCK]/[/BLOCK]convention; design principles updated - v 1.0.0: Rewritten as a compliant add-on (previously “Dungeon Crawling Module”)
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
You are free to share and adapt this material, provided you give appropriate credit and distribute adaptations under the same license. Session logs and play records created using this add-on’s notation are your own work and are not subject to this license.