#==============================================================================
# ■ 装备恢复 By Calendar99
#------------------------------------------------------------------------------
# 战斗中我方被附加带有“禁用装备”的状态导致装备被卸下的场合,
# 状态消失时自动将被卸下的装备恢复。
# 请注意,理论上此脚本与<战斗中更换装备>类脚本相性不好。
#==============================================================================
class RPG::State
#--------------------------------------------------------------------------
# ● [追加]此状态是否禁用装备
#--------------------------------------------------------------------------
def equip_seal?
features.each{|feature| return true if feature.code == 54 }
false
end
#--------------------------------------------------------------------------
# ● [追加]此状态禁用的装备栏
#--------------------------------------------------------------------------
def sealing_slots
features.select{|f| f.code == 54 }.collect{|f| f.data_id }
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● [别名修改]初始化
#--------------------------------------------------------------------------
alias :initialize_removed_equip :initialize
def initialize(actor_id)
initialize_removed_equip(actor_id)
@removed_equip = {}
end
#--------------------------------------------------------------------------
# ● [继承修改]附加新的状态
#--------------------------------------------------------------------------
def add_new_state(state_id)
@equip_seal = true if $data_states[state_id].equip_seal?
super
end
#--------------------------------------------------------------------------
# ● [覆盖]卸下无法装备的物品
# item_gain : 卸下的装备是否保留
#--------------------------------------------------------------------------
def release_unequippable_items(item_gain = true)
@equips.each_with_index do |item, i|
if !equippable?(item.object) || item.object.etype_id != equip_slots[i]
trade_item_with_party(nil, item.object) if item_gain
#==================================================================
if @equip_seal
@removed_equip[i] = item.object if item.object
end
#==================================================================
item.object = nil
end
end
end
#--------------------------------------------------------------------------
# ● [继承修改]解除状态
#--------------------------------------------------------------------------
def remove_state(state_id)
super # 调用父类方法
return if !$data_states[state_id].equip_seal? || @removed_equip.empty?
$data_states[state_id].sealing_slots.each do |slot_id|
if (item = @removed_equip.delete(slot_id))
change_equip(slot_id, item)
end
end
@equip_seal = false if @removed_equip.empty?
refresh
end
end