□□□ NPC □□□

□ object carry_object(string file)

複製 NPC 身上所攜帶的東西.

□ object add_money(string type, int amount)

設定 NPC 身上所攜帶的錢幣種類及數量.

□ int accept_fight(object who)

判定 NPC 是否接受挑戰 (fight). 首先檢查 NPC 的戰鬥行為 (attitude), 
判定是否可以被圍毆. 再來判定 NPC 自身的體力, 並依 attitude 的設定決
定是否接受挑戰. 

□ int chat()

如果 NPC 有設定任何固定時間會執行的事項, 則此函數會依照 chat_chance
所設的數字亂數決定是否可以執行, 若可, 則亂數決定要執行那一項, 如果該
事項為文字字串, 則直接顯示該字串, 若為函數設定, 則呼叫並執行該函數.

□ int random_move()

內定的 NPC 逛街函數, 系統會亂數決定一個出口並試著使該 NPC 往那個方向
移動. (如果有出口的話)

□ void cast_spell(string spell)

使一個 NPC 施法. 首先確定 NPC 會施法 (檢查技能) 接下來由系統亂數決定
施法對象.
目前我測試的用法是void cast1_spell(string spell)

□ int return_home(object home)

將被綁走的 NPC 送回家, 首先系統會判定 NPC 是否處於戰鬥狀態中, 如果是
那就只好等下次了... 不然 NPC 就大搖大擺的變回去了.

[1m
[3] 注意                                     龍蝦(Tue Apr 27)
----------------------------------------------------------------------
有加入 void init() 的怪物要注意啦!!
發現大大的bug

如果你有 init() 那一定要在 init() 第一行加入 ::inti();
可以參考 goto 2 東邊的 王大發 wang

[1m 如果不加上的下場如下:
1. 不會記仇 (不會主動攻擊)
2. 因為不會主動攻擊所以 一些應該會主動攻擊的也不會打人
3. 該會follow的也不會follow

[1m 有加入init()的, 一般是 master waiter 商人 banker
以及其他的 quest NPC

[1m 有的快改, 只要加一行 ::init()

[1m 房間的 init() 和物品的 init() 也要小心檢查測試,
不過一般的room和物品應該不用加 ::init() 
除非你有 inherit 特別的東西, 如 MOBROOM... (不放心還是再提醒一遍)
[0m




####怪物基本資料####
一個怪物的基本資料有 

level 等級 影響怪物強度主要因素, 因為所有屬性不能超過lv 太多
age   年齡

race  種族 可以為 "人類" "野獸" "妖魔" 以後再增加
      種族若是"野獸", 則要設定 limbs 和 verbs 
	野獸(beast) 的verbs 有"hoof"蹬 "bite"咬 "claw"抓 "poke"啄

gender 性別: 系統根據此設定給予人稱代名詞. 可以為 "中性神" "男性" "女性" "雄性" "雌性"
	     其人稱代名詞分別為 "祂" "他" "她" 和 "牠"
	
str   	力量 與攻擊力和負重有關
dex   	命中 命中率 與 閃躲率
con   	體質 與生命力上限和生命力回覆速度有關
int   	智慧 與學習和施法有關
	(ps 屬性如果不設定, 則系統會自動照等級決定)

max_hp 	生命力最大值
max_mp 	體力最大值

exp 		經驗值
combat_exp 	戰鬥熟練度

war_score 戰功  其值為1~5點為佳.(只有戰爭時的怪物可以設定此值)

evil  陣營 (陣營值從 -999 到 999 不過一般最好設在-99 到 +99 以內)
            正的表示邪惡, 負的表示善良

skill 技能

	例如: set_skill("dodge",50);

temp_apply 戰鬥附加裝備效果 通常是指 eq 附加的暫時性效果
如
        set_temp("apply/damage", 10);	//附加傷害力
        set_temp("apply/hit", 10);	//附加命中率
        set_temp("apply/armor", 3);	//附加物理性防護力
	set_temp("apply/shield", 3);	//附加非物理性(魔法)防護力

temp_spell 戰鬥附加法術效果 指施法造成的暫時性效果.
如
        set_temp("spell/damage", 10);	//附加傷害力
        set_temp("spell/hit", 10);	//附加命中率
        set_temp("sepll/armor", 3);	//附加物理性防護力
	set_temp("spell/shield", 3);	//附加非物理性(魔法)防護力

想要讓怪物主動殺人的話 要設 set("attitude", "aggressive");
----------------------------------------------------------------------
如果 set("attitude","killer"); 那這個mob會auto kill 還會 follow 喔.


□□□ 3月23日 新增!! □□□

 talk.c 為了讓任務更有變化以及NPC更生動, 加了此一指令.
 
  以下為NPC新增函數, 對應於talk 可以做到所有動作.

 □1. talk_action [回應動作]

     若NPC有加入此函式, 則 talk 時會NPC執行此函式之動作.

     return 1 則不會出現 talk_reply訊息, 若為return 0; 則執行完action後會呼叫reply
 
 範例:(/u/l/luky/npc/passenger.c)

	 int talk_action(object me)	
	 {
	  command("smile "+me->query("id") );
 	  return 1;
 	 }

 □2.talk_reply [回應訊息]
 
      若NPC有設定此字串( set("talk_reply",<訊息>); ) 則在talk時會說出此<訊息>字串.

      字串中可以有$N(NPC名稱) $n(玩家名稱) 等等代號;

      若沒有設, 則會以NPC的態度設定來決定會應訊息, 若態度為"killer"則會開始攻擊.




// dog.c
inherit NPC;

void create()
{
        set_name("野狗", ({ "dog" }) );
        set("long", "一隻渾身髒兮兮的野狗。\n");
        set("race", "野獸");
	set("gender","雌性");   // 1999.2.28 增加此註解
        set("age", 3);
        set("level",2);
        
        set("str", 14);		// 其他不設則系統會自動產生(依照level)
        set("dex", 16);		//

        set("limbs", ({ "頭部", "身體", "前腳", "後腳", "尾巴" }) ); //受攻部位
        set("verbs", ({ "bite", "claw" }) );			     //攻擊方式
	
	set_skill("dodge",32);	//閃躲技能

        set("chat_chance", 6);
        set("chat_msg", ({
                (: this_object(), "random_move" :),	//會自己走動
                "野狗用鼻子聞了聞你的腳。\n",
                "野狗在你的腳邊挨挨擦擦的﹐想討東西吃。\n",
                "野狗對著你搖了搖尾巴。\n",
                "野狗用後腿抓了抓自己的耳朵。\n" }) );
                
        set_temp("apply/damage", 10);	//附加傷害力
        set_temp("apply/hit", 10);	//附加命中率
        set_temp("apply/armor", 3);	//附加防護力

        setup();
}

int accept_object(object who, object ob)	//可接受東西的判斷
{
        if( ob->id("bone") ) {
                set_leader(who);
                message("vision", name() + "高興地汪汪叫了起來。\n", environment());
                return 1;	//傳回1就表示可接受東西
        }
}



