耀眼的毛玉 发表于 2013-10-23 17:32
那如果想在某个troop中为某个特定敌人设定特殊脚本(比如其某技能伤害是正常的二倍),需要在Game_Battle ...
你可以从 Game_Battler 的 make_obj_damage_value 动手脚.
比如说要判断队伍 ID 为 2, 敌人ID 为 3, 技能 ID 为 4 的时候, 伤害加倍. 那么可以这么写:
class Game_Troop < Game_Unit
attr_reader :troop_id
end
def make_obj_damage_value( user, obj)
damage = 0
unless user.actor ? # 如果攻击者不是角色, 也就是 敌人的话
if $game_troop .troop_id == 2 # 如果 敌人队伍的 ID 为 2
if user.enemy .id == 3 # 攻击者是三号敌人, 那么
if obj.id == 4 # 技能 ID 是 4
damage = obj.base_damage * 2 # 基础计算 * 2
end
end
end
end
damage = obj.base_damage if damage == 0 # 基础计算
if damage > 0 # 若伤害为正
damage += user.atk * 4 * obj.atk_f / 100 # 使用者攻击力关系度
damage += user.spi * 2 * obj.spi_f / 100 # 使用者精神力关系度
unless obj.ignore_defense # 除非无视防御力
damage -= self .def * 2 * obj.atk_f / 100 # 目标攻击力关系度
damage -= self .spi * 1 * obj.spi_f / 100 # 目标精神力关系度
end
damage = 0 if damage < 0 # 设负数伤害为0
elsif damage < 0 # 若伤害为负
damage -= user.atk * 4 * obj.atk_f / 100 # 使用者攻击力关系度
damage -= user.spi * 2 * obj.spi_f / 100 # 使用者精神力关系度
end
damage *= elements_max_rate( obj.element_set ) # 属性校正
damage /= 100
damage = apply_variance( damage, obj.variance ) # 分散度
damage = apply_guard( damage) # 防御校正
if obj.damage_to_mp
@mp_damage = damage # 伤害魔力
else
@hp_damage = damage # 伤害体力
end
end
class Game_Troop < Game_Unit
attr_reader :troop_id
end
def make_obj_damage_value( user, obj)
damage = 0
unless user.actor ? # 如果攻击者不是角色, 也就是 敌人的话
if $game_troop .troop_id == 2 # 如果 敌人队伍的 ID 为 2
if user.enemy .id == 3 # 攻击者是三号敌人, 那么
if obj.id == 4 # 技能 ID 是 4
damage = obj.base_damage * 2 # 基础计算 * 2
end
end
end
end
damage = obj.base_damage if damage == 0 # 基础计算
if damage > 0 # 若伤害为正
damage += user.atk * 4 * obj.atk_f / 100 # 使用者攻击力关系度
damage += user.spi * 2 * obj.spi_f / 100 # 使用者精神力关系度
unless obj.ignore_defense # 除非无视防御力
damage -= self .def * 2 * obj.atk_f / 100 # 目标攻击力关系度
damage -= self .spi * 1 * obj.spi_f / 100 # 目标精神力关系度
end
damage = 0 if damage < 0 # 设负数伤害为0
elsif damage < 0 # 若伤害为负
damage -= user.atk * 4 * obj.atk_f / 100 # 使用者攻击力关系度
damage -= user.spi * 2 * obj.spi_f / 100 # 使用者精神力关系度
end
damage *= elements_max_rate( obj.element_set ) # 属性校正
damage /= 100
damage = apply_variance( damage, obj.variance ) # 分散度
damage = apply_guard( damage) # 防御校正
if obj.damage_to_mp
@mp_damage = damage # 伤害魔力
else
@hp_damage = damage # 伤害体力
end
end
写法上为了好理解, 所以代码上有点绕.