RPGVX Ace 스크립트
2016.02.14 18:49

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

조회 수 1519 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

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

 

저작권자 : 한소영님

#==============================================================================
# ■ 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. 지속데미지 스크립트(MBS)

    Date2016.02.14 CategoryRPGVX Ace 스크립트 By天下太平 Views1519 Votes0
    Read More
  2. 죽었을경우 마을로이동 스크립트

    Date2013.09.24 CategoryRPGXP 스크립트 By청담 Views1067 Votes0
    Read More
  3. 정지 모션 스크립트

    Date2013.09.26 CategoryRPGXP 스크립트 By Views713 Votes1
    Read More
  4. 점프 액션 플러그인.

    Date2015.11.07 CategoryRPGMV 플러그인 Byplam Views1219 Votes0
    Read More
  5. 전투속도 고속화 플러그인.

    Date2015.10.24 CategoryRPGMV 플러그인 By파란별빛 Views1100 Votes0
    Read More
  6. 전투 도중 멤버교체가 가능해지는 플러그인

    Date2016.01.13 CategoryRPGMV 플러그인 ByWailer Views1301 Votes0
    Read More
  7. 전메뉴 반투명화

    Date2013.10.01 CategoryRPGXP 스크립트 By Views768 Votes0
    Read More
  8. 장비제련 스크립트

    Date2013.09.24 CategoryRPGXP 스크립트 By청담 Views1026 Votes0
    Read More
  9. 장비 레벨 제한

    Date2013.10.01 CategoryRPGXP 스크립트 By Views903 Votes1
    Read More
  10. 자동으로 장애물을 피해가는 스크립트

    Date2013.09.24 CategoryRPGXP 스크립트 By청담 Views862 Votes0
    Read More
  11. 자동 세이브 스크립트

    Date2013.09.24 CategoryRPGXP 스크립트 By청담 Views844 Votes0
    Read More
  12. 일시정지 스크립트

    Date2013.09.29 CategoryRPGXP 스크립트 By청담 Views929 Votes0
    Read More
  13. 이벤트커맨드 스크립트 조건분기법 모음

    Date2009.11.18 CategoryRPGVX 스크립트 ByEvangelista Views2590 Votes2
    Read More
  14. 이벤트커맨드 스크립트 조건분기법 모음

    Date2009.11.18 CategoryRPGVX 스크립트 ByEvangelista Views2533 Votes2
    Read More
  15. 이벤트커맨드 스크립트 사용법 모음

    Date2009.07.21 CategoryRPGVX 스크립트 ByEvangelista Views2530 Votes2
    Read More
  16. 이벤트커맨드 스크립트 사용법 모음

    Date2009.07.21 CategoryRPGVX 스크립트 ByEvangelista Views2645 Votes2
    Read More
  17. 이벤트커맨드 스크립트 관련 설명

    Date2009.01.29 CategoryRPGVX 스크립트 ByEvangelista Views2163 Votes3
    Read More
  18. 이벤트커맨드 스크립트 관련 설명

    Date2009.01.29 CategoryRPGVX 스크립트 ByEvangelista Views2655 Votes3
    Read More
  19. 이벤트(엑스트라) 좌표 콘트롤 플러그인(Move Route Extras - Version 1.1)

    Date2015.11.07 CategoryRPGMV 플러그인 Byplam Views861 Votes0
    Read More
  20. 이벤트 자동 추적 플러그인

    Date2016.04.27 CategoryRPGMV 플러그인 By러닝은빛 Views2712 Votes3
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)