====== Creation Law ====== Otherwise known as the builder's handbook. Where immortals learn how to create rooms, objects, mobiles, items, zones, and shops in the living world of Nilgiri — using only the commands the Java server actually implements. Neo-Nilgiri has **no** classic Diku ''redit'' / ''oedit'' / ''medit'' / ''zedit''. Builders work in a personal ''@'' workspace, then spawn and reset with immortal utilities. Topic pages below carry the full field lists, walkthroughs, and '''' sessions. ===== Who may create ===== Creation uses the creator command set (''@new'', ''@room'', ''@item'', ''@npc'', ''@zone'', …) gated by ''Immortality.creatorCheck'', plus immortal utilities (''goto'', ''load'' / ''create'', ''purge'', ''index'', ''zone'', ''approve'', …). Builders are limited to room / npc / item VID ranges on their immortality record; implementors assign ranges with ''assign''. Levels: mortal ''L0''–''L30'', then ''IMMORTAL'', ''DEITY'', ''IMPLEMENTOR''. * See: [[nilgiri:codelaw|Code Law]] — Beanshell, H2, and coding resources * See: [[immortal:scriptlaw|Script Law]] — attaching SpecProc scripts after prototypes exist ===== The workspace model ===== Open a prototype with ''@new'', edit typed field commands, ''@examine'', ''@wrap'' long text, then ''@save'' — or ''@clear'' to abandon. One open draft of each workspace kind at a time. > @new room 1200 Okay. > @room proper (enter one-line title, then finish the writer) > @room general (enter multi-line description in the writer) > @examine room --- Room --- ... > @save room Okay. > Workspace types: ''help'', ''wizhelp'', ''social'', ''message'', ''item'', ''item_descr'', ''item_stats'', ''npc'', ''npc_descr'', ''npc_stats'', ''room'', ''zone'', ''shop'', ''spell''. ''@load '' copies an existing prototype into the workspace; ''@destroy '' deletes a saved one (with "in use" guards). * See: [[immortal:creationlaw:rooms|Rooms]], [[immortal:creationlaw:objects|Objects]], [[immortal:creationlaw:items|Items]], [[immortal:creationlaw:mobiles|Mobiles]], [[immortal:creationlaw:zones|Zones]], [[immortal:creationlaw:shops|Shops]] ===== Finding free vnums and getting around ===== ''@find'' unused VIDs; ''index'' searches prototypes and procs; ''goto'' teleports; ''stat'' inspects. > @find room > @find room 3 > index room midgaard > goto 3001 > * See: [[immortal:creationlaw:rooms|Rooms]] — ''@find room'', ''@dig'', exits * See: [[immortal:creationlaw:items|Items]] / [[immortal:creationlaw:mobiles|Mobiles]] — ''index'', ''load'' / ''create'' / ''purge'' ===== Spawning and testing ===== Immortals spawn with ''load'' / ''create'', remove with ''purge'', and exercise zone resets with ''zone reset''. ''create'' is stricter than ''load'' (ranges and ''maximum'' rules). * See: [[immortal:creationlaw:items|Items]] — load / create / purge / maximum caps * See: [[immortal:creationlaw:mobiles|Mobiles]] — place via zone, weapon+mob workflow * See: [[immortal:creationlaw:zones|Zones]] — reset lists and ''zone reset|clear'' ===== Persistence and inventory ===== Prototypes and SpecProcs live in the **world** H2 database; immortality ranges in the **players** DB. Automatic saves run on a long real-time cadence (''SaveEvent''); shutdown also saves. Workspace drafts exist only in memory until ''@save''. There is no separate "ola" / "asave" — ''@save '' commits the open draft. The immortal ''save'' command is an implementor DB utility, not the builder workspace save. The same workspace pattern covers ''@social'', ''@help'', ''@wizhelp'', ''@message'', ''@spell'', and ''@random'' (inventoried so builders know they share ''@new'' / ''@save''; spell timing fields live under ''@spell''). Shops have their own topic page. ===== Rooms ===== Create rooms, set sector/flags, wire exits, and ''@dig'' linked copies. * See: [[immortal:creationlaw:rooms|Rooms]] ===== Objects ===== Neo builds **object prototypes** with ''item'' commands (''@item_descr'' / ''@item_stats'' / ''@item'') — there is no separate ''@object'' verb and no ''oedit''. * See: [[immortal:creationlaw:objects|Objects]] ===== Items ===== Once a prototype exists: ItemType, wear/flags/affects, modifiers, values, weight, spawn testing, and maximum caps. * See: [[immortal:creationlaw:items|Items]] ===== Mobiles ===== Three-layer ''npc_descr'' / ''npc_stats'' / ''npc'', then place via zone resets. * See: [[immortal:creationlaw:mobiles|Mobiles]] ===== Zones ===== Lifespan, reset command lists, weather affiliation, ''zone reset|clear'', ''@rezone'', ''approve''. * See: [[immortal:creationlaw:zones|Zones]] ===== Shops ===== Shop workspace on an existing mobile VID: room, produces, trades, hours, keeper messages; needs ''Acts.SHOPKEEPER'' and zone placement. * See: [[immortal:creationlaw:shops|Shops]] ===== Caveats that span types ===== * There is **no** ''redit'' / ''oedit'' / ''medit'' / ''zedit'' — use the ''@'' workspace verbs. * One open draft of each workspace kind; ''@new'' while a draft exists errors until ''@save'' or ''@clear''. * Description VIDs cannot be destroyed while still referenced by an item/npc prototype. * ''create'' is stricter than ''load''; ranges and ''maximum == 1'' rules differ — read the echoes. * Room exit targets must exist and lie in the zone VID range of the room being edited. * ''@wrap'' reformats long text fields after you write them. * Builders are expected to be immortal with ranges assigned; special-case ''creator()'' sessions exist for named exceptions only. * After scripting a prototype, attach the proc with ''@room proc'', ''@item proc'', or ''@npc proc'' — see [[immortal:scriptlaw|Script Law]]. ===== Related ===== * [[immortal:scriptlaw|Script Law]] — SpecProc / Beanshell * [[nilgiri:codelaw|Code Law]] — codebase philosophy * [[player:gamelaw|Game Law]] — player-facing game systems