=begin ◆概要 ある装備品を装備すると強制的に別の装備品が装備される装備を作成します。 ◆機能 ・メモ欄に<強制装備 slot, id>と入れると、スロットslotにidの装備を装備 させます。 ◆仕様 ・装備の固定等は装備品で行ってください。 ◆使用上の注意 ・特になし。 ◆作成者:faida ◆更新履歴 2018/11/9 ver 1.01 EQUIP_NO_ITEMがfalseの時の挙動がおかしかったので修正 =end # 設定項目:持っていなくても装備させる EQUIP_NO_ITEM = false class RPG::EquipItem def chain_equip return @chain_equip if @chain_equip @chain_equip = [] note.each_line{|line| @chain_equip << [$1.to_i,$2.to_i] if line =~ /<強制装備\s*(\d+),\s*(\d+)>/ } @chain_equip end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 装備品の初期化 #-------------------------------------------------------------------------- alias chain_equip_init_equips init_equips def init_equips(equips) chain_equip_init_equips(equips) if $kzr_imported && $kzr_imported["AddESlotsEquipment"] equip_slots.size.times {|index| @equips[index] = Game_BaseItem.new if @equips[index] == nil } end equip_slots.size.times {|index| check_chain_equip(equip_slots[index], nil, true) if @equips[index] } refresh end #-------------------------------------------------------------------------- # ● 装備の変更 #-------------------------------------------------------------------------- alias chain_equip_change_equip change_equip def change_equip(slot_id, item) old_item = @equips[slot_id].object chain_equip_change_equip(slot_id, item) check_chain_equip(slot_id, old_item) refresh end #-------------------------------------------------------------------------- # ● 装備の強制変更 #-------------------------------------------------------------------------- alias chain_equip_force_change_equip force_change_equip def force_change_equip(slot_id, item) old_item = @equips[slot_id].object chain_equip_force_change_equip(slot_id, item) check_chain_equip(slot_id, old_item, true) refresh end def check_chain_equip(slot_id, old_item, force = false) if old_item&&old_item != @equips[slot_id].object && old_item.chain_equip[0] old_item.chain_equip.each{|arr| chain_item = (arr[0] == 0 ? $data_weapons : $data_armors)[arr[1]] if equips.index(chain_item) $game_party.gain_item(chain_item, 1) if !EQUIP_NO_ITEM && !force force_change_equip_by_id(equips.index(chain_item), 0) end } end if (@equips[slot_id].object.chain_equip[0] rescue false) @equips[slot_id].object.chain_equip.each{|arr| old = equips[empty_slot(arr[0])] chain_item = (arr[0] == 0 ? $data_weapons : $data_armors)[arr[1]] $game_party.gain_item(old, 1) if !force force_change_equip_by_id(empty_slot(arr[0]), 0) if EQUIP_NO_ITEM || $game_party.has_item?(chain_item) force_change_equip_by_id(empty_slot(arr[0]), arr[1]) $game_party.gain_item(chain_item, -1) if !EQUIP_NO_ITEM && !force end } end end #-------------------------------------------------------------------------- # ● 装備の強制変更(ID で指定) #-------------------------------------------------------------------------- def force_change_equip_by_id(slot_id, item_id) if equip_slots[slot_id] == 0 force_change_equip(slot_id, $data_weapons[item_id]) else force_change_equip(slot_id, $data_armors[item_id]) end end end