| 赞 | 46 |
| VIP | |
| 好人卡 | |
| 积分 | 97 |
| 经验 | |
| 最后登录 | 2026-6-17 |
| 在线时间 | 2775 小时 |
梦石0
星屑9716
在线时间2775 小时
注册时间2008-9-5
回帖3458
   
|
发表于 2016-10-27 17:27:42
|
显示全部楼层
本帖最后由 cinderelmini 于 2016-10-27 21:11 编辑
思考之后觉得这个大概不能用乘积的方式,
举个栗子的话:
角色默认物理伤害加成是0,
那么物理命中的伤害应该是:基础值 + 基础值 * 0 = 基础值
也就是没加成,如果这时候他穿了一件有20%的物理伤害加成的装备,
外加附加了一个增加50%物理伤害的状态,
那么就会变成:基础值 + 基础值 * (0.2 + 0.5)
所以得按照这个样子来计算对吧…………
在角色的备注栏填<物理伤害加成 数值>(魔法、必中同理)可以设定角色可以打出的对应伤害的基本加成值,
然后装备和状态也可以填,当角色穿上这些装备、附加了这些状态的话,
它们的伤害加成值会被叠加到角色的对应伤害加成值上。
【三种伤害加成】- class RPG::BaseItem
- #--------------------------------
- # ○ 获取物理命中的伤害加成备注信息(通用)
- #--------------------------------
- def physical_dmg_add
- return (self.note =~ /<物理伤害加成\s?(.*)?>/ ? $1.to_i : 0)
- end
- #--------------------------------
- # ○ 获取魔法命中的伤害加成备注信息(通用)
- #--------------------------------
- def magical_dmg_add
- return (self.note =~ /<魔法伤害加成\s?(.*)?>/ ? $1.to_i : 0)
- end
- #--------------------------------
- # ○ 获取必定命中的伤害加成备注信息(通用)
- #--------------------------------
- def certain_dmg_add
- return (self.note =~ /<必中伤害加成\s?(.*)?>/ ? $1.to_i : 0)
- end
- end
- class Game_Actor < Game_Battler
- #--------------------------------
- # ○ 获取物理命中的伤害加成值(角色)
- #--------------------------------
- def physical_dmg_add
- rate = actor.physical_dmg_add
- rate += damage_add_plus(:physical)
- return (rate / 100.0)
- end
- #--------------------------------
- # ○ 获取魔法命中的伤害加成值(角色)
- #--------------------------------
- def magical_dmg_add
- rate = actor.magical_dmg_add
- rate += damage_add_plus(:magical)
- return (rate / 100.0)
- end
- #--------------------------------
- # ○ 获取必定命中的伤害加成值(角色)
- #--------------------------------
- def certain_dmg_add
- rate = actor.certain_dmg_add
- rate += damage_add_plus(:certain)
- return (rate / 100.0)
- end
- #--------------------------------
- # ○ 获取状态和装备对各种伤害的加成值
- #--------------------------------
- def damage_add_plus(type)
- plus_items = self.states + self.weapons + self.armors
- case type
- when :physical
- return plus_items.inject(0) {|r, item| r += item.physical_dmg_add}
- when :magical
- return plus_items.inject(0) {|r, item| r += item.magical_dmg_add}
- when :certain
- return plus_items.inject(0) {|r, item| r += item.certain_dmg_add}
- end
- end
- end
- class Game_Enemy < Game_Battler
- #--------------------------------
- # ○ 获取物理命中的伤害加成值(敌人)
- #--------------------------------
- def physical_dmg_add
- rate = enemy.physical_dmg_add
- rate += self.states.inject(0){|r, s| r += s.physical_dmg_add}
- return (rate / 100.0)
- end
- #--------------------------------
- # ○ 获取魔法命中的伤害加成值(敌人)
- #--------------------------------
- def magical_dmg_add
- rate = enemy.magical_dmg_add
- rate += self.states.inject(0){|r, s| r += s.magical_dmg_add}
- return (rate / 100.0)
- end
- #--------------------------------
- # ○ 获取必定命中的伤害加成值(敌人)
- #--------------------------------
- def certain_dmg_add
- rate = enemy.certain_dmg_add
- rate += self.states.inject(0){|r, s| r += s.certain_dmg_add}
- return (rate / 100.0)
- end
- end
- class Game_Battler < Game_BattlerBase
- #--------------------------------
- # ○ 计算伤害
- #--------------------------------
- def make_damage_value(user, item)
- value = item.damage.eval(user, self, $game_variables)
- value *= item_element_rate(user, item)
- value *= pdr if item.physical?
- value *= mdr if item.magical?
- value *= rec if item.damage.recover?
- # 各种伤害类型加成计算
- value = applay_add_damage(user, item, value)
- #----------------
- value = apply_critical(value) if @result.critical
- value = apply_variance(value, item.damage.variance)
- value = apply_guard(value)
- @result.make_damage(value.to_i, item)
- end
- #--------------------------------
- # ○ 应用各种伤害加成
- #--------------------------------
- def applay_add_damage(user, item, value)
- p "之前:#{value}"
- if item.physical?
- p "#{user.name} 物理加成:#{user.physical_dmg_add}"
- value += (value * user.physical_dmg_add)
- end
- if item.magical?
- p "#{user.name} 魔法加成:#{user.magical_dmg_add}"
- value += (value * user.magical_dmg_add)
- end
- if item.certain?
- p "#{user.name} 必中加成:#{user.certain_dmg_add}"
- value += (value * user.certain_dmg_add)
- end
- p "之后:#{value}"
- return value
- end
-
- end
复制代码 |
评分
-
查看全部评分
|