기타

KGC패시브 스크립트

by 카르와푸딩의아틀리에 posted Oct 07, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 패시브 스킬 - KGC_PassiveSkill ◆ VX ◆
#_/    ◇ Last update : 2008/11/16 ◇
#_/----------------------------------------------------------------------------
#_/  습득하는 것만으로 능력 가격인상승효과를 발휘하는 스킬을 작성합니다.
#_/============================================================================
#_/ 【기본 기능】≪200x/XP 기능 재현≫ 보다 아래에 도입해 주세요.
#_/ 【장비】≪장비품 옵션 추가≫ 보다 아래에 도입해 주세요.
#_/ 【장비】≪장비 확장≫ 보다 아래에 도입해 주세요.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

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

module KGC
module PassiveSkill
  # 패시브 스킬용 파라미터 리스트
  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

      # 파라미터 수정
      #  MAXHP +20  등
      PASSIVE_PARAMS = /^s*([^:+-ds]+)s*([+-]d+)([%%])?s*$/
      # 속성·스테이트 리스트
      #  공격 속성 1,2,3  등
      PASSIVE_ARRAYS = /^s*([^:+-ds]+)s*(d+(?:s*,s*d+)*)s*$/
      # 내성
      PASSIVE_RESISTANCES = /^s*([^:+-ds]+)s(d+):(-?d+)[%%]?s*$/
      # 특수 효과
      PASSIVE_EFFECTS = /^s*([^:+-ds]+)/
    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_params = {}
    @__passive_params_rate = {}
    @__passive_arrays = {}
    @__passive_resistances = {}
    @__passive_effects = { :multi_attack_count => 1 }

    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_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
  #--------------------------------------------------------------------------
  # ○ 패시브 스킬의 능력치 수정을 적용
  #     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
  #--------------------------------------------------------------------------
  # ○ 패시브 스킬의 능력치 수정 (즉치)
  #--------------------------------------------------------------------------
  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  # 패시브 스킬용 장비 테스트 플래그
  #--------------------------------------------------------------------------
  # ● 셋업
  #     actor_id : 액터 ID
  #--------------------------------------------------------------------------
  alias setup_KGC_PassiveSkill setup
  def setup(actor_id)
    reset_passive_rev

    setup_KGC_PassiveSkill(actor_id)

    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

    # 수정전의 값을 보관 유지
    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 skill.passive

      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
  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
  #--------------------------------------------------------------------------
  # ● 장비의 변경 (오브젝트로 지정)
  #     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

  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)
  #--------------------------------------------------------------------------
  alias initialize_KGC_PassiveSkill initialize unless $@
  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
  end

 

 

젝스님 요청으로 올립니다.

스킬 메모란에 이런식으로 작성

<PASSIVE_SKILL>
odds +5

<PASSIVE_SKILL>
ATK +5

 

 

TAG •