# # スキル封印装備(RGSS2) #  (C)2008,2011 TYPE74RX-T # #============================================================================== # ■ module Kernel #============================================================================== module Kernel #-------------------------------------------------------------------------- # ★ 配列で指定した要素を全て取り除く #-------------------------------------------------------------------------- def rx_delete(array) for i in 0...array.size self.delete(array[i]) end end #-------------------------------------------------------------------------- # ★ オブジェクトの完全なコピーを作成 #-------------------------------------------------------------------------- def deep_copy(obj) Marshal.load(Marshal.dump(obj)) end end #-------------------------------------------------------------------------- # ★ システムワードの登録:使用不能スキル #-------------------------------------------------------------------------- module RPG class BaseItem alias rx_rgss2bo17_rx_extract_sys_str_from_note rx_extract_sys_str_from_note def rx_extract_sys_str_from_note rx_get_sys = RX_T.get_system_word_in_note2(@note, "使用不能スキル") unless rx_get_sys == "" @@rx_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") end @rx_sys_str = @@rx_copy_str # メソッドを呼び戻す rx_rgss2bo17_rx_extract_sys_str_from_note end end end #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors) # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● セットアップ # actor_id : アクター ID #-------------------------------------------------------------------------- alias rx_rgss2bo17_setup setup def setup(actor_id) # メソッドを呼び戻す rx_rgss2bo17_setup(actor_id) # ★ 使用不能スキルの情報 @rx_cannot_skills = [] end #-------------------------------------------------------------------------- # ★ 使用不能スキル専用オブジェクトの配列取得 #-------------------------------------------------------------------------- def rx_cannot_skills result = [] @rx_cannot_skills = [] # 各種装備の使用不能スキルを取得 if @weapon_id > 0 @rx_cannot_skills += RX_T.get_array_of_system_word_in_sys_str($data_weapons[@weapon_id], "使用不能スキル") end if @armor1_id > 0 # 二刀流なら if two_swords_style @rx_cannot_skills += RX_T.get_array_of_system_word_in_sys_str($data_weapons[@armor1_id], "使用不能スキル") else @rx_cannot_skills += RX_T.get_array_of_system_word_in_sys_str($data_armors[@armor1_id], "使用不能スキル") end end if @armor2_id > 0 @rx_cannot_skills += RX_T.get_array_of_system_word_in_sys_str($data_armors[@armor2_id], "使用不能スキル") end if @armor3_id > 0 @rx_cannot_skills += RX_T.get_array_of_system_word_in_sys_str($data_armors[@armor3_id], "使用不能スキル") end if @armor4_id > 0 @rx_cannot_skills += RX_T.get_array_of_system_word_in_sys_str($data_armors[@armor4_id], "使用不能スキル") end # 被ってる要素があれば、それを1つにする @rx_cannot_skills = @rx_cannot_skills.uniq for i in @rx_cannot_skills result.push($data_skills[i]) end return result end #-------------------------------------------------------------------------- # ● スキルオブジェクトの配列取得 #-------------------------------------------------------------------------- alias rx_rgss2bo17_skills skills def skills rx_cannot_skills return rx_deleted_skills if @rx_cannot_skills.size > 0 # メソッドを呼び戻す rx_rgss2bo17_skills end #-------------------------------------------------------------------------- # ★ スキルオブジェクトの配列取得(スキル封印後) # (注意)def skillsを改造していたり、エイリアスをしている場合は #     こちらのメソッドにも同様の処理の適用が必要な場合があります。 #-------------------------------------------------------------------------- def rx_deleted_skills rx_d_skills = deep_copy(@skills) rx_d_skills.rx_delete(@rx_cannot_skills) result = [] for i in rx_d_skills result.push($data_skills[i]) end return result end end