找回密码
 注册
搜索
查看: 1394|回复: 8

回风剑自动反击效果

[复制链接]
门派:不明
发表于 2011-3-12 10:29:46 | 显示全部楼层 |阅读模式
int ob_hit(object ob, object me, int damage)
{
        object weapon, weapon1;
        string msg, *limbs, limb;
        int ap, dp, skill, j, i;

        if( ob->query("env/invisibility") ) return 0;
        if( !userp(me) && random(2) ) return 0;

        weapon1 = me->query_temp("weapon");

        if( me->query_skill("huifeng-jian", 1) < 150
         || me->query_skill_mapped("sword") != "huifeng-jian"
         || me->query_skill_mapped("parry") != "huifeng-jian"   // 招架必须是回风拂柳剑
         || !weapon1
         || weapon1->query("skill_type") != "sword" ) return 0;

        if( random(me->query_skill("parry")) > ob->query_skill("force")/3
         || random(me->query_con()) > ob->query_str()/3 )
                me->add_temp("hfj/"+ob->query("id"), 1);        // 添加反击参数

//      原来后发先至的判断,去除了反复判断
        if( me->query("combat_exp") < ob->query("combat_exp")/2 || me->is_busy() || damage < 100 ) return 0;

        skill = me->query_skill("huifeng-jian", 1);
        weapon = ob->query_temp("weapon");

        if( objectp(weapon) )
                msg = weapon->query("skill_type");
        else {
                mapping prepare = ob->query_skill_prepare();
                if( !sizeof(prepare) ) msg = "unarmed";
                else msg = keys(prepare)[0];
        }

        if ( me->query("neili") < ob->query("neili")/5 ) return 0;

        ap = COMBAT_D->skill_power(ob, msg, SKILL_USAGE_ATTACK) / 1000;
        if ( weapon ) ap *= 2;
        if ( ob->query("neili") > me->query("neili") * 2 ) ap += ap/2;

        dp = COMBAT_D->skill_power(me, "parry", SKILL_USAGE_DEFENSE) / 1000;
        if ( me->query("neili") > ob->query("neili") * 2 ) dp *= 2;  
        else if ( me->query("neili") > ob->query("neili") / 2 * 3 ) dp += dp/2;

        ap = ABS(ap);
        dp = ABS(dp);

        if ( random(me->query("dex")) > ob->query("dex")/2) dp += random(dp/2);
        if ( skill > 350 ) dp += random(dp);

        if ( wizardp(me) ) tell_object(me, sprintf("ap: %d, dp: %d\n", ap ,dp ));

        if ( random(dp + ap) > ap && !random(3) ) {     // 概率降低点
                limbs = ob->query("limbs");
                limb = limbs[random(sizeof(limbs))];
                msg = HIW+"只见$N后发先至,";
                msg += query_action(me, weapon1)["action"];
                msg = replace_string( msg, "$l", limb);
                msg = replace_string( msg, "$w", weapon1->name()+HIW) + "!\n"NOR;
                if( userp(ob) && !userp(me) && damage > 1500 )
                        damage = 1500 + (damage-1500)/10;       // 修改了伤害的控制
//      伤害不能全部来自于对手
//              ob->receive_damage("qi", damage/3*2 + ob->query("jiali")*2, me);
//              ob->receive_wound("qi", damage/2, me);
                j = damage/2 + me->query_skill("sword") + me->query("jiali");
                if( wizardp(me) ) tell_object(me, "你的后发先至伤害为:"+j+"。\n"NOR);
                ob->receive_damage("qi", j, me);
                ob->receive_wound("qi", j/2, me);
                msg += COMBAT_D->damage_msg(j, "刺伤");
                msg = replace_string( msg, "$l", limb);
                msg = replace_string( msg, "$w", weapon1->name());
                message_vision(msg, me, ob);
                COMBAT_D->report_status(ob, ob->query("qi") >= 0 || ob->query("eff_qi")+ob->query_temp("apply/qi") < 0);
                return -6000;
        }
        
//      峨嵋剑诀的效果 “后发制人”
        else if( me->query_temp("hfj/"+ob->query("id")) > ( 1 + random(4) )
         && ( random(me->query_skill("parry")) > ob->query_skill("force")/2
         || random(me->query_con()) > ob->query_str()/2 ) ) {
                me->delete_temp("hfj/"+ob->query("id"));
                msg = HIW"$N摸透了$n的武功套路,"+weapon1->name()+HIW"微侧,便即抢攻,竟不挡格$n的来招!!"NOR;
                message_vision(msg, me, ob);
                i = ob->query("qi");
                me->set_temp("jianjue", 1);
                me->add_temp("apply/attack",  me->query_skill("huifeng-jian", 1)/4);
                COMBAT_D->do_attack(me, ob, me->query_temp("weapon"), random(3)?1:3);
                me->add_temp("apply/attack", -me->query_skill("huifeng-jian", 1)/4);
                me->delete_temp("jianjue");
                if( i > ob->query("qi") ) return -damage/2;
                else return -damage;
        }
        return 0;
}

评分

1

查看全部评分

门派:不明
 楼主| 发表于 2011-3-12 10:34:40 | 显示全部楼层
简单的说,parry高,身法高,根骨高
反击的几率就高!
不过最高不超过1/2吧。skills > 350,属性好应该超过1/3
门派:不明
发表于 2011-3-12 13:08:14 | 显示全部楼层
原帖由 panix@ts 于 2011-3-12 10:34 发表
简单的说,parry高,身法高,根骨高
反击的几率就高!
不过最高不超过1/2吧。skills > 350,属性好应该超过1/3

高gg是不可能的了,看来有必要下次免费的时候把sf调高点
门派:不明
发表于 2011-3-13 15:04:46 | 显示全部楼层
难道都在研究峨眉啊    有意思
门派:不明
发表于 2011-3-13 15:06:02 | 显示全部楼层
parry高,身法高,根骨高
bl gg 都是增加parry
sf 再高 只能牺牲悟性了
门派:不明
发表于 2011-3-13 15:09:27 | 显示全部楼层
原帖由 mahone@ts 于 2011-3-13 15:06 发表
parry高,身法高,根骨高
bl gg 都是增加parry
sf 再高 只能牺牲悟性了

牺牲wx影响成长,划不来
门派:不明
发表于 2011-3-14 00:10:59 | 显示全部楼层
峨眉do job 用blade 好像不错
门派:不明
发表于 2011-3-18 07:33:31 | 显示全部楼层
hfj多好的skill啊,可惜现在一眼望去有几个用的?
门派:不明
发表于 2011-3-18 08:15:20 | 显示全部楼层
我在用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-8-7 10:42 , Processed in 0.029419 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表