class RPG::BaseItem
def load
return if self.is_a?(RPG::Skill)
self.note.split(/[\r\n]+/).each { |line|
if line =~ /\[(?:load|负重|負重) (\w+)\]/
return $1.nil? ? 0 : $1.to_i
end}
return 0
end
end
class Scene_Item < Scene_ItemBase
alias load_start start
alias load_terminate terminate
alias load_update update
def start
load_start
@load_window = Window_Base.new(392, 0, 152, 56)
@load_window.viewport = @viewport
end
def terminate
@load_window.dispose
load_terminate
end
def update
@load_window.update
if @temp_load != $game_party.current_load
@load_window.contents.clear
@load_window.contents.draw_text(0, 0, 120, 24, "负重:#{$game_party.current_load}/#{$game_party.total_load}")
@temp_load = $game_party.current_load
end
if Input.trigger?(Input::X)
@item = @item_window.item
$game_party.lose_item(@item, 1)
@item_window.refresh
end
load_update
end
end
class Scene_Shop < Scene_MenuBase
alias load_start start
alias load_terminate terminate
alias load_update update
def start
load_start
@load_window = Window_Base.new(392, 0, 152, 56)
@load_window.viewport = @viewport
end
def terminate
@load_window.dispose
load_terminate
end
def update
@load_window.update
if @temp_load != $game_party.current_load
@load_window.contents.clear
@load_window.contents.draw_text(0, 0, 120, 24, "负重:#{$game_party.current_load}/#{$game_party.total_load}")
@temp_load = $game_party.current_load
end
load_update
end
end
class Game_Party < Game_Unit
attr_reader :current_load
alias load_initialize initialize
alias load_gain_item gain_item
def initialize
load_initialize
@current_load = 0
end
# 获取队伍最大负重
def total_load
party_load = 0
#members.size.times do |i|
for i in 0...members.size
actor = members[i]
party_load += actor.load
end
return party_load
end
def gain_item(item, n, include_equip = false)
return if item.nil?
if ((item.load * n) + @current_load) > total_load
$game_message.texts.push("靠!负重都不足了,你妹的怎么还不赶快清空物品!")
$game_message.visible = true
return
else
@current_load += item.load * n
end
load_gain_item(item, n, include_equip)
end
end
class Game_Actor < Game_Battler
# 获取队员负重
def load
return (mhp + mmp) * @level / agi
end
end
class Game_Interpreter
alias load_command_126 command_126
alias load_command_127 command_127
alias load_command_128 command_128
def command_126
n = operate_value(@params[1], @params[2], @params[3])
return command_115 if check_load(@params[0], 0, n)
load_command_126
end
#--------------------------------------------------------------------------
# ● 增減武器
#--------------------------------------------------------------------------
def command_127
n = operate_value(@params[1], @params[2], @params[3])
return command_115 if check_load(@params[0], 1, n)
load_command_127
end
#--------------------------------------------------------------------------
# ● 增減防具
#--------------------------------------------------------------------------
def command_128
n = operate_value(@params[1], @params[2], @params[3])
return command_115 if check_load(@params[0], 2, n)
load_command_128
end
def check_load(item_id, type, n)
case type
when 0; item = $data_items[item_id]
when 1; item = $data_weapons[item_id]
when 2; item = $data_armors[item_id]
end
if (((item.load * n) + $game_party.current_load) > $game_party.total_load)
$game_message.texts.push("靠!负重都不足了,你妹的怎么还不赶快清空物品!")
$game_message.visible = true
return true
end
return false
end
end