VX 스크립트

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 슬립 데미지 확장 - KGC_SlipDamageExtension ◆ VX ◆
#_/    ◇ Last update : 2008/03/29 ◇
#_/----------------------------------------------------------------------------
#_/  슬립 데미지의 설정을 상세화합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#스테이트의 메모란에,<スリップ [HP|MP] n[%] [,n]> (을)를 추가합니다.
#[HP|MP]의 부분은,HP 또는 MP 의 어느 쪽을 대상으로 하는지를 기술합니다.
#생략 했을 경우는 HP로 됩니다.

#1번째의n에는, 턴 마다의 회복·데미지량을 기술합니다.
#지정한 값이 정의 경우는 회복, 부의 경우는 데미지로서 다루어집니다.
#% (을)를 붙였을 경우는 최대 HP or MP 에 대한 비율이 됩니다.

#2번째의n에는, 맵상에서 1보 걸었을 때의 회복·데미지량을 기술합니다.
#이쪽은 % (을)를 붙일 수 없습니다.

#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================

module KGC
module SlipDamageExtension
  # ◆ 歩行ダメージ時のフラッシュ色
  DAMAGE_FLASH_COLOR    = Color.new(255, 0, 0, 64)
  # ◆ 歩行ダメージ時のフラッシュ時間 (フレーム)
  DAMAGE_FLASH_DURATION = 4
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["SlipDamageExtension"] = true

module KGC::SlipDamageExtension
  # 正規表現
  module Regexp
    # ステート
    module State
      # スリップダメージ
      SLIP_DAMAGE = /<(?:SLIP|スリップ)s*([HM]P)?s*([-+]?d+)([%%])?
        (?:s*,s*([-+]?d+))?>/ix
    end
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::State
#==============================================================================

class RPG::State
  #--------------------------------------------------------------------------
  # ○ 「スリップダメージ拡張」のキャッシュ生成
  #--------------------------------------------------------------------------
  def create_slip_damage_extension_cache
    @__slip_damage = false
    @__slip_damage_hp_rate  = 0
    @__slip_damage_hp_value = 0
    @__slip_damage_hp_map   = 0
    @__slip_damage_mp_rate  = 0
    @__slip_damage_mp_value = 0
    @__slip_damage_mp_map   = 0

    self.note.split(/[rn]+/).each { |line|
      case line
      when KGC::SlipDamageExtension::Regexp::State::SLIP_DAMAGE
        # スリップダメージ
        @__slip_damage = true
        analyse_slip_damage($~)
      end
    }

    # デフォルトのスリップダメージ量を設定
    unless @__slip_damage
      @__slip_damage_hp_rate = 10
      @__slip_damage_hp_map = 1
    end
  end
  #--------------------------------------------------------------------------
  # ○ スリップダメージの解析
  #--------------------------------------------------------------------------
  def analyse_slip_damage(match)
    # タイプ判定
    if match[1] == nil
      type = :hp
    else
      if match[1] =~ /MP/i
        type = :mp
      else
        type = :hp
      end
    end
    # ダメージ量取得
    n = match[2].to_i
    # 即値 or 割合判定
    is_rate = (match[3] != nil)
    # マップダメージ取得
    map_n = (match[4] != nil ? match[4].to_i : 0)

    # スリップダメージ値加算
    case type
    when :hp
      if is_rate
        @__slip_damage_hp_rate -= n
      else
        @__slip_damage_hp_value -= n
      end
      @__slip_damage_hp_map -= map_n
    when :mp
      if is_rate
        @__slip_damage_mp_rate -= n
      else
        @__slip_damage_mp_value -= n
      end
      @__slip_damage_mp_map -= map_n
    end
  end
  #--------------------------------------------------------------------------
  # ● スリップダメージ
  #--------------------------------------------------------------------------
  unless $@
    alias slip_damage_KGC_SlipDamageExtension slip_damage
  end
  def slip_damage
    create_slip_damage_extension_cache if @__slip_damage == nil
    return (@__slip_damage || slip_damage_KGC_SlipDamageExtension)
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージ (割合)
  #--------------------------------------------------------------------------
  def slip_damage_hp_rate
    create_slip_damage_extension_cache if @__slip_damage_hp_rate == nil
    return @__slip_damage_hp_rate
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージ (即値)
  #--------------------------------------------------------------------------
  def slip_damage_hp_value
    create_slip_damage_extension_cache if @__slip_damage_hp_value == nil
    return @__slip_damage_hp_value
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージ (マップ)
  #--------------------------------------------------------------------------
  def slip_damage_hp_map
    create_slip_damage_extension_cache if @__slip_damage_hp_map == nil
    return @__slip_damage_hp_map
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージ (割合)
  #--------------------------------------------------------------------------
  def slip_damage_mp_rate
    create_slip_damage_extension_cache if @__slip_damage_mp_rate == nil
    return @__slip_damage_mp_rate
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージ (即値)
  #--------------------------------------------------------------------------
  def slip_damage_mp_value
    create_slip_damage_extension_cache if @__slip_damage_mp_value == nil
    return @__slip_damage_mp_value
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージ (マップ)
  #--------------------------------------------------------------------------
  def slip_damage_mp_map
    create_slip_damage_extension_cache if @__slip_damage_mp_map == nil
    return @__slip_damage_mp_map
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Battler
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● スリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect
    return unless slip_damage?

    slip_damage_effect_hp
    slip_damage_effect_mp
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect_hp
    return if dead?

    n = 0
    self.states.each { |state|
      next unless state.slip_damage
      n += self.maxhp * state.slip_damage_hp_rate / 100
      n += state.slip_damage_hp_value
    }
    return if n == 0

    @hp_damage = [n, self.hp - 1].min
    self.hp -= @hp_damage
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect_mp
    return if dead?

    n = 0
    self.states.each { |state|
      next unless state.slip_damage
      n += self.maxmp * state.slip_damage_mp_rate / 100
      n += state.slip_damage_mp_value
    }
    return if n == 0

    @mp_damage = [n, self.mp - 1].min
    self.mp -= @mp_damage
  end
  #--------------------------------------------------------------------------
  # ○ 歩行時のスリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect_on_walk
    last_hp = self.hp
    last_mp = self.mp
    self.states.each { |state|
      next unless state.slip_damage
      self.hp -= state.slip_damage_hp_map
      self.mp -= state.slip_damage_mp_map
    }
    # ダメージを受けた場合はフラッシュ
    if self.hp < last_hp || self.mp < last_mp
      $game_map.screen.start_flash(
        KGC::SlipDamageExtension::DAMAGE_FLASH_COLOR,
        KGC::SlipDamageExtension::DAMAGE_FLASH_DURATION)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 歩行時の自動回復の実行
  #--------------------------------------------------------------------------
  def do_auto_recovery_on_walk
    return if dead?

    if auto_hp_recover
      self.hp += 1
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● プレイヤーが 1 歩動いたときの処理
  #--------------------------------------------------------------------------
  def on_player_walk
    for actor in members
      if actor.slip_damage?
        actor.slip_damage_effect_on_walk
      end
      actor.do_auto_recovery_on_walk
    end
  end
end


 

Who's BoneheadedAlien

?
경제류 게임을 만드는중 (?)
Comment '19'
  • ?
    Last H 2009.02.22 22:03
    헐 이거 그대로 복사 붙여넣기 해서 슬립데미지 쓰면
    100% 에러 남 장담합니다.
    역슬래쉬가 죄다 깨졌군요.
  • ?
    BoneheadedAlien 2009.02.22 23:30
    죄다 깨진거 방금 확인하고 원문으로 수정했습니다.

    도움말은 그대로 한글이지만,
  • ?
    mymy 2011.01.19 17:00

    백슬래쉬 아닌가요? 똑같은거면 ㅈㅅ

  • ?
    RMadrid 2009.02.22 23:02

    감사합니다.

    그런데
    -------------------------------------------
    #스테이트의 메모란에,<슬립 [HP|MP] n[%] [,n]> (을)를 추가합니다.

    #[HP|MP]의 부분은,HP 또는 MP 의 어느 쪽을 대상으로 하는지를 기술합니다.
    #생략 했을 경우는 HP 됩니다.

    #1번째의n에는, 턴 마다의 회복·데미지량을 기술합니다.
    #지정한 값이 정의 경우는 회복, 부의 경우는 데미지로서 다루어집니다.
    #% (을)를 붙였을 경우는 최대 HP or MP 에 대한 비율이 됩니다.

    #2번째의n에는, 맵상에서 1보 걸었을 때의 회복·데미지량을 기술합니다.
    #이쪽은 % (을)를 붙일 수 없습니다.

    라고 되어있는데, 추가하는 부분이 어디라는건지...찾을 수가 없어서요.

    그리고 상태이상마다 각각 다르게 슬립 데미지를 조정할 수 있는지도 궁금합니다.

  • ?
    RMadrid 2009.02.26 01:10
    감사합니다. 많은 도움이 되었어요.
  • ?
    BoneheadedAlien 2009.02.22 23:35
    데이터 베이스의 '상태' 창에 각각의 상태마다 메모란이 있습니다.

    각각의 메모란을 사용하여, 상태 이상마다 모두 다르게 슬립 데미지를 조정할 수 있지요.
  • ?
    Hara 2009.02.23 12:59
    어떻게 쓰는지 모르겠네요- _-;;; 메모에 아무리 추가해봐도 안된다능... 예재로 스샷이라도 좀.....;ㅅ;
  • ?
    로브남 2009.02.23 15:25
    kgc껀 아무리 찾아봐도 없었는데, kgc 의 슬립 데미지 상세화가 나온지가 꽤 됐네요. 
    but 지금은  XRXS 의 슬립데미지 상세화를 쓰고 있는지라..;; 어쨋든 한번 써봐야 겠군요. ㄳ ^^
  • ?
    Last H 2009.02.23 17:56
    음... 이 스크립트는 저도 예전에 써봐서 아는데 일단 기본적으로 ABS같은 전투시스템이 변경된 스크립트와는 대부분의 경우
    병용 할 수 없습니다.
  • ?
    전설의 찌질이 2009.03.01 14:39
    감사합니다.
  • ?
    VAAVA123 2009.04.12 14:58
    이거 어떻게 사용함?>.
  • ?
    미겔 2009.04.22 16:02
    어디에다 붙여야되는건지? ㅠ.ㅜ
  • ?
    크런키맛아듀크림 2010.02.06 23:50

    help ...

  • ?
    이입나 2010.02.24 10:31

    어떻게 사용하죠?

  • ?
    카린저 2010.06.28 23:56

    아오 .. 이게 데미지로 안들어 가네요.

    -를 어떻게 붙여봐도 안되는 ..

  • ?
    카시야스_반내림 2010.11.21 12:26

    좀더 자세한 설명이 필요할듯..

  • ?
    mymy 2011.01.19 17:01

    게임중 뎀지는 되는데 걸을때는 모든 상태이상이 다 1씩밖에 안달음

  • ?
    daorlia 2011.12.28 19:28

    대체 뭐 어떻게 해야하는 건지..; 하신 분 있으시면 좀 알려주세요

  • ?
    Maxim_Cool 2012.01.25 13:08

    감사합니다~


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5398
317 메시지 어드밴스 텍스트 시스템 13 file 카르와푸딩의아틀리에 2009.06.30 4918
316 기타 미니게임 로또??일까? 14 file 카르와푸딩의아틀리에 2009.06.30 2577
315 이동 및 탈것 달리면 스태미너가 감소하는 스크립트 18 file 카르와푸딩의아틀리에 2009.06.30 2869
314 메뉴 몬스터도감 심플버전! 52 file 카르와푸딩의아틀리에 2009.06.30 6907
313 메뉴 전투 결과 팝업 스크립트 12 file 카르와푸딩의아틀리에 2009.06.30 3381
312 기타 회피,명중,크리 스테이트를 작성하는 스크립트 9 카르와푸딩의아틀리에 2009.06.30 2394
311 전투 WGB배틀 시스템. 59 file 카르와푸딩의아틀리에 2009.06.30 8777
310 전투 RPGTankentai SBS3.3b 버전 (사이드뷰) 21 file 카르와푸딩의아틀리에 2009.07.01 8455
309 기타 높이(층)를 설정하는 스크립트 11 file 카르와푸딩의아틀리에 2009.07.01 3343
308 기타 밤낮의 변화에 따른 전투배경의 변화 스크립트 10 file 카르와푸딩의아틀리에 2009.07.01 2948
307 이동 및 탈것 탈것탑승후 내부로 이동하는 스크립트 16 file 카르와푸딩의아틀리에 2009.07.01 3268
306 오디오 사운드 자동 변환 설정 rukan 2009.07.01 1461
305 기타 페이드 시간 변경 2 rukan 2009.07.01 1360
304 온라인 VX Phoenix 온라인 스크립트 Ver 1.5 36 아방스 2009.07.02 5510
303 HUD HUD HP / MP 게이지바 스크립트 29 file 아방스 2009.07.02 5677
302 기타 배틀신에서 곡 넘기기 2 rukan 2009.07.02 1757
301 이동 및 탈것 대쉬금지의 변경 1 rukan 2009.07.02 1449
300 기타 『주석을 활용한 이벤트 커맨드 확장』스크립트 1 rukan 2009.07.02 1600
299 HUD X 와 Y 좌표 표시 해주는 스크립트 9 아방스 2009.07.03 2760
298 맵/타일 레이 월드맵 스크립트 14 file 카르와푸딩의아틀리에 2009.07.04 4813
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 32 Next
/ 32