Project1
标题:
如何制作被动技能?像是学会某个特技后,能力会得到提升
[打印本页]
作者:
tidusm
时间:
2011-6-2 10:45
标题:
如何制作被动技能?像是学会某个特技后,能力会得到提升
如何制作被动技能?像是学会某个特技后,能力会得到提升。
作者:
sim5053
时间:
2011-6-2 11:17
用公共事件。。。。。。。。。。。。。。。。。。。。。。
作者:
tidusm
时间:
2011-6-6 00:52
谁能给个这类的脚本啊?
作者:
高须小龙
时间:
2011-6-6 09:56
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ パッシブスキル - 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*([^:\+\-\d\s]+)\s*([\-\d]+(?:\s*,\s*[\-\d]+)*)\s*$/i
# パラメータ修正
# MAXHP +20 など
PASSIVE_PARAMS = /^\s*([^:\+\-\d\s]+)\s*([\+\-]\d+)([%%])?\s*$/i
# 属性・ステートリスト
# 攻撃属性 1,2,3 など
PASSIVE_ARRAYS = /^\s*([^:\+\-\d\s]+)\s*(\d+(?:\s*,\s*\d+)*)\s*$/i
# 耐性
PASSIVE_RESISTANCES = /^\s*([^:\+\-\d\s]+)\s(\d+):(\-?\d+)[%%]?\s*$/i
# 特殊効果
PASSIVE_EFFECTS = /^\s*([^:\+\-\d\s]+)/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 : 装備部位 (0~4)
#--------------------------------------------------------------------------
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
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1