#MOBILES 負責的是怪物的設計,可以說是區域的精髓。本區以 #0 結尾。

#MOBILES
{
#<vnum:number>
<keywords:string>
<short-description:string>
<long-description:string>
<description:string>
<act-flags:number> <affected-flags:number> \
<alignment:number> S
<level:number> <hitroll:number> <armor:number> \
<hitnodice:number> d <hitsizedice:number> + \
<hitplus:number> <damnodice:number> d \
<damsizedice:number> + <damroll:number>
<gold:number> <exp:number>
<race:number> <unused:number> <sex:number>
}
#0

基本資料

<keywords:string> mob 的真名
<short-description:string> scan 時看到的怪物名字
<long-description:string> 在房間裡 look 時看到的怪物名字
<description:string> look <victim> 時看到的敘述

特殊習性

<act-flags:number> 請參考 act-flags 對照表
<affected-flags:number> 請參考 affected-flags 對照表
<alignment:number> 請參考陣營對照表

為利於維護,act-flags 和 affected-flags 請使用文字表記。砍殺 align > 900 的怪物會讓玩家成為兇手。邪惡的老闆能夠和 Dark Savant 進行交易。邪惡的 AGGRESSIVE 怪物,將不會對 Dark Savant 進行主動攻擊。

強度

<level:number> 怪物的等級
<hitroll:number> 怪物的命中點數,填 0 則為系統預設值
<armor:number> 怪物的防禦力,填 0 則為系統預設值

AC 值愈低,防禦力愈高。比較需要說明的是生命點數和傷害點數的計算方式:

a <hitnodice:number> 生命點數的擲骰次數
b <hitsizedice:number> 生命點數的骰子面數
c <hitplus:number> 生命點數的加權值
x <damnodice:number 傷害點數的擲骰次數
y <damsizedice:number> 傷害數的骰子面數
z <damroll:number> 傷害點數的加權值

adb+c 就是「擲 b 面的骰子 a 次,再加上 c」的意思。xdy+z 也是一樣的道理。擲骰次數和骰子面數若都設為 0,怪物的強度就是系統預設值,並依等級而定。也就是說,如果是 0d0+c/z 的情況,c/z 將會被自動視為 0。如果你需要做精確的控制,可以利用單面骰:

強度計算公式範例

0d0+4000x0+0=系統預設值 != 400

1d1+3991x1+399=400

這裡設定的強度數值,皆為「未裝備任何物品」的初始狀態。如果你的怪物是有穿衣服的,要注意的是,裝備的效果會再往上加乘。因此,你可以在這裡做一些調整,以避免讓怪物過於勇猛。例如,調降牠天生的防禦力或傷害點數。另外,目前無法直接設定怪物的法術效應和魔法防禦力,必須另外寫在裝備上才行。

其他資料

<gold:number> 金錢,填 0 則為系統預設值
<exp:number> 經驗值,填 0 則為系統預設值
<race:number> 請參考種族對照表
<unused:number> 未使用的欄位,填 0 即可
<sex:number> 請參考性別對照表

MOBprogram

以上設計的都只是怪物的基本骨架。要讓怪物「活」起來的話,就必須再加寫怪物專用的程式,即 MOBprogram。MOBprogram 緊接在正常的 #MOBILE 設定之後,於 <sex:number> 後另起新行。每一段程式皆需以 > 開頭,以 ~ 結尾。

你可以為同一隻怪物設計很多段不同的程式(參照 trigger type )。不論你設計了幾段程式,最後請以 | 為 MOBprogram 結尾。沒有設計 MOBprogram 的怪物則不需要加 | 符號。

沒有 MOBprogram 的範例

#10904
cityguard guard~
a cityguard~
A royal guard of Adderly is here.
~
He is a friendly soldier, also a good fighter.
~
STAY 0 900 S
17 0 0 0d0+0 0d0+0
0 0
1024 0 1

有 MOBprogram 的範例

#25102
tea farmer~
a tea farmer~
A tea farmer is working with his tea trees.
~
He is a hard working farmer.
~
STAY|UNCHARM 0 0 S
15 0 0 0d0+0 0d0+0
0 0
1024 0 1
>greet_prog 70~
if ispc($n)
   smile
   say Good day, isn't it? Would you like some tea?
endif
~
>death_prog 100~
MPJUNK all
~
|