#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ 패시브 스킬 - KGC_PassiveSkill ◆ VX ◆
#_/ ◇ Last update : 2009/11/01 ◇
#_/----------------------------------------------------------------------------
#_/ 습득하는 것만으로 능력 가격인상승효과를 발휘하는 스킬을 작성합니다.
#_/============================================================================
#_/ 【기본 기능】≪200x/XP 기능 재현≫ 보다 아래에 도입해 주세요.
#_/ 【장비】≪장비품 옵션 추가≫ 보다 아래에 도입해 주세요.
#_/ 【장비】≪장비 확장≫ 보다 아래에 도입해 주세요.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$imported = {} if $imported == nil
$imported["PassiveSkill"] = true
module KGC
module PassiveSkill
# 패시브 스킬용 조건 리스트
CONDITIONS = {
:weapon => "WEAPON|무기",
:armor => "ARMOR|방어구",
:armor_set => "ARMOR_SET|방어구 세트",
:state => "STATE|스테이트",
}
# 패시브 스킬용 파라미터 리스트
PARAMS = {
:maxhp => "MAXHP|최대 HP",
:maxmp => "MAXMP|최대 MP",
:atk => "ATK|공격력",
:def => "DEF|방어력",
:spi => "SPI|정신력",
:agi => "AGI|민첩성",
:hit => "HIT|명중율",
:eva => "EVA|회피율",
:cri => "CRI|위기율",
:odds => "ODDS|표적이 되기 쉬움",
}
# 패시브 스킬용 속성·스테이트 리스트
ARRAYS = {
:attack_element => "ATTACK_ELEMENT|공격 속성",
:plus_state => "PLUS_STATE|부가 스테이트",
:invalid_state => "INVALID_STATE|무효화 스테이트",
:auto_state => "AUTO_STATE|오토 스테이트",
}
# 패시브 스킬용 내성 리스트
RESISTANCES = {
# ≪장비품 옵션 추가≫
:element => "ELEMENT_RESISTANCE|속성 내성",
:state => "STATE_RESISTANCE|스테이트 내성",
}
# 패시브 스킬용 특수 효과 리스트
EFFECTS = {
# 데포
:two_swords_style => "TWO_SWORDS_STYLE|쌍수검",
:auto_battle => "AUTO_BATTLE|자동 전투",
:super_guard => "SUPER_GUARD|강력 방어",
:pharmacology => "PHARMACOLOGY|약의 지식",
:fast_attack => "FAST_ATTACK|턴내 선제",
:dual_attack => "DUAL_ATTACK|연속 공격",
:critical_bonus => "CRITICAL_BONUS|위기 빈발",
:prevent_critical => "PREVENT_CRITICAL|위기 방지",
:half_mp_cost => "HALF_MP_COST|소비 MP반",
:double_exp_gain => "DOUBLE_EXP_GAIN|취득 경험치[22]배",
# ≪200x/XP 기능 재현≫
:whole_attack => "WHOLE_ATTACK|전체 공격",
:ignore_eva => "IGNORE_EVA|회피율?무시",
# ≪장비품 옵션 추가≫
:multi_attack_count => '(d+) s*(?:TIMES_ATTACK|회공격)',
}
module Regexp
module Skill
# 패시브 스킬 개시
BEGIN_PASSIVE = /<(?:PASSIVE_SKILL|패시브 스킬)>/i
# 패시브 스킬 종료
END_PASSIVE = /</(?:PASSIVE_SKILL|패시브 스킬)>/i
# 발동 조건
PASSIVE_CONDITIONS =
/^s*조건 s*([^:+-ds]+) s*([-d]+(?:s*,s*[-d]+)*) s*$/i
# 파라미터 수정
# MAXHP +20 등
PASSIVE_PARAMS = /^s*([^:+-ds]+) s*([+-]d+)([%%])?s*$/i
# 속성·스테이트 리스트
# 공격 속성 1,2,3 등
PASSIVE_ARRAYS = /^s*([^:+-ds]+) s*(d+(?:s*,s*d+)*) s*$/i
# 내성
PASSIVE_RESISTANCES = /^s*([^:+-ds]+) s(d+):(-?d+)[%%]?s*$/i
# 특수 효과
PASSIVE_EFFECTS = /^s*([^:+-ds]+) /i
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ○패시브 스킬의 수정치를 재설정
#--------------------------------------------------------------------------
def restore_passive_rev
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.restore_passive_rev
}
end
end
end
class Game_Interpreter
include KGC::Commands
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# ○패시브 스킬의 캐쉬를 생성
#--------------------------------------------------------------------------
def create_passive_skill_cache
@__passive = false
@__passive_conditions = {}
@__passive_params = {}
@__passive_params_rate = {}
@__passive_arrays = {}
@__passive_resistances = {}
@__passive_effects = { :multi_attack_count => 1 }
KGC::PassiveSkill::CONDITIONS.each_key { |k|
@__passive_conditions[k] = []
}
passive_flag = false
self.note.each_line { |line|
case line
when KGC::PassiveSkill::Regexp::Skill::BEGIN_PASSIVE
# 패시브 스킬 정의 개시
passive_flag = true
@__passive = true
when KGC::PassiveSkill::Regexp::Skill::END_PASSIVE
# 패시브 스킬 정의 종료
passive_flag = false
when KGC::PassiveSkill::Regexp::Skill::PASSIVE_CONDITIONS
# 발동 조건
if passive_flag
apply_passive_conditions($1, $2)
end
when KGC::PassiveSkill::Regexp::Skill::PASSIVE_PARAMS
# 능력치 수정
if passive_flag
apply_passive_params($1, $2.to_i, $3 != nil)
end
when KGC::PassiveSkill::Regexp::Skill::PASSIVE_ARRAYS
# 속성·스테이트
if passive_flag
apply_passive_arrays($1, $2.scan(/d+/))
end
when KGC::PassiveSkill::Regexp::Skill::PASSIVE_RESISTANCES
# 내성
if passive_flag
apply_passive_resistances($1, $2.to_i, $3.to_i)
end
else
# 특수 효과
if passive_flag
apply_passive_effects(line)
end
end
}
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 발동 조건을 적용
# cond : 조건
# values : 조건치
#--------------------------------------------------------------------------
def apply_passive_conditions(cond, values)
KGC::PassiveSkill::CONDITIONS.each { |k, v|
if cond =~ /(?:#{v}) /i
cond = k
break
end
}
return unless cond.is_a?(Symbol)
@__passive_conditions[cond] = [] if @__passive_conditions[cond] == nil
values.scan(/[-d]+/).each { |v|
case v
when /^(d+) -(d+)$/ # 범위
@__passive_conditions[cond] += ( ($1.to_i)..($2.to_i) ).to_a
when /^d+$/ # 단일
@__passive_conditions[cond] << v.to_i
end
}
@__passive_conditions[cond].uniq!
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 능력치 수정을 적용
# param : 대상 파라미터
# value : 수정치
# rate : true 라면 % 지정
#--------------------------------------------------------------------------
def apply_passive_params(param, value, rate)
KGC::PassiveSkill::PARAMS.each { |k, v|
if param =~ /(?:#{v}) /i
if rate
@__passive_params_rate[k] = 0 if @__passive_params_rate[k] == nil
@__passive_params_rate[k] += value
else
@__passive_params[k] = 0 if @__passive_params[k] == nil
@__passive_params[k] += value
end
break
end
}
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 추가 속성·스테이트를 적용
# param : 대상 파라미터
# list : 속성·스테이트 일람
#--------------------------------------------------------------------------
def apply_passive_arrays(param, list)
KGC::PassiveSkill::ARRAYS.each { |k, v|
if param =~ /(?:#{v}) /i
values = []
list.each { |num| values << num.to_i }
@__passive_arrays[k] = [] if @__passive_arrays[k] == nil
@__passive_arrays[k] |= values
break
end
}
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 내성을 적용
# param : 대상 파라미터
# id : 속성·스테이트 ID
# rate : 변동율
#--------------------------------------------------------------------------
def apply_passive_resistances(param, id, rate)
KGC::PassiveSkill::RESISTANCES.each { |k, v|
if param =~ /(?:#{v}) /i
if @__passive_resistances[k] == nil
@__passive_resistances[k] = []
end
n = @__passive_resistances[k][id]
n = 100 if n == nil
@__passive_resistances[k][id] = n + rate - 100
break
end
}
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 특수 효과를 적용
# effect : 대상 효과
#--------------------------------------------------------------------------
def apply_passive_effects(effect)
KGC::PassiveSkill::EFFECTS.each { |k, v|
if effect =~ /^s*(#{v}) /i
case k
when :multi_attack_count
# 공격 회수
$1 =~ /#{v}/i
@__passive_effects[k] = [ $1.to_i, @__passive_effects[k] ].max
else
@__passive_effects[k] = true
end
break
end
}
end
#--------------------------------------------------------------------------
# ○패시브 스킬일까
#--------------------------------------------------------------------------
def passive
create_passive_skill_cache if @__passive == nil
return @__passive
end
alias passive? passive
#--------------------------------------------------------------------------
# ○패시브 스킬의 발동 조건
#--------------------------------------------------------------------------
def passive_conditions
create_passive_skill_cache if @__passive_conditions == nil
return @__passive_conditions
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 능력치 수정 (즉치)
#--------------------------------------------------------------------------
def passive_params
create_passive_skill_cache if @__passive_params == nil
return @__passive_params
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 능력치 수정 (비율)
#--------------------------------------------------------------------------
def passive_params_rate
create_passive_skill_cache if @__passive_params_rate == nil
return @__passive_params_rate
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 속성·스테이트 리스트
#--------------------------------------------------------------------------
def passive_arrays
create_passive_skill_cache if @__passive_arrays == nil
return @__passive_arrays
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 내성 리스트
#--------------------------------------------------------------------------
def passive_resistances
create_passive_skill_cache if @__passive_resistances == nil
return @__passive_resistances
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 특수 효과 리스트
#--------------------------------------------------------------------------
def passive_effects
create_passive_skill_cache if @__passive_effects == nil
return @__passive_effects
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ○클래스 변수
#--------------------------------------------------------------------------
@@passive_equip_test = false # 패시브 스킬용 장비 테스트 플래그
#--------------------------------------------------------------------------
# ○공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_accessor :passive_dummy_flag # 패시브 스킬 발동 조건 무효화
#--------------------------------------------------------------------------
# ● 셋업
# actor_id : 액터 ID
#--------------------------------------------------------------------------
alias setup_KGC_PassiveSkill setup
def setup(actor_id)
reset_passive_rev
@__passive_rev_restoring = true
setup_KGC_PassiveSkill(actor_id)
@__passive_rev_restoring = nil
restore_passive_rev
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 수정치를 초기화
#--------------------------------------------------------------------------
def reset_passive_rev
@passive_params = {}
@passive_params_rate = {}
@passive_arrays = {}
@passive_resistances = {}
@passive_effects = {}
KGC::PassiveSkill::PARAMS.each_key { |k|
@passive_params[k] = 0
@passive_params_rate[k] = 100
}
KGC::PassiveSkill::ARRAYS.each_key { |k|
@passive_arrays[k] = []
}
KGC::PassiveSkill::RESISTANCES.each_key { |k|
@passive_resistances[k] = []
}
KGC::PassiveSkill::EFFECTS.each_key { |k|
@passive_effects[k] = false
}
@passive_effects[:multi_attack_count] = 1
end
#--------------------------------------------------------------------------
# ○패시브 스킬의 수정치를 재설정
#--------------------------------------------------------------------------
def restore_passive_rev
return if @__passive_rev_restoring
# 더미 생성
unless @passive_dummy_flag
dummy = Marshal.load(Marshal.dump(self))
dummy.passive_dummy_flag = true
dummy.restore_passive_rev
end
# 수정전의 값을 보관 유지
last_effects = @passive_effects.clone if @passive_effects != nil
reset_passive_rev
# ≪스킬 CP제≫ 의 병용을 고려해, 전투중 플래그를 일시적으로 온
last_in_battle = $game_temp.in_battle
$game_temp.in_battle = true
# 수정치를 취득
self.skills.each { |skill|
next unless passive_skill_valid?(skill, dummy)
skill.passive_params.each { |k, v| @passive_params[k] += v }
skill.passive_params_rate.each { |k, v| @passive_params_rate[k] += v }
skill.passive_arrays.each { |k, v| @passive_arrays[k] |= v }
skill.passive_resistances.each { |k, v|
v.each_with_index { |n, i|
next if n == nil
@passive_resistances[k][i] = 100 if @passive_resistances[k][i] == nil
@passive_resistances[k][i] += n - 100
}
}
skill.passive_effects.each { |k, v|
case k
when :multi_attack_count
@passive_effects[k] = [ v, @passive_effects[k] ].max
else
@passive_effects[k] |= v
end
}
}
$game_temp.in_battle = last_in_battle
@__passive_rev_restoring = true
# HP/MP 를 수정
self.hp = self.hp
self.mp = self.mp
# 쌍수검 위반을 수정
if !two_swords_style_KGC_PassiveSkill &&
last_effects[:two_swords_style] != nil &&
last_effects[:two_swords_style] != two_swords_style
@__one_time_two_swords_style = last_effects[:two_swords_style]
change_equip(1, nil, @@passive_equip_test)
@__one_time_two_swords_style = nil
end
@__passive_rev_restoring = nil
dummy = nil
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ○패시브 스킬 유효 판정
#--------------------------------------------------------------------------
def passive_skill_valid?(skill, dummy)
return false unless skill.passive
return true if @passive_dummy_flag
# 발동 조건
skill.passive_conditions.each { |k, v|
next if v.empty?
ids = []
case k
when :weapon
dummy.weapons.compact.each { |w| ids << w.id }
return false if (v & ids).empty? # 필요 무기를 미장비
when :armor
dummy.armors.compact.each { |a| ids << a.id }
return false if (v & ids).empty? # 필요 방어구를 미장비
when :state
dummy.states.compact.each { |s| ids << s.id }
return false if (v & ids).empty? # 필요 스테이트가 아니다
end
}
return true
end
#--------------------------------------------------------------------------
# ○패시브 스킬 발동 조건
#--------------------------------------------------------------------------
def passive_conditions
restore_passive_rev if @passive_conditions == nil
return @passive_conditions
end
#--------------------------------------------------------------------------
# ○패시브 스킬에 의한 파라미터 수정치 (즉치)
#--------------------------------------------------------------------------
def passive_params
restore_passive_rev if @passive_params == nil
return @passive_params
end
#--------------------------------------------------------------------------
# ○패시브 스킬에 의한 파라미터 수정치 (비율)
#--------------------------------------------------------------------------
def passive_params_rate
restore_passive_rev if @passive_params_rate == nil
return @passive_params_rate
end
#--------------------------------------------------------------------------
# ○패시브 스킬에 의한 추가 속성·스테이트
#--------------------------------------------------------------------------
def passive_arrays
restore_passive_rev if @passive_arrays == nil
return @passive_arrays
end
#--------------------------------------------------------------------------
# ○패시브 스킬에 의한 내성
#--------------------------------------------------------------------------
def passive_resistances
restore_passive_rev if @passive_resistances == nil
return @passive_resistances
end
#--------------------------------------------------------------------------
# ○패시브 스킬에 의한 특수 효과
#--------------------------------------------------------------------------
def passive_effects
restore_passive_rev if @passive_effects == nil
return @passive_effects
end
#--------------------------------------------------------------------------
# ● 스테이트의 부가
# state_id : 스테이트 ID
#--------------------------------------------------------------------------
unless method_defined?(:add_state_KGC_PassiveSkill)
alias add_state_KGC_PassiveSkill add_state
end
def add_state(state_id)
add_state_KGC_PassiveSkill(state_id)
restore_passive_rev
end
#--------------------------------------------------------------------------
# ● 스테이트의 해제
# state_id : 스테이트 ID
#--------------------------------------------------------------------------
unless method_defined?(:remove_state_KGC_PassiveSkill)
alias remove_state_KGC_PassiveSkill remove_state
end
def remove_state(state_id)
remove_state_KGC_PassiveSkill(state_id)
restore_passive_rev
end
#--------------------------------------------------------------------------
# ● 장비의 변경 (오브젝트로 지정)
# equip_type : 장비 부위 (0..4)
# item : 무기 or 방어구 (nil 라면 장비 해제)
# test : 테스트 플래그 (전투 테스트, 또는 장비 화면에서의 일시 장비)
#--------------------------------------------------------------------------
alias change_equip_KGC_PassiveSkill change_equip
def change_equip(equip_type, item, test = false)
@@passive_equip_test = test
change_equip_KGC_PassiveSkill(equip_type, item, test)
restore_passive_rev
@@passive_equip_test = false
end
#--------------------------------------------------------------------------
# ● 장비의 파기
# item : 파기하는 무기 or 방어구
# 무기/방어구의 증감으로 「장비품도 포함한다」 때 사용한다.
#--------------------------------------------------------------------------
alias discard_equip_KGC_PassiveSkill discard_equip
def discard_equip(item)
discard_equip_KGC_PassiveSkill(item)
restore_passive_rev
end
#--------------------------------------------------------------------------
# ● 경험치의 변경
# exp : 새로운 경험치
# show : 레벨업 표시 플래그
#--------------------------------------------------------------------------
alias change_exp_KGC_PassiveSkill change_exp
def change_exp(exp, show)
@__passive_rev_restoring = true
change_exp_KGC_PassiveSkill(exp, show)
@__passive_rev_restoring = nil
restore_passive_rev
end
if $imported["AddEquipmentOptions"]
#--------------------------------------------------------------------------
# ○속성 내성의 취득
# element_id : 속성 ID
#--------------------------------------------------------------------------
alias element_resistance_KGC_PassiveSkill element_resistance
def element_resistance(element_id)
n = element_resistance_KGC_PassiveSkill(element_id)
rate = passive_resistances[:element][element_id]
n += (rate == nil ? 100 : rate) - 100
return n
end
#--------------------------------------------------------------------------
# ○스테이트 내성의 취득
# state_id : 스테이트 ID
#--------------------------------------------------------------------------
alias state_resistance_KGC_PassiveSkill state_resistance
def state_resistance(state_id)
n = state_resistance_KGC_PassiveSkill(state_id)
rate = passive_resistances[:state][state_id]
n += (rate == nil ? 100 : rate) - 100
return [n, 0].max
end
end # <-- if $imported["AddEquipmentOptions"]
#--------------------------------------------------------------------------
# ● 스테이트 무효화 판정
# state_id : 스테이트 ID
#--------------------------------------------------------------------------
alias state_resist_KGC_PassiveSkill? state_resist?
def state_resist?(state_id)
return true if passive_arrays[:invalid_state].include?(state_id)
return state_resist_KGC_PassiveSkill?(state_id)
end
#--------------------------------------------------------------------------
# ● 통상 공격의 속성 취득
#--------------------------------------------------------------------------
alias element_set_KGC_PassiveSkill element_set
def element_set
return (element_set_KGC_PassiveSkill | passive_arrays[:attack_element])
end
#--------------------------------------------------------------------------
# ● 통상 공격의 추가 효과 (스테이트 변화) 취득
#--------------------------------------------------------------------------
alias plus_state_set_KGC_PassiveSkill plus_state_set
def plus_state_set
return (plus_state_set_KGC_PassiveSkill | passive_arrays[:plus_state])
end
#--------------------------------------------------------------------------
# ● 기본 MaxHP 의 취득
#--------------------------------------------------------------------------
alias base_maxhp_KGC_PassiveSkill base_maxhp
def base_maxhp
n = base_maxhp_KGC_PassiveSkill + passive_params[:maxhp]
n = n * passive_params_rate[:maxhp] / 100
return n
end
#--------------------------------------------------------------------------
# ● 기본 MaxMP 의 취득
#--------------------------------------------------------------------------
alias base_maxmp_KGC_PassiveSkill base_maxmp
def base_maxmp
n = base_maxmp_KGC_PassiveSkill + passive_params[:maxmp]
n = n * passive_params_rate[:maxmp] / 100
return n
end
#--------------------------------------------------------------------------
# ● 기본 공격력의 취득
#--------------------------------------------------------------------------
alias base_atk_KGC_PassiveSkill base_atk
def base_atk
n = base_atk_KGC_PassiveSkill + passive_params[:atk]
n = n * passive_params_rate[:atk] / 100
return n
end
#--------------------------------------------------------------------------
# ● 기본 방어력의 취득
#--------------------------------------------------------------------------
alias base_def_KGC_PassiveSkill base_def
def base_def
n = base_def_KGC_PassiveSkill + passive_params[:def]
n = n * passive_params_rate[:def] / 100
return n
end
#--------------------------------------------------------------------------
# ● 기본 정신력의 취득
#--------------------------------------------------------------------------
alias base_spi_KGC_PassiveSkill base_spi
def base_spi
n = base_spi_KGC_PassiveSkill + passive_params[:spi]
n = n * passive_params_rate[:spi] / 100
return n
end
#--------------------------------------------------------------------------
# ● 기본 민첩성의 취득
#--------------------------------------------------------------------------
alias base_agi_KGC_PassiveSkill base_agi
def base_agi
n = base_agi_KGC_PassiveSkill + passive_params[:agi]
n = n * passive_params_rate[:agi] / 100
return n
end
#--------------------------------------------------------------------------
# ● 명중율의 취득
#--------------------------------------------------------------------------
alias hit_KGC_PassiveSkill hit
def hit
n = hit_KGC_PassiveSkill + passive_params[:hit]
n = n * passive_params_rate[:hit] / 100
return n
end
#--------------------------------------------------------------------------
# ● 회피율의 취득
#--------------------------------------------------------------------------
alias eva_KGC_PassiveSkill eva
def eva
n = eva_KGC_PassiveSkill + passive_params[:eva]
n = n * passive_params_rate[:eva] / 100
return n
end
#--------------------------------------------------------------------------
# ● 위기율의 취득
#--------------------------------------------------------------------------
alias cri_KGC_PassiveSkill cri
def cri
n = cri_KGC_PassiveSkill + passive_params[:cri]
n = n * passive_params_rate[:cri] / 100
n += 4 if passive_effects[:critical_bonus]
return n
end
#--------------------------------------------------------------------------
# ● 표적이 되기 쉬움의 취득
#--------------------------------------------------------------------------
alias odds_KGC_PassiveSkill odds
def odds
n = odds_KGC_PassiveSkill + passive_params[:odds]
n = n * passive_params_rate[:odds] / 100
return n
end
#--------------------------------------------------------------------------
# ● 옵션 [쌍수검] 의 취득
#--------------------------------------------------------------------------
alias two_swords_style_KGC_PassiveSkill two_swords_style
def two_swords_style
return @__one_time_two_swords_style if @__one_time_two_swords_style != nil
return (two_swords_style_KGC_PassiveSkill ||
passive_effects[:two_swords_style])
end
#--------------------------------------------------------------------------
# ● 옵션 [자동 전투] 의 취득
#--------------------------------------------------------------------------
alias auto_battle_KGC_PassiveSkill auto_battle
def auto_battle
return (auto_battle_KGC_PassiveSkill || passive_effects[:auto_battle])
end
#--------------------------------------------------------------------------
# ● 옵션 [강력 방어] 의 취득
#--------------------------------------------------------------------------
alias super_guard_KGC_PassiveSkill super_guard
def super_guard
return (super_guard_KGC_PassiveSkill || passive_effects[:super_guard])
end
#--------------------------------------------------------------------------
# ● 옵션 [약의 지식] 의 취득
#--------------------------------------------------------------------------
alias pharmacology_KGC_PassiveSkill pharmacology
def pharmacology
return (pharmacology_KGC_PassiveSkill || passive_effects[:pharmacology])
end
#--------------------------------------------------------------------------
# ● 무기 옵션 [턴내 선제] 의 취득
#--------------------------------------------------------------------------
alias fast_attack_KGC_PassiveSkill fast_attack
def fast_attack
return (fast_attack_KGC_PassiveSkill || passive_effects[:fast_attack])
end
#--------------------------------------------------------------------------
# ● 무기 옵션 [연속 공격] 의 취득
#--------------------------------------------------------------------------
alias dual_attack_KGC_PassiveSkill dual_attack
def dual_attack
if $imported["AddEquipmentOptions"]
# 2회 공격 이상이라면 무시
return false if passive_effects[:multi_attack_count] >= 2
end
return (dual_attack_KGC_PassiveSkill || passive_effects[:dual_attack])
end
#--------------------------------------------------------------------------
# ● 방어구 옵션 [위기 방지] 의 취득
#--------------------------------------------------------------------------
alias prevent_critical_KGC_PassiveSkill prevent_critical
def prevent_critical
return (prevent_critical_KGC_PassiveSkill ||
passive_effects[:prevent_critical])
end
#--------------------------------------------------------------------------
# ● 방어구 옵션 [소비 MP 반] 의 취득
#--------------------------------------------------------------------------
alias half_mp_cost_KGC_KGC_PassiveSkill half_mp_cost
def half_mp_cost
return (half_mp_cost_KGC_KGC_PassiveSkill ||
passive_effects[:half_mp_cost])
end
#--------------------------------------------------------------------------
# ● 방어구 옵션 [취득 경험치 2 배] 의 취득
#--------------------------------------------------------------------------
alias double_exp_gain_KGC_PassiveSkill double_exp_gain
def double_exp_gain
return (double_exp_gain_KGC_PassiveSkill ||
passive_effects[:double_exp_gain])
end
#--------------------------------------------------------------------------
# ● 스킬을 기억한다
# skill_id : 스킬 ID
#--------------------------------------------------------------------------
alias learn_skill_KGC_PassiveSkill learn_skill
def learn_skill(skill_id)
learn_skill_KGC_PassiveSkill(skill_id)
restore_passive_rev
end
#--------------------------------------------------------------------------
# ● 스킬을 잊는다
# skill_id : 스킬 ID
#--------------------------------------------------------------------------
alias forget_skill_KGC_PassiveSkill forget_skill
def forget_skill(skill_id)
forget_skill_KGC_PassiveSkill(skill_id)
restore_passive_rev
end
if $imported["ReproduceFunctions"]
#--------------------------------------------------------------------------
# ○오토 스테이트의 배열을 취득
# id_only : ID 만을 취득
#--------------------------------------------------------------------------
alias auto_states_KGC_PassiveSkill auto_states
def auto_states(id_only = false)
result = auto_states_KGC_PassiveSkill(id_only)
passive_arrays[:auto_state].each { |i|
result << (id_only ? i : $data_states[i])
}
result.uniq!
return result
end
#--------------------------------------------------------------------------
# ○장비 옵션 [전체 공격] 의 취득
#--------------------------------------------------------------------------
alias whole_attack_KGC_PassiveSkill whole_attack
def whole_attack
return (whole_attack_KGC_PassiveSkill || passive_effects[:whole_attack])
end
#--------------------------------------------------------------------------
# ○장비 옵션 [회피 무시] 의 취득
#--------------------------------------------------------------------------
alias ignore_eva_KGC_PassiveSkill ignore_eva
def ignore_eva
return (ignore_eva_KGC_PassiveSkill || passive_effects[:ignore_eva])
end
end # <-- if $imported["ReproduceFunctions"]
if $imported["AddEquipmentOptions"]
#--------------------------------------------------------------------------
# ○공격 회수의 취득
#--------------------------------------------------------------------------
alias multi_attack_count_KGC_PassiveSkill multi_attack_count
def multi_attack_count
n = multi_attack_count_KGC_PassiveSkill
return [ n, passive_effects[:multi_attack_count] ].max
end
end # <-- if $imported["AddEquipmentOptions"]
end # <-- class
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Item
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
# x : 윈도우의 X 좌표
# y : 윈도우의 Y 좌표
# width : 윈도우의 폭
# height : 윈도우의 높이
# actor : 액터
# equip_type : 장비 부위 (04)
#--------------------------------------------------------------------------
unless private_method_defined?(:initialize_KGC_PassiveSkill)
alias initialize_KGC_PassiveSkill initialize
end
def initialize(x, y, width, height, actor, equip_type)
@original_equip_type = equip_type
initialize_KGC_PassiveSkill(x, y, width, height, actor, equip_type)
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
unless method_defined?(:refresh_KGC_PassiveSkill)
alias refresh_KGC_PassiveSkill refresh
end
def refresh
if @original_equip_type == 1
@equip_type = (@actor.two_swords_style ? 0 : 1)
end
refresh_KGC_PassiveSkill
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ● 세이브 데이터의 읽기
# file : 읽기용 파일 오브젝트 (오픈이 끝난 상태)
#--------------------------------------------------------------------------
alias read_save_data_KGC_PassiveSkill read_save_data
def read_save_data(file)
read_save_data_KGC_PassiveSkill(file)
KGC::Commands.restore_passive_rev
Graphics.frame_reset
end
end
대략 이렇게 되있네요.
공격력을 5 올리기 위해서 대략 스크립트를 해석해보니
<PASSIVE_SKILL>
ATK +5
</PASSIVE_SKILL>
요렇게 써봤는데 안되네요 ㅠㅠ
사용법좀 누가 가르쳐주세여 ㅠㅠ