quarry.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 136 行

C
136
字号
// Inherit: quarry.c 猎物// Create by Vin for Heros.cn#include <ansi.h>inherit NPC;int is_quarry(){	return 1;}void setup(){        if (this_object()->query("aves"))        {                set("limbs", ({ "头部", "身体", "左翅", "右翅",                                "爪子", "尾巴" }));                set("verbs", ({ "bite", "claw" }));        } else        {                set("limbs", ({ "头部", "身体", "腹部", "背部",                                "前脚", "后脚", "尾部" }));                set("verbs", ({ "hoof", "bite", "claw" }));        }        set("race", "野兽");        set("attitude", "aggressive");        ::setup();}void init(){        object me, ob;        ::init();        if (! interactive(me = this_player()))                return;        // 自动攻击驭兽术等级不高的玩家        if (me->query("combat_exp") > 1000000           && ! this_object()->query("no_auto_kill"))        {                remove_call_out("fight_ob");                call_out("fight_ob", 0, me);        }        remove_call_out("disappear");        call_out("disappear", 15);}void disappear(){        object ob = this_object();        // 捕猎呼出的野兽会遁之        if (living(ob) && ob->query("owner"))        {                message_vision(WHT "\n突然$N" WHT "猛地一窜,瞬间便"                               "消失得无影无踪。\n\n", ob);                destruct(ob);        }}void die(object killer){        object me, item;        int kar, exp, pot;        object ob = this_object();        int power, skill;        string msg;        if (ob->query("aves"))                message_vision(HIR "\n只见$N" HIR "扑腾了几下,从半"                               "空中坠落下来,死了。\n\n" NOR, ob);        else                message_vision(HIR "\n只听$N" HIR "嚎了几声,倒在地"                               "上扑腾了几下,死了。\n\n" NOR, ob);        if (objectp(me = killer)           || objectp(me = this_object()->query_temp("last_damage_from")))        {                // 如果为自己的猎物,则奖励之                if (random(2)==0                   && me->query("combat_exp") <= 1000000)                {                        // 根据猎物设定的参数来给予奖励        exp = 35+random(50);        pot = 25+random(30);if (pot >exp ) pot=exp-10;                  message_vision( "\n由于$N成功的杀死一个猎物,被奖励:\n"                + chinese_number(exp) + "点实战经验,\n"                + chinese_number(pot) + "点潜能,\n"                + chinese_number(1) + "点评价作为答谢。\n" , me);                me->add("combat_exp", exp);                me->add("potential", pot);                me->add("score",1);                }                skill = me->query_skill("unarmed", 1);                // 获得物品                if (ob->query("item1") && random(skill) > 30)                {                        item = new(ob->query("item1"));                        item->move(me, 1);                        msg = HIC "你仔细翻寻" + ob->name() +                              HIC "的尸体,从上面割下了一" +                              item->query("base_unit") +                              item->name() + HIC;                        // 一定几率获得高级物品                        if (ob->query("item3") && random(skill) > 100                           && random(5) > 3)                        {	                        item = new(ob->query("item3"));        	                item->move(me, 1);	                        msg += "及一" + item->query("base_unit") +                                       item->name() + HIC;                        } else                        if (ob->query("item2") && random(skill) > 60                           && random(4) > 2)                        {	                        item = new(ob->query("item2"));        	                item->move(me, 1);	                        msg += "及一" + item->query("base_unit") +                                       item->name() + HIC;                        }                        msg += "。\n\n" NOR;                        tell_object(me, msg);                }        }        destruct(ob);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?