Show pageOld revisionsBacklinksBack to top You've loaded an old revision of the document! If you save it, you will create a new version with this data. Media Files ====== Creation Law — Zones ====== You know classic Diku ''zedit'' / zone files. Neo has **no** ''zedit''. Zones are workspace prototypes edited with ''@zone …'', saved with ''@save zone'', then exercised live with the immortal ''zone reset'' / ''zone clear'' commands. Hub: [[creationlaw|Creation Law]]. Rooms/mobs/items you place must already exist ([[creationrooms|Rooms]], [[creationmobiles|Mobiles]], [[creationobjects|Objects]]). Zones have **no** SpecProc table of their own — see [[scriptzones|Script Law — Zones]]. ===== What a zone owns ===== From server docs (''ZONES.md'') and the workspace editor: a zone owns **lifespan** (seconds between automatic resets), a **reset command list** (Diku-style loads: mobiles, items, doors, equip, …), weather affiliation, and related flags/attrs. Setting lifespan schedules a repeating ''ZoneCmdEvent''; when it fires, ''zone.reset()'' runs the command list (unless global/zone noreset debug flags are on). Why you care as a new creator: building rooms and mobiles is not enough — **without zone reset lines (and a reset), the world stays empty.** ===== Step-by-step: first zone ===== **1. Open a zone draft** (VID is the zone top you are allowed to use in-range): <code mud> > @new zone 1299 Okay. > </code> If a zone draft is already open, ''@examine zone'' then ''@save'' or ''@clear''. **2. Name and text** (writers — why: immortals and indexes need a human label): <code mud> > @zone name The Quiet Alcove > @zone author > @zone description > </code> **3. Lifespan** (why: how often the area repops). Value is seconds; the event period is that many milliseconds under the hood. <code mud> > @zone lifespan 900 Okay. > </code> **4. Optional attrs/flags:** <code mud> > @zone attrs zonetype … > @zone flags zoneflags … > </code> **5. Reset lines — place content** (rooms 1200 and mobile/item prototypes must already be saved): <code mud> > @zone npc 1210 1200 Okay. > @zone item 3100 1200 Okay. > @zone list > @examine zone > @save zone Okay. > </code> **6. Make it live:** <code mud> > zone reset Okay. > </code> Omit the VID to reset the zone of your **current room**, or pass a top: ''zone reset 1299''. **''@save zone'' alone does not repop the rooms** — you must ''zone reset'' (or wait for lifespan) to see mobiles/items appear. That is the #1 zone gotcha. ===== ''@zone'' subcommands ===== Include: ''attrs'', ''author'', ''clear'', ''description'', ''delete'', ''door'', ''equip'', ''flags'', ''follow'', ''give'', ''item'', ''levels'', ''list'', ''lifespan'', ''map'', ''max'', ''name'', ''npc'', ''place'', ''put'', ''rndmob'', ''rndobj'', ''ride''. Teaching notes on the ones you will use first: * ''npc <mob-vid> <room-vid>'' — load mobile into room on reset * ''item <item-vid> <room-vid>'' — load item into room * ''equip <item-vid> <wear-loc>'' — equip onto the mobile most recently implied by reset order (place ''npc'' before ''equip'') * ''give <item-vid>'' — give into inventory of that mobile context * ''put …'' / ''follow'' / ''ride'' / ''door'' — container, pet, mount, door-state resets * ''list'' — show the command list while editing * ''delete'' / ''clear'' — remove list entries or clear editor state (workspace ''clear'' vs immortal ''zone clear'' are different — see below) ===== Equip / give ordering walkthrough ===== <code mud> > @load zone 4599 Okay. > @zone npc 4503 4500 Okay. > @zone equip 4502 wield Okay. > @zone give 3101 Okay. > @zone list > @examine zone > @save zone Okay. > zone reset Okay. > </code> If the mob loads without the weapon: check list order, confirm item 4502 exists and is wieldable ([[creationitems|Items]]), then reset again. ===== Live zone control (not the workspace editor) ===== <code mud> > zone reset Okay. > zone clear 1299 Okay. > </code> ''zone [clear|reset] (<zone-top>)'' — immortal utilities. ''reset'' runs the stored command list; ''clear'' clears the live zone contents (per immortal handler). Do not confuse ''zone clear'' with ''@zone clear'' inside the workspace draft. ===== ''@rezone'' and ''approve'' ===== ''@rezone <old-top> <new-top>'' remaps a zone top within your range (implementor/creator tooling) when you need to slide an area to a new top VID. ''approve zone <vid>'' prompts an immortal confirmation to mark a zone approved — use when your build is ready for wider play. <code mud> > approve zone 1299 > </code> ===== Persistence reminder ===== Zone definitions and reset lists live in the **world** H2 database. Workspace drafts are memory-only until ''@save zone''. Automatic world saves run on a long real-time cadence (''SaveEvent''); shutdown also saves. There is no classic "asave" — ''@save zone'' is the commit. ===== Zones and scripting ===== A zone does **not** carry a SpecProc name. Scripted behavior lives on the rooms, items, and mobiles the zone places. Create those procs, attach them on the prototypes, then let zone resets load the prototypes — [[scriptzones|Script zones]], [[scriptrooms|Script rooms]], [[scriptmobiles|Script mobiles]], [[scriptobjects|Script objects]]. ===== Common mistakes ===== * Editing resets but never ''zone reset'' * ''@zone npc'' / ''item'' pointing at VIDs you have not ''@save''d yet * ''equip'' before ''npc'' in the list * Confusing ''@clear'' / ''@zone clear'' (workspace) with ''zone clear'' (live) * Expecting a zone-level script attachment (does not exist) ===== Related ===== * [[creationrooms|Rooms]] / [[creationmobiles|Mobiles]] / [[creationobjects|Objects]] — build before you place * [[scriptzones|Script Law — Zones]] — why scripts are not on zones * [[creationlaw|Creation Law]] — hub SavePreviewCancel Edit summary Note: By editing this page you agree to license your content under the following license: CC Attribution-Share Alike 4.0 International creationzones.1790178408.txt.gz Last modified: 2026/09/23 15:46(external edit)