注册 | 登录

游侠NETSHOW论坛





查看: 6265|回复: 7
打印 上一主题 下一主题

[讨论] 国王的伤害计算公式是什么? [复制链接]

帖子
1404
精华
0
积分
713
金钱
4580
荣誉
1
人气
5
评议
0
跳转到指定楼层
楼主
发表于 2008-6-10 19:56:52 |只看该作者 |倒序浏览
有人研究么?有的话把成果分享一下。

使用道具 举报

帖子
256
精华
0
积分
148
金钱
345
荣誉
2
人气
0
评议
0
沙发
发表于 2008-6-10 20:18:12 |只看该作者
delete.......................................................

[ 本帖最后由 thucydides 于 2008-6-10 20:31 编辑 ]

使用道具 举报

帖子
256
精华
0
积分
148
金钱
345
荣誉
2
人气
0
评议
0
板凳
发表于 2008-6-10 20:19:05 |只看该作者
delete...............................

[ 本帖最后由 thucydides 于 2008-6-10 20:33 编辑 ]

使用道具 举报

帖子
256
精华
0
积分
148
金钱
345
荣誉
2
人气
0
评议
0
地板
发表于 2008-6-10 20:20:45 |只看该作者
之前回复龙箭的帖子....
lua的脚本语言还是很容易看,但是没有包引用的说明,也搞不清宿主与脚本的特定函数看起来叫比较混乱了,本人没做过lua编程,这里勉强理清一下游戏的伤害计算,有错误还请指出.
local k = (AU.attack( attacker )*(1+attack_undead_bonus/100+attack_demon_bonus/100+attack_dragon_bonus/100) + holy_rage_bonus) - AU.defence( receiver )

这是攻防影响伤害的计算因子,主要是装备的种族加成以及神圣狂怒的效果.

if k>=0 and k<60 then
    sdmg = sdmg *(1+k*0.0333)
  end
  if k>=60 then
    sdmg = sdmg *3
  end
  if k<0 and k>=-60 then
    sdmg = sdmg / (1-k*0.0333)
  end
  if k<-60 then
    sdmg = sdmg / 3
  end

  if sdmg<0 then
    sdmg=0
  end

  sdmg = sdmg * dfactor

这里说明攻防影响是线性的,差距大于60就只有3倍了,另外dfactor也是影响最终伤害的,与某些技能(例如魔盾)本身相关.
function spell_dragon_arrow_attack()

  local target = Attack.get_target()

  if (target ~= nil) then
  
    local level=Obj.spell_level()
    if level==0 then level=1 end
                Attack.act_enable_attack(target,"dragon")
                local count=pwr_dragon_arrow()
--                if level>1 then
                        Attack.act_charge(target,0,"dragon")
                        if count > 1 then
                                Attack.act_charge(target,count-1,"dragon")
                        end
--                end
    Attack.atom_spawn(target, 0, "magic_dragon_slayer", Attack.angleto(target))
--        Attack.act_damage_addlog(target,"add_blog_fear_")
  end

  return true
end
这里只能看到引用ATTACK的函数,我没有找到ATTACK类的代码,估计是C++形式的宿主,
依据"magic_dragon_slayer", 无责任猜测是龙箭对龙有特殊加成.

另外
if iskrit then dmg = max_ end
local resi = AU.resistance( receiver, i )
    if resi>95 then resi=95 end

    sdmg = sdmg + dmg*(1-resi/100);
可以确定,暴击伤害没有忽略保护和抵抗,抵抗的上限是95%.
ps:我是最不喜欢看游戏源代码的,会把欣赏游戏本身变成无聊的数据换算.

[ 本帖最后由 thucydides 于 2008-6-10 20:33 编辑 ]

使用道具 举报

帖子
256
精华
0
积分
148
金钱
345
荣誉
2
人气
0
评议
0
5#
发表于 2008-6-10 20:22:26 |只看该作者
delete..................................

[ 本帖最后由 thucydides 于 2008-6-10 20:32 编辑 ]

使用道具 举报

帖子
256
精华
0
积分
148
金钱
345
荣誉
2
人气
0
评议
0
6#
发表于 2008-6-10 20:23:49 |只看该作者
delete...............................

[ 本帖最后由 thucydides 于 2008-6-10 20:33 编辑 ]

使用道具 举报

帖子
256
精华
0
积分
148
金钱
345
荣誉
2
人气
0
评议
0
7#
发表于 2008-6-10 20:24:31 |只看该作者
delete...............................

[ 本帖最后由 thucydides 于 2008-6-10 20:34 编辑 ]

使用道具 举报

帖子
23
精华
0
积分
12
金钱
98
荣誉
0
人气
0
评议
0
8#
发表于 2021-8-4 13:47:29 |只看该作者
1.攻击者攻击力大于防御者防御力时伤害为
伤害=单兵伤害*兵数*[(攻击力-防御力)/20+1],即是攻击力大于防御60时造成额外3倍伤害,总共4倍的伤害。超出60之后就是把(攻击力—防御)=60看待。
2.攻击者攻击力小于防御者防御力时伤害为
伤害=单兵伤害*兵数*{-[(防御力-攻击力)/60]*2/3+1}。即是防御力大于攻击60是只受到1/3伤害,也就是减免了2/3.差数超出60后把(防御力-攻击力)=60看待。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-10-13 20:17 , Processed in 0.423700 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到