xiaoqing.c

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

C
161
字号
//NPC /npc/xiaoqing.c
#include <ansi.h>
inherit NPC;

void greeting(object);
void init();
string inquiry_gao();

void create()
{
	set_name("小青", ( { "qing", "xiao qing" }) );
	set("title", "药剂师");
	set("gender", "女性" );
	set("age", 16);
	set("long",
	      "这是个聪明乖巧的小姑娘,打扮的很朴素,一袭青衣,却也显得落落有致。\n"
          "小青对人非常热情。你要是跟她打过交道就会理解这一点!\n"
	     );
	set("attitude", "friendly");
	set("shen_type", -1);

	set("str", 20);
	set("int", 29);
	set("con", 23);
	set("dex", 22);

	set("max_qi", 130);
	set("max_jing", 120);
	set("neili", 120);
	set("max_neili", 120);

	set("combat_exp", 60000);
	set("score", 1000);

	set_skill("force", 26);
	set_skill("dodge", 23);
	set_skill("unarmed", 24);
	set_skill("parry", 22);
	set_temp("apply/attack", 10);
	set_temp("apply/defense", 15);
	set_temp("apply/damage", 17);
	set_temp("apply/armor", 10);

	set_temp("dan",0);
	set_temp("times",5);
	create_family("白驼山派", 5, "弟子");

       set("inquiry", ([
	    "海口大碗" : "这『海口大碗』你可以拿到顶东头小院儿去,灌水喝。\n",
	    "药罐" : "药罐在那儿,你自己看吧!\n",
	    "蛇胆膏" : (: inquiry_gao :),
	]));

	setup();
	carry_object("/d/baituo/obj/qingpao")->wear();
}

void init()
{
	object ob;

	::init();

	if( interactive(ob = this_player()) && !is_fighting() )
	{
		remove_call_out("greeting");
		call_out("greeting", 1, ob);
	}
}

void greeting(object ob)
{

	if( !ob || environment(ob) != environment() ) return;
	if(random(2)==1)
	    {say("小青笑吟吟地说道:这位" + RANK_D->query_respect(ob)
		+ "请进,见到你真高兴。\n");
	     return;
	    }
	  else
	  {say("小青笑了笑说道:这位" + RANK_D->query_respect(ob)
		+ "快请进吧。 \n");
	     return;
	    }
}

string inquiry_gao()
{
  object ob=this_player();
  if(query_temp("dan")==3) return "你没见我已经作好了嘛!\n";
  if(query_temp("times")==0) return "师傅现在已经不叫我做『蛇胆膏』了!\n";
  say("这位" + RANK_D->query_respect(ob)+
    "不瞒您说。师傅让我作『蛇胆膏』,\n可我",ob);
  switch (query_temp("dan"))
  {
   case 0: write(HIY "差一只青蛇胆,一只金蛇胆。\n" NOR);
	   break;
   case 1: write(HIY "还差一只金蛇胆。\n" NOR);
	   break;
   case 2: write(HIY "还差一只青蛇胆。\n" NOR);
	   break;
  }
  return "不知哪位好心人能帮帮我呢?\n";
}

int accept_object(object who, object ob)
{
	object obn;

	if( !who || environment(who) != environment() ) return 0;
	if ( !objectp(ob) ) return 0;
	if ( !present(ob, who) ) return notify_fail("你没有这件东西。\n");

	if (  (string)ob->query("id") != "qing dan"
		&& (string)ob->query("id") != "jin dan"  )
		    return notify_fail("小青不需要这件东西。\n");
	if ( query_temp("times")==0 )
		    return notify_fail("小青现在已经不做『蛇胆膏』了。\n");
	if ( (string)ob->query("id") == "jin dan" )
		{
			if (query_temp("dan")==2)
			  {message_vision("小青一看是金蛇胆,满脸遗憾
地对$N说:我还差青蛇胆,不缺金蛇胆。\n",who);
			   return 0;
			  }
			add_temp("dan",2);
			if (query_temp("dan")==2)
			  { message_vision("小青看到金蛇胆,高兴得跳了起来。\n
搂着$N的脖子说:还差青蛇胆就大功告成了!\n",who);
			    return 1;
			  }
		}
     if ( (string)ob->query("id") == "qing dan" )
		{
			if (query_temp("dan")==1)
			  {message_vision("小青一看是,满脸遗憾
地对$N说:我还差金蛇胆,不缺青蛇胆。\n",who);
			   return 0;
			  }
			add_temp("dan",1);
			if (query_temp("dan")==1)
			  { message_vision("小青看到青蛇胆,高兴得跳了起来。\n
搂着$N的脖子说:还差就金蛇胆大功告成了!\n",who);
			    return 1;
			  }
		}
   command("kiss "+(string)who->query("id"));
   write( HIY "只见小青手脚麻利地把两只蛇胆投入药罐中,又加入一些\n
	  不知是什么的药粉,然后把稀里哗啦一摇,嘿!『蛇胆膏』做\n
	  成了。\n" NOR );
   message_vision("小青很神秘地凑近$N悄悄说了些什么。\n", who);
   tell_object(who,"我偷偷拿了一点『蛇胆膏』送给你,师傅不会发现的。\n");
   message_vision("小青深情地望了$N一眼,脸红了。\n",who);
   obn = new("/d/baituo/obj/shedangao");
   obn->move(who);
   set_temp("dan",0);
   add_temp("times",-1);
   return 1;
}

⌨️ 快捷键说明

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