Nếu sử dụng script ATB, bạn sẽ thấy các skill poison quá imba do thực hiện sát thương dựa trên HP Max. Nếu ko sử dụng Sideview Battler, mọi chuyện sẽ dễ dàng hơn rất nhiều nên mình ko nói tới. Mình viết script này để tạo một state giống như Poison nhưng sát thương dựa trên HP hiện có. Đầu tiên tạo một state mới, đặt tên tùy ý, nhớ đừng check vào Slip Damage Trong script *SBS Configurations Tìm Mã: return ["SLIPDAMAGE"] Bên dưới thêm vào Mã: when 22 # Slip Damage based on Current HP return ["SLIPDAMAGCHP"] Tìm Mã: return [["hp", 0, 10, true, true]] Bên dưới thêm vào Mã: when 22 # Poison return [["hp", 0, 10, true, true]] Nhớ sửa số 22 thành ID state bạn đã tạo. Sau đó tạo script có nội dung như sau ngay dưới script *Sideview 2 Mã: #============================================================================== # ■ Poison Edited Addon by Zell Dinch # 07.01.2009 #------------------------------------------------------------------------------ class Scene_Battle < Scene_Base alias turn_end_poison turn_end def turn_end for member in $game_party.members + $game_troop.members member.clear_action_results next unless member.exist? actor = member.actor? current_damage = 0 for state in member.states next unless state.extension.include?("SLIPDAMAGCHP") for ext in state.slip_extension if ext[0] == "hp" base_damage = ext[1] + member.hp * ext[2] / 100 current_damage += base_damage + base_damage * (rand(5) - rand(5)) / 100 slip_pop = ext[3] slip_dead = ext[4] slip_damage_flug = true end end end current_damage = member.hp - 1 if current_damage >= member.hp && slip_dead = false member.hp -= current_damage @spriteset.set_damage_pop(actor, member.index, current_damage) if slip_pop member.perform_collapse if member.dead? member.clear_action_results end @status_window.refresh wait(55) if slip_damage_flug slip_damage_flug = false turn_end_poison end end