|
本帖最后由 百里_飞柳 于 2017-2-21 09:31 编辑
理论上,连续次数大于1的技能,实质就是多次重复计算它的公式,所以是分开计算的,也就是每次都是实时数值计算的百分比
- #==============================================================================
- # ■ MP百分比抵消HP伤害的装备 by 老鹰
- #------------------------------------------------------------------------------
- # 在 武器/护甲 的备注栏填写 <Mega Ring> 即可作为此类装备
- # 注:多件装备下,效果会叠加
- #
- # ---装备效果
- # 利用角色当前的 mp百分比 转化 所受伤害百分比 为 mp伤害
- # 例: mp为50点,mmp为100点,受到 40点伤害,
- # 则转化 (mp)50 / (mmp)100 % 伤害为 mp伤害(即 40* 50/100)
- # 剩余部分依旧为 hp伤害(即 40 - 40*50/100)
- # 注:当剩余mp不足时,溢出伤害依旧扣除hp
- # 注2:本实现并不考虑显示问题,请自行整合战斗系统中关于 result.mp_damage 数值的显示
- #
- # ---实现
- # 在确定下为 hp伤害 后,直接最后再调整为 mp伤害
- #==============================================================================
- class Game_ActionResult
- def make_mp_offset_damage(actor)
- @mp_damage = (1.0 * actor.mp / actor.mmp * @hp_damage).to_i
- @mp_damage = actor.mp if @mp_damage > actor.mp
- @hp_damage -= @mp_damage
- end
- end
- class Game_Actor < Game_Battler
- alias eagle_mage_offset_make_damage make_damage_value
- def make_damage_value(user, item)
- eagle_mage_offset_make_damage(user, item)
- check_mega_offset unless item.damage.to_mp? || @result.hp_damage < 0
- end
- def check_mega_offset
- equips.each do |i|
- next unless i
- @result.make_mp_offset_damage(self) if (i.note =~ /<Mega Ring>/) != nil
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|