#ROOMS 控制的是區域中的房間設計,包括地形、出口和特殊設計等在內。本段最後以 S 結尾。

#ROOMS
{
#<vnum:number>
<name:string>
<description:string>
<area:number> <room-flags:number> <sector-type:number>
{
D <door:number>
<description:string>
<keywords:string>
<locks:number> <key:number> <to_room:number>
}
{
E
<keywords:string>
<description:string>
}
{
L
<limit:number>
}
{
A
<prob:number> <restriction:number> <questvar:number> \
<value:number>
<trigger:string>
<acceptor:string>
<action:string>
<argument:string>
<description:string>
}
{
T
<prob:number> <level:number> <spell:string>
<description:string>
}
S
}
#0

基本資料

<name:string> 英文模式下看到的房間名稱,以及 exit 看到的出口名稱
<description:string> 英文模式下看到的房間敘述
<area:number> 未使用的欄位,填 0 即可
<room-flags:number> 請參考 room-flags 對照表
<sector-type:number> 地形,請參考 sector-type 對照表

D 宣告

<door:number> 出口的方向,請參考通路對照表
<description:string> 未使用的欄位
<keywords:string> 未使用的欄位
<locks:number> 出口的種類,請參考通路對照表
<key:number> 鑰匙的 vnum,若無則填 -1
<to_room:number> 通往哪個房間

D 宣告設定的是房間的對外通路。通路不一定是「門」,如果是門的話,要注意的是 #ROOMS 只是宣告門的存在(這裡有一扇門),至於門的實際狀態(門是開著?關著?鎖著?)則需要寫在 #RESETS 的 D 指令

E 宣告

E 宣告用來設計房間內的附加描述。最常用的例子就是房間的中文敘述:

E
cname~
廢墟~
E
cdesc~
這裡滿目瘡痍,渺無人煙,看來已經荒廢多年。
殘垣斷壁中,依稀可見戰火肆虐的痕跡。遙遠的東北方有一座雪山。
~

其他常見的 look note, look sign 等等也是一樣的原理:

E
sign~
- Welcome to the Forts of Adderly -
The Gate closes during 10:00 pm to 5:00 am.
城門關閉時間:每晚十時至翌晨五時
~

L 宣告

<limit:number> 人數上限

L 宣告請勿和 room-flags 的 PRIVATE 或 SOLITARY 混用,以免造成混亂。L 宣告僅能限制玩家走入已達上限的房間,並不能阻止玩家直接登入該房間。「人數」包括怪物,不含座騎。

A 宣告

<prob:number> 啟動機率
<restriction:number> 請參考 quest restriction 對照表,無限制請填 0
<questvar:number> 啟動者需完成之 quest variable,無限制請填 0
<value:number> questvar 必須被設定成此值才能啟動,無限制請填 0
<trigger:string> 輸入之指令,不得為系統指令
<acceptor:string> 上述指令的受詞
<action:string> 啟動後會執行的動作
<argument:string> 給 action 所使用之參數
<description:string> 動作時要顯示給玩家的訊息

A 宣告可以用來作各種動作,如按鈕、鑽洞等。同一個房間可以寫很多段的 A 宣告,但不能是同樣的一組 tirgger 和 acceptor(trigger 相同但 acceptor 不同則無妨)。action 和 argument 的寫法如下表:

<action> <argument>
cast <spell-name> <level> <percent>
goto <room-vnum>
qset <questvar> <value>
null <command>
roomecho <message-for-mob>
cast 的範例

A
60 4|1024 10200 2
push~
button~
cast~
poison 30 100~
Strange gas blows from the wall and you smell it.~

當玩家 push button 時,有 60% 的機率會被施以等級 30 的 poison(施法機率 100%),並看到最末行之訊息。這個動作對女性或 mage 不產生作用,同時她的 questvar 10200 必須被設為 2 才會啟動。

goto 的範例

A
100 0 0 0
enter~
well~
goto~
3700~
You enter the well.~

當玩家 enter well 時,有100% 的機率會被傳送至房間 3700。所有的玩家都可以啟動。不需要完成任何 quest 動作。

qset 的範例

A
100 0 0 0
read~
book~
qset~
1000 1~
A strange feeling emerges when you read the book.~

當玩家 read book 時,會將他的 quest variable 1000 的值設為 1。

null 的範例

A
100 8|128 0 0
climb~
ladder~
null~
sleep~
You climb the ladder and feel very tired.~

當玩家 climb ladder 時會自動做 sleep 的動作並看到訊息。這個動作對 align 是 good,或是 DM 的玩家無效。

roomecho 的範例

A
100 0 0 0
pull~
bar~
roomecho~
*Someone pulled the bar*~
~

當玩家 pull bar 時,會對同房間的怪物顯示字串。A 宣告中如以 roomecho 配合 act_prog,可以做出更細膩的機關,例如在執行 room action 後檢查 quest value 並 oload 物品等。

T 宣告

<prob:number> 成功機率
<level:number> 法術等級
<spell:string> 法術名稱
<description:string> 動作時要顯示給玩家的訊息

T 宣告用來設計陷阱。你可以利用這個功能來製造陷阱、吸法力、吸生命的房間。當然也可以做成回復區,如大草原的溫泉,但請盡量先設計傷害玩家的房間。

範例

T
80 15 magic~
Darts of magic missiles shoots at you!!
~

在本房間內有 80% 的機會被施展等級 15 的 magic missile,並看到訊息。