赞 | 4 |
VIP | 0 |
好人卡 | 0 |
积分 | 23 |
经验 | 2892 |
最后登录 | 2024-7-10 |
在线时间 | 275 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2333
- 在线时间
- 275 小时
- 注册时间
- 2017-7-25
- 帖子
- 163
|
- #==============================================================================
- # ■ 伤害吸血与反弹 by 老鹰
- #------------------------------------------------------------------------------
- # - 新增对所有造成的伤害的吸血、反弹的处理(先吸血、再反弹)
- # - 角色、职业、武器、护甲、敌人、状态的备注栏中填入下式,即可对伤害反弹进行设置
- # <HP Rebound: 伤害反弹比例(%)>
- # - 伤害反弹比例(%) : 填入对最终伤害的反弹的比例,为百分数,%可省略
- # <Resist HP Rebound: 抵抗反弹比例(%)>
- # - 抵抗反弹比例(%) : 填入对最终伤害的抵抗反弹的比例,为百分数,%可省略
- # - 角色、职业、武器、护甲、敌人、状态的备注栏中填入下式,即可对伤害吸血进行设置
- # <HP Drain: 吸血比例(%) 吸血概率分子 吸血概率分母>
- # - 吸血比例(%) : 填入最终伤害的吸血比例,为百分数,%可加可不加
- # - 概率分子分母 : 吸血的概率为 分子/分母,可不填,默认为 1
- # <Resist HP Drain: 抵抗吸血比例(%) 抵抗概率分子 抵抗概率分母>
- # - 抵抗比例(%) : 被吸血时,比例要减去的值,默认为 0
- # - 抵抗分子分母 : 抵抗的概率为 分子/分母,进行吸血处理时,要减去该概率,默认为 0
- # - 举例:
- # 1 号角色备注内填入了 <HP Drain: 20%>
- # - 1号角色造成的所有伤害,会吸取伤害的 20% (不超过目标的当前hp值)回复自己
- # 1 号敌人备注内填入了 <Resist HP Drain: 10%, 1,5>
- # 1 号角色备注内填入了 <HP Drain: 20%, 1,2>
- # - 1号角色攻击1号敌人,有 1/2 - 1/5 的概率 吸取伤害的 20% - 10% 回复自己
- #
- # - 实质:在真正实行伤害加减时,先进行吸血操作的处理;在计算完伤害后,进行反弹计算
- #==============================================================================
-
- class Game_ActionResult
- #--------------------------------------------------------------------------
- # ○ 生成反弹数值
- #--------------------------------------------------------------------------
- def execute_equips_hp_rebound(user)
- return if @hp_damage <= 0
- rate = (@battler.hp_rebound_rate - user.resist_hp_rebound_rate) / 100.0
- return if rate <= 0
- value = (@hp_damage * rate).to_i
- user.result.hp_damage += value
- end
- #--------------------------------------------------------------------------
- # ○ 生成吸血数值
- #--------------------------------------------------------------------------
- def execute_equips_hp_drain(user)
- return if @hp_damage <= 0
- pro = user.hp_drain_pro - @battler.resist_hp_drain_pro
- return if pro < 1 && (pro < 0 || rand > pro)
- rate = (user.hp_drain_rate - @battler.resist_hp_drain_rate) / 100.0
- return if rate <= 0
- @hp_drain += (@hp_damage * rate).to_i
- @hp_drain = [@battler.hp, @hp_drain.to_i].min
- end
- end
-
- class Game_BattlerBase
- #--------------------------------------------------------------------------
- # ○ 获取用于计算吸血相关的数组
- #--------------------------------------------------------------------------
- def get_hp_drain_array
- []
- end
- #--------------------------------------------------------------------------
- # ○ 重新获取吸血与反弹的相关参数
- #--------------------------------------------------------------------------
- def reget_hp_drain_params
- # 数组依次存储 [吸血比例 吸血概率 抗吸血比例 抗吸血概率]
- @hp_drain_params = [0, 0, 0, 0]
- # [反弹比例 抗反弹比例]
- @hp_rebound_params = [0, 0]
- get_hp_drain_array.each do |a|
- next if a == nil
- if a.note =~ /<HP Drain: *(-?\d+)%?[ ,]*(\d*)[ ,]*(\d*)>/
- @hp_drain_params[0] = $1.to_i
- pro1 = $2 == "" ? 1 : $2.to_i
- pro2 = $3 == "" ? 1 : $3.to_i
- @hp_drain_params[1] = pro1 * 1.0 / pro2
- end
- if a.note =~ /<Resist HP Drain: *(-?\d+)%?[ ,]*(\d*)[ ,]*(\d*)>/
- @hp_drain_params[2] = $1.to_i
- pro1 = $2 == "" ? 1 : $2.to_i
- pro2 = $3 == "" ? 1 : $3.to_i
- @hp_drain_params[3] = pro1 * 1.0 / pro2
- end
- if a.note =~ /<HP Rebound: *(-?\d+)%?>/
- @hp_rebound_params[0] = $1.to_i
- end
- if a.note =~ /<Resist HP Rebound: *(-?\d+)%?>/
- @hp_rebound_params[1] = $1.to_i
- end
- end
- end
- #--------------------------------------------------------------------------
- # ○ 吸血比例与概率
- #--------------------------------------------------------------------------
- def hp_drain_rate
- @hp_drain_params[0]
- end
- def hp_drain_pro
- @hp_drain_params[1]
- end
- #--------------------------------------------------------------------------
- # ○ 抗吸血比例与概率
- #--------------------------------------------------------------------------
- def resist_hp_drain_rate
- @hp_drain_params[2]
- end
- def resist_hp_drain_pro
- @hp_drain_params[3]
- end
- #--------------------------------------------------------------------------
- # ○ 伤害反弹比例
- #--------------------------------------------------------------------------
- def hp_rebound_rate
- @hp_rebound_params[0]
- end
- #--------------------------------------------------------------------------
- # ○ 抗反弹比例
- #--------------------------------------------------------------------------
- def resist_hp_rebound_rate
- @hp_rebound_params[1]
- end
- end
-
- class Game_Battler < Game_BattlerBase
- #~ #--------------------------------------------------------------------------
- #~ # ● 计算伤害
- #~ #--------------------------------------------------------------------------
- alias eagle_equips_hp_rebound_make_damage_value make_damage_value
- def make_damage_value(user, item)
- user.reget_hp_drain_params
- reget_hp_drain_params
- eagle_equips_hp_rebound_make_damage_value(user, item)
- @result.execute_equips_hp_rebound(user)
- end
- #--------------------------------------------------------------------------
- # ● 执行伤害
- #--------------------------------------------------------------------------
- alias eagle_equips_hp_drain_execute_damage execute_damage
- def execute_damage(user)
- @result.execute_equips_hp_drain(user)
- eagle_equips_hp_drain_execute_damage(user)
- user.hp -= user.result.hp_damage
- end
- end
-
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ○ 获取用于计算吸血相关的数组
- #--------------------------------------------------------------------------
- def get_hp_drain_array
- [actor, self.class] + equips + states
- end
- end
-
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ○ 获取用于计算吸血相关的数组
- #--------------------------------------------------------------------------
- def get_hp_drain_array
- [enemy] + states
- end
- end
- class Scene_Battle
- #--------------------------------------------------------------------------
- # ● 战斗行动结束时的处理
- #--------------------------------------------------------------------------
- alias eagle_hp_drain_process_action_end process_action_end
- def process_action_end
- all_battle_members.each { |m| m.result.clear_damage_values }
- eagle_hp_drain_process_action_end
- end
- end
复制代码
脚本在这,设置给你想要的反击状态(不想反的状况还可以设置反伤抗性,虽然我不需要还没用过),搭配技能公式系列https://rpg.blue/thread-307316-1-1.html?_dsign=5a9bad8f食用,赞 |
|