Пример #1
0
int exert(object me, object target)
{
	int sp, dp;

  if ( userp(me) && !wizardp(me) && 
  !me->query("perform/fanchang") &&
  !me->query("can_perform/longxinag/fanchang") && 
  !me->query_temp("murong/xingyi"))
   return notify_fail("你所使用的内功中没有这种功能。");

	if( environment(me)->query("no_fight") )
		return notify_fail("这里不能攻击别人! \n");
		
	if( !objectp(target) ) target = offensive_target(me);

	if( !target || !target->is_character() || target == me ) 
		return notify_fail("你要对谁使用梵唱?\n");
	notify_fail("不是你要抓的人,凑什么热闹!\n");
	if (!userp(target) && !target->accept_hit(me)) return 0;

	if( (int)me->query_skill("longxiang",1) < 50 )
		return notify_fail("你的龙象般若功功力不够,不能凝神攻击对方!\n");

	if( (int)me->query("neili",1) < 50 )
		return notify_fail("你的内力不够,不能使用龙象般若功。\n");

	message_combatd(HIW "$N面无表情,歌声如梵唱般贯入$n耳中!\n\n" NOR, me, target );

        if( living(target) && !target->query_temp("noliving") )
		if( !target->is_killing(me) )
			target->kill_ob(me);

	sp = me->query_skill("force") + me->query_skill("lamaism") + me->query_skill("longxiang",1)/2;
	dp = target->query_skill("force");
	
	if (( random(sp) > random(dp) ) ||
		!living(target) || target->query_temp("noliving") )
	{
		tell_object(target, HIW"你忽然觉得脑中一片空白,不由自主地随歌声舞蹈起来!\n" NOR);
		tell_object(me, HIB"你看到" + target->name() + "随着你的歌声手舞足蹈,十分可笑。\n" NOR);

		target->receive_damage("jing", 10 + random((int)me->query_skill("longxiang", 1)) );
		
		if( target->query("combat_exp") >= me->query("combat_exp") )
				me->add("potential", 1);

		me->start_busy(2);
		target->start_busy(random(3));
		me->add("neili", -50);

	}
	else
	{	
		message_combatd(HIY "可是$p不为$P歌声所动,定力果然不同凡响!\n" NOR, me, target);
		me->start_busy(4);
	}

	return 1;
}
Пример #2
0
int perform(object me)
{
	string msg;
	object weapon;
	int skill, jing_cost, exp, myint;
	int skill_basic;
	mapping my_fam = me->query("family");

	skill = me->query_skill("lonely-sword",1);
	skill_basic = me->query_skill("sword",1);
	jing_cost = (int)me->query("int") - 45;

	if(!my_fam || my_fam["master_id"] != "feng qingyang")
		return notify_fail("你不是风清扬嫡传弟子,不能使用总诀式。\n");
  if ( userp(me) && !wizardp(me) && 
  !me->query("perform/zongjue") &&
  !me->query("can_perform/lonely-sword/zongjue") && 
  !me->query_temp("murong/xingyi"))
   return notify_fail("你所使用的外功中没有这种功能。");
   	if(environment(me)->is_chat_room()) return notify_fail("这里不准打斗。\n");
	if( me->is_fighting() )
		return notify_fail("「总诀式」不能在战斗中演练。\n");
	myint = me->query("int");
	if (!objectp(weapon = me->query_temp("weapon")) ||
		(string)weapon->query("skill_type") != "sword")
		return notify_fail("你必须先去找一把剑。\n");

	if( !skill || (skill < 20))
		return notify_fail("你的独孤九剑等级不够, 不能演练总诀式!\n");
	if( me->query("neili") < 50 )
		return notify_fail("你的内力不够,没有力气演练「总诀式」!\n");
	if( me->query("jing") < -jing_cost )
		return notify_fail("你现在太累了,无法集中精神演练总诀式!\n");

	exp= (int)me->query("combat_exp");
	if( skill*skill*skill/10>exp )
		return notify_fail("你的实战经验不够,无法体会「总诀式」!\n");

	msg= HIG"$N使出独孤九剑之「总诀式」,将手中"+weapon->name()+HIG"随意挥舞击刺。\n"NOR;
	message_combatd(msg, me);
	me->add("neili", -50);
	me->add("jing", jing_cost);
	if ( skill < 60) me->improve_skill("lonely-sword",10,skill_basic > skill? 0: 1);
	else if (skill < 90)
		me->improve_skill("lonely-sword",10+random(myint-9),skill_basic > skill? 0: 1);
	else if (skill < 140)
		me->improve_skill("lonely-sword",10+random(myint*2-9),skill_basic > skill? 0: 1);
	else if (skill < 200)
		me->improve_skill("lonely-sword",10+random(myint*4-9),skill_basic > skill? 0: 1);
	else me->improve_skill("lonely-sword",10+random(myint*8-9),skill_basic > skill? 0: 1);

	msg = MAG"$P的「独孤九剑」进步了!\n"NOR;
	me->start_busy(random(2));
	message_combatd(msg, me);
	return 1;
}
Пример #3
0
int exert(object me)
{
	object weapon = me->query_temp("weapon");
	string prepare;

  if ( userp(me) && !wizardp(me) && 
  !me->query("perform/taiji") &&
  !me->query("can_perform/taiji-shengong/taiji") && 
  !me->query_temp("murong/xingyi"))
   return notify_fail("你所使用的内功中没有这种功能。");

	if( !objectp(weapon) &&
		me->query_skill_mapped("unarmed") == "taiji-quan" &&
		me->query_skill_mapped("parry") == "taiji-quan" &&
		me->query_skill_mapped("force") == "taiji-shengong" )
		prepare = "tjq"; // player is using tjq.
	else
		if( objectp(weapon) &&
			weapon->query("skill_type") == "sword" &&
			me->query_skill_mapped("sword") == "taiji-jian" &&
			me->query_skill_mapped("parry") == "taiji-jian" &&
			me->query_skill_mapped("force") == "taiji-shengong" )
			prepare = "tjj"; // player is using tjj. 
		else prepare = "notj";
	if( me->query_temp("taiji") )
		return notify_fail("你已经将太极心法融会入武功之中。\n");
	if( prepare == "notj" )
		return notify_fail("你现在无法将太极心法融会在武功内。\n");
	if( prepare == "tjj" && me->query_skill("taiji-jian", 1) < 300 )
		return notify_fail("你尚未领会到太极剑意。\n");
	if( prepare == "tjq" && me->query_skill("taiji-quan", 1) < 300 )
		return notify_fail("你尚未领会到太极拳旨。\n");
	if( me->query_skill("taiji-shengong", 1) < 300 )
		return notify_fail("你的太极修为尚未登峰造极,无法领悟到其心法。\n");
	if( me->query_skill("taoism", 1) < 150 )
		return notify_fail("你的道学修为尚未豁然贯通,无法领会太极心法。\n");
	if( userp(me) && me->query_int() < 50 )
		return notify_fail("你的悟性太低,无法领会到太极心法。\n");
  if( me->query_temp("wudang/raozhi"))
    return notify_fail("你正在施展「绕指柔剑」,没有太多精力再运太级心法!\n");
	if( prepare == "tjj" )
		message_combatd( "\n$N微微一笑,身子缓缓右转,左手持剑向上提起,剑身横於胸前,\n左右双掌掌心相对,如抱圆球。" + weapon->name() + "未出,已然蓄势无穷。\n", me);
	else
		message_combatd( "\n$N缓缓站起身来,双手下垂,手背向外,手指微舒,两足分开平行,\n接着两臂慢慢提起至胸前,左臂半环,掌与面对成阴掌,右掌翻过成阳掌。\n", me);

  if (userp(me))
	me->receive_damage("jing", 500, "精力透支过度死了");
	me->add_temp("taiji", (int)me->query_skill("taiji-shengong", 1)/2);

	call_out("checking", 1, me, prepare);

	return 1;
}
Пример #4
0
int perform(object me, object target)
{
        object weapon;
        string msg;

        if (userp(me) && ! me->query("can_perform/panlong-suo/chan"))
                return notify_fail("你所使用的外功中没有这种功能。\n");

        if (! target)
        {
	        me->clean_up_enemy();
	        target = me->select_opponent();
        }

	if (! target || ! me->is_fighting(target))
		return notify_fail(CHAN "只能对战斗中的对手使用。\n");
 
	if (! objectp(weapon = me->query_temp("weapon")) ||
	    (string)weapon->query("skill_type") != "whip")
                return notify_fail("你使用的武器不对,难以施展" CHAN "。\n");

        if (target->is_busy())
                return notify_fail(target->name() + "目前正自顾不暇,放胆攻击吧。\n");

	if ((int)me->query_skill("force") < 180)
		return notify_fail("你的内功火候不够,难以施展" CHAN "。\n");

	if ((int)me->query_skill("panlong-suo", 1) < 120)
		return notify_fail("你的霹雳盘龙索还不到家,难以施展" CHAN "。\n");

        if (me->query_skill_mapped("whip") != "panlong-suo")
                return notify_fail("你没有激发霹雳盘龙索,难以施展" CHAN "。\n");

	if ((int)me->query("neili") < 100)
		return notify_fail("你的真气不够,难以施展" CHAN "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

	msg = HIM "$N" HIM "一声长啸,手中" + weapon->name() + HIM "一抖,登时"
              "幻化作万道紫芒向$n" HIM "身上猛套过去。\n" NOR;

        if (random(me->query_skill("whip")) > target->query_skill("parry") / 2)
        {
        	msg += HIR "霎时$n" HIR "只觉" + weapon->name() + HIR
                       "压力不断增加,便如跗骨之蛆,挥之不去。\n" NOR;
                target->start_busy((int)me->query_skill("panlong-suo") / 20 + 1);
	        me->add("neili", -80);
	        me->start_busy(1);
        } else
	{
                msg += CYN "可是$n" CYN "小心应对,丝毫不受迷惑,纵身"
                       "跃出了$N" CYN "的笼罩。\n" NOR;
	        me->add("neili", -30);
	        me->start_busy(2);
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #5
0
int exert(object me, object target)
{
	int n, j;

	if (me != target)
		return notify_fail("你只能用内功调匀自己的精气。\n");

	if ((int)me->query("neili") < 20)
		return notify_fail("你的内力不够。\n");

	j = (int)me->query("eff_jing") - (int)me->query("jing");
	if (j < 10)
		return notify_fail("你现在气力充沛。\n");
	n = 100 * j / me->query_skill("force");
	if (n < 20)
		n = 20;
	if ((int)me->query("neili") < n) {
		j = j * (int)me->query("neili") / n;
		n = (int)me->query("neili");
	}

	me->add("neili", -n);
	me->receive_heal("jing", j);
	
        message_combatd("$N深深吸了几口气,精神看起来好多了。\n", me);

        if( me->is_fighting() ) me->start_busy(1);
	
	return 1;
}
Пример #6
0
int perform(object me, object target)
{
	object weapon;
        int damage;
	int skill, ap, dp;
	string msg;

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

	if (! target || ! me->is_fighting(target))
		return notify_fail("无双无对只能对战斗中的对手使用。\n");

        if (userp(me) && ! me->query("can_perform/yunv-sword/wushuang"))
                return notify_fail("你还没有受过高人指点,无法施展「无双无对」。\n");
                
	if (! objectp(weapon = me->query_temp("weapon")) ||
            (string)weapon->query("skill_type") != "sword")
		return notify_fail("你使用的武器不对。\n");

	if ((int)me->query_skill("yunv-sword", 1) < 80)
		return notify_fail("你的玉女剑法不够娴熟,不会使用「无双无对」。\n");
	
	if ((int)me->query_skill("force") < 120)
		return notify_fail("你的内功不够娴熟,不会使用「无双无对」。\n");
	
	if ((int)me->query("neili") < 300)
		return notify_fail("你的内力不够。\n");

	if ((int)me->query_temp("hsj_wu"))
		return notify_fail("你已经在运功中了。\n");

	msg = HIY "$N" HIY "双手握起" + weapon->name() + HIY
              ",剑芒暴长,一式「无双无对」,驭剑猛烈绝伦地往$n"
              HIY "冲刺!\n"NOR;

        ap = me->query_skill("sword") + me->query("level") * 20 + 
             me->query_skill("martial-cognize", 1);
        dp = target->query_skill("dodge") + target->query("level") * 20 + 
             target->query_skill("martial-cognize", 1);

        if (ap * 11 / 20 + random(ap) > dp)
        {
                me->start_busy(2);

                damage = (int)me->query_skill("sword");
                damage += random(damage / 4);
                me->add("neili", -250);
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 45,
                                           HIR "$n" HIR "看到$N" HIR "这一剑妙到毫巅,全然无"
                                           "法抵挡,一愣神之间已经被这一剑刺得鲜血飞溅!" NOR);
        } else
        {
                me->start_busy(3);
                msg += CYN "可是$p" CYN "看破了$P"
                       CYN "的企图,向旁一跃,躲了开去。" NOR;
        }

        message_combatd(msg, me, target);
	return 1;
}
Пример #7
0
int perform(object me)
{
        string msg;
        object target;
        int skill, ap, dp, damage;

        if (userp(me) && ! me->query("can_perform/longzhua-gong/zhua"))
                return notify_fail("你还没有受过高人指点,无法施展「神龙抓」。\n");
                
        if (! target)
        {
                me->clean_up_enemy();
                target = me->select_opponent();
        }

        if (! target || ! me->is_fighting(target))
                return notify_fail("「神龙抓」只能在战斗中对对手使用。\n");

        skill = me->query_skill("longzhua-gong", 1);

        if (skill < 135)
                return notify_fail("你的龙爪功等级不够,不会使用「神龙抓」!\n");

        if (me->query("neili") < 200)
                return notify_fail("你的真气不够,无法运用「神龙抓」!\n");
 
        if (me->query_skill_mapped("claw") != "longzhua-gong") 
                return notify_fail("你没有激发龙爪功,无法使用「神龙抓」!\n");

       if (! living(target))
              return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIY "$N" HIY "大喝一声,飞身扑至$n" HIY "面前,随即伸手抓向"
              "$p" HIY "的要害!\n" NOR;
 
        ap = ap_power(me, "claw") + me->query_skill("force"); 
        dp = dp_power(target, "parry") + target->query_skill("dodge"); 
        
        if (ap / 2 + random(ap) > dp)
        {
                me->add("neili", -180);
                damage = da_power(me, "claw");
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 45,
                                           HIR "$p" HIR "见来势凶猛,难以躲避,只好"
                                           "勉强化解,谁知$P" HIR "的手好像长了眼睛"
                                           "一般,扑哧一下正抓中$p" HIR "的要害,登"
                                           "时鲜血飞溅!\n" NOR);
                me->start_busy(2);
        } else
        {
                msg += CYN "可是$p" CYN "的看破了$P" CYN
                       "的招式,连消带打,全然化解了$P"
                       CYN "的攻势。\n" NOR;
                me->add("neili",-60);
                me->start_busy(3);
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #8
0
int perform(object me, object target)
{
        object weapon;
        int damage, ap, dp;
        string msg;

        if (userp(me) && ! me->query("can_perform/qiantian-zhi/zhi"))
                return notify_fail("你还没有受过高人指点,无法施展" ZHI "。\n");

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

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

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

        if ((int)me->query_skill("qiantian-zhi", 1) < 80)
                return notify_fail("你乾天指法不够娴熟,难以施展" ZHI "。\n");

        if (me->query_skill_mapped("finger") != "qiantian-zhi")
                return notify_fail("你没有激发乾天指法,难以施展" ZHI "。\n");

        if (me->query_skill_prepared("finger") != "qiantian-zhi")
                return notify_fail("你没有准备乾天指法,难以施展" ZHI "。\n");

        if ((int)me->query_skill("force") < 100)
                return notify_fail("你内功修为不够,难以施展" ZHI "。\n");

        if ((int)me->query("neili") < 100)
                return notify_fail("你现在的真气不够,难以施展" ZHI "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIR "$N" HIR "陡然使出一招「乾阳神指」,双指齐施,同时朝$n"
              HIR "面门及胸口处点去。\n" NOR;

        ap = ap_power(me, "finger");
        dp = dp_power(target, "parry");
             
        if (ap / 2 + random(ap) > dp)             
        {
                me->start_busy(2);
                damage = da_power(me, "finger");
                me->add("neili", -80);
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 30,
                                           HIR "结果$p" HIR "躲闪不及,登时被$P"
                                           HIR "一指点中,内息不由得一滞,难受之极。\n" NOR);
        } else
        {
                me->start_busy(3);
                me->add("neili", -50);
                msg += CYN "可是$p" CYN "识破了$P"
                       CYN "这一招,斜斜一跃避开。\n" NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #9
0
int exert(object me, object target)
{
        int skill;

        if (target != me)
                return notify_fail("你只能用明玉功恢复自己的气血。\n");

        if ((int)me->query("neili") < 1000)
                return notify_fail("你的真气不够!");

        if ((int)me->query_temp("qizu"))
                return notify_fail("你已经在运功中了。\n");

        skill = me->query_skill("mingyu-gong");

        me->add("neili", -100);

        message_combatd(HIC "$N" HIC "运起「气足」奇功,"
                        "眼中闪过一片青芒,随即恢复正常\n" NOR, me);

        me->set_temp("qizu", 1);

        me->apply_condition("mingyu_qizu", skill / 50);
        if (me->is_fighting()) me->start_busy(3);

        return 1;
}
Пример #10
0
int perform(object me, object target)
{
        object weapon;
        int damage;
        string msg;

        if (userp(me) && ! me->query("can_perform/zhenyu-quan/tong"))
                return notify_fail("你所使用的外功中没有这种功能。\n");

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

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

        if (objectp(weapon = me->query_temp("weapon")))
                return notify_fail(TONG "只能空手施展。\n");

        if ((int)me->query_skill("zhenyu-quan", 1) < 80)
                return notify_fail("你镇狱拳法不够娴熟,难以施展" TONG "。\n");

        if ((int)me->query_skill("force") < 120)
                return notify_fail("你的内功修为不够,难以施展" TONG "。\n");

        if (me->query_skill_mapped("cuff") != "zhenyu-quan") 
                return notify_fail("你没有激发镇狱拳法,难以施展" TONG "。\n");

        if (me->query_skill_prepared("cuff") != "zhenyu-quan")
                return notify_fail("你没有准备镇狱拳法,难以施展" TONG "。\n");

        if ((int)me->query("neili") < 150)
                return notify_fail("你现在的真气不够,难以施展" TONG "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIR "$N" HIR "随手挥出一拳,飘忽不定的击向$n" HIR ",看似竟不"
              "着半点力道。\n" NOR;

        if (random(me->query_skill("cuff")) > target->query_skill("dodge") / 2)
        {
                me->start_busy(2);
                damage = me->query_skill("cuff");
                damage = damage / 2 + random(damage / 2);
                me->add("neili", -50);
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 35,
                                           HIR "$n" HIR "只是随手一挡,哪知$N" HIR
                                           "这拳后势无穷,霎时拳劲吞吐,穿\n胸而过"
                                           "。$n" HIR "顿时呕出几大口鲜血,几欲晕"
                                           "厥!\n" NOR);
        } else
        {
                me->start_busy(3);
                me->add("neili", -30);
                msg += CYN "可是$p" CYN "识破了$P"
                       CYN "招后更有杀着,当即向后跃开。\n" NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #11
0
int perform(object me, object target)
{
        object weapon;
        string msg;
        int i, attack_time;

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

        if( !target
        ||      !target->is_character()
        ||      !me->is_fighting(target) )
                return notify_fail("你只能对战斗中的对手使用这一绝招。\n");

        if (!objectp(weapon = me->query_temp("weapon"))
                || (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不对。\n");

        if( (int)me->query_skill("fuqi-daofa", 1) < 40 )
                return notify_fail("依你目前的功力,还使不出这一绝招。\n");

        if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/20 )
        {
                attack_time = random((int)me->query_skill("fuqi-daofa", 1) / 20);
                if(attack_time < 1)
                        attack_time = 1;

        msg = HIC "$N淡然一笑,刀势骤然加快,招数首尾相衔,连绵不绝的攻向$n!\n" NOR;
        msg += HIM "$n看不清招式来路,顿时手忙脚乱,抵挡不及,瞬间已接连中招!\n" NOR;

                for(i = 0; i < attack_time; i++)
                        COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);
                message_combatd(msg, me, target);
                me->start_busy(3);
                me->add("neili", -100);
        }

        else
        {
        msg = HIC "$N淡然一笑,刀势骤然加快,招数首尾相衔,连绵不绝的攻向$n!\n" NOR;
        msg += HIY"可是$n早有防备,见招拆招,守御得水泼不进,将来招一一化解。\n" NOR;
                message_combatd(msg, me, target);
                me->start_busy(3);
        }

        if(!target->is_fighting(me)) target->fight_ob(me);
        return 1;
}
Пример #12
0
int perform(object me, object target) 
{ 
        object weapon; 
        string msg; 
        int ap, dp; 
        int damage; 

        if (userp(me) && ! me->query("can_perform/wuxiang-zhi/wuse"))
                return notify_fail("你还没有受过高人指点,无法施展「无色无相」。\n");
                        
        if (! target) target = offensive_target(me); 
        
        if (! target || ! me->is_fighting(target)) 
                return notify_fail("「无色无相」只能在战斗中对对手使用。\n"); 
         
        if (me->query_temp("weapon") || 
            me->query_temp("secondary_weapon")) 
                return notify_fail("你必须空手才能使用「无色无相」!\n"); 
         
        if (me->query_skill("force") < 100) 
                return notify_fail("你的内功的修为不够,不能使用这一绝技!\n"); 
        
        if (me->query_skill("wuxiang-zhi", 1) < 150) 
                return notify_fail("你的无相指修为不够,目前不能使用「无色无相」!\n"); 
         
        if (me->query("neili") < 400) 
                return notify_fail("你的真气不够,无法使用「无色无相」!\n"); 
         
        if (me->query_skill_mapped("finger") != "wuxiang-zhi") 
                return notify_fail("你没有激发大力无相指,不能使用「无色无相」!\n"); 
         
        msg = HIY "$N" HIY "聚起全身功力,汇聚于右指,纵身而上," 
              HIY "向$n扑去,同时一指划出,如同流星一般击向$n" + HIY "!\n" NOR; 
         
        ap = ap_power(me, "finger") + me->query_skill("force");
        dp = dp_power(target, "parry") + target->query_skill("dodge");
         
        if (ap / 2 + random(ap) > dp) 
        { 
                damage = da_power(me, "finger");
                me->add("neili", -200); 
         
                msg += HIR "只见$p" HIR "一声惨叫,已被点中胸口要穴," 
                       "$p" HIR "只觉得胸口气血汹涌,全身气血" 
                       "倒流,哇的一声吐出一口鲜血,苦不堪言!\n" NOR;
		msg += COMBAT_D->do_damage(me, target, REMOTE_ATTACK, damage, 70); 
                me->start_busy(2);
        } else 
        { 
                me->add("neili", -100); 
                me->start_busy(3); 
                msg += CYN "可是$p" CYN "看破了$N" CYN "的企图,轻轻" 
                       CYN "向后飘出数丈,躲过了这一致命的一击!\n"NOR; 
                me->start_busy(3);
        } 
        message_combatd(msg, me, target); 
         
        return 1; 
}
Пример #13
0
int perform(object me)
{
        string msg;
        object target;
        int skill, ap, dp, damage;

        if (userp(me) && ! me->query("can_perform/yingzhua-gong/chumo"))
                return notify_fail("你还没有受过高人指点,无法施展「荡妖除魔」。\n");
                
        if (! target)
        {
                me->clean_up_enemy();
                target = me->select_opponent();
        }

        if (! target || ! me->is_fighting(target))
                return notify_fail("「荡妖除魔」只能在战斗中对对手使用。\n");

        skill = me->query_skill("yingzhua-gong", 1);

        if (skill < 135)
                return notify_fail("你的鹰爪功等级不够,不会使用「荡妖除魔」!\n");

        if (me->query("neili") < 250)
                return notify_fail("你的真气不够,无法运用「荡妖除魔」!\n");
 
        if (me->query_skill_mapped("claw") != "yingzhua-gong") 
                return notify_fail("你没有激发鹰爪功,无法使用「荡妖除魔」!\n");

       if (! living(target))
              return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIY "$N" HIY "微微一笑,双掌缓缓的向$n" HIY "抓出,此招"
              "看上去也平平无奇,并无多少精妙变化!\n" NOR;
 
        ap = ap_power(me, "claw") + me->query_skill("force");
        dp = dp_power(target, "dodge") + me->query_skill("parry");
        
        if (ap / 2 + random(ap) > dp)
        {
                me->add("neili", -200);
                damage = da_power(me, "claw");
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 45,
                                           HIR "不知怎么的,$p" HIR "却偏偏躲不开$P"
                                           HIR "这一抓,结果被抓了个正中,不由得闷"
                                           "哼一声,退了几步。\n" NOR);
                me->start_busy(2);
        } else
        {
                msg += CYN "可是$p" CYN "没有轻视$P" CYN
                       "这一抓,连忙招架,顺势跃开,没有被$P"
                       CYN "得手。\n" NOR;
                me->add("neili",-40);
                me->start_busy(3);
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #14
0
int perform(object me, object target)
{
        string msg;
        int ap, dp;

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

        if (! target || ! target->is_character() || ! me->is_fighting(target))
                return notify_fail("你一个人跳甚么?\n");

        if (me->query("gender") == "无性")
                return notify_fail(HIY "一个公公,满场乱跳,羞也不羞?\n" NOR);

        if ((int)me->query_skill("beiming-shengong", 1) < 100)
                return notify_fail(HIY "你的北冥神功修为不够。\n" NOR);

        if ((int)me->query_skill("lingboweibu", 1) < 100)
                return notify_fail(HIY "你的凌波微步不够熟练。\n" NOR);

        if ((int)me->query("neili") < 400)
                return notify_fail(HIY "你现在真气不足。\n" HIY);

        if (target->is_busy())
                return notify_fail(target->name() + "目前正自顾不暇,放胆攻击吧!\n");

        if (me->query("gender") == "男性")
        {
                msg = HIC "$N提起真气,依照先天伏羲六十四卦,不理$n如何出招,自顾自的将"
                      "凌波微步由头到尾迅速无比的走了一次。\n只见$N意态飘逸,影子乱飞,"
                      "$n却是一点皮毛也沾不上。$N真个将逍遥二字发挥得淋漓尽至。\n" NOR;
        }
        else  
        {
                msg = HIG "$N提起真气,依照先天伏羲六十四卦,不理$n如何出招,自顾自的将"
                      "凌波微步由头到尾迅速无比的走了一次。\n$N仿如洛神再生,微步凌波,"
                      "$n却是一点皮毛也沾不上。$N真个将逍遥二字发挥得淋漓尽至。\n" NOR;
        }
        
        ap = me->query_skill("lingboweibu", 1) * 3 / 2 + me->query("level") * 20 + 
             me->query_skill("martial-cognize", 1);
        dp = target->query_skill("dodge") + target->query("level") * 20 + 
             target->query_skill("martial-cognize", 1);
                   
        if (ap / 2 + random(ap) > dp)
        {
                msg += HIW "$N犹如神仙下凡,$n跟随着$N的舞步转了个头晕眼花\n" NOR;
                target->start_busy( (int)me->query_skill("lingboweibu",1) / 30);
                me->add("neili", -100);
                // me->start_busy(1);
        } else 
        {
                msg += HIG "可是$n看破了$N的舞步,仪态从容的躲了过去\n" NOR;
                me->add("neili", -100);
                me->start_busy(3);
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #15
0
int perform(object me, object target)
{
        object weapon;
        string msg;
        int ap, dp;
        int damage;
 
        if (! target) target = offensive_target(me);

        if (userp(me) && ! me->query("can_perform/hanwang-qingdao/ying"))
                return notify_fail("你所使用的外功中没有这种功能。\n");

        if (! target || ! me->is_fighting(target))
                return notify_fail(YING "只能在战斗中对对手使用。\n");

        if (! objectp(weapon = me->query_temp("weapon")) ||
              (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不对,难以施展" YING "。\n");

        if (me->query_skill("force") < 120)
                return notify_fail("你的内功的修为不够,难以施展" YING "。\n");

        if (me->query_skill("hanwang-qingdao", 1) < 80)
                return notify_fail("你的韩王青刀修为不够,难以施展" YING "。\n");

        if (me->query("neili") < 100)
                return notify_fail("你目前的内力不足,难以施展" YING "。\n");

        if (me->query_skill_mapped("blade") != "hanwang-qingdao")
                return notify_fail("你没有激发韩王青刀,难以施展" YING "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIC "霎时只见$N" HIC "手中" + weapon->name() +
              HIC "一振,顿时幻出重重刀影,将$n" HIC "团团裹住!\n" NOR;

        ap = me->query_skill("blade");
        dp = target->query_skill("parry");

        if (ap / 2 + random(ap) > dp)
        {
                damage = ap / 3 + random(ap / 3);
                me->start_busy(1);
                me->add("neili", -80);
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 20,
                                           HIR "只听$p" HIR "一声惨嚎,一股血柱自" HIR
                                           "血色刀影中激射而出!\n" NOR);
        } else
        {
                me->add("neili", -40);
                me->start_busy(3);
                msg += CYN "可是$n" CYN "淡淡一笑,浑然不将$N"
                       CYN "重重刀影放在眼中,随意将之架开。\n" NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #16
0
int perform(object me, object target)
{
        object weapon;
        string msg;

        if (userp(me) && ! me->query("can_perform/damo-jian/sanjue"))
                return notify_fail("你还没有受过高人指点,无法施展「达摩三绝剑」。\n");
 
        if (! target) target = offensive_target(me);

        if (! target || ! me->is_fighting(target))
                return notify_fail("「达摩三绝剑」只能在战斗中对对手使用。\n");

        if (! objectp(weapon = me->query_temp("weapon")) ||
              (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不对。\n");

        if (me->query_dex() < 30)
                return notify_fail("你的身法不够,目前还不能使用这项绝技!\n");

        if (me->query_skill("force") < 200)
                return notify_fail("你的内功的修为不够,不能使用这一绝技!\n");

        if (me->query_skill("dodge") < 200)
                return notify_fail("你的轻功修为不够,不能使用达摩三绝剑!\n");
 
        if (me->query_skill("sword") < 200)
                return notify_fail("你的剑法修为不够,目前不能使用达摩三绝剑!\n");

        if (me->query("neili") < 150)
                return notify_fail("你的真气不够,不能使用达摩三绝剑!\n");

        if (me->query_skill_mapped("sword") != "damo-jian")
                return notify_fail("你没有激发达摩剑,不能使用达摩三绝剑!\n");

        msg = HIC "$N" HIC "使出达摩剑的绝技「达摩三绝剑」,身法陡然加快!\n" NOR;
        message_combatd(msg, me);

        me->add("neili", -75);

        // The first attack
        me->add_temp("apply/attack", 100);
        COMBAT_D->do_attack(me, target, weapon, 0);

        // The second attack
        me->add_temp("apply/attack", 200);
        COMBAT_D->do_attack(me, target, weapon, 0);

        // The third attack
        me->add_temp("apply/attack", 300);
        COMBAT_D->do_attack(me, target, weapon, 0);

        // Back
        me->add_temp("apply/attack", -600);

        me->start_busy(1 + random(3));

        return 1;
}
Пример #17
0
int perform(object me, object target)
{
        object weapon;
        string msg, skill;
        int i;

        if (userp(me) && ! me->query("can_perform/duanjia-jian/lian"))
                return notify_fail("你还没有受过高人指点,无法施展" LIAN "。\n");

        if (! target)
        {
                me->clean_up_enemy();
                target = me->select_opponent();
        }

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

        if (! objectp(weapon = me->query_temp("weapon"))
           || ((string)weapon->query("skill_type") != "staff"
           && (string)weapon->query("skill_type") != "sword"))
                return notify_fail("你使用的武器不对,难以施展" LIAN "。\n");

        if ((int)me->query_skill("duanjia-jian", 1) < 120)
                return notify_fail("你的段家剑法不够娴熟,难以施展" LIAN "。\n");

        skill = weapon->query("skill_type");

        if (me->query_skill_mapped(skill) != "duanjia-jian")
                return notify_fail("你现在没有激发段家剑,难以施展" LIAN "。\n");

        if ((int)me->query_skill("force") < 150)
                return notify_fail("你的内功修为不够,难以施展" LIAN "。\n");

        if ((int)me->query("neili") < 300)
                return notify_fail("你现在的真气不够,难以施展" LIAN "。\n");
        
        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIY "$N" HIY "深吸一口气,脚下步步进击,稳重之极,手中的" +
              weapon->name() + HIY "使得犹如飞龙一般,缠绕向$n" HIY "!\n" NOR;
        message_combatd(msg, me, target);

        me->add("neili", -100);

        for (i = 0; i < 5; i++)
        {
                if (! me->is_fighting(target))
                        break;
                if (random(5) == 0 && ! target->is_busy())
                        target->start_busy(1);
                COMBAT_D->do_attack(me, target, weapon, 0);
        }

        me->start_busy(1 + random(5));
        return 1;
}
Пример #18
0
int perform(object me, object target)
{
	object weapon;
        string msg;
        int ap, dp;
        int damage;
 
        if (! target)
        {
	        me->clean_up_enemy();
	        target = me->select_opponent();
        }

	if (! target || ! me->is_fighting(target))
		return notify_fail("「金面生莲」只能对战斗中的对手使用。\n");
 
	if (! objectp(weapon = me->query_temp("weapon")) ||
	    (string)weapon->query("skill_type") != "sword")
		return notify_fail("手中没有剑如何使用「金面生莲」!\n");

	if ((int)me->query("neili") < 250)
		return notify_fail("你的真气不够!\n");

	if ((int)me->query_skill("force") < 120)
		return notify_fail("你的内功火候不够!\n");

	if ((int)me->query_skill("miaojia-jian", 1) < 100)
		return notify_fail("你的苗家剑法还不到家,无法使用「金面生莲」!\n");

        if (me->query_skill_mapped("sword") != "miaojia-jian")
                return notify_fail("你没有激发苗家剑法,无法使用「金面生莲」!\n");

	msg = HIG "$N" HIG "手中的" + weapon->name() +
              HIG "一晃,突然化作万朵金莲,逼向$n" HIG ",眩人耳目!\n" NOR;

        ap = ap_power(me, "sword"); 
        dp = dp_power(target, "parry"); 
        
        if (ap / 2 + random(ap) > dp)
	{
		damage = da_power(me, "sword");
		
                me->add("neili", -200);
		msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 50,
                                           HIR "$n" HIR "眼花缭乱,完全无法看清$N"
                                           HIR "的剑招,一个不慎,连披数剑,血溅五步!\n" NOR);
		me->start_busy(2);
	} else 
	{
		msg += HIC "可是$p" HIC "眼明手快,叮叮当当接连将$P"
                       HIC "的杀招接下,叹为观止!\n"NOR;
                me->add("neili", -100);
		me->start_busy(2);
	}
	message_combatd(msg, me, target);

	return 1;
}
Пример #19
0
int perform(object me, object target)
{
        object weapon;
        string msg;
        int ap, dp;
        int damage;
 
        if (! target) target = offensive_target(me);

        if (userp(me) && ! me->query("can_perform/xiewei-bian/tengshe"))
                return notify_fail("你所使用的外功中没有这种功能。\n");

        if (! target || ! me->is_fighting(target))
                return notify_fail(TENGSHE "只能在战斗中对对手使用。\n");

        if (! objectp(weapon = me->query_temp("weapon")) ||
              (string)weapon->query("skill_type") != "whip")
                return notify_fail("你使用的武器不对。\n");

        if ((int)me->query_skill("xiewei-bian", 1) < 100)
                return notify_fail("你使用的武器不对,无法施展" TENGSHE "。\n");

        if (me->query("neili") < 200)
                return notify_fail("你的真气不够,无法施展" TENGSHE "。\n");

        if (me->query_skill_mapped("whip") != "xiewei-bian")
                return notify_fail("你没有激发蝎尾鞭,无法施展" TENGSHE "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = WHT "$N" WHT "陡然施展出「腾蛇」诀,手腕轻轻一抖," + weapon->name() +
              WHT "顿时拔地弹起,如同活物一般悄然袭向$n" + WHT "!\n" NOR;

        ap = me->query_skill("whip") + me->query_skill("force");
        dp = target->query_skill("force") + target->query_skill("parry");

        if (ap / 2 + random(ap) > dp)
        {
                damage = ap / 5 + random(ap / 4);
                me->add("neili", -150);
                me->start_busy(1);
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 50,
                                           HIR "然而$n" HIR "未能看破企图,一声惨嚎,"
                                           + weapon->name() + HIR "鞭端已没入体内半寸"
                                           ",登时连退数步!\n" NOR);
        } else
        {
                me->add("neili", -100);
                me->start_busy(3);
                msg += CYN "可是$p" CYN "运足内力,奋力挡住了"
                       CYN "$P" CYN "这神鬼莫测的一击!\n"NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #20
0
int perform(object me, object target)
{
        int damage;
        string msg;
        int ap, dp;

        if (userp(me) && ! me->query("can_perform/yizhi-chan/jingmo"))
                return notify_fail("你还没有受过高人指点,无法施展「惊魔一指」。\n");
                
        if (! target)
        {
                me->clean_up_enemy();
                target = me->select_opponent();
        }
        if (! target || ! me->is_fighting(target))
                return notify_fail("「惊魔一指」只能对战斗中的对手使用。\n");

        if ((int)me->query_skill("yizhi-chan", 1) < 120)
                return notify_fail("你的一指禅还不够娴熟,现在还无法使用「惊魔一指」。\n");

        if ((int)me->query_skill("force") < 180)
                return notify_fail("你的内功火候不够,难以施展「惊魔一指」。\n");
                                
        if ((int)me->query("neili") < 200)
                return notify_fail("你现在真气不够,无法运用「惊魔一指」。\n");
                        
        if (me->query_skill_mapped("finger") != "yizhi-chan") 
                return notify_fail("你没有激发一指禅,无法使用惊魔一指!\n");

       if (! living(target))
              return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIY "$N" HIY "大喝一声,中指按出,一股锐利的杀气攻向$n"
              HIY ",气势恢宏之极!\n" NOR;

        ap = ap_power(me, "finger");
        dp = dp_power(target, "dodge");
        
        if (ap / 2 + random(ap) > dp)
        {
                damage = da_power(me, "finger");
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 50,
                                           HIR "只见$p" HIR "躲闪不及,被$P"
                                           HIR "这一指正戳在胸前,不由得连声"
                                           "惨叫,胸口鲜血直流!\n" NOR);
                me->start_busy(2);
        } else 
        {
                msg += CYN "可是$p" CYN "急忙跃开,躲开了$P"
                       CYN "这一指。\n" NOR;
                me->add("neili", -60);
                me->start_busy(3);
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #21
0
int perform(object me, object target)
{
        object weapon;
        string msg;
        int ap, dp;
        int damage;

        if (userp(me) && ! me->query("can_perform/wuliang-jian/qian"))
                return notify_fail("你还不了解这个绝招的运功窍门,无法施展" QIAN "。\n");

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

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

        if (! objectp(weapon = me->query_temp("weapon")) ||
              (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不对,难以施展" QIAN "。\n");

        if (me->query_skill("force") < 150)
                return notify_fail("你的内功的修为不够,难以施展" QIAN "。\n");

        if (me->query_skill("wuliang-jian", 1) < 100)
                return notify_fail("你的无量剑法修为不够,难以施展" QIAN "。\n");

        if (me->query("neili") < 300)
                return notify_fail("你的真气不够,难以施展" QIAN "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIR "只见$N" HIR "手中" + weapon->name() + HIR "“唰"
              "唰唰唰”连攻四剑,剑招去势极快,全然笼罩$n" HIR "!\n" NOR;

        ap = ap_power(me, "sword");
        dp = dp_power(target, "parry");

        if (ap / 2 + random(ap) > dp)
        {
                damage = da_power(me, "sword");
                me->add("neili", -150);
                me->start_busy(2);
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 60,
                                           HIR "结果$n" HIR "阻挡不及,顿时被$N"
                                           HIR "斩中数剑,伤口见骨,苦不堪言。\n"
                                           NOR);
        } else
        {
                me->add("neili", -50);
                me->start_busy(3);
                msg += CYN "可却见" CYN "$n" CYN "猛的拔地而起,避开了"
                       CYN "$N" CYN "的剑招。\n"NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #22
0
int perform(object me, object target)
{
        int damage;
        string msg;
        object weapon;
        int ap, dp;

        if (userp(me) && ! me->query("can_perform/huashan-sword/feilong"))
                return notify_fail("你不会使用天外飞龙。\n");

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

        if (! target || ! me->is_fighting(target))
                return notify_fail("「天外飞龙」只能在战斗中对对手使用。\n");

        if (! objectp(weapon = me->query_temp("weapon")) ||
            (string)weapon->query("skill_type") != "sword")
                return notify_fail("不拿剑怎么使用「天外飞龙」?\n");

        if ((int)me->query_skill("huashan-sword", 1) < 150 )
                return notify_fail("你华山剑法不够娴熟,使不出「天外飞龙」。\n");

        if ((int)me->query_skill("force") < 150 )
                return notify_fail("你内功火候不够,使不出「天外飞龙」。\n");

        if ((int)me->query("neili") < 400)
                return notify_fail(HIC"你现在真气不够,无法将「天外飞龙」使完!\n"NOR);

        if (me->query_skill_mapped("sword") != "huashan-sword")
                return notify_fail("你没有激发华山剑法,无法使用「天外飞龙」。\n");

        msg = HIC "$N" HIC "心念电闪,一提内力,勒手仗剑,运劲于臂,呼"
              "的一声向$n" HIC "掷了出去,\n" NOR;

        ap = me->query("combat_exp");
        dp = target->query("combat_exp");
        if (ap > dp / 2 * 3 && ap / 2 + random(ap) > dp)
        {
                me->start_busy(3);
                damage = target->query("max_qi");
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 30,
                                           HIC "$n疾忙跃起,但剑如电闪,只觉一阵剧痛,剑刃"
                                           "拦腰而过,鲜血飞溅,皮肉卷起!\n" NOR);
                me->add("neili", -400);
        } else
        {
                me->start_busy(3);
                msg += CYN "然而$n" CYN "轻轻一笑,侧身伸指,正弹"
                       "在$N" CYN "的剑脊上,剑斜飞落地。\n" NOR;
                me->add("neili", -400);
        }

        weapon->move(environment(me));
        message_combatd(msg, me, target);
        return 1;
}
Пример #23
0
int perform(object me, object target)
{
        object weapon;
        int damage;
        int ap, dp;
        string msg;

        if (userp(me) && ! me->query("can_perform/xuantie-jian/juan"))
                return notify_fail("你未得高人指点,不知该如何施展卷字诀。\n");
                
        if (! target) target = offensive_target(me);

        if (! target || ! me->is_fighting(target))
                return notify_fail("卷字诀只能对战斗中的对手使用。\n");

        if (! objectp(weapon = me->query_temp("weapon")) ||
            (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不对。\n");

        if ((int)me->query_skill("xuantie-jian", 1) < 70)
                return notify_fail("你的玄铁剑法不够娴熟,不能使用卷字诀。\n");

        if ((int)me->query_skill("force") < 120)
                return notify_fail("你的内功火候不够,不能使用卷字诀。\n");

        if ((int)me->query("neili") < 100 )
                return notify_fail("你现在内力太弱,不能使用卷字诀。\n");

        if (me->query_skill_mapped("sword") != "xuantie-jian")
                return notify_fail("你没有激发玄铁剑法,不能施展卷字诀。\n");

        if (! living(target))
              return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIY "$N一抖手中的" + weapon->name() + HIY ",自下而上的朝$n"
              HIY "卷了过去,曲曲折折,变化无常!\n" NOR;

        ap = ap_power(me, "sword");
        dp = dp_power(target, "dodge");
             
        if (ap / 2 + random(ap) > dp)
        {
                target->start_busy(ap / 100 + 2);
                me->add("neili", -50);
                msg += YEL "$p" YEL "连忙竭力招架,一时无暇反击。\n" NOR;
        } else
        {
                msg += CYN "可是$p" CYN "看破了$P" CYN "的企图,斜跃避开了$P"
                       CYN "的攻击。\n"NOR;
                me->add("neili", -25);
                me->start_busy(2);
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #24
0
int perform(object me, object target)
{
        object weapon;
        int damage, ap, dp;
        string msg;

        if (userp(me) && ! me->query("can_perform/sanhua-zhang/san"))
                return notify_fail("你还没有受过高人指点,无法施展「天女散花」。\n");
                
        if (! target) target = offensive_target(me);

        if (! target || ! me->is_fighting(target))
                return notify_fail("天女散花只能对战斗中的对手使用。\n");

        if ((int)me->query_skill("sanhua-zhang", 1) < 135)
                return notify_fail("你的散花掌法不够娴熟,不会使用天女散花。\n");

        if ((int)me->query_skill("force") < 180)
                return notify_fail("你的内功修为不够,难以施展天女散花。\n");

        if ((int)me->query("neili") < 200)
                return notify_fail("你现在真气不够,无法使用天女散花。\n");

        if (me->query_skill_mapped("strike") != "sanhua-zhang") 
                return notify_fail("你没有激发散花掌,无法使用天女散花!\n");

       if (! living(target))
              return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIY "$N" HIY "哈哈一笑,双掌一错,忽然化作漫天"
              "掌影,犹如千百只手掌一齐攻向$n" HIY "!\n" NOR;

        ap = ap_power(me, "strike");
        dp = dp_power(target, "dodge");
        
        if (ap / 2 + random(ap) > dp)
        {
                me->start_busy(2);
                damage = da_power(me, "strike");
                
                me->add("neili", -150);
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 40,
                                           HIR "结果$p" HIR "没能避开$P" HIR
                                           "变幻莫测的掌法,蓬蓬接连中了数掌,"
                                           "被打得口喷鲜血,几乎摔倒!\n" NOR);
        } else
        {
                me->start_busy(3);
                me->add("neili", -50);
                msg += CYN "可是$p" CYN "识破了$P"
                       CYN "这一招,斜斜一跃避开。\n" NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #25
0
int perform(object me, object target) 
{ 
        string msg; 
        int extra, damage, ap, dp; 
        object weapon; 

        if (userp(me) && ! me->query("can_perform/kuangfeng-jian/kuang"))
                return notify_fail("你还没有领悟到这个绝招精华,无法施展。\n");
                        
        if (! target) target = offensive_target(me); 
        if (! target 
        ||  ! target->is_character() 
        ||  ! me->is_fighting(target)) 
                return notify_fail("[天外狂龙]只能对战斗中的对手使用。\n"); 

        if (! weapon = me->query_temp("weapon")) 
                return notify_fail("你没装兵器怎么打!\n"); 
                
        if ((string)weapon->query("skill_type") != "sword") 
                return notify_fail("你使用的兵器不对!\n"); 
                
        if ((int)me->query_skill("kuangfeng-jian", 1) < 100) 
                return notify_fail("你的狂风快剑不够熟练,使不出 [ 天外狂龙 ] 。\n"); 

        if ((int)me->query("neili") < 300)
                return notify_fail("你的内力不够!\n");

        if ((int)me->query_skill("sword", 1) < 100) 
                return notify_fail("你的剑法不够娴熟,使不出 [ 天外狂龙 ] 的绝招!\n"); 

        extra = me->query_skill("kuangfeng-jian", 1); 

        msg = HIY "$N" HIY "剑斜斜刺出,激起股股剑气,拔剑,收剑。在那一瞬间,天地变幻,人影竟似已缩小,\n"
              "但见剑夹杂着风,风里含着剑影!那剑气幻作无数条金黄色的龙铺天盖地袭向$n!\n" NOR;

        ap = ap_power(me, "sword");
        dp = dp_power(target, "dodge");

        if (ap / 2 + random(ap) > dp) 
        {        
                damage = da_power(me, "sword");
                me->add("neili", -200); 
                
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 60,
                                           HIR "$n" HIR "只觉得脑中轰的一下,"
                                           "身子往后倒飞出去,跌倒在地,不禁“哇”的吐了一口鲜血!n" NOR); 
                me->start_busy(2);
        } else
        {
                me->add("neili", -100);
                msg += CYN "可是$p" CYN "看破了$P" CYN "的狠毒企图,向旁跳开数步,躲开了$P" CYN "的这一波可怕的攻击!\n" NOR;
                me->start_busy(3);  
        }          
        message_combatd(msg, me, target);
        return 1;
}
Пример #26
0
int perform(object me, object target)
{
        object weapon;
        string wn, msg;
        object sroom, room;
        int ap, dp, damage;

        if (! me->is_fighting())
                return notify_fail(HUI "只能对战斗中的对手使用。\n");

        target = me->select_opponent();

        if (! target || ! target->is_character()
           || target->query("not_living"))
                return notify_fail("你打算对谁施展" HUI  "?\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        if (! objectp(weapon = me->query_temp("weapon"))
           || (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不对,难以施展" HUI "。\n");

        wn = weapon->name();

        message_combatd(HIW "$N" HIW "面露拈花之意,祭起手中" + wn +
                        HIW ",霎时碧波流转,华光万丈,说不尽的祥和。"
                        "\n" NOR, me, target);

        //  记录下最初的房间
        if (! objectp(sroom = environment(me)))
                return 1;

        ap = me->query_skill("martial-cognize", 1) +
             me->query_skill("jingyi-shengong", 1);

        dp = target->query_skill("martial-cognize", 1) +
             target->query_skill("jingyi-shengong", 1);

        damage = ap * 10 + random(ap * 10);

        // 六道轮回之人间道
        room = find_object("/d/death/liudaolunhui/rendao");
        if (! room) room = load_object("/d/death/liudaolunhui/rendao");

        me->move(room);
        target->move(room);

        message_vision(HIY "\n$N" HIY "左手轻轻一拨,右手所持的" + wn +
                       HIY "叮呤做响,剑姿说不出的潇洒妙曼。\n" NOR, me, target);

        if (ap + random(ap) > dp)
        {
                msg = COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 300,
                                           (: attack1, me, target, damage :));
        } else
Пример #27
0
int perform(object me, object target)
{
        object weapon;
        string msg;
        int ap, dp;
        int damage;

        if (userp(me) && ! me->query("can_perform/pichen-jian/ao"))
                return notify_fail("你所使用的外功中没有这种功能。\n");

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

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

        if (! objectp(weapon = me->query_temp("weapon"))
           || (string)weapon->query("skill_type") != "sword")
                return notify_fail("你所使用的武器不对,难以施展" AO "。\n");

        if ((int)me->query_skill("pichen-jian", 1) < 100)
                return notify_fail("你辟尘剑法不够娴熟,难以施展" AO "。\n");

        if (me->query_skill_mapped("sword") != "pichen-jian")
                return notify_fail("你没有激发辟尘剑法,难以施展" AO "。\n");

        if (me->query("neili") < 200)
                return notify_fail("你现在的真气不足,难以施展" AO "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIY "$N" HIY "一阵狂笑,激得周围尘砂飞扬,手中" + weapon->name() +
              HIY "携着排山倒海之势朝$n" HIY "劈去。\n" NOR;

        ap = me->query_skill("sword");
        dp = target->query_skill("parry");

        if (ap / 2 + random(ap) > dp)
        {
                damage = ap / 2 + random(ap / 2);
                me->add("neili", -150);
                me->start_busy(2);
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 35,
                                           HIR "$n" HIR "招架不利,只觉剑光闪过,"
                                           "随觉胸口一阵剧痛,喷出一口鲜血。\n" NOR);
        } else
        {
                me->add("neili", -50);
                me->start_busy(3);
                msg += CYN "可是" CYN "$n" CYN "早有防备,飞身一跃"
                       "而起,避开了$N" CYN "的剑招。\n"NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Пример #28
0
int accept_fight(object me)
{
        object weapon;

        if (me->query("opinion/" MY_OPINION) == ULTRA_OPINION)
        {
                message_vision(CYN "$N" CYN "对$n" CYN "道:“很"
                               "好,你也算是宗师高手了,来吧!咱"
                               "们比划一下!”\n" NOR,
                               this_object(), me);
                return 1;
        }

        if (! me->query_temp("want_opinion/shenni"))
        {
                command("say 你干什么要和我动手?");
                return 0;
        }

        command("look " + me->query("id"));

        COMBAT_D->do_attack(this_object(), me, 0);

        if (me->query("qi") <= 0)
        {
                message_vision(CYN "\n$N" CYN "摇摇头对$n" CYN
                               "道:“你现在的武功还差得远,连"
                               "我一招都接不住!”\n" NOR,
                               this_object(), me);
                return notify_fail("看来要好好的修炼功夫了。\n");
        }

        message_combatd(HIC "$N" HIC "右掌伸出,正和$n" HIC "手"
                        "掌相对,两人同时运起内力,不一会儿只见"
                        "二人头上生起腾腾雾气。\n忽然$N" HIC "手"
                        "掌一撤、收回功力,没有一点阻滞,不禁让"
                        "$n" HIC "大为愕然。\n" NOR, this_object(),
                        me);
        if (me->query("neili") < 3000)
        {
                message_vision(CYN "\n$N" CYN "摇摇头对$n" CYN
                               "道:“适才你内力不足,我难以衡"
                               "量,待你将内力修炼好了再来吧!"
                               "”\n" NOR, this_object(), me);
                return notify_fail("看来还是回去锻炼一下内力吧!\n");
        }
        me->set("neili", 0);
        

        call_out("check_opinion", 2, me);
        set_temp("opinion", me);
        me->delete_temp("want_opinion");
        message_vision(CYN "\n$N" CYN "一摆手道:“好了,待我想"
                       "想。”\n" NOR, this_object(), me);
        return notify_fail("看来不能心急,还得等一会儿。\n");
}
Пример #29
0
int exert(object me, object target)
{
  if ( userp(me) && !wizardp(me) && 
  !me->query("perform/lifeheal") &&
  !me->query("can_perform/hunyuan-yiqi/lifeheal") && 
  !me->query_temp("murong/xingyi"))
   return notify_fail("你所使用的内功中没有这种功能。");

	if( !target || !target->is_character() || target == me )
		return notify_fail("你要用真气为谁疗伤?\n");

	notify_fail("不是你要抓的人,凑什么热闹!\n");
	if (!userp(target) && !target->accept_hit(me)) return 0;
	
	if( me->is_fighting() || target->is_fighting())
		return notify_fail("战斗中无法运功疗伤!\n");

	if( me->is_busy() )
		return notify_fail("你现在正忙着呢,哪有空运功?\n");

	if( target->is_busy())
		return notify_fail(target->name()+"现在正忙着呢!\n");

	if( (int)me->query_skill("hunyuan-yiqi") < 20 )
		return notify_fail("你的混元一气功修为不够。\n");

	if( (int)me->query("max_neili") < 300 )
		return notify_fail("你的内力修为不够。\n");

	if( (int)me->query("neili") < 150 )
		return notify_fail("你的真气不够。\n");
/*
	if( (int)target->query("eff_qi") >= (int)target->query("max_qi") )
		return notify_fail( target->name() + "只是累了,没有受伤,不必劳起你的真气疗伤!\n");
*/
	if( (int)target->query("eff_qi") < (int)target->query("max_qi") / 5 )
		return notify_fail( target->name() + "已经受伤过重,经受不起你的真气震荡!\n");

	message_combatd( HIY "$N坐了下来运起内功,将手掌贴在$n背心,缓缓地将真气输入$n体内....\n\n过了不久,$N额头上冒出豆大的汗珠,$n吐出一口瘀血,脸色看起来红润多了。\n" NOR, me, target );

	target->receive_curing("qi", 10 + (int)me->query_skill("force")/3 );
	target->add("qi", 10 + (int)me->query_skill("force")/3 );
	if( (int)target->query("qi") > (int)target->query("eff_qi") )
		target->set("qi", (int)target->query("eff_qi"));

	me->add("neili", -100);
	me->start_busy(1);

//evil 注意了 在这里加上 userp(target)判断target(即疗伤对象)是不是玩家
//如果是玩家 则加上busy 2秒 如果不是玩家 是npc npc不busy 

	if ( userp(target)) target->start_busy(2);

	return 1;
}
Пример #30
0
int perform(object me, object target)
{
        object weapon;
        string msg;
        int i, skill;

        if (userp(me) && ! me->query("can_perform/liuyue-jian/sheng"))
                return notify_fail("你还没有受过高人指点,无法施展" SHENG "。\n");

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

        if (! target || ! me->is_fighting(target))
                return notify_fail(SHENG "只能在战斗中对对手使用。\n");

        if (! objectp(weapon = me->query_temp("weapon")) ||
              (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不对,难以施展" SHENG "。\n");

        if (me->query_skill("force") < 200)
                return notify_fail("你的内功的修为不够,难以施展" SHENG "。\n");

        if (me->query_skill("liuyue-jian", 1) < 140)
                return notify_fail("你的流月剑舞修为不够,难以施展" SHENG "。\n");

        if (me->query("neili") < 300)
                return notify_fail("你的真气不够,难以施展" SHENG "。\n");

        if (me->query_skill_mapped("sword") != "liuyue-jian")
                return notify_fail("你没有激发流月剑舞,难以施展" SHENG "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        msg = HIW "$N" HIW "手腕一阵疾抖,剑身微颤,剑作龙吟。刹那间剑芒陡涨,"
              "如天河倒泻一般洒向$n"
              HIW "。\n" NOR;

        message_combatd(msg, me, target);
        me->add("neili", -100);
        skill = me->query_skill("liuyue-jian", 1);
        me->add("apply/attack", skill / 5);
        me->add("apply/defense", skill / 5);
        
        for (i = 0; i < 6; i++)
        {
                if (! me->is_fighting(target))
                        break;
                COMBAT_D->do_attack(me, target, weapon, 0);
        }
        me->add("apply/attack", -skill / 5);
        me->add("apply/defense", -skill / 5);
        me->start_busy(1 + random(6));

        return 1;
}