shuanger.c

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

C
247
字号
// shuanger.c
#include <ansi.h>

inherit NPC;
inherit F_UNIQUE;
int ask_go();
int ask_kiss();

void create()
{
	set_name("双儿", ({ "shuang er", "shuang","er"}));
	set("title", HIW "天下无双" NOR);
	set("nickname", HIM "大功告成" NOR);
	set("gender", "女性");
	set("age", 15);
	set("attitude", "peaceful");
	set("shen_type", 1);
	set("str", 15);
	set("int", 25);
	set("con", 25);
	set("dex", 30);
	
	set("max_qi", 1500);
	set("max_jing", 1200);
	set("neili", 2500);
	set("max_neili", 2500);
	set("jiali", 50);
	set("combat_exp", 100000+random(100000));
	set("score", 20000);

	set_skill("force", 80);
	set_skill("dodge", 80);
	set_skill("unarmed", 80);
	set_skill("sword", 80);
	set_skill("taiji-jian", 120);
	set_skill("taiji-quan", 120);
	set_skill("tiyunzong",50);
        set_skill("taiji-shengong", 120);
	map_skill("dodge", "tiyunzong");
	map_skill("parry", "taiji-jian");
	map_skill("sword", "taiji-jian");
	map_skill("unarmed", "taiji-quan");
        map_skill("force", "taiji-shengong");
	set_temp("apply/attack", 15);
	set_temp("apply/attack", 15);
	set_temp("apply/damage", 25);
        set("chat_chance_combat", 30);
        set("chat_msg_combat", ({
           (: perform_action, "sword.lian" :),
           (: perform_action, "sword.chanup" :),
           (: perform_action, "sword.sui" :),
        }) );

	 set("inquiry", ([
	     "你愿不愿意跟我走" : (: ask_go :),
	     "大功告成" :  (: ask_kiss :),
	]));
	setup();
	carry_object("/clone/weapon/changjian")->wield();
	carry_object("/d/city/obj/cloth")->wear();

}


int init()
{
	add_action("do_attack","attack");
	add_action("do_stop","stop");
	add_action("do_send","sendto");
	add_action("do_sha","sha");
}

int ask_kiss()
{
	object me;
	string new_name,new_id,host_id;
	me=this_player();
	if(query("id")!="shuang er")
	{
		sscanf(query("id"),"%s's shuang er",host_id);
		if(me->query("id")==host_id)
		{
			if(random(10)<1)	          
			{
				say(query("name")+"满脸羞得通红,垂下头来,缓缓的点了点头.\n");
//				add("combat_exp",2000);
			}
			else 
			say(query("name")+"啊的一声,一下子跳将开去,说:不嘛,不要.\n");
			return 1;
		}
	}
	say(query("name")+"说道:呸,我不干.");
	return 1;
}

int ask_go()
{
	object me;
	string new_name,new_id,host_id;
	me=this_player();
	if(query("id")!="shuang er")
	{
		sscanf(query("id"),"%s's shuang er",host_id);
		if(query("id")==host_id)
		{
			say(query("name")+"睁大眼睛看了看"+
				me->query("name")+",说:当然愿意啦,我都听你的。\n");
			return 1;
		}
		if(me->query("id")!=host_id)
		{
			say(query("name")+"睁大眼睛看了看"+
				me->query("name")+",说:不行的,我得听我主人的。\n");
			return 1;
           	}
	}
	if ((int)this_player()->query("weiwang")>=70)
	{
		write( HIY "双儿道:夫人待我恩重如山,主人对我庄家又有大恩。\n" NOR);
		write( HIY "夫人要我服侍主人,我一定尽心。\n" NOR);
		command("nod");	
		set_leader(me);
		new_name = me->query("name")+"的丫环双儿";
		new_id=me->query("id")+"'s shuang er";
		set("name",new_name);
		set("id",new_id);
		write( "可用指令:\nattack sb 攻击某人.\nsha sb 杀死某人.\nstop 停止战斗.\nsendto sb.--把双儿送给sb.\n");
		set("long","这是"+new_name+"。\n"
		"她是一个十分清秀的少女,大约十四五岁年纪;\n"
		"一张雪白的脸庞,眉弯嘴小,笑靥如花,正笑嘻嘻地看着你。\n");
	}
	else say(query("name")+"睁大眼睛看着"+
		me->query("name")+",说:不行的,夫人没有同意。\n");
	return 1;
}

int do_attack(string arg)
{
	object ob; 
	string host_id;
	object me=this_player();
	if(query("id")=="shuang er")
	{
		say("你无权使用此命令。\n");
		return 0;
	}
	sscanf(query("id"),"%s's shuang er",host_id);
	if(me->query("id")!=host_id) return notify_fail("双儿连理都不理你!\n");
	if(!arg||!objectp(ob=present(arg,environment(me))))
		return notify_fail("双儿傻傻地望着你,不明白你的意思。\n");
	if(!living(ob)) 
		return notify_fail("双儿说:"
			+ob->query("name")+"已经这样啦你还要...??!!\n");
        if( environment(ob)->query("no_fight"))
        return notify_fail("这里不准战斗。\n");

       if( ob->query_temp("no_kill") )
        return notify_fail("不能打,打不得啊!\n");
//if (userp(ob) && ob->query("combat_exp") < 
//this_object()->query("combat_exp")
//&& !ob->query_condition("killer))
//        return notify_fail("我不想做PK的工具!\n");

	if(ob->query("age")< 18 ) 
		return notify_fail("双儿说:"
			+ob->query("name")+"还是个小孩子, 算了吧...!!\n");
	if(!environment(ob)->query("no_fight"))
	{
		message_vision("双儿对主人$N点头道: 嗯,好的..\n",me);
		fight_ob(ob);
	}
	return 1;
}

int do_stop()
{
	string host_id;
	object me=this_player();
	if(query("id")=="shuang er") return notify_fail("你无权使用此命令。\n");
	sscanf(query("id"),"%s's shuang er",host_id);
	if(me->query("id")!=host_id) return notify_fail("双儿连理都不理你!\n");
	if(!is_fighting()) return notify_fail("双儿现在没和人打斗..\n");
	command("halt");
	message_vision("双儿对主人$N微微一笑。\n",me);
	return 1;
}

int do_send(string arg)
{
	object ob; string host_id,new_name,new_id;
	object me=this_player();
	if(query("id")=="shuang er") return notify_fail("你无权使用此命令。\n");
	sscanf(query("id"),"%s's shuang er",host_id);
	if(me->query("id")!=host_id) return notify_fail("双儿连理都不理你!\n");
	if(!arg||!objectp(ob=present(arg,environment(me))))
		return notify_fail("你要把双儿送给谁?\n");
	if(!living(ob)) 
		return notify_fail("你只能把双儿给活人!\n");
message_vision("双儿眼泪汪汪地望着主人$N,说:\n主人待我好,是我命好;主人待我不好,是我命苦罢了.\n",me);
	set_leader(ob);
	new_name = ob->query("name")+"的丫环双儿";
	set("long","这是"+new_name+"。\n"
		"她是一个十分清秀的少女,大约十四五岁年纪;\n"
		"一张雪白的脸庞,眉弯嘴小,却象是刚受人欺负,眼泪汪汪地看着你。\n");
	new_id=ob->query("id")+"'s shuang er";
	set("name",new_name);
	set("id",new_id);
	write( HIY "双儿对新主人"+ob->query("name")+"楚楚可怜地盈盈一拜。\n" NOR);
	message_vision("可用指令:\nattack sb 攻击某人.\nsha sb 杀死某人.\nstop 停止战斗.\nsendto sb.--把双儿送给sb.\n",me);
	return 1;
}

int do_sha(string arg)
{
        int i ;
	object me,ob;
	object* obj;
	me = this_object();
	if(!arg||!objectp(ob=present(arg,environment(me))))
		return notify_fail("双儿说: 主人你要双儿杀谁?\n");

        if( environment(ob)->query("no_fight"))
        return notify_fail("这里不准战斗。\n");

       if( ob->query_temp("no_kill") )
        return notify_fail("不能打,打不得啊!\n");

if (userp(ob) 
&& ob->query("combat_exp") < this_object()->query("combat_exp")
&& !ob->query_condition("killer"))
        return notify_fail("我不想做PK的工具!\n");

	if(ob->query("age")< 18 ) 
		return notify_fail("双儿说:"
			+ob->query("name")+"还是个小孩子, 算了吧...!!\n");
	if(!environment(ob)->query("no_fight"))
	{
		message_vision("双儿对$N点头说道: 嗯, 好的. \n",me);
		command("say 哼, 主人要我杀了你! ");
		remove_call_out("kill_ob");
		call_out("kill_ob", 1, ob); 
	}
	return 1;
}       

⌨️ 快捷键说明

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