
宠物(/std/pet.c)
----
宠物是NPC 的一种, 基本上, 它是你生活上的夥伴, 你可以要它帮你带一些物品,
可以要它跟随你或不跟随你, 你也可以驯服一些野生的 npc 来成为你的宠物,
有些宠物甚至可以当作坐骑, 可以协助你作战。
继承物件: /std/monster.c
一、宠物的额外Properties( except monster's Properties) 说明:

    1.pet_type        : 设定一字串。
                        设定宠物的 type。 一个 player同时只能拥有一只同种
                        type的宠物。
    2.following       : 设定一定值。
                        假如此 pet没有主人时,此 property 没有作用。
                        否则, 当值为 1时, 将会跟随主人移动, 值为 0时则否。
    3.mountable       : 设定一定值。
                        值为1 ,此 pet可以被骑; 值为0 ,则否。
    4.wild            : 设定一定值。
                        值为1 ,此 npc可以被当成宠物;
                        值为0 ,则为野性仍在的npc ,不可当成宠物。
    5.mounted_load    : 设定一定值。
                        所设定的值为当此pet 被骑时, 它所能负载的总重量。
                        当user 骑上此pet 时, 其总负载将等於此值减掉 user
                        本身的重量。
    6.master_necessary: 设定一定值。
                        当值为1 时, 当此 npc或pet 被驯服或骑上时将会认定
                        该 player为其主人; 当值为0 ,则该宠物将不会有主人。
    7.tactic_func     : 设定一func_name。
                        default func_name 为 call_help。
                        该func 的作用在於, 当pet 遭受攻击时, 假如 master
                        在同一房间, 没有进入战斗状态, 而且 level>5时, 则
                        master 将会加入作战帮助 pet。

二、宠物所赋予的额外指令:

    1.lead     : 引导以你为master 的宠物跟随你走。

    2.release  : 命令以你为mater 的宠物不要跟你走, 留在原地。

    3.put      : 将物品放置於已被驯服的宠物身上。

    4.get      : 将物品从以你为master 的宠物身上拿回来。

    5.unwild   : 尝试驯服尚未被驯服的 pet。

    6.mount    : 尝试骑上已被驯服的 pet。

三、宠物的基本 function:

    1.lost_master  : 将pet remove 掉。

    2.relay_message: 当接受到msg 时, 所产生的反应。除了 monster.c 的设定外,
                     pet.c 在有master 的情况下增加了几种反应。
                     (1). 主人不见时, 将会执行 lost_master。
                     (2). 主人要求 pet 跟随时,当收到主人移动的讯息时,
                          会自动跟上 。
                     (3). 当主人 quit 时, pet 将会被remove。

    3.die          : 当pet 死的时候, 将会通知主人, 并将主人身上有关宠物的
                     资料移去。

    4.set_master   : 设定pet 的master, 将主人的名字加在pet 名称前, 并将
                     pet 的资料加在master 身上。 

    5.set_mounted  : 设定 player 骑上 pet 之後, 会做的一些基本动作。


以上所有的 function 和指令都可以同名称的function 和指令覆盖过去, 若要保留
原有功能只需在同名 func 中加上    pet::func_name(mixed *arg) 即可。


                                   By Kitten 1994/9/24
