전투

Slip_Damage_Ex - 슬립데미지 확장기능 (상태별 슬립데미지 적용)

by 허걱 posted Jul 24, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

# Slip Damage Ex - by 허걱
#
# - 한 턴이 지날 때 입는 슬립 데미지의 계산식을 상태별로 적용합니다.
#     (슬립데미지 속성이 있는 상태에만 적용됩니다.)
#
# 상태의 메모부분에 <s_value X> 를 적어주면 됩니다.
# X : 값 (또는 계산 식)
#
# 예>  
# <s_value 10>
# <s_value maxhp*0.1>
#
# 새로운 스크립트 섹션을 추가 후 본문의 모든 내용을 추가합니다.


class Game_Battler
  OVERLAP_DAMAGE = false      # 데미지 중복 설정  true / false
  # true 일 경우 모든 슬립데미지 적용
  # false 일 경우 가장 높은 데미지 적용
 
  DEFAULT_SLIP_DAMAGE = "maxhp * 0.05"    # 기본 데미지 값
 
  SLIP_DAMAGE_STRING = "<s_value (.*)>"     # 메모장에 적을 문자열 - (.*) 부분 수정금지
  #--------------------------------------------------------------------------
  # ● 슬립 데미지의 효과 적용 - 재정의
  #--------------------------------------------------------------------------
  def slip_damage_effect
    if slip_damage? and @hp > 0
      @hp_damage = apply_variance(get_slip_damage_value, 10)
      @hp_damage = @hp - 1 if @hp_damage >= @hp
      self.hp -= @hp_damage
    end
  end
  #--------------------------------------------------------------------------
  # ● 슬립 데미지의 적용값 취득
  #--------------------------------------------------------------------------
  def get_slip_damage_value
    val_list = []
    for state in states
      next unless state.slip_damage
      if state.note =~ /#{SLIP_DAMAGE_STRING}/
        val_list.push($1)
      end
    end
    if val_list.empty?
      value = eval(DEFAULT_SLIP_DAMAGE)
    else
      value = 0
      val_list.each {|val|
      new_value = eval(val)
      if OVERLAP_DAMAGE
        value += new_value
      else
        value = new_value if value < new_value
      end
      }
    end
    return value.to_i
  end
end

 

Who's 허걱

?

공개된 사이트에서 퍼온 자료를 제외한(이 경우는 글에 출처를 남깁니다.)

제가 올린 모든 글과 자작 자료에대해 무단으로 퍼가는것을 금지합니다.