#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# 处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 应用技能/物品的效果
#--------------------------------------------------------------------------
def item_apply(user, item)
@result.clear
@result.used = item_test(user, item)
@result.missed = (@result.used && rand >= item_hit(user, item))
@result.evaded = (!@result.missed && rand < item_eva(user, item))
special_state(user, item) # 添加本行,调用自定义函数special_state
if @result.hit?
unless item.damage.none?
@result.critical = (rand < item_cri(user, item))
make_damage_value(user, item)
execute_damage(user)
end
item.effects.each {|effect| item_effect_apply(user, item, effect) }
item_user_effect(user, item)
end
end
#--------------------------------------------------------------------------
# ● 特技附加指定的状态效果(自定义函数)
#--------------------------------------------------------------------------
def special_state(user, item)
return unless item.is_a?(RPG::Skill) # 如果item不是技能就返回,什么也不做
case item.id # 当item的ID为:
when 127 # ID为127时,表示127号技能(P叔技能1)
user.add_state(26) if rand(100) < 45# 45%概率技能使用者附加26号状态(省魔)
when 128 # ID为128时,表示128号技能(P叔技能2)
user.add_state(27) if rand(100) < 45# 45%概率技能使用者附加27号状态(魔攻增强)
end
end
end
#==============================================================================
# ■ Game_BattlerBase
#------------------------------------------------------------------------------
# 管理战斗者的类。主要含有能力值计算的方法。Game_Battler 类的父类。
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 判定是否足够扣除技能的使用消耗
#--------------------------------------------------------------------------
def skill_cost_payable?(skill)
# 如果战斗者是携带26号状态(省魔)并且被判定的技能为128号技能(P叔技能2)时,
# 就返回“真”,即不判定耗魔,直接允许使用128号技能。
return true if self.state?(26) and skill.id == 128
# 当除了以上情况的时候才判定耗魔
tp >= skill_tp_cost(skill) and mp >= skill_mp_cost(skill)
end
#--------------------------------------------------------------------------
# ● 扣除技能的使用消耗
#--------------------------------------------------------------------------
def pay_skill_cost(skill)
# 只有不是“战斗者是携带26号状态(省魔)并且被判定的技能为128号技能(P叔技能2)”
# 的情况时,才计算MP消耗。
self.mp -= skill_mp_cost(skill) unless self.state?(26) and skill.id == 128
self.tp -= skill_tp_cost(skill)
end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# 处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 计算伤害
#--------------------------------------------------------------------------
def make_damage_value(user, item)
value = item.damage.eval(user, self, $game_variables)
# 如果item是一种技能,并且技能ID为121(P叔技能1),并且使用者是携带27号状态(魔攻
# 增强),当以上三个条件同时满足时,伤害增加1000,P叔技能1的伤害变得非常恐怖。
value += 1000 if item.is_a?(RPG::Skill) and item.id == 127 and user.state?(27)
value *= item_element_rate(user, item)
value *= pdr if item.physical?
value *= mdr if item.magical?
value *= rec if item.damage.recover?
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
end