#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,並看到訊息。