#============================================================================== # □ 装備組み合わせオートステート付与 (for VX Ace) #------------------------------------------------------------------------------ # Version : 1_20120119 # by サリサ・タイクーン # http://www.tycoon812.com/rgss/ #------------------------------------------------------------------------------ # ※ オートステート実装 が必要です。 #============================================================================== #============================================================================== # □ 素材スイッチ #============================================================================== $rgsslab = {} if $rgsslab == nil $rgsslab["装備組み合わせオートステート付与"] = true if $rgsslab["装備組み合わせオートステート付与"] #============================================================================== # □ カスタマイズポイント #============================================================================== module RGSSLAB end module RGSSLAB::Equip_Combination_Auto_State #-------------------------------------------------------------------------- # ○ 組み合わせの設定 # ・オートステート付与設定 # [[武器ID, …], [防具ID, …]] => ステートID, # (最後の設定のみ、後ろのカンマを省略する事ができます) #-------------------------------------------------------------------------- IDS = { [[1], [46, 1]] => 21, } end # カスタマイズポイントは、ここまで #============================================================================== # □ RGSSLAB::Equip_Combination_Auto_State [module] #============================================================================== module RGSSLAB::Equip_Combination_Auto_State #-------------------------------------------------------------------------- # ○ 素材設定用の定数定義 #-------------------------------------------------------------------------- MATERIAL_NAME = "装備組み合わせオートステート付与" VERSION = 1 RELEASE = 20120119 end #============================================================================== # ■ Game_Actor [class] #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ○ モジュールの設定 #-------------------------------------------------------------------------- RGSSLAB_059 = RGSSLAB::Equip_Combination_Auto_State #-------------------------------------------------------------------------- # ● セットアップ [エイリアス] # actor_id : アクター ID #-------------------------------------------------------------------------- alias equip_combination_auto_state_setup setup def setup(actor_id) equip_combination_auto_state_setup(actor_id) @add = [] equip_combinations_process end #-------------------------------------------------------------------------- # ● 装備の変更 [再定義] # slot_id : 装備スロット ID # item : 武器/防具(nil なら装備解除) #-------------------------------------------------------------------------- def change_equip(slot_id, item) return unless trade_item_with_party(item, equips[slot_id]) return if item && equip_slots[slot_id] != item.etype_id old = @equips[slot_id].object ? @equips[slot_id].object.dup : nil @equips[slot_id].object = item if old != nil if old.note[/(\[#{RGSSLAB_078::NOTE}(\d+)\])+/] for auto_state_id in old.note[/(\[#{RGSSLAB_078::NOTE}(\d+)\])+/].scan(/(\d+)/) remove_state(auto_state_id[0].to_i) end end end update_auto_states if $rgsslab["オートステート実装"] equip_combinations_process if $rgsslab["装備組み合わせオートステート付与"] refresh end #-------------------------------------------------------------------------- # ○ コンビネーションオートステートの取得 #-------------------------------------------------------------------------- def equip_combinations_state result = [] equip_flag = [] for earray in RGSSLAB_059::IDS.keys equip_flag.clear for warray in earray[0] if weapons.include?($data_weapons[warray]) equip_flag.push(true) else equip_flag.push(false) end end for aarray in earray[1] if armors.include?($data_armors[aarray]) equip_flag.push(true) else equip_flag.push(false) end end next if equip_flag.include?(false) if RGSSLAB_059::IDS[earray] != nil result.push(RGSSLAB_059::IDS[earray]) end end return result end #-------------------------------------------------------------------------- # ○ ステートの付与又は解除 #-------------------------------------------------------------------------- def equip_combinations_process st = equip_combinations_state if st.size > 0 if @add != [] for r_state in @add do remove_state(r_state) end end for a_state in st do add_state(a_state, true) end @add = st else if @add != [] for r_state in @add do remove_state(r_state) end end @add = [] end end #-------------------------------------------------------------------------- # ○ 戦闘不能から復活 [オーバーライド] #-------------------------------------------------------------------------- def revive super for equip in equips.compact if equip.note[/(\[#{RGSSLAB_078::NOTE}(\d+)\])+/] for auto_state_id in equip.note[/(\[#{RGSSLAB_078::NOTE}(\d+)\])+/].scan(/(\d+)/) add_state(auto_state_id[0].to_i, true, true) end end end equip_combinations_process if $rgsslab["装備組み合わせオートステート付与"] end end end