Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
| Sujet: Problème avec les compétences passives Dim 20 Sep 2009 - 19:26 | |
| Voilà j'utilise ce script et celui de final fantasy VII limite, menu etc.... - Code:
-
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆ Passive Skills - KGC_PassiveSkill ◆ VX ◆ #_/ ◇ Last Update: 11/16/2008 #_/ ◆ Written by TOMY #_/ ◆ Translation by Mr. Anonymous #_/ ◆ KGC Site: #_/ ◆ http://ytomy.sakura.ne.jp/ #_/ ◆ Translator's Blog: #_/ ◆ http://mraprojects.wordpress.com #_/----------------------------------------------------------------------------- #_/ This script allows the designer to create "passive" skills, which may #_/ augment a character's abilities, rather than simple attacks. #_/============================================================================= #_/ ◆ Instructions For Usage ◆ #_/ To assign a skill as passive, the following must be added into the skill's #_/ "Notes" box: #_/ #_/ <PASSIVE_SKILL> Attribute Modifier Rate </PASSIVE_SKILL> #_/ #_/ Example: #_/ #_/ <PASSIVE_SKILL> ATK +5 </PASSIVE_SKILL> #_/ (Increase the character's attack by 5.) #_/ #_/ You can have an unlimited amount of attribute settings within the passive #_/ skill tags. Percentiles and other mathematical expressions can also be used #_/ as demonstrated: #_/ #_/ <PASSIVE_SKILL> MAXHP +20% MAXMP -20% DEF +5 SPI -5 </PASSIVE_SKILL> #_/ (Increase the character's maximum HP by 20 percent, decrease maximum MP by #_/ 20 percent. increase defense by 5, and decrease "spirit" by 5) #_/ #_/ Also, you can assign other attributes to a character, such as adding the #_/ fire element to their basic attack function, state changes, such as adding #_/ stun to their basic attack, or adding resistance to states, such as making #_/ a character immune to being blinded. Using the default terminology setup: #_/ #_/ ATTACK_ELEMENT = Adds an element to the character's basic attack #_/ PLUS_STATE = Adds a state change to an attack (State change affects target) #_/ INVALID_STATE = Adds a resistance to specified state changes to a character #_/ The modifiers for these are the Element ID#s and State ID#s, respectively. #_/ You can assign multiple values to each parameter. IE: 1,2,3, etc #_/ #_/ FAST_ATTACK = Grants the actor automatic preemptive attacks. #_/ DUAL_ATTACK = The actor attacks twice in a row when attacking. #_/ CRITICAL_BONUS = Increases the actor's critical hit percentile. #_/ PREVENT_CRITICAL = Eliminate the chance of taking a critical hit from foe. #_/ HALF_MP_COST = MP cost for skills is halved. #_/ DOUBLE_EXP_GAIN = Doubles the experience points gained. #_/ #_/ * The following tags require KCG_ReproduceFunctions * #_/ WHOLE_ATTACK = Actor attacks all enemies on-screen. #_/ IGNORE_EVA = Actor's attacks completely ignore the foe's evasion. #_/ #_/ * The following tag requires KCG_AddEquipmentOptions * #_/ n TIMES_ATTACK = (Where n = Number) Normal attack strikes multiple times. #_/ #_/ * The following tag requires KGC_EquipExtension * #_/ TWO_SWORDS_STYLE = Grants the two-weapon fighting ability. #_/ AUTO_BATTLE = Makes the actor preform actions automatically in battle. #_/ SUPER_GUARD = Reduces damage to 1/4 when using the defend command. #_/ PHARMACOLOGY = Doubles the healing effect for items. #_/ #_/ Example: #_/ #_/ <PASSIVE_SKILL> ATTACK_ELEMENT 8,9 PLUS_STATE 8 INVALID_STATE 6 </PASSIVE_SKILL> #_/ (Add Fire and Ice element to attack, add Stun state to attack, add #_/ resistance to Sleep state to character.) #_/ #_/ You can also combine the use of stat increases/decreases and element/state #_/ changes into a single <PASSIVE_SKILL> statement. #_/ #_/ One last note: When entering these values into the Skill's "Notes", #_/ each line needs to be separated by pressing enter. So, in our final example #_/ your setup should look something like this: #_/ #_/ <PASSIVE_SKILL> #_/ MAXHP +20% #_/ MAXMP -20% #_/ ATTACK_ELEMENT 8,9 #_/ PLUS_STATE 8 #_/ </PASSIVE_SKILL> #_/============================================================================= #_/ Install: Insert below KCG_ReproduceFunctions, KCG_AddEquipmentOptions, #_/ and KGC_EquipExtension #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#=================================================# # IMPORT # #=================================================#
$imported = {} if $imported == nil $imported["PassiveSkill"] = true #=================================================#
#============================================================================== # □ KGC::PassiveSkill #============================================================================== # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # Note Field Tag Strings # # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # Whatever word(s) are after the separator ( | ) in the following lines are # what are used to determine what is searched for in the "Note" section of # a skill.
module KGC module PassiveSkill # ◆ Passive Skill State Change Parameters ◆ # These can be changed to fit your own purposes. (For memorization.) # The (obvious) setup is OriginalString|PersonalAbbreviation # These are what you'll use to set up the actual attribute bonus # that the skill provides. (IE. MAXHP +10%) # (ATTACK_ELEMENT 1,2 ) same as (atkelem 1,2)
PARAMS = { :maxhp => "MAXHP|maximum_hp", # Maximum Hit Points :maxmp => "MAXMP|maximum_mp", # Maximum Magic Points :atk => "ATK|attack", # Attack :def => "DEF|defense", # Defense :spi => "SPI|spirit", # AKA "INT|Intelligence" :agi => "AGI|agility", # Agility :hit => "HIT|hit_ratio", # AKA "ACU|Accuracy" :eva => "EVA|evasion", # Evasion Ratio :cri => "CRI|critial", # Critial Ratio :odds => "LCK|luck", # Luck (See below) } # Affects the likelyhood of being targetted
# ◆ Attribute State List ◆ ARRAYS = { :attack_element => "ATTACK_ELEMENT|attack_element", :plus_state => "PLUS_STATE|plus_state", :invalid_state => "INVALID_STATE|invalid_state", :auto_state => "AUTO_STATE|auto_state", }
# ◆ Resistance List ◆ RESISTANCES = { # From KGC_AddEquipmentOptions :element => "ELEMENT_RESISTANCE|element_resist", :state => "STATE_RESISTANCE|state_resist", }
# ◆ Passive Skill Special Effects ◆ EFFECTS = { :two_swords_style => "TWO_SWORDS_STYLE|two_swords_style", :auto_battle => "AUTO_BATTLE|auto_battle", :super_guard => "SUPER_GUARD|super_guard", :pharmacology => "PHARMACOLOGY|pharmacology", :fast_attack => "FAST_ATTACK|fast_attack", :dual_attack => "DUAL_ATTACK|dual_attack", :critical_bonus => "CRITICAL_BONUS|critical_bonus", :prevent_critical => "PREVENT_CRITICAL|prevent_critical", :half_mp_cost => "HALF_MP_COST|half_mp_cost", :double_exp_gain => "DOUBLE_EXP_GAIN|double_exp_gain", # From KGC_ReproduceFunctions :whole_attack => "WHOLE_ATTACK|target_all", :ignore_eva => "IGNORE_EVA|ignore_evasion", # From KGC_AddEquipmentOptions :multi_attack_count => '(\d+)\s*(?:TIMES_ATTACK|multi_attack_count)', }
#============================================================================== # □ KGC::EquipExtension::Regexp #============================================================================== # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # Note Field Tag Strings # # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # Whatever word(s) are after the separator ( | ) in the following lines are # what are used to determine what is searched for in the "Note" section of # a skill.
# Regular Expression Definition module Regexp # Base Skill Module module Skill # Passive Skill Tag begin BEGIN_PASSIVE = /<(?:PASSIVE_SKILL|passive_skill)>/i # Passive Skill Tag end END_PASSIVE = /<\/(?:PASSIVE_SKILL|passive_skill)>/i
# Parameter Tag Additions PASSIVE_PARAMS = /^\s*([^:\+\-\d\s]+)\s*([\+\-]\d+)([%%])?\s*$/ # Passive arrays # Attack Element 1,2,3 etc PASSIVE_ARRAYS = /^\s*([^:\+\-\d\s]+)\s*(\d+(?:\s*,\s*\d+)*)\s*$/ # Passive resistances PASSIVE_RESISTANCES = /^\s*([^:\+\-\d\s]+)\s(\d+):(\-?\d+)[%%]?\s*$/ # Passive effects PASSIVE_EFFECTS = /^\s*([^:\+\-\d\s]+)/ 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
#=================================================# # INCLUDE COMMANDS # #=================================================# # Include KGC::Commands in Game_Interpreter # #=================================================#
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 != nil && 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 : 装備部位 (0~4) #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- alias refresh_KGC_PassiveSkill refresh unless $@ 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
Mon problème c'est que j'ai une matéria qui se nomme "Super HP" quand je l'équipe à un de mes personnages ses PV augmentent de 10% et quand on lui retire la matéria il garde le bonus passive des 10% PV hors je voudrais qu'il perd se bonus. Merci d'avance |
|
Seigneur Lv.18
Age : 31 Inscrit le : 06/06/2008 Messages : 2005
| Sujet: Re: Problème avec les compétences passives Dim 20 Sep 2009 - 20:06 | |
| Il faut traficoter dans le script, mais je ne suis pas fait pour ça. |
|
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
| Sujet: Re: Problème avec les compétences passives Dim 20 Sep 2009 - 20:36 | |
| |
|
| Sujet: Re: Problème avec les compétences passives | |
| |
|