#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ 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)
방어 판정을 하는 이외는, 통상의 스킬과 같게 사용할 수 있습니다.