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 5408
597 기타 Fullscreen++ by Zeus81 (VX/VXA) 2 Alkaid 2012.09.01 2230
596 전투 Slip_Damage_Ex - 슬립데미지 확장기능 (상태별 슬립데미지 적용) 7 허걱 2012.07.24 2198
595 메시지 메시지를 빠르게 넘겨주는 스크립트 3 타카나시 소라 2012.07.23 5038
594 전투 Team_Ilias's_Old_Project_Demo 4 습작 2012.07.11 2101
593 맵/타일 누가 이전에 올렸을지도..... KGC_MapLightening 3 file 클로버군 2012.07.02 2745
592 파티 5인 파티 프로젝트 V1.1 4 file 지나가는떡꼬치 2012.06.30 2988
591 기타 Etude87_GAGA_Chat 4 습작 2012.06.14 1916
590 이름입력 Etude87_HG_Hangul_Name_Scene file 습작 2012.06.14 1948
589 기타 Etude87_Hangul_utf8_List 습작 2012.06.04 1665
588 전투 Etude87_Tankentai_Addon ver.1.0 7 file 습작 2012.06.03 2883
587 퀘스트 퀘스트 마크 표시용 스크립트 10 file 허걱 2012.05.22 3704
586 그래픽 Arevulopapo's Particle Engine for VX/Ace by PK8 1 Alkaid 2012.05.13 2875
585 기타 078656577er님의 스크립트를 개조한, 사격용 스크립트 1 file 타코 2012.03.16 2519
584 맵/타일 Etude87_Map_Remember_VX ver.1.2 3 습작 2012.03.06 2430
583 아이템 드롭 아이템 확장 6 신규회원 2012.02.24 2977
582 기타 멥 이름 띄우기 10 신규회원 2012.02.24 3626
581 저장 세이브 시스템 확장 스크립트 9 file 신규회원 2012.02.24 3315
580 저장 Neo Save System VI by Helladen 2 Alkaid 2012.01.15 2886
579 기타 화면 해상도(640 X 480) 스크립트 6 file 쿠쿠밥솥 2012.01.10 3972
578 전투 XAS Hero Edition VX Manual 번역 1 케이언 2012.01.02 3559
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 32 Next
/ 32