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 5408
377 아이템 드롭 아이템 확장 6 신규회원 2012.02.24 2977
376 기타 KGC 리버스 데미지! 28 루시페르 2009.04.13 2979
375 아이템 아이템 무게, 아이템별 소지수 적용 16 file 허걱 2010.11.11 2981
374 파티 5인 파티 프로젝트 V1.1 4 file 지나가는떡꼬치 2012.06.30 2988
373 액터 동료가 따라다니게 하는 스크립트 (Woratana's Caterpillar System) 5 MinaAubert 2012.09.13 3012
372 기타 땅파기 18 file 비극ㆍ 2010.04.19 3013
371 상태/속성 YERD - Custom Status Properties 7 훈덕 2009.11.08 3021
370 기타 메뉴에서 애니매이션 사용! 12 비극ㆍ 2010.04.19 3022
369 기타 카지노 슬롯머신 15 file 아방스가 짱 2010.02.28 3023
368 맵/타일 맵상 캐릭터 그래픽 확대 / 축소 이벤트 스크립트 6 시트르산 2010.09.10 3023
367 장비 아이템 장비시 스킬습득, 'SW_EquipFinisher' by Siot Warrior 19 file 시옷전사 2010.08.31 3029
366 스킬 체스트 팝업 3.0 9 file 파이어 2010.12.05 3037
365 메뉴 윈도우창 크기 조절 스크립트 0.3 5 아방스 2008.01.30 3038
364 이동 및 탈것 Wachunga님의 XP용 MapLink VX용으로 개조 6 file 허걱 2009.02.13 3040
363 장비 장비에 레벨제한 스크립트!! 21 ijsh515 2010.09.19 3040
362 기타 화면 확대 스크립트 12 file 에돌이 2011.07.22 3061
361 기타 Base Project 15 아방스 2009.02.05 3063
360 타이틀/게임오버 메인 화면을 건너뛰고 시작하는 스크립트 14 아방스 2008.02.01 3064
359 전투 Actor Battler Graphics 13 아방스 2008.03.07 3065
358 장비 남성 / 여성전용 장비 스크립트 (수정 v1.1) 16 Evangelista 2009.11.15 3070
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 32 Next
/ 32