查看单个帖子
旧 2003-07-30   #3
beginer
初级会员
级别:6 | 在线时长:125小时 | 升级还需:15小时级别:6 | 在线时长:125小时 | 升级还需:15小时级别:6 | 在线时长:125小时 | 升级还需:15小时
 
beginer 的头像
 
注册: 02年08月30日
帖子: 12
声望力: 0
声望: 10 beginer 闻道则喜
现金:6两梁山币
资产:7两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
我来给个详细的解答。

注:18<=ratio<=27
怪的最大内力=你的最大内力×ratio/20 (你曾经达到的最高内力值,练法宝可降这个值)
怪的最大法力=你的最大法力×ratio/20 (你曾经达到的最高法力值,练法宝可降这个值)
怪的技能等级=你的最高技能等级×ratio/20
怪的wx=1.02×(你的wx)×ratio/20
怪的dx=(1.02X(你的dx)×ratio/20×2+1.02×(你的wx)×ratio/20)/3
怪的内力加力值=怪的enable内力等级/2 (也=你的内力加力值×ratio/20 注:当你的内力等级即你技能的最高等级时)
怪的法力加力值=怪的最大法力/30+1 (也=你的法力加力值×2/3×ratio/20 注:当你现在的最大法力即你曾经达到的最大值时)
以上为基本知识
以下解读combatd.c
以下表达式必须安这个次序
伤害力1=(攻击方的兵器伤害力+random(攻击方的兵器伤害力))/2
伤害力2=伤害力1+技能的伤害力×伤害力1/100 注:比如千钧棒法中大闹阎罗府这招的伤害力为35,即技能伤害力
伤害bonus=攻击方当前臂力 (挺大的,因为你enforce了)
伤害bonus=伤害bonus+内力bonus=攻击方当前左边内力/20+攻击方加力值-防守方当前左边内力/25
伤害bonus=伤害bonus+技能内力×伤害bonus/100 注:技能内力指招式中带内力,这出现在掌法拳法中,带兵器时这行忽略。
伤害bonus=伤害bonus+技能bonus 注:技能bonus仅在jinhun-zhang有,原因在源码中仅它带了自己单独的hit_ob函数
伤害bonus=伤害bonus+兵器bonus 注:兵器bonus发生在断刀与毒蒺黎
伤害bonus=(伤害bonus+random(伤害bonus))/2
伤害=伤害力2+伤害bonus
当random(防御方wx)>攻击方wx,伤害会变小,咱们杀怪一般不考虑这个。
还有你的法宝能担住一部分伤害,两个顶级法宝能档2*125*20=5000点伤害,记住在杀怪或pk前将其charge满。
还有内力反震,发生在攻击方是空手攻击,伤害力也有不同的计算,这里就不多作讨论了。

综上所述,怪的伤害力跟其当前左边内力及加力值有很大关系,其它只是在特殊情况下再叠加影响。
1. 如果skills 非常平均, 都是500(包括特殊法力,内功)
那么保留75年内力,和降低到40年内力, 怪每次攻击的
dmg 会随内力的调整而降低吗?
答:会降低。你应该用练法宝来降低。关于内力的参数有三个, force max_force maxmium_force,最后一个是隐性的,练法宝可降低。

2. 如果其他武功都是500, 而force 和特殊内功 只学到300
(45年内力), 在内力不变的情况下, 把force 和特殊内功
都补平到500, 怪的dmg 会提高吗?
答:不会。怪的加力值早就那么高了,前面说过,一般影响伤害力的主要是当前左边内力和加力值,你把force 和特殊内功
都补平到500,对这两项没影响。

3. 怪的roar dmg 与灭妖者的什么系数有关? 最好附加一份
exert roar 的code
答:ob = all_inventory(environment(me));
skill = me->query_skill("force");
force = me->query("max_force");
for(i=0; i<sizeof(ob); i++) {
if( !living(ob[i]) || ob[i]==me ) continue;
if(!me->visible(ob[i])) continue;

if(!valid_kill(me,ob[i],0)) continue; // mon 6/28/99

if( skill/2 + random(skill/2) < (int)ob[i]->query("cps") * 2 ) continue;

damage = skill + force/10 - ((int)ob[i]->query("max_force") / 10);
if( damage > 0 ) {
ob[i]->receive_damage("sen", damage, me);
if( (int)ob[i]->query("force") < skill * 2 )
ob[i]->receive_wound("sen", damage/2, me);
me是攻击方,ob是防守方。即:
damage=怪的enable内力值+怪的当前右边内力/10-你的右边内力值/10
=怪的enable内力值+0.35×你的内力右边值/10 (注:最后一个怪时)


fat chenghua
chan chenghua

纷纷世事无穷尽
茫茫泥海我已归
beginer 当前离线