xi-laifu.c

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

C
296
字号
// NPC: /d/ruzhou/npc/xi-laifu.c  办喜宴出现的喜来福老板// llm 99/07/09#include <ansi.h>inherit NPC;int ask_party();void start_party(object ob,object me);int do_start();int do_serve();void finish_party(object me,object ob);int give_money(object me,object ob);int do_kill(string arg);int do_exert(string arg);int do_steal(string arg);void create(){	set_name("喜来福",({"xi laifu","xi","laifu" }));   set("title", "迎宾楼老板");   set("age", 42);   set("gender", "男性");   set("attitude", "friendly");   set("combat_exp", 50000);   set_skill("unarmed", 100);   set_skill("dodge", 100);   set_skill("parry", 100);   set("per", 20);	set("inquiry", ([		"name": "喜来福呵呵笑道:“小可名字有点福气,姓喜名来福,就是这里的老板。\n",		"here": "喜来福摇头晃脑地说:“我们迎宾楼可是方圆几十里的名楼,办喜宴还得要来我们这里。”\n",		"宴" : (: ask_party :),		"喜宴" : (: ask_party :),		"席" : (: ask_party :),		"酒席" : (: ask_party :),		"喜酒" : (: ask_party :),		"酒宴" : (: ask_party :),		"party" : (: ask_party :),		]) );   setup();	carry_object("/clone/misc/cloth")->wear();}void init(){   object me=this_player();   ::init();	if( interactive(me) && !is_fighting() )   {		remove_call_out("greeting");		call_out("greeting", 1, me);	}   add_action("do_serve", "kaixi");   add_action("do_finish", "jieshu");   add_action("do_start", "kaishi");   add_action("do_kill", ({"kill","fight","hit","perform"}));   add_action("do_steal", "steal");   add_action("do_exert", "exert");}int greeting(object me){   if( !me || environment(me) != environment() ) return 0;   if(me->query_temp("married_party") )//新人   {   	write("喜老板对你拱手道:“喜宴布置得差不多了,等客人来齐了您问我喜宴就行了!”\n");   }   else if(!query_temp("party_finish"))//喜宴未结束,吃喜酒的人   {      write("喜老板点点头:“哟!您来吃喜酒呀!新人的礼金由我代收,交给我就行。”\n");   }	else   {   	write("喜老板一拱手:“您吃好,慢走!”\n");   }   return 1;}int accept_object(object me, object ob){   int i;	if(query_temp("party_finish"))   	return notify_fail("喜老板呵呵一笑:“您来迟了,喜宴已经结束了,您还是直接给新人吧!”\n");   if (!ob->query("money_id"))     	return notify_fail("喜老板皱了皱眉头:“如今早就不时兴送东西了,喝喜酒还是给现金的好!”\n");   if(me->query_temp("marry_patty"))   	return notify_fail("喜老板一愣,又笑道:“自己给自己送礼?也没有这样吃饱了撑着的事吧!”\n");   i = ob->value();   CHANNEL_D->do_channel(this_object(), "chat",	   sprintf("%s恭贺%s和%s新婚大喜,送上贺礼"+MONEY_D->price_str(i)+"!\n",me->name(),query("name1"),query("name2")));	add("chat_amount",1);//口水永远不干	add("money",i);//记录送来的礼金数   return 1;}int ask_party(){   object me,ob,wife;   ob=this_object();   me=this_player();   if( me->query_temp("host_of_party") )   {   	message_vision("$N对$n说:“您的喜宴不是正在开着吗?”\n", ob, me);   	return 1;   }   if( (string)me->query("gender")=="女性" )   {     message_vision("$N笑着对$n说道:“媒婆是以新郎的名义在这订酒席,还是叫你的丈夫来问吧!”\n", ob,me);     return 1;   }	if( !me->query_temp("married_party") )   {   	message_vision("$N翻了翻帐本,对$n迟疑的问道:“媒婆好象没有在我这里给您订喜筵,会不会搞错了?”\n", ob,me);   	return 1;   }   if( !objectp(wife=present(me->query("couple/couple_id"), environment(me))) )   {   	message_vision("$N对$n说:新娘子都没来,这喜宴怎么开?\n", ob,me);      return 1;   }   if( ob->query_temp("ready_to_party") )   {   	message_vision("$N对$n不好意思的说:我这正开着一席呢,要不您明儿再来吧!\n",ob,me);   	return 1;   }   if( (string)environment(ob)->query("short")!="喜福堂" )   {   	message_vision("$N对$n为难的说:“对不起,等我回店准备了再说吧!”\n",ob,me);   	return 1;   }   if( me->query_temp("ready_to_ask") )   {   	message_vision("$N对$n不耐烦的说道:“不是都说了吗?你怎么问个没完!”\n",ob,me);   	return 1;   }   me->set_temp("ready_to_ask",1);//新郎问过了的记号   ob->set_temp("ready_to_party",1);//老板开始记号   me->set_temp("host_of_party",1);//新郎的记号   me->delete_temp("married_party");   call_out("start_party",1,ob,me);}void start_party(object ob,object me){   command("chat* "+name()+"一拱手道:“良宵一刻值千金,酒不醉人人自醉,今日迎宾楼荣幸地为" + me->query("name") +		"\n大开喜宴,恭迎各位前来捧场!\n\n");   message_vision("喜老板转身又对$N小声问了几句。\n",me);   message_vision("您要开始,就输入 kaishi,如果想开席,就输入 kaixi,\n"   "大家吃饱了,喝足了就可以结束了(jieshu)。");   me->delete_temp("ready_to_ask");   me->set_temp("ready_to_party", 1);//新郎准备开始记号}int do_start(){   object me,ob,usr,obj,*list;   int i;   me = this_player();	ob = this_object();   if( !me->query_temp("host_of_party") )     return notify_fail(name()+"对你说:“你又不是新郎官!喊什么喊?”\n");   if( !ob->query_temp("ready_to_party") )     return notify_fail(name()+"对你说:“开始什么呀,现在又没人办婚宴!”\n");   if( me->query_temp("party_start_already") )     return notify_fail(name()+"笑呵呵地对你说:“你看这不是已经开始了嘛!”\n");   message_vision("$N对$n点点头说:“喜老板,喜宴可以开始了!”\n\n"		"$n立刻大声喊着:“给客人上~~喜~~酒~~”\n\n",me,ob);   me->set_temp("party_start_already", 1);//新郎已经开始记号   me->delete_temp("ready_to_party");   tell_room( environment(ob), HIY"喜老板又手一挥,几个彩衣乐手立刻吹起唢呐、奏起喜乐。\n"NOR);   list = all_inventory(environment(me));   i = sizeof(list);   while (i--)   {       usr= list[i];       if( obj=new(__DIR__"obj/xijiu"))       obj->move(usr);   }   tell_room(environment(usr), "\n从内堂走出一排漂亮的黄衫少女,依次走到每个人面前。\n"		"黄衫少女递给你一杯斟满喜酒的玉盏又走开了去。\n");   call_out("finish_party", 500, me,ob);   return 1;}int do_serve(){   object ob=this_object();   object me=this_player();   object food;   if( !me->query_temp("host_of_party") )     return notify_fail(name()+"斜眼瞪了你一眼道:“主人没说话,你嚷什么?!”\n");   if( !me->query_temp("party_start_already") )     return notify_fail(name()+"对你笑说:“还没告诉我开始(kaishi),我怎么好开席?”\n");   message_vision("$N大声嚷嚷着:上菜,上菜!\n", me);   tell_room(environment(me), "“来啦!”四五个小伙计从内堂鱼贯而出,一盘盘美味佳肴立刻摆上了桌。\n");   if(food=new(__DIR__"obj/jiuyan"))        food->move(environment(me));   return 1;}int do_finish(){   object ob=this_object();   object me=this_player();   if( !me->query_temp("host_of_party") )     return notify_fail(name()+"不满意地瞪了你一眼:“你吃你的,不关你事不要乱说话!”\n");   if( !me->query_temp("party_start_already") )     return notify_fail(name()+"呵呵笑道:“喜筵不是已经结束了吗!”\n");   message_vision("$N对$n说道:“客人吃得都不错,十分感谢喜老板的安排!”\n", me, ob);   remove_call_out("finish_party");   call_out("finish_party", 2, me,ob);   return 1;}void finish_party(object me,object ob){   int i;   object *list,ob1,ob2,usr;   message_vision(HIC"\n$N大声说道:“小小薄宴,怠慢诸位,$n的喜宴就此结束,多谢大家光临!\n"NOR, ob,me);   command("gongxi " + me->query("id"));   me->set_temp("party_finish",1);   me->delete_temp("party_start_already");   me->delete_temp("host_of_party");	message("vision","\n一旁的黄衫少女连忙上来把酒席上的残羹剩菜收拾干净抬下去。\n",environment(me));   if(ob1=present("jiuxi", environment(ob)))      destruct (ob1);   list = all_inventory(environment(ob));   i = sizeof(list);   while (i--)   {       usr= list[i];       ob2=new(__DIR__"obj/xitang");       ob2->set("name",me->name()+"和"+me->query("couple/couple_name")+"的喜糖");       ob2->move(usr);   }   tell_room(environment(usr), "\n喜老板吩咐手下的伙计把喜糖一包包地发给每一个人。\n");   remove_call_out("give_money");   call_out("give_money",1,me,ob);}int give_money(object me,object ob){	if( !me || environment(me) != environment(ob) )   {   	message_vision("喜老板突然向四周一看:“咦?人去哪里了,连代收的礼金都不要了?”一边\n"      "摇着头一边向内堂走去,伙计、黄衫少女也一齐走进去,喜福堂一下子空下来了。\n",ob);		ob->move("/d/city/empty");//不要直接dest,以备查	   return  1;   }   message_vision("\n喜老板笑呵呵地走到$N面前,一挥手,旁边的小伙计捧过来一盘银两,喜老板说道:\n"   "“这是小可代二位收下的客人送上的礼金,一共是"+MONEY_D->price_str((int)ob->query("money"))+"\n"   "现在交给您,可得收好!”说完,将钱如数交给$N。然后一齐走进内堂不见了。\n",me);	MONEY_D->pay_player(me,(int)ob->query("money"));  	ob->move("/d/city/empty");//不要直接dest,以备查	return 1;}int do_kill(string arg){   object me = this_player();   object ob = this_object();   if(!arg || present(arg,environment(ob))!=ob) return 0;   message_vision("$N脸色不大对,好象动了杀机!\n$n对$N直摇头:这大喜的日子动手干什么啊!\n", me,ob);   return 1;}int do_exert(string arg){   object me = this_player();   object ob = this_object();   message_vision("$N鬼鬼祟祟地一运气。\n$n对$N瞪了一眼,说:刚吃过饭,不要乱用内功!\n", me,ob);   return 1;}int do_steal(string arg){   object me = this_player();   object ob = this_object();   message_vision("$N伸出手,想要偷点什么。\n$n对$N骂道:怎可随便光天化日施盗行窃!\n",me,ob);     return 1;}

⌨️ 快捷键说明

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