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 5453
277 타이틀/게임오버 륀느님 요청] 전투 전멸후 Game over없이 특정위치로 이동 10 Last H 2009.02.24 2837
276 스킬 미완성 구버전. 2칸 위에 있는 글을 이용해주세요. 7 Last H 2009.02.23 1927
» 기타 [kcg] 슬립 데미지 상세화 19 BoneheadedAlien 2009.02.22 3244
274 기타 아키루냥님 요청 스크립트(자작) 4 file Last H 2009.02.22 2756
273 영상 동영상 재생 스크립트.-Game_Film II-(테스트) 7 할렘 2009.02.22 3744
272 기타 태양 스크립트. 15 file 할렘 2009.02.20 4465
271 메뉴 CogWheelBars 시스템. 13 file 할렘 2009.02.20 4364
270 메뉴 모그메뉴 스킨입니다. 1 file 아부리 2009.02.16 6869
269 기타 Kylock 밤낮 스크립트 부분 한글화 + 달력 모드 (모드는 자작) 31 file RMdude 2009.02.15 4117
268 HUD 변수 표시 HUD 8 Tofuman 2009.02.15 2472
267 메시지 여러항목 선택지 ... Scene처리.. 23 file 허걱 2009.02.14 5278
266 기타 게임시간&밤낮 54 file 허걱 2009.02.14 6114
265 이동 및 탈것 Wachunga님의 XP용 MapLink VX용으로 개조 6 file 허걱 2009.02.13 3041
264 기타 심플 마우스 시스템 1.5 애드온 11 file RMdude 2009.02.11 4329
263 메뉴 (모그메뉴 풀세트팩 SEL Style.) 유니크급 자료 147 file 할렘 2009.02.07 9565
262 기타 데이터베이스 자체 제한 해체 스크립트 [Database Limit Breaker] 13 file 할렘 2009.02.07 3565
261 메뉴 GuiRPG menu시스템 13 file 할렘 2009.02.07 4873
260 전투 방패가없어? 그럼 방어못하게하는 스크립트. 16 file 할렘 2009.02.07 3427
259 전투 Requiem SBABS (Requiem Squad Based Battle System) 14 vk 2009.02.07 7545
258 기타 라이트 이펙트 스크립트 12 file 아방스 2009.02.07 3263
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 32 Next
/ 32