RPG VX Ace スクリプト
2016.02.14 18:49

지속데미지 스크립트(MBS)

閲覧数 1818 推奨数 0 コメント 0
?

Shortcut

Prev前へ 書き込み

Next次へ 書き込み

Larger Font Smaller Font 上へ 下へ Go comment 印刷
?

Shortcut

Prev前へ 書き込み

Next次へ 書き込み

Larger Font Smaller Font 上へ 下へ Go comment 印刷

제가 사용해봤을때는 문제가 없었기에 올려봅니다

 

저작권자 : 한소영님

#==============================================================================
# ■ Mother Battle System
#------------------------------------------------------------------------------
# [사용법]
#  스킬이나 아이템의 메모 란에 아래 문구를 입력해주세요.
# <mbs: {type}, {interval}, {rate}>
#
# 1. {type} - 체력이 변동하는 타입을 설정합니다. 타입에는 두 가지가 존재합니다.
#   (1) lin - 선형 타입 Linear = 일정한 값이 더해지거나 감소합니다.
#   (2) pro - 비례 타입 Proportional = 남은 값에 비례하여 더해지거나 감소합니다.
# 2. {interval} - 체력이 변하는 간격을 설정합니다. (프레임 단위)
# 3. {rate} - 소수점을 포함하여 할푼리(0.xxx)를 적어주세요.
#
# [사용 예]
# <mbs: lin, 10, 0.01>
#
# [주의사항]
# 턴 종료 후에만 갱신되는 턴제 전투 시스템을 억지로 개조한 것인 만큼
# 어떤 오류가 있을지 장담할 수 없습니다.
#==============================================================================

class Game_ActionResult
 
  attr_accessor :mbs_type
  attr_accessor :mbs_interval
  attr_accessor :mbs_rate
 
  alias mother_battle_system_make_damage_sndp make_damage
  def make_damage(value, item)
    mother_battle_system_make_damage_sndp(value, item)
    if item.note =~ /<\s*mbs\s*:\s*(\S+)\s*\,\s*(\d+)\s*\,\s*(\d+\.?\d*)\s*>/mi
      @mbs_type = $1
      @mbs_interval = $2.to_i
      @mbs_rate = $3.to_f
    end
  end
 
end

class Game_Battler
 
  attr_accessor :mbs_death
  attr_accessor :mbs_damages
 
  alias mother_battle_system_execute_damage_sndp execute_damage
  def execute_damage(user)
    if @result.mbs_type.nil?
      mother_battle_system_execute_damage_sndp(user)
    else
      on_damage(@result.hp_damage) if @result.hp_damage > 0
      @mbs_damages = [] if @mbs_damages.nil?
      @mbs_damages.push({
        :type => @result.mbs_type,
        :frame => -1,
        :interval => @result.mbs_interval,
        :rate => @result.mbs_rate,
        :init => @result.hp_damage,
        :left => @result.hp_damage,
        :damage => true
      })
      self.mp -= @result.mp_damage
      user.mbs_damages = [] if user.mbs_damages.nil?
      user.mbs_damages.push({
        :type => @result.mbs_type,
        :frame => -1,
        :interval => @result.mbs_interval,
        :rate => @result.mbs_rate,
        :init => @result.hp_drain,
        :left => @result.hp_drain,
        :damage => false
      })
      user.mp += @result.mp_drain
    end
  end
 
  alias mother_battle_system_item_effect_recover_hp_sndp item_effect_recover_hp
  def item_effect_recover_hp(user, item, effect)
    if @result.mbs_type.nil?
      mother_battle_system_item_effect_recover_hp_sndp(user, item, effect)
    else
      value = (mhp * effect.value1 + effect.value2) * rec
      value *= user.pha if item.is_a?(RPG::Item)
      value = value.to_i
      @result.hp_damage -= value
      @result.success = true
      if item.note =~ /<\s*mbs\s*:\s*(\S+)\s*\,\s*(\d+)\s*\,\s*(\d+\.?\d*)\s*>/mi
        @mbs_damages = [] if @mbs_damage.nil?
        @mbs_damages.push({
          :type => $1,
          :frame => -1,
          :interval => $2.to_i,
          :rate => $3.to_f,
          :init => value,
          :left => value,
          :damage => false
        })
      end
    end
  end
 
  def refresh_mbs
    return if @mbs_damages.nil?
    @mbs_damages.each_with_index do |mbs_damage, index|
      mbs_damage[:frame] += 1
      next unless mbs_damage[:frame] % mbs_damage[:interval] == 0
      type = mbs_damage[:type]
      rate = mbs_damage[:rate]
      init = mbs_damage[:init]
      left = mbs_damage[:left]
      if type == "lin"
        hp_d = [[(init * rate).round, left].min, 1].max
      elsif type == "pro"
        hp_d = [[(left * rate).round, left].min, 1].max
      else
        next
      end
      if mbs_damage[:damage]
        self.hp -= hp_d
      elsif not mbs_damage[:damage] and not dead?
        self.hp += hp_d
      end
      mbs_damage[:left] -= hp_d
      @mbs_damages[index] = nil if mbs_damage[:left] <= 0
    end
    @mbs_damages.compact!
  end
 
end

class Scene_Battle
 
  alias mother_battle_system_update_basic_sndp update_basic
  def update_basic
    for battler in all_battle_members
      next if battler.mbs_damages.nil?
      battler.refresh_mbs
      if battler.dead? and not battler.mbs_death
        battler.mbs_death = true
        battler.perform_collapse_effect
      end
    end
    @actor_window.refresh
    @enemy_window.refresh
    refresh_status
    mother_battle_system_update_basic_sndp
  end
 
end

Who's 天下太平

제작기간이 있다. 그래서 뭐할것인가, 중요한건 완성인데. -취미 : 게임, 피아노, 애니 -반도에 사는 흔한 인간 -알만툴 접한 기간 : 4년(활동 : 2년) -기타사항 : 이벤터, 폐인

?

  1. VXA에서 XBOX360 컨트롤러 사용 여부 체크

    Date2018.07.15 CategoryRPG VX Ace スクリプト By러닝은빛 Views1051 Votes0
    Read More
  2. LuD Script Package

    Date2017.08.16 CategoryRPG VX Ace スクリプト ByLuD Views1819 Votes0
    Read More
  3. [VXAce] 레이어 맵 <layer> 시스템

    Date2017.08.07 CategoryRPG VX Ace スクリプト ByLuD Views1476 Votes0
    Read More
  4. VX Ace 용 8방향 이동 스크립트

    Date2016.03.17 CategoryRPG VX Ace スクリプト By도라지power Views1941 Votes0
    Read More
  5. 지속데미지 스크립트(MBS)

    Date2016.02.14 CategoryRPG VX Ace スクリプト By天下太平 Views1818 Votes0
    Read More
  6. 타이틀 메뉴 위치 바꾸기 vx 및 vx ace

    Date2015.09.21 CategoryRPG VX Ace スクリプト By여줄가리 Views2407 Votes0
    Read More
  7. Mog Hunter 스페셜

    Date2015.03.26 CategoryRPG VX Ace スクリプト By철창노틸 Views1004 Votes1
    Read More
  8. 추천 스크립트 모음

    Date2015.03.26 CategoryRPG VX Ace スクリプト By철창노틸 Views6109 Votes1
    Read More
  9. Random Dungeon Generator - Random Room

    Date2014.10.11 CategoryRPG VX Ace スクリプト ByJunkMan Views1202 Votes0
    Read More
  10. Random Dungeon Generator - Random Cave

    Date2014.10.08 CategoryRPG VX Ace スクリプト ByJunkMan Views909 Votes0
    Read More
  11. RPG Maker VX Lite Maze(미로) 만들기 (DFS 사용)

    Date2014.10.06 CategoryRPG VX Ace スクリプト ByJunkMan Views1219 Votes2
    Read More
  12. Ace로 만든 습작 랜덤 위치로 지형변환.

    Date2014.10.04 CategoryRPG VX Ace スクリプト ByJunkMan Views759 Votes0
    Read More
  13. VX Ace 스크립트 사이트

    Date2014.08.07 CategoryRPG VX Ace スクリプト By제피 Views2928 Votes0
    Read More
  14. RPG Maker VX Ace용 640*480 리사이징 스크립트

    Date2014.08.04 CategoryRPG VX Ace スクリプト ByHUR Views1519 Votes0
    Read More
  15. RPG Maker VX Ace용 로고 스크립트

    Date2014.08.04 CategoryRPG VX Ace スクリプト ByHUR Views1434 Votes0
    Read More
  16. Rpg Vx Ace 에서 이벤트 이름 팝업

    Date2014.01.17 CategoryRPG VX Ace スクリプト By빙냥이 Views2122 Votes0
    Read More
  17. 텍스트 파일생성

    Date2013.09.30 CategoryRPG VX Ace スクリプト By휴리드 Views874 Votes0
    Read More
  18. 파일 존재의 유무 체크

    Date2013.09.30 CategoryRPG VX Ace スクリプト By휴리드 Views851 Votes0
    Read More
  19. Custom Icon Sheets (커스텀 아이콘 적용 스크립트)

    Date2016.01.10 CategoryRPG VX Ace スクリプト Byplam Views1351 Votes0
    Read More
  20. Damage Popup by Dargor (데미지 수치 팝업하는 스크립트)

    Date2016.01.10 CategoryRPG VX Ace スクリプト Byplam Views892 Votes0
    Read More
Board Pagination Prev 1 2 Next
/ 2