Table of Contents

Creation Law — Objects

You know classic Diku oedit. Neo has no oedit and no @object verb. Object prototypes are built with the three-layer item workspace: description strings → stats blob → item prototype that links them.

Hub: Creation Law. Field/spawn reference once built: Items. Scripts: Script Law — Objects.

Why three layers?

Neo mirrors the old Diku split (strings / values / index) as three workspace types:

You save each layer separately. The prototype does not invent strings or numbers by itself — if you @save item without @item description / @item stats links, you have an empty shell. That is the #1 object-building mistake.

Objects vs items (handbook split): this page is the build walkthrough. Items is the type/flag/spawn/testing reference once the object exists. Same commands; different teaching focus.

Step-by-step: first object (a wieldable sword)

1. Description draft

Why first: you want readable strings in-game even before combat numbers are perfect.

> @find item
> @new item_descr 3100
Okay.
> @item_descr keywords add sword
Okay.
> @item_descr proper
a tempered shortsword
> @item_descr room
A tempered shortsword lies here.
> @item_descr general
Steel catches the light along a plain fuller.
> @examine item_descr
> @save item_descr
Okay.
>

Fields: action, general, keywords, proper, room. If @new item_descr errors, you still have a descr draft open — @examine item_descr, then @save or @clear.

2. Stats draft

Why second: type and wear flags decide whether wield / get work when you spawn-test.

> @new item_stats 3100
Okay.
> @item_stats type weapon
Okay.
> @item_stats flags wear take
Okay.
> @item_stats flags wear wield
Okay.
> @item_stats weight 5
Okay.
> @item_stats modifiers add 0 hitroll 1
Okay.
> @examine item_stats
> @save item_stats
Okay.
>

Using the same number (3100) for descr and stats is a clarity convention, not a language requirement — they are still separate rows. Full type/flag/value lists: Items.

Why this layer exists: the live world loads item prototypes; descr/stats are pieces the prototype references.

> @new item 3100
Okay.
> @item description 3100
Okay.
> @item stats 3100
Okay.
> @item maximum 25
Okay.
> @examine item
(confirm description and stats VIDs are set)
> @save item
Okay.
>

Before @save: @examine item must show the description and stats links you intend. Saving without those links is the empty-shell mistake.

@item fields: extras, stats, description, maximum, proc, reset.

4. Approve and spawn-test

> approve item 3100
> create item 3100
You create a tempered shortsword.
> purge sword
>

Prefer create while learning your own range (stricter). load skips range checks — see Items for create vs load and maximum rules. If create refuses you, read the echo: wrong range vs maximum > 1 are different failures.

Attaching a script (later)

Create the SpecProc first (@proc item new … / script text), verify with index proc_item, then:

> @load item 3100
Okay.
> @item proc my_sword_proc
Okay.
> @examine item
> @save item
Okay.
>

Attaching a name that does not exist yet leaves you confused at runtime — build proc → attach → save. Details: Script objects. Hard-coded compiled specials use SpecItem on @item_stats attrs, not the free-form proc name.

Relinking an existing prototype

> @load item 3100
Okay.
> @item description 3100
> @item stats 3100
> @examine item
> @save item
Okay.
>

Caveat: @destroy item_descr fails while an item prototype still references that VID — unlink or destroy the prototype path carefully.

End-to-end (compact)

> @new item_descr 4502
… keywords / proper / room / general …
> @save item_descr
> @new item_stats 4502
> @item_stats type weapon
> @item_stats flags wear take
> @item_stats flags wear wield
> @item_stats weight 5
> @save item_stats
> @new item 4502
> @item description 4502
> @item stats 4502
> @item maximum 1
> @examine item
> @save item
> approve item 4502
> create item 4502
>

Next: equip via zone (Mobiles, Zones).

Vs classic ''oedit''

You never “enter oedit 3100”. You open typed workspaces (@new item_descr|item_stats|item), edit with @item_* / @item subcommands, @examine, @save. No @object alias.

Common mistakes