VX 스크립트

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ DQ특기풍스킬 - KGC_DQSkill ◆ VX ◆
#_/    ◇ Last update : 2009/08/18 ◇
#_/----------------------------------------------------------------------------
#_/  어디선가 본 것 같은 스킬을 작성합니다.
#_/============================================================================
#_/ 【기본 기능】≪타겟 확장≫ 보다 아래에 도입해 주세요.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

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

module KGC
module DQSkill
  module Regexp
    module Skill
      # 대방어
      HYPER_GUARD = /<(?:HYPER_GUARD|대방어)s*(d+)[%%]?>/i
      # 피데미지 변동
      DAMAGE_CHANGE = /<(?:DAMAGE_CHANGE|피데미지 변동)s*(d+)[%%]?>/i
      # 인왕립
      PROTECT_ALL = /<(?:PROTECT_ALL|인왕립|에 왕이다)>/i
      # 가이드 어택
      GUARD_ATTACK = /<(?:GUARD_ATTACK|가이드 어택|쉴드 어택)>/i
    end
  end
end
end

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

#==============================================================================
# ■ RPG::Skill
#==============================================================================

class RPG::Skill < RPG::UsableItem
  #--------------------------------------------------------------------------
  # ○ DQ특기의 캐쉬를 생성
  #--------------------------------------------------------------------------
  def create_dq_skill_cache
    @__hyper_guard        = false
    @__hyper_guard_rate   = 10
    @__damage_change      = false
    @__damage_change_rate = 100
    @__protect_all        = false
    @__guard_attack       = false

    self.note.each_line { |line|
      case line
      when KGC::DQSkill::Regexp::Skill::HYPER_GUARD
        # 대방어
        @__hyper_guard      = true
        @__hyper_guard_rate = $1.to_i
      when KGC::DQSkill::Regexp::Skill::DAMAGE_CHANGE
        # 데미지 변동
        @__damage_change      = true
        @__damage_change_rate = $1.to_i
      when KGC::DQSkill::Regexp::Skill::PROTECT_ALL
        # 인왕립
        @__protect_all = true
      when KGC::DQSkill::Regexp::Skill::GUARD_ATTACK
        # 가이드 어택
        @__guard_attack = true
      end
    }
  end
  #--------------------------------------------------------------------------
  # ○ 대방어
  #--------------------------------------------------------------------------
  def hyper_guard
    create_dq_skill_cache if @__hyper_guard == nil
    return @__hyper_guard
  end
  alias hyper_guard? hyper_guard
  #--------------------------------------------------------------------------
  # ○ 대방어 변동율
  #--------------------------------------------------------------------------
  def hyper_guard_rate
    create_dq_skill_cache if @__hyper_guard_rate == nil
    return @__hyper_guard_rate
  end
  #--------------------------------------------------------------------------
  # ○ 피데미지 변동
  #--------------------------------------------------------------------------
  def damage_change
    create_dq_skill_cache if @__damage_change == nil
    return @__damage_change
  end
  alias damage_change? damage_change
  #--------------------------------------------------------------------------
  # ○ 피데미지 변동율
  #--------------------------------------------------------------------------
  def damage_change_rate
    create_dq_skill_cache if @__damage_change_rate == nil
    return @__damage_change_rate
  end
  #--------------------------------------------------------------------------
  # ○ 인왕립
  #--------------------------------------------------------------------------
  def protect_all
    create_dq_skill_cache if @__protect_all == nil
    return @__protect_all
  end
  alias protect_all? protect_all
  #--------------------------------------------------------------------------
  # ○ 가이드 어택
  #--------------------------------------------------------------------------
  def guard_attack
    create_dq_skill_cache if @__guard_attack == nil
    return @__guard_attack
  end
  alias guard_attack? guard_attack
end

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

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

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 방어중 판정
  #--------------------------------------------------------------------------
  alias guarding_KGC_DQSkill? guarding?
  def guarding?
    return (guarding_KGC_DQSkill? || action.guard_attack?)
  end
  #--------------------------------------------------------------------------
  # ● 방어 수정의 적용
  #     damage : 데미지
  #--------------------------------------------------------------------------
  alias apply_guard_KGC_DQSkill apply_guard
  def apply_guard(damage)
    damage = apply_guard_KGC_DQSkill(damage)

    if damage > 0
      if action.hyper_guard?
        damage = damage * action.hyper_guard_rate / 100
      end
      if action.damage_change?
        damage = damage * action.damage_change_rate / 100
      end
    end
    return damage
  end
end

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

#==============================================================================
# ■ Game_BattleAction
#==============================================================================

class Game_BattleAction
  #--------------------------------------------------------------------------
  # ○ 대방어 판정
  #--------------------------------------------------------------------------
  def hyper_guard?
    return (skill? && skill.hyper_guard?)
  end
  #--------------------------------------------------------------------------
  # ○ 대방어 변동율 취득
  #--------------------------------------------------------------------------
  def hyper_guard_rate
    return 100 unless hyper_guard?

    return skill.hyper_guard_rate
  end
  #--------------------------------------------------------------------------
  # ○ 피데미지 변동 판정
  #--------------------------------------------------------------------------
  def damage_change?
    return (skill? && skill.damage_change?)
  end
  #--------------------------------------------------------------------------
  # ○ 피데미지 변동율 취득
  #--------------------------------------------------------------------------
  def damage_change_rate
    return 100 unless damage_change?

    return skill.damage_change_rate
  end
  #--------------------------------------------------------------------------
  # ○ 인왕립판정
  #--------------------------------------------------------------------------
  def protect_all?
    return (skill? && skill.protect_all?)
  end
  #--------------------------------------------------------------------------
  # ○ 가이드 어택 판정
  #--------------------------------------------------------------------------
  def guard_attack?
    return (skill? && skill.guard_attack?)
  end
  #--------------------------------------------------------------------------
  # ● 행동 스피드의 결정
  #--------------------------------------------------------------------------
  alias make_speed_KGC_DQSkill make_speed
  def make_speed
    make_speed_KGC_DQSkill

    @speed += 2000 if hyper_guard?
    @speed += 1500 if protect_all?
  end
  #--------------------------------------------------------------------------
  # ● 통상 공격의 타겟 작성
  #--------------------------------------------------------------------------
  alias make_attack_targets_KGC_DQSkill make_attack_targets
  def make_attack_targets
    result = make_attack_targets_KGC_DQSkill

    unless battler.confusion?
      result = apply_protect_all(result)
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 스킬 또는 아이템의 타겟 작성
  #     obj : 스킬 또는 아이템
  #--------------------------------------------------------------------------
  alias make_obj_targets_KGC_DQSkill make_obj_targets
  def make_obj_targets(obj)
    result = make_obj_targets_KGC_DQSkill(obj)

    if obj.for_opponent?
      result = apply_protect_all(result)
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ○ 인왕립를 적용
  #     targets : 타겟
  #--------------------------------------------------------------------------
  def apply_protect_all(targets)
    result = targets
    # 인왕립사용자 취득
    protect_battlers = []
    opponents_unit.existing_members.each { |battler|
      protect_battlers << battler if battler.action.protect_all?
    }
    unless protect_battlers.empty?
      # 공격을 인왕립사용자에 집중
      num    = targets.size
      result = []
      num.times { |i|
        result << protect_battlers[rand(protect_battlers.size)]
      }
    end
    return result
  end
end

 

***사용법****

데이터베이스 메모란에 기술하여 사용합니다.

대방어

스킬의 메모란에 <대방어 n%> (을)를 추가합니다.
이 스킬을 사용하면, 그 턴중에 받는 데미지가 통상의n%(이)가 됩니다.
효과 범위에 관계없이, 대방어 효과는 사용자에 나타납니다.

대방어 사용시는, 통상의 방어와 같게 턴의 최초로 행동합니다.
그 이외는 통상의 스킬과 같게 사용할 수 있습니다.

DQ (와)과 같은 동작으로 하는 경우는, 효과 범위를 「없이 」로 설정합니다.

 

피데미지 변동

스킬의 메모란에 <피데미지 변동 n%> (을)를 추가합니다.
이 스킬을 사용하면, 그 턴중에 받는 데미지가 통상의n%(이)가 됩니다.

턴의 최초로 행동하지 않는(통상의 차례 대로가 된다) 점 이외는, 대방어와 같습니다.

 

인왕립

스킬의 메모란에 <인왕립> 또는 <에 왕이다> (을)를 추가합니다.
이 스킬을 사용하면, 그 턴에 아군이 받는 공격을 모두 대신 받게 됩니다.
예를 들면, 전체 공격이라면 파티의 인원수분 데미지를 받습니다.

효과 범위에 관계없이, 인왕립효과는 사용자에 나타납니다.

인왕립사용시는, 턴의 최초(방어의 다음)에 행동합니다.
그 이외는 통상의 스킬과 같게 사용할 수 있습니다.

DQ (와)과 같은 동작으로 하는 경우는, 효과 범위를 「없이 」로 설정합니다.

 

쉴드어택

스킬의 메모란에 <가이드 어택> 또는 <쉴드 어택> (을)를 추가합니다.
이 스킬을 사용하면, 그 턴중에 받는 데미지에 방어 판정이 적용됩니다.
(디폴트라면 데미지 1/2, 강력 방어라면 1/4)

방어 판정을 하는 이외는, 통상의 스킬과 같게 사용할 수 있습니다.

TAG •

Who's 카르와푸딩의아틀리에

profile

엘카르디아 제작자 (현재 MV로 리메이크중)

유튜브

https://www.youtube.com/channel/UCMwirNTR-pOEzJNB0jL3y_g

트위터

https://twitter.com/karsis98

블로그

https://blog.naver.com/karsis98

Comment '4'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5398
377 전투 커먼이벤트 컷인 스크립트 15 허걱 2009.08.23 3399
376 기타 클리어 횟수 기록하기 8 file 허걱 2009.08.22 2729
375 기타 앞에있는 이벤트 아이디 찾기 6 허걱 2009.08.21 2091
374 제작도구 Icon Preview Window by Woratana 8 file 허걱 2009.08.20 2890
373 HUD 아이콘 그리기 7 file 허걱 2009.08.20 4441
372 이동 및 탈것 Paper Mario Walk 7 file 카르와푸딩의아틀리에 2009.08.19 2697
371 전투 Spirits System 정령 장착?이라고해야되나; 26 file 카르와푸딩의아틀리에 2009.08.19 3869
370 맵/타일 추가 맵칩 사용 - 공개 34 file 허걱 2009.08.19 6491
369 이동 및 탈것 Rei Advanced Movement System 8 file 카르와푸딩의아틀리에 2009.08.19 2624
368 오디오 사운드테스트 스크립트 13 file 카르와푸딩의아틀리에 2009.08.19 2106
367 기타 범용 게이지 묘화 - KGC 14 file 카르와푸딩의아틀리에 2009.08.19 3476
366 메뉴 확장 스테이터스 화면 - KGC 23 file 카르와푸딩의아틀리에 2009.08.19 5057
» 스킬 DQ특기풍스킬 - KGC 4 카르와푸딩의아틀리에 2009.08.19 3288
364 기타 스크립트로 커먼 이벤트 실행 [수정] 3 허걱 2009.08.17 2311
363 기타 확장 에러 메시지 13 file 허걱 2009.08.17 2497
362 기타 거리계산 스크립트 (XP가능) 7 file 허걱 2009.08.16 2848
361 기타 말풍선 그림 바꾸기 6 file 허걱 2009.08.15 3561
360 메시지 [완성]RPG Maker VX용 한글 조사 자동결정 10 file 시릴캣 2009.08.13 4598
359 타이틀/게임오버 타이틀 공지 37 file 허걱 2009.08.10 4748
358 기타 글씨표시 스크립트 32 file 허걱 2009.08.10 4421
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