MOBcommand 是怪物專用的指令。搭配適當的 trigger 和 if check 就能寫出各種智慧型的怪物和特殊效果。

基本指令

mpat <dest> <command> 在某處做某事
mpgoto <dest> 跑去某處
mptransfer <victim> <dest> 將某人傳送至某處,無地點則為自己這間
mpforce <victim> <command> 強迫某人做某事
mpmload <vnum> load mobiles
mpoload <vnum> <level> load objects
mpjunk <object> 銷毀拿著或穿著的某樣物品,可填 all
mppurge 清除房間內的一切物品(不可加任何參數)
mppurge <victim> 清除該 mob
mpkill <victim> 開戰
mphit <victim> 物理攻擊
mpcast <spell> <victim> 施法
mpfull 補滿生命點數
mpcure 移除 blindness, poison 等負面效果
mprefresh 補滿移動點數

MPECHOs

基本上都是送出字串。行首不支援空白字元,如有排版需要,請用全形空白。除 MPASOUND 以外,玩家都必須是醒著才會看到訊息。

mpecho <string> 在所在房間送出字串
mprecho <room1> <room2> <string> 對某個區間的怪物送出字串,r1 < r2
mpechoarea <string> 對整個區域送出字串
mpechoareamob <string> 對整個區域的怪物送出字串
mpechoaround <victim> <string> 對特定對象的鄰近房間送出字串
mpasound <string> 對鄰近的房間送出字串
mpechoat <victim> <string> 對同房間的特定對象送出字串
mpcecho <string> MPECHO 的中文版
mpcechoaround <victim> <string> MPECHOAREAOUND 的中文版
mpcechoat <victim> <string> MPECHOAT 的中文版
mpeecho <string> MPECHO 的英文版
mpeechoaround <victim> <string> MPECHOAREAOUND 的英文版
mpeechoat <victim> <string> MPECHOAT 的英文版

MPMSET

改變目標的某項欄位的資料,或改變其某個或數個 <flag> 之狀態。

語法

mpmset <victim> <field> <value>
mpmset <victim> <string> <value>
mpmset <victim> affect <flag1> <flag2> ... <flagN>
mpmset <victim> act <flag1> <flag2> ... <flagN>

str int wis dex con 力量 智商 智慧 反應 體質
sex class level fame 性別 職業 等級 頭銜
hp mana move 生命點數 法力點數 移動點數
sp dr hr ac svs 法術效應 傷害點數 命中點數 防禦力 魔法防禦力(以上修改皆無作用)
gold practice align age 財產 學習點數 陣營 年齡
thirst full drunk 口渴度 饑餓度 酒醉度(以上皆為數值)
name #MOBILES 的 <keywords:string>
short #MOBILES 的 <short-description:string>
long #MOBILES 的 <long-description:string>
description #MOBILES 的 <description:string>
spec 參見 #SPECIALS 的 spec_*。值為文字。
affect 參見 affected-flags 對照表。值為文字。
act 參見 act-flags 對照表。值為文字。
範例

if isaffected($i) & 32768判別自己是否受到 sneak 影響

  MPMSET self affect sneak若有則關閉 sneak
else
  MPMSET self affect sneak若無則開啟 sneak
endif
~ 結束本段

MPOSET

改變物品的某項欄位的資料,或改變其某個或數個 <flag> 之狀態。語法同 MPMSET。

語法

mposet <object> <field> <value>
mposet <object> extra <flag1> <flag2> ... <flagN>
mposet <object> wear <flag1> <flag2> ... <flagN>

value0 value1 value2 value3 參見 item-type 對照表
level 物品等級
weight #OBJECTS 的 <weight:number>
timer 物品的時效
extra 參見 extra-flags 對照表
wear 參見 wear-flags 對照表

MPRSET

改變房間的某項欄位的資料,或改變其某個或數個 <flag> 之狀態。語法同 MPMSET。怪物只能對自己所在的房間進行 MPRSET。

語法

mprset <room-vnum> <field> <value>
mprset <room-vnum> flags <flag1> <flag2> ... <flagN>

flags 參見 room-flags 對照表
sector 參見 sector-type 對照表
limit #ROOMS 的 L 宣告,人數上限

任務相關

這些是負責掌控任務流程的指令。qset 是 questsetval 的簡寫,用來設定某個變數的值。questmark 則是用以設定在 #QUESTS 中定義的任務進度。詳細的說明請見 #QUESTS

語法

questsetval <victim> <quest-var> <value>
qset <victim> <quest-var> <value>
qadd <victim> <quest-var> <value>
questmark <victim> <quest-number> <quest-index>

直接傷害

MPDAMAGE 可對目標的 hp, mana, mv 進行直接傷害。在進行對生命值的直接傷害時,我們可以在 <attack-msg> 設定特殊的攻擊訊息,如 Kappy's kiss injures you。這不是必填欄位,但可以讓你的怪物更有特色。nomsg 則是讓玩家不會看到被攻擊的訊息,適合拿來作「非戰鬥類型」的傷害,像是從空中摔下來,或是被野狗咬傷。MPDAMAGERANGE 的用法和 MPDAMAGE 一樣,差別在它是以百分比計算,且不支援 <attack-msg> 和 nomsg。

語法

mpdamage <type> <min> <max> <victim>
mpdamage hp <min> <max> <victim> <attack-msg>
mpdamage hp <mix> <max> <victim> nomsg
mpdamagerange <type> <number> <victim>

改變房間敘述

你可以利用這個指令來改變房間的敘述,如果要加在後面的話用加號,要減掉一行就用減號,和 DR 內的 description 指令用法差不多。

語法

mpchroomdesc <chinese/english> + <description>
mpchroomdesc <chinese/english> -

關閉或開啟通路

你可以利用這個指令改變既有的通路,但請自己注意 #RESETS 的設計。

語法

mpclose_tun <int:exit_dir>
mpcreate_tun <int:exit_dir> <int:to_room> <int:exit_flags> <int:key>

使用 MPCREATE_TUN 時要注意,如果該方向已經有通路了,要先 MPCLOSE_TUN 再 MPCREATE_TUN。

範例

MPCREATE_TUN 5 99 3 -1製造向下通往 #99 關上的門(3=1+2),無鑰匙

封印房間

你可以對房間進行封印,之後一般玩家就無法進入該房間,如果有人登入,就會被傳送到潘城的神殿祭壇。大神不受封印影響。

語法

mprclose <room>
mpropen <room>

特殊指令

mpgate <victim1> <victim2> 將 v1 房內的怪物全部傳至 v2 所在處
mpdispose <room1> <room2> 將屍體隨機丟棄在某個區間,r1 <= r2
mpurbancorpse <victim> 移轉其同區域內最新鮮的屍體
mphonor <victim> <value> 設定目標的榮譽值,值在正負 1000 間