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

📄 yitian.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// yitiantulong.c 倚天屠龙功之[倚天屠龙]。
// by yfeng 2000.1.27

#include <ansi.h>
inherit F_SSERVER;

int perform(object me, object target)
{
	int		ap,dp,damage,improve;
	string msg;
	object weapon = me->query_temp("weapon");
	object weapon1;
	int cost = me->query_skill("yitian-tulong", 1);
	
	if( !target ) target = offensive_target(me);
	if( !target||!target->is_character()||!me->is_fighting(target) )
		return notify_fail("「倚天屠龙」只能对战斗中的对手使用。\n");
	if(!living(target))
		return notify_fail("对付不能动的人也要用「倚天屠龙」?\n");
	if(!weapon || weapon->query("skill_type") != "sword" )
		return notify_fail("你手中无剑,如何使得「倚天屠龙」?\n");
        if( (int)me->query_temp("liuyun") ) 
                return notify_fail(HIG"你已经在默运流云水袖神功了。\n");

        if( (int)me->query_temp("qzj_tong") ) 
                return notify_fail("你已经在运同归剑了。\n");
      if( me->query_temp("fumo")   )
      return notify_fail("你正在使用大金刚拳的特殊攻击「金刚伏魔」!\n");
      if( me->query_temp("jingang")   )
      return notify_fail("你正在使用大金刚拳的特殊攻击「大金刚神通」!\n");
      if( me->query_temp("fanzhen")   )
                return notify_fail("你正在运用「金刚不坏体神功」!\n");

        if( me->query_temp("yuxiao/tianwu") )
                return notify_fail("你正在运用「凤凰天舞」心法!\n");
        if ((int)me->query_temp("shield"))
                return notify_fail("你已经在运护体神功中了。\n");
        if( me->query_temp("yuxiao/tianwu") )
                return notify_fail("你正在运用「凤凰天舞」心法!\n");
       if(me->query_temp("wdpowerup") )
       return notify_fail("你现在正在使用「五毒神功」的绝技。\n"); 
       if(me->query_temp("zhuihun/lpf")) 
       return notify_fail("你正在使用五毒追魂钩之「乱披风」\n"); 

       if(me->query_temp("anran")) 
       return notify_fail("你现在正在使用「黯然」绝技。\n"); 

        if((int)me->query_temp("tzzf") ) 
                return notify_fail("你已经在掌刀的运功中。\n");

	if(me->query_temp("yttl/yttl"))
		return notify_fail("你刚使用完「倚天屠龙」,歇会再说吧。\n");
	if( (int)me->query_skill("yitian-tulong", 1) < 120 )
		return notify_fail("你的倚天屠龙功不够娴熟,不会使用「倚天屠龙」。\n");
	if( me->query("neili") <= 400+cost*3 )
		return notify_fail("你的内力不够!\n");
	if( me->query("jing") <= 120+cost*2 )
		return notify_fail("你的精不够!\n");
	if( me->query("max_neili") < 1200)
		return notify_fail("你的内力修为不够,无法使用「倚天屠龙」。\n");
	if(me->query("jing")<100+cost)
		return notify_fail("你现在精神不好,无法使用「倚天屠龙」。\n");
	if(me->query_temp("combat_yield"))
		return notify_fail("你不出剑,何以使得「倚天屠龙」?\n");
	if (me->query_skill_mapped("sword") != "yitian-tulong")
		return notify_fail("你现在无法使用「倚天屠龙」。\n");
	if (me->query_skill_mapped("dodge") != "tiyunzong")
        return notify_fail("你必须使用「梯云纵」绝技作为轻身术,方可使出「倚天屠龙」。\n");   
    if( (int)me->query_skill("tiyunzong",1) < 120 )
    	return notify_fail("你的梯云纵不够娴熟,无法使用「倚天屠龙」!\n");
    if( (int)me->query_dex() < 28 )
    	return notify_fail("你的身法太低,不能使用「倚天屠龙」!\n");
    if( (int)me->query_skill("dodge",1) < 120 )
    	return notify_fail("你的基本轻功太差,身体笨拙,不能使用「倚天屠龙」!\n");
    if( me->query_temp("zong")   )
      return notify_fail("你正在使用「梯云纵」!\n");
	if(userp(me))
	{
		if( (int)me->query_skill("taiji-shengong", 1) < 140 )
			return notify_fail("你的内功修为不够,无法使用「倚天屠龙」。\n");
		if( me->query_skill_mapped("force") != "taiji-shengong")
			return notify_fail("你所用的内功无法摧动「倚天屠龙」的运行!\n");
	}
	message_vision(HIW"\n$N吸一口气,猛地里双脚一撑,提身而起。身形纵起丈余,跟着使出「梯云纵」绝技,右脚在空中凭空一撑,左脚紧跟着在右脚上一借力,又纵起两丈!\n"NOR,me);
	improve = (int)me->query_dex() * 2;
	me->add_temp("apply/dodge", improve);
	me->add_temp("apply/attack",improve/2);
    me->set_temp("zong",1); 
    me->set_temp("yttl/yttl",1); 
    me->receive_damage("neili", (350+(int)me->query_skill("tiyunzong",1)/10));    
	call_out("remove_effect",30+random(30),me,improve);
	ap = me->query_skill("sword")*me->query_skill("force")*me->query_skill("dodge")/10+me->query("combat_exp");
    dp = target->query_skill("parry")*target->query_skill("force")*target->query_skill("dodge")/10+target->query("combat_exp");
    damage=me->query_skill("yitian-tulong",1)+me->query_skill("taiji-shengong",1)+me->query_skill("tiyunzong",1);
    weapon1=target->query_temp("weapon");
    if(ap*2/3+random(ap/3)>dp/2+random(dp/2))
    {
    	me->start_busy(1);
        target->start_busy(3);            
		msg=HIC"\n只见$N手中$w"+HIC"看准$n,嗤嗤嗤几声,剑光闪过,隐约呈现一个「武」字。\n";
		msg+=HIR"$n眼前一花,已看不出$N的招式,";
		if(weapon1)
			msg+="慌忙间将手中"+weapon1->name()+HIR"挥舞开来,护住自己的前心。\n\n";
		else 
			msg+="身形左闪右避,渐感不支。\n\n";
		msg+=HIC"$N一个字写完,身子便要落下。只见$P左手挥出,$w"+HIC"在握,倏地一翻,\n";
		if(weapon1)
			msg+=HIC"只听「当」的一声,$w"+HIC"在$n的"+weapon1->name()+HIC"上一点,支住身子的重量,";
		else
			msg+=HIC"只听「噗」的一声,$w"+HIC"正好刺进$n的左肩,同时止住下坠的身形,";
		msg+="借力而起,右手跟着又写了个「林」字!\n这两个字的一笔一划,包含的阴阳刚柔、精神气势,龙飞凤舞,笔力雄健,虽是一剑一掌,却有如快剑长戟,森然相同。 \n";
		msg+=HIR"$n再也抵挡不住$N的攻势,「砰」的一声,这一掌正中$n胸口,$n的身子却象断了线的风筝一般,向后倒飞出去。\n"NOR;
		msg=replace_string(msg,"$w",weapon->name());
		message_vision(msg,me,target);
		target->receive_damage("qi",damage*(1+random(3)));
		me->receive_damage("neili",cost*2);
	    COMBAT_D->report_status(target);
		msg=HIC"\n$N两个字写罢,跟着又写「至」字,「尊」字。越写越快,但见剑光闪烁,或如灵蛇盘腾,或如猛兽屹立\n,飘风骤雨惊飒飒,落花飞雪何茫茫。恍恍如闻鬼神惊,时时只见龙蛇走。须臾间二十四字一齐写毕。\n";
		if(ap*2/3+random(ap/3)>dp/2+random(dp/2))
		{
	    	msg+=HIR"这二十四字一气呵成,二十四招一气贯通,$n步法越来越混乱,左支右拙,身上已不知中了多少剑。\n"NOR;
			target->receive_wound("qi",100+damage);
			me->receive_damage("neili",100+cost);
			message_vision(msg,me,target);
			COMBAT_D->report_status(target);
			message_vision(HIW"\n$N写到「锋」字的最后一笔,"+weapon->name()+HIW"在地面上一荡,翻身落下,轻轻巧巧地站定。\n"NOR,me,target);
	    	return 1;
		}
		message_vision(msg,me,target);
		message_vision(CYN"怎奈$N看得真切,早已退出你的招数之外!\n"NOR,target);
		me->start_busy(2);
		return 1;
	}
	message_vision(CYN"$n一惊非同小可,不及思索,一阵快攻,逼得$N的招式无法使出!\n"NOR,me,target);
	me->start_busy(3);
	return 1;			
}

void remove_effect(object me, int improve)
{
      me->add_temp("apply/dodge", - improve);
      me->add_temp("apply/attack", - improve/2);
      me->delete_temp("zong");
      me->delete_temp("yttl/yttl");
      
}

⌨️ 快捷键说明

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