#============================================================================== # 装備スロット追加装備 ver1.03 #------------------------------------------------------------------------------ #[特徴] # 装備することで装備スロットが増加する装備を作ることができます。 # #[設定方法] # ◎ 装備スロットの追加 # # 装備品のメモ欄に <装備スロット追加:装備タイプID,数値> と書きます。 # # <装備スロット追加:4,2> # # と書くと、装飾品をさらに2つ多く装備できます。 # 数値は省略可能で、省略した場合は 1 となります。 # 複数書くことも可能です。 # # # ◎ 装備スロットの減少 # # 装備品のメモ欄に <装備スロット減少:装備タイプID,数値> と書きます。 # # <装備スロット減少:4,2> # # と書くと、装飾品の装備できる数が 2 減ります。 # 数値は省略可能で、省略した場合は 1 となります。 # 複数書くことも可能です。 # # #[その他] # スクリプト『装備タイプ追加』に対応しています。 # 導入している場合は、こちらのスクリプトを下にしてください。 # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net/ # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # バージョンアップ情報 # ver1.03 装備スロットを減少させることができるように # ver1.02 追加されたスロットより後ろにある装備品が解除されてしまう不具合を修正 # ver1.01 初期装備にスロットが増加する装備品があった場合エラーが出ていたのを修正 # ver1.00 公開 #============================================================================== #============================================================================== # 設定項目はありません #============================================================================== $kzr_imported = {} if $kzr_imported == nil $kzr_imported["AddSlotsEquipment"] = true #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias kzr_add_slots_equipment_initialize initialize def initialize(actor_id) kzr_add_slots_equipment_initialize(actor_id) @equip_slots_before = equip_slots @change_equip_add_slots = false end #-------------------------------------------------------------------------- # ● 装備品の初期化 #-------------------------------------------------------------------------- alias kzr_add_slots_equipment_init_equips init_equips def init_equips(equips) kzr_add_slots_equipment_init_equips(equips) equip_slots.size.times {|index| @equips[index] = Game_BaseItem.new if @equips[index] == nil } refresh end #-------------------------------------------------------------------------- # ● 装備スロットの配列を取得 #-------------------------------------------------------------------------- alias kzr_add_slots_equipment_equip_slots equip_slots def equip_slots slots = kzr_add_slots_equipment_equip_slots equips.compact.each {|equip| slots += equip.add_slots } rem_slots = equips.compact.inject([]) {|r, e| r += e.rem_slots } rem_slots.each {|id| index = slots.rindex(id) slots.delete_at(index) if index } return slots.sort end #-------------------------------------------------------------------------- # ● 装備の変更 #-------------------------------------------------------------------------- alias kzr_add_slots_equipment_change_equip change_equip def change_equip(slot_id, item) @change_equip_add_slots = true kzr_add_slots_equipment_change_equip(slot_id, item) equip_slots.size.times {|index| @equips[index] = Game_BaseItem.new if @equips[index] == nil } @equip_slots_before = equip_slots end #-------------------------------------------------------------------------- # ● 装備の強制変更 #-------------------------------------------------------------------------- alias kzr_add_slots_equipment_force_change_equip force_change_equip def force_change_equip(slot_id, item) @change_equip_add_slots = true kzr_add_slots_equipment_force_change_equip(slot_id, item) equip_slots.size.times {|index| @equips[index] = Game_BaseItem.new if @equips[index] == nil } @equip_slots_before = equip_slots end #-------------------------------------------------------------------------- # ● 装備できない装備品を外す #-------------------------------------------------------------------------- alias kzr_add_slots_equipment_release_unequippable_items release_unequippable_items def release_unequippable_items(item_gain = true) if @change_equip_add_slots @change_equip_add_slots = false @equip_slots_before.size.times {|index| item = @equips[index] changed = false if item.object && @equip_slots_before[index] != equip_slots[index] equip_slots.size.times {|index2| if equip_slots[index2] == item.object.etype_id && @equips[index2] != nil && @equips[index2].object == nil @equips[index2].object = item.object changed = true end } end @equips[index].object = nil if changed } end kzr_add_slots_equipment_release_unequippable_items(item_gain) end end #============================================================================== # ■ Window_EquipSlot #============================================================================== class Window_EquipSlot < Window_Selectable #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh create_contents draw_all_items end end #============================================================================== # ■ RPG::EquipItem #============================================================================== class RPG::EquipItem def add_slots return @add_slots if @add_slots @add_slots = [] note.each_line { |line| case line when /<装備スロット追加:(\d+)>/i ; @add_slots += [$1.to_i] when /<装備スロット追加:(\d+),(\d+)>/i ; @add_slots += [$1.to_i] * $2.to_i end } return @add_slots end def rem_slots return @rem_slots if @rem_slots @rem_slots = [] note.each_line { |line| case line when /<装備スロット減少:(\d+)>/i ; @rem_slots += [$1.to_i] when /<装備スロット減少:(\d+),(\d+)>/i ; @rem_slots += [$1.to_i] * $2.to_i end } return @rem_slots end end