chashi.c

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

C
134
字号
// Room: /d/tangmen/chashi.c

#include <ansi.h>
inherit ROOM;

void init();
int do_tap(string);
int do_sit(string);
int do_jump(string);
void delete_served(object);

void create()
{
	set("short", "茶室");
	set("long", @LONG
    这是唐门待客的茶室。满屋茶香、果香四溢,茶、果都是唐门“百果山庄”自
产的精品。室内摆设很雅致,有几张精致的檀香木桌(table),以及几把竹椅(chair)四
面是檀香雕花窗(window),可以望见窗外的花园。
LONG
	);

	set("exits", ([
		"north" : __DIR__ "kefang",
		"southeast" : __DIR__ "huayuan9",
	]));
	
    set("item_desc", ([
	    "table" : "一张精致的檀香木桌,上面放着水果盘和饮茶器具。\n",
	    "chair" : "一只青竹打制的靠椅,躺上去摇摇晃晃,非常惬意!\n",
	    "window" : "可以看得见大片繁茂的花丛,五颜六色,很是喜人。\n",
	]));
	                                

	set("objects",([
		__DIR__"npc/tangjing" : 1,
		__DIR__"obj/shuimitao" : 2,
		__DIR__"obj/tea" : 1,
		__DIR__"obj/dawancha" : 1,
	]));
	
	set("no_fight", 1);
	
	setup();
}

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

int do_tap(string arg)
{

	object me;
	object jing;

	if (!arg || (arg != "desk" && arg != "table"))
	{
		return notify_fail("你要敲什么?\n");	
	}
		
	me = this_player();	
	if( !objectp(jing = present("tang jing", 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说道:刚给你上过茶你接着就要,"+
				"你不累我还觉得累呢!\n", me);
        return notify_fail("");
    }

	message_vision("$N端坐在桌前,轻轻扣了下桌面,唐晶莞尔一笑,过来招呼。\n", me);
	
	jing->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("tea", this_player())
	        || present("shuimitao", this_player()) ) 
	   && objectp(present("jing", environment(me))) )
	switch ( random(2) ) 
	{
	case 0: 
	 return notify_fail
		("唐晶对着$N用手指刮着自己的小脸蛋:吃饱喝足还要拿,羞!羞!羞!\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 + =
减小字号Ctrl + -
显示快捷键?