질문과 답변

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 12393
플러그인 추천 RMMV "히어로즈 오브 마이트 앤 매직"같은 형식으로 전투를 할수있게해주는 플로그인이 있을까요? file 희희낙낙 2019.10.06 80
에러 해결 RMVX 액터가 움직이지 않습니다 1 NDgames 2021.11.12 80
이벤트 작성 RMMV 조건분기의 조건 종류를 '그 이외의 경우일 때'를 제외하고 2가지 이상으로 할 수 있나요? 2 spsp 2021.12.20 80
기타 기타 드래곤볼 처럼 하고싶은데 어떻게해요? 9 kihbbbb01234 2023.01.09 80
기본툴 사용법 RMMV 텍스트표시란에 이름 칸이 없습니다 2 file 악덕팬더 2023.04.17 80
스크립트 사용 RMXP 전투에 들어가도 맵브금이 그대로 흘러가는 스크립트 없을까요? 꼬맹E 2020.05.03 81
RMVXA 해당 스크립트 사용방법 겜제작광 2016.12.16 81
RMVXA 전투때 상태 중복 할순 없나요? 서냥 2016.11.12 81
RMXP [XP] 이벤트 실행 경우를 지정하고싶습니다. 1 찐콩땅콩 2017.02.23 81
RMVXA 상점의 처리 무기 방어구들의 능력치 표시에 대한 질문 1 겜맨602 2017.05.01 81
이벤트 작성 RMVX 똑같은 아이템 10개 모으면 사용할수 있게 만들고싶어요 2 백말띠 2019.05.25 81
턴제 전투 RMXP 명중률 회피 적용이 어떻게 해도 안되요. 라엔 2019.05.30 81
스크립트 사용 RMMV 변수 스크립트 사용법에 대한 질문입니다. 2 귀객 2019.10.15 81
에러 해결 RMVXA '이벤트의 플레이어 추격 스크립트' 삽입 후 말풍선 오류 해결법 file 슈필러 2019.10.11 81
기본툴 사용법 RMVXA 맵을 이동하면서 캐릭터도 바꾸고 싶습니다. 2 흐왈 2019.12.29 81
기본툴 사용법 RMMV 추격자 등장하면 1 채팅 2020.03.11 81
스크립트 작성 RMXP 게임 새로하기를 눌렀을 때 이미지를 띄우고 싶습니다 새싹입니다 2020.07.28 81
기타 RMVXA 추리겜을 만들려고하는데 어떻게 말을 계속 하게할수 있을까요? dodo&LPG 2021.08.26 81
스크립트 작성 RMMV 전투 도중에 전투 고속화 on/off 를 만들고 싶습니다. Newtrone 2021.12.19 81
기본툴 사용법 RMMZ 검은색 텍스트 박스를 투명으로 처리하고 싶어요 file 나랑드 2023.06.12 81
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