#RESETS 控制的是區域重設時的各項初始值,包括 reboot 後的初始狀態和每次的 reborn。#RESETS 的格式全為單行,每個指令皆有四組 value(G 指令和 R 指令除外),行末可加註解。本段最後以 S 結尾。

#RESETS
{
* <comment:to_eol>
}
{
M <:number> <mob-vnum:number> <limit:number> \
<room-vnum:number> <comment:to_eol>
}
{
O <:number> <obj-vnum:number> <:number> <room-vnum:number> \
<comment:to_eol>
}
{
P <:number> <obj-vnum:number> <:number> <obj-vnum:number> \
<comment:to_eol>
}
{
G <:number> <obj-vnum:number> <:number> <comment:to_eol>
}
{
E <:number> <obj-vnum:number> <:number> <wear_loc:number> \
<comment:to_eol>
}
{
D <:number> <room-vnum:number> <door:number> \
<state:number> <comment:to_eol>
}
{
R <:number> <room-vnum:number> <last-door:number> \
<comment:to_eol>
}
S

M command

M 生產怪物
<:number> 無意義,填 0 即可
<mob-vnum:number> 怪物的 vnum
<limit:number> reborn 上限
<room-vnum:number> 要放在哪個房間
<comment:to_eol> 註解
範例

M 0 5009 5 5028 * large puppet 在 room #5028 生產一隻 mob #5009 (large puppet),最多五隻

上面的寫法,很容易被誤會成是「一次生出五隻 large puppet」,這是不正確的。M 指令的每一行都只宣告一隻 mob。區域重設時,如果該怪物「未達上限」,就會再生一隻出來,直到最終達到上限為止。也就是說,如果你需要一次生出五隻怪物,就需要寫五行的 M 指令才行。另外要注意的是,系統會依寫作的先後順序讀取檔案,亦即寫在前面的怪物會比寫在後面的怪物「早出生」。如果你需要利用怪物作 reset_prog 的各種檢查,請記得把它寫在最前面。

O command

O 生產物品
<:number> 無意義,填 0 即可
<obj-vnum:number> 物品的 vnum
<:number> 無意義,填 0 即可
<room-vnum:number> 要放在哪個房間
<comment:to_eol> 註解
範例

O 0 3010 0 3700 * donation pit 在 room #3700 生產一個 object #3010 (donation pit)

O 指令生產的是「地上的物品」。房間內若已有同樣的物品,或區域內有玩家時,系統便不會執行此指令。「怪物穿在身上的物品」請見 E 指令,「怪物拿在身上的物品」請見 G 指令,「容器內的物品」請見 P 指令。

P command

P 將物品並置入容器
<:number> 無意義,填 0 即可
<obj-vnum:number> 物品的 vnum
<:number> 無意義,填 0 即可
<obj-vnum:number> 要放在哪個容器
<comment:to_eol> 註解
範例

P 0 3138 0 3010 * water skin in pit在 #3010 (pit) 中置入 #3138 (water skin)

P 指令會將物品置入「最新鮮的容器」,因此請勿重覆使用相同 vnum 的容器,以避免放錯地方。當指定的容器不存在,或該容器被人撿走,或容器內已有該物品時,系統便不會執行此指令。另外,由於容器的容量會扣除其重量,當你設計容器時,請記得讓它的容量大於重量,不然會什麼都放不進去。

G command

G 將物品交給怪物
<:number> 無意義,填 0 即可
<obj-vnum:number> 物品的 vnum
<:number> 無意義,填 0 即可
<comment:to_eol> 註解
範例

M 0 5009 5 5028 * large puppet 這裡有一隻 large puppet

G 0 3138 0 * water skin把 #3138 (water skin) 拿給它

G 指令只有三組 value,指令本身不設定對象,系統會將物品放在前一個 M 指令所生產的怪物身上,如上例所示。若 M 指令未執行(如已達上限),G 指令也不會被執行。

E command

E 將物品裝備在身上
<:number> 無意義,填 0 即可
<obj-vnum:number> 物品的 vnum
<:number> 無意義,填 0 即可
<wear_loc:number> 要穿在哪裡,請參考 wear location 對照表
<comment:to_eol> 註解
範例

M 0 5009 5 5028 * large puppet 這裡有一隻 large puppet

E 0 5000 0 5 * puppet suit把 #5000 (puppet suit) 穿在 body 上

和 G 指令類似,E 指令也是將物品裝備在前一個 M 指令所生產的怪物身上。M 指令若未執行,E 指令也不會被執行。若未另外定義,E 指令產生的的裝備,其等級等於怪物本身的等級減二。

D command

D 這是一扇門
<:number> 無意義,填 0 即可
<room-vnum:number> 房間的 vnum
<door:number> 哪個方向的門,請參考 door state 對照表
<state:number> 門的狀態,請參考 door state 對照表
<comment:to_eol> 註解
範例

D 0 2601 1 0向東通往 #2061 敞開的門

D 0 10890 3 2向西通往 #10890 鎖住的門

D 指令控制的是門的初始狀態。要注意的是「可以關的門」和「每次 reborn 就會關上的門」是兩件事。你需要先在 #ROOMS 裡的 D 宣告設計一扇門,再用 #RESETS 的 D 指令決定它的初始狀態。

R command

R 這是一個隨機的出口
<:number> 無意義,填 0 即可
<room-vnum:number> 房間的 vnum
<last-door:number> 可供變換的方向
<comment:to_eol> 註解
範例

* 假設 room #10890 有兩個出口這只是在表演怎麼做單純的註解

R 0 10890 4對 room #10890 用四個方向去作兩個出口的變化

用數學的方式來說明的話,設房間的原始出口數為 x,<last-door:number> 為 y,則 R 指令的效果,相當於機率中的 y 取 x。但 <last-door:number> 的效果比較複雜,請見下表:

0 對 0 個方向進行變換
1 對 1 個方向進行變換
2 對 2 個方向進行變換 北、東
3 對 3 個方向進行變換 北、東、南
4 對 4 個方向進行變換 北、東、南、西
5 對 5 個方向進行變換 北、東、南、西、上
6 對 6 個方向進行變換 北、東、南、西、上、下

也就是說,「可以變換哪些方向」是固定的。除此之外,「原始的出口方向」也必須包含在「被拿來做變化的方向」之中,才會產生變化。

在上面的例子中,假設 #10890 的原始出口是上下的話,由於 4 並不包括上下在內,因此 #10890 的出口也不會產生變化。假設 #10890 的原始出口是東下的話,由於 4 的範圍涵蓋了東方在內,原本向東的出口就會在北東西南四個方向之中任選一個作變化,而未被包括在 4 之內的向下出口就會維持原狀不變。同理,假設 #10890 的原始出口是南北的話,經過 R 指令的變化後,#10890 就會變成在北東西南之中任選兩個出口。

以實用性來說,0 和 1 的實質意義不大(0 是不作任何變化,1 則是一律變成北方),相對來說 4 和 6 可以做出二次元和三次元的迷宮,效果也比較好掌握。R 指令和 D 指令的混用,可能會導致難以預期的效果,請謹慎使用。