Table of Contents

Creation Law — Rooms

You know classic Diku redit. Neo has no redit. Instead you open a room draft in a personal workspace, set fields with @room … commands, review with @examine, then @save room to commit into the world database.

Hub: Creation Law. Room scripts: Script Law — Rooms.

Why a workspace?

Neo never drops you into a numbered OLC menu. @new room <vid> allocates one in-memory draft on your immortal. Until you @save or @clear, that draft is the only room editor you have open. A second @new room while a draft exists errors — finish or abandon first. That is the most common first-day mistake.

Your VID must lie in the room range on your immortality record (implementors assign ranges). Creating outside your range is rejected by the code.

Step-by-step: first room

1. Find a free VID (optional but wise):

> @find room
(lists unused room VID blocks)
> @find room 3
(unused blocks sized for 3 contiguous rooms)
>

2. Open the draft:

> @new room 1200
Okay.
>

If you see an error about an existing draft, run @examine room, then either @save room or @clear room and try @new again.

3. Set the title and description (writers open — type text, then finish the writer the same way you finish other multi-line immortal writers):

> @room proper
A quiet stone alcove
> @room general
Cool air pools here among worn flagstones.
Shadows cling to the corners.
>

proper is the one-line title players see in the prompt / look header. general is the multi-line room description. You set them as separate steps because they are separate fields on the prototype.

4. Sector and flags (why: sector drives movement/weather feel; flags gate magic, NPCs, healing, etc.):

> @room attrs sector inside
Okay.
> @room flags roomflags healing
Okay.
>

Coded attribute classes are Sector and SpecRoom. Flag class RoomFlags includes DARK, NO_NPC, NO_MAGIC, PRIVATE, HEALING, AIR, SILENCE, ARENA, DUMP, GOD, SAVE, RECALL, NO_TELEPORT_IN / OUT, …. Prefix with ! to clear a flag when the modifier supports it.

5. Review before you save:

> @examine room
--- Room ---
...
>

Check title, description, sector, flags, and any doors. Fix mistakes now — @save writes what you see.

6. Commit:

> @save room
Okay.
>

The draft is gone; the room lives in the world DB. @load room 1200 later if you need to edit again.

''@room'' field commands

From ModifyStats.cmdCrRoom:

Exits / doors

Why doors are multi-step: you add an exit slot, point it at a destination room, then set type / flags / key. The destination room must already exist and lie in the zone VID range of the room you are editing — linking to a missing VID is a classic gotcha.

Syntax: @room door [add|delete|flags|general|key|keywords|proper|room|type|weight] <direction>

Directions from Direction (north, east, south, west, up, down, …). Door types (DoorType): PATH, GATE, OBJECT, WINDOW, STADIUM. Door flags (DoorFlags): CLOSED, SECRET, LOCKED, PICKPROOF, WIZLOCKED, KNOCKPROOF.

> @room door add east
Okay.
> @room door room east 1202
Okay.
> @room door type east gate
Okay.
> @room door flags east locked
Okay.
> @room door key east 3102
Okay.
> @room door keywords east add gate
Okay.
> @examine room
> @save room
Okay.
>

If @room door room … fails, confirm 1202 exists (goto 1202 / stat room) and sits in-range for this zone.

Dig a linked copy

Why @dig exists: walking @new + manual two-way doors for every neighbor is tedious. @dig <direction> <room-vid> copies the room you stand in, creates the new VID, and links the exit (Immortality.createDigRoomDB.createCopy). Target VID must be in your room range.

> goto 1200
> @dig south 1203
Okay.
>

Then goto 1203, @load room 1203 (if needed), rewrite proper / general so the copy is not a clone of the parent, @examine, @save.

Finding free room VIDs and getting around

> @find room
> @find room 3
> index room midgaard
> goto 3001
> stat room
>

Full linked-rooms walkthrough

Build two connected rooms the way a new creator should the first week:

> @find room 2
> @new room 4500
Okay.
> @room proper
(east end of the quiet alley)
> @room general
(wet cobbles, a shuttered stall…)
> @room attrs sector city
Okay.
> @examine room
> @save room
Okay.
> goto 4500
> @dig east 4501
Okay.
> goto 4501
> @load room 4501
> @room proper
(west end — rewrite so it is not a clone)
> @room general
> @examine room
> @save room
Okay.
>

Common mistakes: forgetting to rewrite the dug copy; opening @new room while 4500's draft was never saved; wiring a door to a VID you have not created yet.

Next: put rooms under a zone top (Zones). For ENTER/UPDATE behavior, create the SpecProc first, then @room proc <name> (Script rooms). Attaching a proc name that does not exist yet is a frequent miss — index proc_room to verify.

Room caveats