[VX] Poison based on current HP

Zell Dinch

Gloria in excelsis Deo
Lão Làng GVN
Tham gia ngày
18/7/03
Bài viết
2,315
Reaction score
128
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
 
Back
Top