emei.c

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

C
127
字号
// emei.c 事件:峨嵋金顶日出

#include <ansi.h>

void create() { seteuid(getuid()); }

// 开始创建事件
void create_event()
{
        // 明天5点钟日出
        EVENT_D->at_after(0, 0, 1, -5);
}

// 奖励
private void do_bonus(object room)
{
        object *obs;
        object ob;
        string msg;
        int lvl;
        int r;

        obs = all_inventory(room);
        obs = filter_array(obs, (: playerp($1) && living($1) :));
        if (sizeof(obs) < 1)
                return;

        r = random(365);
        if (r == 0)
        {
                msg = HIR "只见太阳一点一点的升了起来,倏的眼前一亮,只见一道光晕出现在云际,\n"
                          "朦朦胧胧似乎有一个人影立在当中,令人叹羡不已。\n" NOR;
                msg += HIG "你冥冥中仿佛得到了佛主的指示,登时有茅塞顿开的感觉。\n" NOR;
                obs->add("potential", 1000);

                // 佛门弟子增加佛学技能
                foreach (ob in obs)
                {
                        if (ob->query("class") != "bonze")
                                continue;

                        if ((lvl = ob->query_skill("buddhism", 1)) >= 50)
                                ob->set_skill("buddhism", lvl + 1);

                        if ((lvl = ob->query_skill("mahayana", 1)) >= 50)
                                ob->set_skill("mahayana", lvl + 1);

                        if ((lvl = ob->query_skill("lamaism", 1)) >= 50)
                                ob->set_skill("lamaism", lvl + 1);
                }

                message("vision", msg, obs);

                // 记录事件
                MAP_D->record_rumor(obs, "峨嵋佛光", this_object());

                CHANNEL_D->do_channel(this_object(), "rumor",
                                      "听说峨嵋金顶佛光出现,令人叹为观止,赞叹不已。");
        } else
        if (r < 250)
        {
                switch (random(3))
                {
                case 0:
                        msg = HIY "一轮红日跃出天际,映射得层峦叠翠分外妖娆,茫茫云海,尽披红妆。\n" NOR;
                        break;
                case 1:
                        msg = HIY "忽然间一轮红日跃了上来,天地之间登时辉煌无比,只射得你眼睛都无法睁开。\n" NOR;
                        break;
                default:
                        msg = HIY "蓦然眼前金光四射,一轮红日冉冉升起。\n" NOR;
                        break;
                }
                msg += HIG "你心头闪过一道灵光,似乎受到了某种启迪。\n" NOR;
                obs->improve_potential(10 + random(10));

                message("vision", msg, obs);

                // 记录事件
                MAP_D->record_rumor(obs, "峨嵋日出", this_object());
        } else
        {
                switch (random(3))
                {
                case 0:
                        msg = WHT "眼见太阳朦朦胧胧的就要升上来,却见一片乌云飘过,遮了个严严实实。\n" NOR;
                        break;
                case 1:
                        msg = WHT "你眼前越来越亮,但是雾气好重,让你什么都看不清楚。\n" NOR;
                        break;
                default:
                        msg = WHT "天边渐渐的发白,但是一层一层的云气将日头压得光芒一丝都看不见。\n" NOR;
                        break;
                }
                msg += HIG "你心中连叹:“太可惜了!”\n" NOR;

                message("vision", msg, obs);
        }
}

// 事件触发
void trigger_event()
{
        object room;

        // 峨嵋金顶日出
        if (objectp(room = find_object("/d/emei/jinding")))
                do_bonus(room);

        create_event();
}

// 描述
string query_detail(string topic)
{
        switch (topic)
        {
        case "峨嵋佛光":
                return "峨嵋佛光是峨嵋山独特的景观,你能在远处天边的光晕中"
                       "看到你自己的身影,非常的奇妙。\n";

        case "峨嵋日出":
                return "在峨嵋山上欣赏日出令人心旷神怡,格外领略峨嵋山的隽"
                       "秀险奇。\n";
        }
}

⌨️ 快捷键说明

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