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
637 스킬 훔치기 스킬을 만드는 스크립트! 5 우켈킁 2011.03.31 2390
636 기타 회피,명중,크리 스테이트를 작성하는 스크립트 9 카르와푸딩의아틀리에 2009.06.30 2393
635 기타 확장 에러 메시지 13 file 허걱 2009.08.17 2497
634 메뉴 확장 스테이터스 화면 - KGC 23 file 카르와푸딩의아틀리에 2009.08.19 5057
633 기타 화폐단위 구분해 주는 스크립트 38 file 허걱 2010.04.13 3652
632 이동 및 탈것 화면의 부드러운 스크롤 스크립트 32 카르와푸딩의아틀리에 2009.07.17 3817
631 기타 화면에 그림 그리는 스크립트 21 file 강진수 2010.02.27 2961
630 기타 화면 확대 스크립트 12 file 에돌이 2011.07.22 3059
629 기타 화면 해상도(640 X 480) 스크립트 6 file 쿠쿠밥솥 2012.01.10 3972
628 아이템 현재있는 파티원 선택 레벨업 아이템 만들기 1 file 싸패 2016.06.06 713
627 헬프윈도우 확장 13 file RPGbooster 2008.10.08 2872
626 메뉴 헬프 윈도우 중앙표시 스크립트 11 file 양념통닼 2008.06.10 3348
625 키입력 해외 제작자 He Who Jets님의 마우스 스크립트(mouse system) 1 file 보자기군 2014.09.30 1260
624 기타 해상도 변경 스크립트 11 카리스 2011.07.19 2723
623 스킬 합성샾 스크립트 ^^ [동영상 포함] 6 file 아방스 2008.09.23 6038
622 키입력 한글입력기(펌) 수정 10 전설의달빛조각사 2011.04.03 2674
621 이름입력 한글로 이름 입력하는 스크립트입니다. 55 file 헤르코스 2009.03.18 6662
620 이름입력 한글 이름 입력 스크립트입니다.^^ 14 레시온 2008.03.18 4382
619 액터 한계돌파(렙9999) 18 작은샛별 2010.03.07 3273
618 이동 및 탈것 피티원이 따라다니는 스크립트 38 file 아방스 2009.02.05 5024
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 32 Next
/ 32