RGSS3:強制装備
概要
ある装備品を装備すると強制的に別の装備品が装備される装備を作成します。
機能
メモ欄に<強制装備 slot, id>と入れると、スロットslotにidの装備を装備させます。
スクリーンショット
スクリプト本体
DLはこちら:chain_equip.txt
本文で表示する
=begin
◆概要
ある装備品を装備すると強制的に別の装備品が装備される装備を作成します。
◆機能
・メモ欄に<強制装備 slot, id>と入れると、スロットslotにidの装備を装備
させます。
◆仕様
・装備の固定等は装備品で行ってください。
◆使用上の注意
・特になし。
◆作成者:faida
=end
# 設定項目:持っていなくても装備させる
EQUIP_NO_ITEM = true
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)
if EQUIP_NO_ITEM
force_change_equip_by_id(equips.index(chain_item), 0)
else
change_equip_by_id(equips.index(chain_item), 0)
end
end
}
end
if (@equips[slot_id].object.chain_equip[0] rescue false)
@equips[slot_id].object.chain_equip.each{|arr|
if force
force_change_equip_by_id(empty_slot(arr[0]), 0)
else
change_equip_by_id(empty_slot(arr[0]), 0)
end
if EQUIP_NO_ITEM
force_change_equip_by_id(empty_slot(arr[0]), arr[1])
else
change_equip_by_id(empty_slot(arr[0]), arr[1])
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
- 最終更新:2016-11-13 18:00:10