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 타이틀/게임오버 메인 화면을 건너뛰고 시작하는 스크립트 14 아방스 2008.02.01 3064
376 메시지 메시지를 빠르게 넘겨주는 스크립트 3 타카나시 소라 2012.07.23 5038
375 메시지 메시지 표시 시스템 [NMS3] 31 아방스 2009.01.24 6248
374 메시지 메시지 오른쪽 정렬되어 나오는 스크립트 3 file 아방스 2009.07.12 3237
373 기타 메뉴에서 애니매이션 사용! 12 비극ㆍ 2010.04.19 3022
372 메뉴 메뉴변경 스크립트 34 아방스 2008.01.24 7937
371 메뉴 메뉴 배경화면 바꾸는 스크립트 9 독도2005 2008.03.23 4520
370 그래픽 먼가이상한데... 밤낮 변환 vx 44 작은악마 2008.03.18 3414
369 HUD 맵이름 띄우는 스크립트 입니다. 33 시에란 2008.08.16 5271
368 맵/타일 맵에 이벤트 뿌리기 입니다. 7 file 허걱 2009.01.31 3827
367 변수/스위치 맵에 변수와 스위치 설정하기.. 5 정의로운녀석 2008.07.22 1984
366 맵/타일 맵상 캐릭터 그래픽 확대 / 축소 이벤트 스크립트 6 시트르산 2010.09.10 3023
365 타이틀/게임오버 맵 타이틀 스크립트 48 아방스 2009.06.17 5547
364 HUD 맵 이름을 띠우는 스크립트 [메시지창] 24 아방스 2008.03.09 4748
363 HUD 맵 이름 스크립트 21 file 개임맨 2010.10.03 4365
362 타이틀/게임오버 맨처음 시작할때 타이틀에 게임로드칸 없애기 7 미카엘 2008.08.20 2819
361 전투 맨손 공격시 2번공격하는 스크립트 5 아방스 2008.01.24 2357
360 메뉴 매우 간단명료한 메뉴. 32 file 비극ㆍ 2010.04.23 6618
359 기타 말풍선 그림 바꾸기 6 file 허걱 2009.08.15 3562
358 키입력 마우스 시스템 Simple Mouse System (수정) 42 Incubus 2008.05.24 5693
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