질문과 답변

Extra Form
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 패시브 스킬 - 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>

요렇게 써봤는데 안되네요 ㅠㅠ
사용법좀 누가 가르쳐주세여 ㅠㅠ

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12392
RMVX Material가 뭐죠.. 1 크런키맛아듀크림 2010.09.17 822
플러그인 사용 RMMZ MenuSubMembersMZ, 플러그인의 사용 방법이 궁금합니다. file 12478 2022.08.03 287
RMXP Message Script 1 이징두 2015.01.04 226
RMVXA midi파일을 불러올수 없습니다 1 ONGJI 2014.05.12 758
RMVX mmorpg풍스크립트 있으신분있나요 3 베리베리붸리뷁 2011.01.25 696
RMVX MMO풍 스크립트의 오류를 어떻게 고쳐야 할지 모르겠습니다 file 아무개 2018.09.26 77
라이선스 기타 mnet 유료곡 배경음악하면 저작권침해? 2 펜슬 2011.02.12 995
RMVXA module을 재정의할 방법은 없나요? 2 맛난호빵 2014.04.09 578
RMMV MOG Battle Hud 질문 드립니다. saury 2018.04.22 205
RMVXA MOG BATTLE HUD 캐릭터 이름바뀌면 전투용 페이스칩도 바뀌게좀 도와주세요 7 구리더 2013.07.21 529
RMVXA MOG BATTLER MOTION (v1.2) 스크립트를 쓰는데 문제점. file 악상아리 2014.06.19 554
플러그인 사용 RMMV MOG_Scene 플러그인 시리즈 애니메이션 삭제 및 배치 변경 file 김신아 2022.01.14 242
플러그인 사용 RMMV MOG_SceneMenu 플러그인 폰트 교체 방법 file 김신아 2022.01.14 222
RMXP mog대해 1 사이언블루 2010.09.15 1010
RMVXA MOG배틀 스크립트에 대해 질문 구리더 2013.07.18 607
RMVX monsterbook 스크립트 관련 질문 1 반내림 2012.11.13 783
RMVXA move route(이동루트)의 스크립트말고 컨텐츠의 스크립트로 이동속도를 변경하고싶어요. 2015.10.18 147
플러그인 사용 RMMV MovieInScreen플러그인 사용하는데 스크린무비후 안움직여져요 file 메리양 2021.10.04 82
기본툴 사용법 RMVX MP 전부 소진시 상태부여 2 PRESSENTER 2023.01.13 45
RMVXA MP, HP 아이템과 스킬 창을 없애는 법? (꼭 좀 읽어주세요 ㅠㅠ) 2 하루0117 2018.06.05 642
Board Pagination Prev 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 516 Next
/ 516