⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chashi.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// By Marz 04/01/96

#include <ansi.h>
inherit ROOM;

void init();
int do_tap(string arg);
int do_sit(string arg);
int do_jump(string arg);
void delete_served(object me);
int valid_leave(object me, string dir);

void create()
{
        set("short", "茶室");
        set("long", @LONG
满屋的果香和茶香,沁人心脾。山西面的茶农们因感激武当弟子保护他们免受
土匪的骚乱和官府的苛捐杂税,每年开春采茶季节,总要送来上好的茶叶。这茶叶
由少女在三更至日出间采摘,并放在怀中用体温焙制,得天地精华,汇处子体香,
故名"女儿香",据说喝了能提精补神,十分珍贵。屋里四周得体地摆着些桌子(table)
和椅子(chair),坐满了武当的男女弟子。南边有扇窗子(window),景色宜人。
LONG );
        set("exits", ([
                "north" : __DIR__"donglang2",
        ]));
        set("item_desc", ([
            "table" : "一张典雅的桃木小桌,上面放着水果盘和饮茶器具。\n",
            "chair" : "一只青竹打制的靠椅,躺上去摇摇晃晃,好舒服耶!\n",
            "window" : "可以看得见东南远处桃花一片,拟似彩云盖地,让人神往。窗子下面就是广场.\n",
        ]));
        set("objects",([
                __DIR__"npc/xiaocui" : 1,
                __DIR__"obj/mitao" : 2,
                __DIR__"obj/dawancha" : 1,
        ]));
//        set("no_clean_up", 0);
        set("no_fight", 1);
        setup();
}

void init()
{
        add_action("do_jump", "jump");
        add_action("do_tap", "tap");
        add_action("do_tap", "knock");
        add_action("do_sit", "sit");
}

int do_jump(string arg)
{

        object me = this_player();
        int dex = this_player()->query_dex();
        object ob;

    if (arg != "window" && arg != "out") return command("jump "+arg);

        me->delete_temp("marks/sit");
        me->delete_temp("tea_cup");

    message_vision("$N"嗖"地一声跳出窗户。\n", me);
    if ((dex <= 23)&&(random(3)<2) || (dex > 23)&&(dex <= 26)&&random(2) )
    {
        message_vision("结果"啪"地一声$N在下面的广场上摔了个结结实实。\n", me);
            if ( objectp(ob=present("mi tao", this_player())) )
            {
                message_vision("水蜜桃砸烂了,溅了$N一屁股桃汁。\n", me);
                destruct(ob);
                }
            if ( objectp(ob=present("xiang cha", this_player())) )
            {
                message_vision("怀里的香茶翻了,湿了$N一裤子茶水。\n", me);
                destruct(ob);
                }

                me->receive_damage("qi", 60, me);
                me->receive_wound("qi", 40, me);
                if (me->query_skill("dodge",1)<101)
                    me->improve_skill("dodge", random(3));
    } else if (dex <= 26)
    {
        message_vision("$N摇摇晃晃地落在下面的广场上,差点摔倒!\n", me);
                if (me->query_skill("dodge",1)<101)
                    me->improve_skill("dodge", random(2));
    } else
    {
        message_vision("$N提一口气,姿态潇洒地飘落在下面广场上!\n", me);
    }

    me->move(__DIR__"guangchang");

    return 1;
}

int do_tap(string arg)
{

        object me;
        object cui;

        if (!arg || (arg != "desk" && arg != "table"))
        {
                return notify_fail("你要敲什么?\n");
        }

        me = this_player();
        if( !objectp(cui = present("xiao cui", environment(me))) )
                return notify_fail("你敲了敲桌子,却还是没人理你。你突然感觉自己很无聊。\n");

        if( !me->query_temp("marks/sit") )
                return notify_fail("你敲了敲桌子,却没想到有对年轻人从桌底下钻出来,愕然地看着你,"
                        +"\n你突然感觉自己很愚蠢。\n");

    if( me->query_temp("marks/served") )
    {
        message_vision("小翠不耐烦地对$N说道:刚给你上过茶你接着就要,"+
                                "你是个Robot我可不是啊!\n", me);
        return notify_fail("");
    }

        message_vision("$N端坐在桌前,轻轻扣了下桌面,小翠莞尔一笑,过来招呼。\n", me);

        cui->serve_tea(me) ;

    me->set_temp("marks/served", 1);
//  remove_call_out("delete_served");
    call_out("delete_served", 10, me);

        return 1;
}


void delete_served(object me)
{
        if ( objectp(me) ) me->delete_temp("marks/served");
}


int do_sit(string arg)
{

        if ( !arg || (arg != "chair") )
                return notify_fail("你要坐什么上面?\n");

        if (this_player()->query_temp("marks/sit"))
                return notify_fail("你已经有了个座位了。\n");

        this_player()->set_temp("marks/sit", 1);
        return notify_fail("你找了个空位座下,等着上茶。\n");
}


int valid_leave(object me, string dir)
{

        if (  (dir == "north")
           && ( present("xiang cha", this_player())
                || present("mi tao", this_player()) )
           && objectp(present("xiao cui", environment(me))) )
        switch ( random(2) )
        {
        case 0:
         return notify_fail
                ("小翠把嘴一撇:吃饱了喝足了还不够,临走怀里还揣上一些,小女子也替您脸红呢!\n");
         break;
        case 1:
         message_vision("小翠对$N道了个万福:张真人吩咐,饮食不得带出茶房。", me);
         return notify_fail("\n");
         break;
        }

        me->delete_temp("marks/sit");
        me->delete_temp("tea_cup");
        return ::valid_leave(me, dir);
}

⌨️ 快捷键说明

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