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

📄 lianhuan.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
//heijian-jindao 连环三刀
//by fqyy
/*
    这一刀当头直砍,招数似乎颇为呆滞,杨过只须稍一侧身,便可轻易避过,然而谷主黑
剑所划剑圈却笼罩住了他前后左右,令他绝无闪避躲让之处。杨过只得举起半截钢杖,一招
“只手擎天”,硬接了他这招。但听得当的一声巨响,刀杖相交,只爆得火花四溅,杨过双
臂只感一阵酸麻。公孙谷主第二刀连着又上,招法与第一刀一模一样。杨过武学所涉既广,
临敌时又是机灵异常,但竟无法破解他这笨拙钝重的一招,除了同法硬架之外,更无善策。
刀杖二度相交,杨过双臂酸麻更甚,心想只要再给他这般砍上几刀,我手臂上的筋络也要给
震坏了。思念未定,谷主第三刀又砍了过来。再接数刀,杨过手中的半截钢杖已给金刀砍起
累累缺口,右手虎口上也震出血来。
    公孙谷主见他危急之中仍是脸带微笑,左手一刀砍过,右手黑剑□地往他小腹上刺去。
杨过此时已给他逼在厅角,眼见剑尖刺到,忙伸手平掌一挡,剑尖刺中他掌心,剑刃弯成弧
形,弹了回来。原来小龙女的掌套甚是坚密,黑剑虽利,却也伤它不得。
*/

#include <ansi.h>
inherit F_SSERVER;
#include "/kungfu/skill/eff_msg.h";
void next1(object me, object target, int i);
void next2(object me, object target, int i);
int perform(object me,object target)
{
	int i;
	string msg;
	object *inv;
	object weapon2;
        object weapon = me->query_temp("weapon");  

        if( !target ) target = offensive_target(me);

        if( !target
        ||      !target->is_character()
        ||      !me->is_fighting(target) )
                return notify_fail("连环三击只能对战斗中的对手使用。\n");

        if( me->query("neili") <= 1000 )
                return notify_fail("你的内力不够使用连环三击!\n");

        if( me->query("jing") <= 500 )
                return notify_fail("你的精力不够使用连环三击!\n");
        if( me->query_skill("heijian-jindao",1) < 60 )
                return notify_fail("你黑剑金刀未到炉火纯青之境!\n");

        if (!weapon)
                return notify_fail("你手中无剑怎能使用连环三击?!\n");
        if (!me->query_temp("heijian-jindao/luanren",1)||!me->query_temp("heijian-jindao/nizhuan",1))
                return notify_fail("你不使用“阴阳倒乱刃法”怎么能用连环三击封住敌人行动!\n");

        if ( me->query_skill_mapped("sword") != "heijian-jindao"
          || me->query_skill_mapped("parry") != "heijian-jindao"
          || me->query_skill_mapped("blade") != "heijian-jindao"
          && userp(me))
             	return notify_fail("你必须先将黑剑金刀相互配合。\n");
       inv = all_inventory(me);
       for(i=0; i<sizeof(inv); i++) {
           if( inv[i]->query("equipped") || weapon == inv[i] ) continue;
		if (weapon->query("skill_type") == "blade") {
        	   if( inv[i]->query("skill_type") == "sword" ) 
		   {
			   weapon2 = inv[i];
			   i = 3;
			   break;
		   }
		}
		if (weapon->query("skill_type") == "sword") {
   	        if( inv[i]->query("skill_type") == "blade" ) 
		   {
			   weapon2 = inv[i];
			   i = 2;
			   break;
		   }
		}
       }
	if (!objectp(weapon2)) return notify_fail("你只有一种兵器就想连环三击?\n");

	msg = HIM"$N这一刀当头直砍,招数似乎颇为呆滞,$n只须稍一侧身,便可轻易避过,\n"+
		"然而$N所划剑圈却笼罩住了他前后左右,令$n绝无闪避躲让之处。\n"NOR;
	me->start_perform(5,"「连环三击」");
	if((random(me->query_skill("heijian-jindao",1)) + me->query_int()) >
	(target->query_skill("dodge",1)/3 + target->query_int())) {
		msg = msg + HIR "$n只得一招“只手擎天”,硬接了$N这招。\n" NOR;
		target->add_busy(random(i*5) + 2);
	}
	else {
		msg = msg + HIW "可是$n看破了$N的企图,飞快的向后退去。\n" NOR;
		me->start_busy(2);
	}
	message_vision(msg, me, target);
	next1(me, target, i);
	return 1;
}

void next1(object me, object target, int i)
{
	string msg;
	int damage;
	object weapon;

	if (!me) return ;
	weapon = me->query_temp("weapon");
	if (!weapon || !target || !living(me) || !me->is_fighting(target)) {
		return ;
	}

	msg = HIG"\n$N第二刀连着又上,招法与第一刀一模一样。\n"+
		"$n武学所涉既广,临敌时又是机灵异常,但竟无法破解他这笨拙钝重的一招,除了同法硬架之外,更无善策。\n"NOR;

	if((random(me->query("max_neili")) + me->query_skill("force",1)) >
	    (target->query("max_neili") + target->query_skill("force",1))/3 ||(target->is_busy()&&random(2))){
		msg = msg + HIR"$N$n二度相拼,$n双臂酸麻更甚,只要再给$N这般砍上几刀,$n手臂上的筋络也要给震伤。\n"NOR;
		damage = me->query_skill("heijian-jindao",1);
		damage += me->query_skill("blade",1);
		damage += random(damage);
		if (!target->is_busy()) target->start_busy(damage/500);
		target->add("neili",-(500+random(150)));
		target->receive_damage("qi", damage);
		target->receive_wound("qi", damage/3);
		msg += damage_msg(damage, "震伤");
		msg = replace_string(msg, "$w", weapon->name());
		msg = replace_string(msg, "$l", "手臂");
		message_vision(msg, me, target);
		COMBAT_D->report_status(target, random(2));
		me->add("neili",-300);
me->start_busy(2);
		me->add("jing",-100);
	} else {
		msg  =  msg + CYN"$n内力深厚硬生生接下了这一招。\n"NOR;
		message_vision(msg, me, target);
		me->start_busy(1+random(2));
		target->start_busy(1+random(2));
	}

	next2(me, target, i);

}

void next2(object me, object target, int i)
{
	string msg;
	int damage;
	object weapon;

	if( !me ) return ;

	weapon = me->query_temp("weapon");
	if (!weapon || !target || !living(me) || !me->is_fighting(target)) {
		return ;
	}

	msg = HIC "\n$n思念未定,$N第三刀又砍了过来。左手一刀砍过,右手剑法突地往$n小腹上刺去。\n"NOR;

	if((random(me->query("combat_exp")) + me->query_str()) >
	    (target->query("combat_exp") + target->query_str())/3 ||(target->is_busy()&&random(2))){
		msg = msg + HIW "$n此时已给$N逼在厅角,眼见剑尖刺到,忙伸手平掌一挡,剑尖刺中$n掌心!\n"NOR;
		damage = me->query_skill("heijian-jindao",1);
		damage += me->query_skill("sword",1);
		damage += random(damage);
		if (!target->is_busy()) target->start_busy(damage/500);
		target->add_temp("apply/attack", -100);
		target->add_temp("apply/dodge", -100);
		target->add_temp("apply/parry", -100);
		target->receive_damage("qi", damage);
		target->receive_wound("qi", damage/3);
		msg += damage_msg(damage, "刺伤");
		msg = replace_string(msg, "$w", weapon->name());
		msg = replace_string(msg, "$l", "手心");
		message_vision(msg, me, target);
		COMBAT_D->report_status(target, random(2));
		me->add("neili",-300);
		me->add("jing",-50);
		call_out("back", 5 + random(me->query("jiali") / 20), target);
	} else {
		msg = msg + HIW "$n此时已给他逼在厅角,眼见剑尖刺到,忙伸手平掌一挡,剑尖刺中他掌心,\n$n内力深厚使得剑刃弯成弧形,弹了回来。\n" NOR;
		message_vision(msg, me, target);
		me->start_busy(2);
		target->start_busy(1+random(2));
	}
}

void back(object target)
{
	if (!target) return;
	target->add_temp("apply/attack", 100);
	target->add_temp("apply/dodge", 100);
	target->add_temp("apply/parry", 100);
}

⌨️ 快捷键说明

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