赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 3 |
经验 | 0 |
最后登录 | 2021-6-20 |
在线时间 | 49 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 328
- 在线时间
- 49 小时
- 注册时间
- 2021-3-27
- 帖子
- 18
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
应该是一个很不错的暴击与暴击伤害的脚本,但是有一个奇怪的问题:
我设定了暴击伤害是50,也就是非暴击的1.5倍,但不知为什么会被自动变成1倍——就是暴击与非暴击没区别。
再往上也是,设定成120的时候,打出的伤害其实是2倍而非2.2倍。设定成270的时候,打出的伤害其实是3倍而非3.7倍。
……似乎是把所有X00~X99的数都约到了X00?
脚本:
#==============================================================================
# ■ 暴击与暴击伤害 by 老鹰
#------------------------------------------------------------------------------
# - 新增对暴击、暴击造成的伤害的修改
# - 调整默认的暴击伤害为 100 ,即普通伤害的 2 倍;被暴击伤害为 0 ,即不修改
# - 角色、职业、武器、护甲、敌人、状态的备注栏中填入下式,即可对暴击进行修改
# <Certain Crit> 效果: 必定暴击
# <Certain Be Crited> 效果: 必定被暴击(免疫暴击无效)
# <Resist Crit> 效果: 免疫暴击
# - 注:当攻击者为必定暴击,被攻击者为免疫暴击时,按通常暴击概率计算
# - 角色、职业、武器、护甲、敌人、状态的备注栏中填入下式,即可对暴击伤害进行修改
# <Crit Damage: 数字> 或 <Crit Damage: 数字%>
# 作用:造成的暴击伤害增加 数字/100 的比例(全部之间为加法叠加)
# <Be Crited Damage: 数字> 或 <Be Crited Damage: 数字%>
# 作用:被造成的暴击伤害增加 数字/100 的比例(全部之间为加法叠加)
# - 注:数字可为负数,若最终计算的暴击伤害加成结果为负数,则直接算作普通攻击伤害
# - 举例:
# 1号护甲的备注中填入 <Crit Damage: 200>,1号角色装备中
# 1号状态的备注中填入 <Crit Damage: -100%>,1号角色被附加了该状态
# 1号敌人的备注中填入 <Be Crited Damage: 300>,1号角色暴击了1号敌人
# 效果:其造成的暴击伤害为 普通伤害的 (100 + 200 - 100 + 300)/100 倍,即5倍
#
# - 实质:给战斗者新增了两个实例方法,用于获取 暴击伤害加成 和 被暴击伤害加成
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# ○ 必定暴击?
#--------------------------------------------------------------------------
def certain_crit?
@crit_params[0]
end
#--------------------------------------------------------------------------
# ○ 必定被暴击?
#--------------------------------------------------------------------------
def certain_be_crited?
@crit_params[1]
end
#--------------------------------------------------------------------------
# ○ 免疫暴击?
#--------------------------------------------------------------------------
def resist_crit?
@crit_params[2]
end
#--------------------------------------------------------------------------
# ○ 暴击伤害加成(百分数)
#--------------------------------------------------------------------------
def crit_damage
@crit_params[3]
end
#--------------------------------------------------------------------------
# ○ 被暴击伤害加成(百分数)
#--------------------------------------------------------------------------
def be_crited_damage
@crit_params[4]
end
#--------------------------------------------------------------------------
# ○ 获取用于计算暴击伤害的数组
#--------------------------------------------------------------------------
def get_crit_damage_array
[]
end
#--------------------------------------------------------------------------
# ○ 重新获取暴击各项参数值
#--------------------------------------------------------------------------
def reget_crit_params
# [必定暴击?, 必定被暴击?, 免疫暴击?, 暴击伤害, 被暴击伤害]
@crit_params = [false, false, false, 50, 0]
get_crit_damage_array.each do |a|
next if a == nil
@crit_params[0] = true if a.note =~ /<Certain Crit>/
@crit_params[1] = true if a.note =~ /<Certain Be Crited>/
@crit_params[2] = true if a.note =~ /<Resist Crit>/
@crit_params[3] += $1.to_i if a.note =~ /<Crit Damage: *(-?\d+)%?>/
@crit_params[4] += $1.to_i if a.note =~ /<Be Crited Damage: *(-?\d+)%?>/
end
end
end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 计算伤害
#--------------------------------------------------------------------------
alias eagle_crit_damage_make_damage_value make_damage_value
def make_damage_value(user, item)
@skill_user = user
@skill_user.reget_crit_params
reget_crit_params
unless @skill_user.certain_crit? && resist_crit?
@result.critical = true if @skill_user.certain_crit?
@result.critical = false if resist_crit?
end
@result.critical = true if certain_be_crited?
eagle_crit_damage_make_damage_value(user, item)
end
#--------------------------------------------------------------------------
# ● 应用关键一击
#--------------------------------------------------------------------------
def apply_critical(damage)
damage * (1 + calc_crit_damage)
end
#--------------------------------------------------------------------------
# ○ 计算最终的暴击伤害加成
#--------------------------------------------------------------------------
def calc_crit_damage
value = (@skill_user.crit_damage + self.be_crited_damage) / 100
return value < 0 ? 0 : value
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ○ 获取用于计算暴击伤害的数组
#--------------------------------------------------------------------------
def get_crit_damage_array
[actor, self.class] + equips + states
end
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ○ 获取用于计算暴击伤害的数组
#--------------------------------------------------------------------------
def get_crit_damage_array
[enemy] + states
end
end |
|