VX 스크립트

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

Who's 카르와푸딩의아틀리에

profile

엘카르디아 제작자 (현재 MV로 리메이크중)

유튜브

https://www.youtube.com/channel/UCMwirNTR-pOEzJNB0jL3y_g

트위터

https://twitter.com/karsis98

블로그

https://blog.naver.com/karsis98

Comment '30'
  • ?
    젝스 2009.10.07 17:52
    정말감사합니다 ㅠ3ㅠ
  • ?
    Amaster 2009.10.07 22:37

    오! 정말 좋은것같은데...어떻게 사용하는지 잘 이해가...

  • ?
    텐가와 2009.10.08 05:40

    ! 내가 찾던 그 스크립트다 정말 고맙습니다 그런데 어디에다 그 작성을 해야 되나요?

  • ?
    달표범 2009.10.08 08:57

     드디어 올라왔군요. 뭐.. 사실 다들 쓸 사람은 외국 포럼에서 긁어오긴 했었지만...

     

    맨 및 부분참고하세요

  • ?
    오리엔탈 2009.10.09 22:03
    헐 맨 밑부분을 읽어봐도 잘 모르겠어!!
  • ?
    Berylll 2009.10.18 13:30
    잘 사용하겟습니다.
  • ?
    뉴공 2009.11.06 04:17

    역시 급이 다르군요 ㅎㅎ

  • ?
    팔공산반달곰 2010.01.05 23:11

    스테이트나 내성, 특수효과등은 어떻게 붙이나요 ㅇㅅㅇ;; 스텟은 예시가 있는데 이쪽은 잘 모르겠어요

  • ?
    탐구자 2010.02.14 16:19

    사용하기가 많이 힘들것 같네요 ㅠ

  • ?
    1000℃ 복숭아 2010.02.22 11:08

    감사합니다!

  • ?
    KOREA♬♪ 2010.03.20 13:40

    흐음.....

    감사합니다.

    자~~~~~~~알쓰도록하죠 ㅎㅎ

  • ?
    나이러스 2010.07.09 03:24

    zzzzz

  • ?
    나이러스 2010.07.13 02:23

  • ?
    따메츠나 2010.07.25 17:55

    헠.... 정말감사합니다! 이거 진짜 필요했는대.

  • ?
    블뤼치 2010.07.25 18:40

    와 진짜 좋다;;; 소드마스터리 등 할수있겠네 ㅋ

  • ?
    블뤼치 2010.07.25 18:42

  • ?
    리버스듀크 2010.08.20 14:06

    정말좋네요 ㅎㅎ ㄳㄳ

  • ?
    니노미야 2010.09.14 17:55

    전투중에는 패시브 스킬이 표시 안되게 할 수는 없을까요 ?

  • ?
    알레니아 2010.09.19 19:04

    패시브 스킬로 데미지 계산중에 % 계산도 되나요???

  • ?
    잡초더미 2011.06.05 19:18

    왜 않되지.....

  • ?
    엿데브 2011.06.07 13:00

    이 스크립트의

    END_PASSIVE = /</(?:PASSIVE_SKILL|패시브 스킬)>/i

    가 원본에서는

    END_PASSIVE = /</(?:PASSIVE_SKILL|パッシブスキル)>/i

    군요. 에러가 생겨서 원본을 찾아봤습니다.

    하지만 그래도 에러가 생기는 건 뭐지...

  • ?
    웃자 2011.07.30 11:04

    잘씁니당

  • ?
    액셀 2011.08.23 00:43

    감사합니다

     

  • ?
    네네네duyd 2011.09.16 05:54

    감사영

  • ?
    까멸 2011.11.27 15:54

    저두 엿데브님처럼 67줄에 오류뜹니다ㅠㅠ

  • ?
    overmind 2013.12.05 18:40
    END_PASSIVE = /</(?:PASSIVE_SKILL|패시브 스킬)>/i 에서
    END_PASSIVE = /<(?:PASSIVE_SKILL|패시브 스킬)>/i 로
    / 하나 빼세요.
    아마 오타난거같아요.
  • ?
    Maxim_Cool 2012.01.25 12:44

    감사합니다~

  • ?
    베르세모스 2013.02.04 21:33
    공격 속성을적용시켜도
    공격 스테이트가 되는 건 나뿐인가..
  • ?
    CMclient 2016.08.20 16:54
    345번째 줄에서 에러나네요. 어떻게 수정해야 하죠? 제가 스트립트를 건드릴줄을 몰라서..
  • ?
    테일즈 2019.03.07 17:31
    <Passive_Skill>
    dual_attack 이렇게하면 두번공격은 들어가지는데요

    공격력 올릴려면 메모장에 어떻게 써야되는지 답이안나오네요.
    ATK +5 로는 안되는거같은데요

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5398
397 스킬 무기 업그레이드 시스템 27 file 담먹캐 2009.11.01 5757
396 상점 스킬합성 상점 스크립트 23 file 미얼 2009.10.29 4498
395 전투 불사신(무적) 스크립트 9 file 미얼 2009.10.29 3198
394 메시지 대화창효과 8 078656577er 2009.10.20 5972
393 기타 사이드뷰배틀에서 찌르기 공격 가능하게(Upgrade!) 6 078656577er 2009.10.15 2838
392 전투 사이드뷰배틀에서 시각적으로 위치 지정하기 9 file 078656577er 2009.10.14 4908
391 맵/타일 새로운 월드맵 만들기 (로맨싱사가풍) 37 file 078656577er 2009.10.09 6151
» 기타 KGC패시브 스크립트 30 카르와푸딩의아틀리에 2009.10.07 3551
389 저장 오토세이브 VX 5 file 카르와푸딩의아틀리에 2009.10.05 4138
388 메시지 얼굴표시 9 허걱 2009.09.23 5001
387 전투 사이드뷰배틀에서 찌르기 공격 가능하게 7 078656577er 2009.09.16 3223
386 전투 반사 스테이트 -KGC 4 카르와푸딩의아틀리에 2009.09.12 2661
385 기타 커스텀 페이지 스크립트 9 file 달표범 2009.09.07 3140
384 상점 상점 할인 스크립트(변수를 이용한 물건 가격 조정) 9 달표범 2009.09.04 3185
383 맵/타일 타일 바꾸기 13 file 허걱 2009.09.01 3687
382 전투 대미지%MP흡수 스크립트 4 Evangelista 2009.08.31 2279
381 전투 대미지 MP전환 스테이트 : 수정 => 마나쉴드 7 Evangelista 2009.08.29 2384
380 HUD 네비게이션 (나침반) 36 file 허걱 2009.08.25 4908
379 이동 및 탈것 느리게 걷기 5 허걱 2009.08.23 2424
378 타이틀/게임오버 Rafidelis KaHh Box 타이틀화면 20 카르와푸딩의아틀리에 2009.08.23 5004
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 32 Next
/ 32