赞 | 0 |
VIP | 258 |
好人卡 | 2 |
积分 | 0 |
经验 | 11030 |
最后登录 | 2016-8-20 |
在线时间 | 36 小时 |
Lv1.梦旅人 ~琉璃の雪~<
- 梦石
- 0
- 星屑
- 49
- 在线时间
- 36 小时
- 注册时间
- 2008-11-6
- 帖子
- 3678
|
本帖最后由 夏季冰川 于 2009-12-27 16:38 编辑
就是敌人抗我方打击的能力.
物理防御高的敌人,受到我方物理攻击的伤害低.
魔法防御高的敌人,受到我方魔法攻击的伤害低.
至于物理攻击,主要是看力量和攻击力.
魔法攻击主要看技能威力和魔力.
在技能设置里,有个 物理防御F 和 魔法防御 F,就是这个技能计算对方防御的百分比.
假设把 物理防御F 设置为 80,敌人防御为 300.那么这个技能在打到对手时只会计算 300*80/100=240的防御力. 魔法防御F 也是一个道理.
在 Game_Battler 3 的里面,有下面一段:- power = skill.power + user.atk * skill.atk_f / 100
- if power > 0
- power -= self.pdef * skill.pdef_f / 200
- power -= self.mdef * skill.mdef_f / 200
- power = [power, 0].max
- end
- # 计算倍率
- rate = 20
- rate += (user.str * skill.str_f / 100)
- rate += (user.dex * skill.dex_f / 100)
- rate += (user.agi * skill.agi_f / 100)
- rate += (user.int * skill.int_f / 100)
- # 计算基本伤害
- self.damage = power * rate / 20
- # 属性修正
- self.damage *= elements_correct(skill.element_set)
- self.damage /= 100
复制代码 这段脚本就是计算技能伤害的.
在数据库里,有个力量F,灵巧F什么的,对应的就是skill.str_f 和skill.dex_f之类的东西.
拿阿尔西斯的十字斩来说:
假设主角的攻击力是200,力量也是200,十字斩的威力是20,用十字斩打防御力100的幽灵.
那么- power = skill.power + user.atk * skill.atk_f / 100
复制代码 所以这个时候power = 20 + 200 * 100 / 100 = 220
然后:- power -= self.pdef * skill.pdef_f / 200
- power -= self.mdef * skill.mdef_f / 200
复制代码 power = 220 - 100 * 100 / 200 - 0 = 170
由于灵巧F什么的都是0,只有力量F是100,所以- rate = 20
- rate += (user.str * skill.str_f / 100)
复制代码 那么rate = 20 + 200 *100 / 100 = 220
然后:- self.damage = power * rate / 20
复制代码 那么伤害 = 170 * 220 / 20 = 1870
最后是这个:- self.damage *= elements_correct(skill.element_set)
- self.damage /= 100
复制代码 [/code]
由于幽灵怕十字斩,对不死是A级
搜索table:- table = [0,200,150,100,50,0,-100]
复制代码 A 对应 200
那么那么最终伤害是:
1870 * 200 / 100 = 3740.
为了准确起间,我们把十字斩分散度调为 0,其余数据调整好:
然后得出伤害:
至于魔法技能什么的,LZ可以自己试着算算,然后就了解了. |
|