#==============================================================================
# ■ 扩展 RPG::Weapon(仅显示相关)
#==============================================================================
classRPG::Weapon
# 显示名称
alias reroll_display_name name
def display_name
prefix_id = PrefixStorage.get_prefix(self)
prefix_id > 0 ? "#{Prefix_Data.prefix_name(prefix_id)}#{reroll_display_name}" : reroll_display_name
end
# 实际价格
alias reroll_price price
def real_price
prefix_id = PrefixStorage.get_prefix(self)
(reroll_price * (prefix_id > 0 ? Prefix_Data.price_rate(prefix_id) : 1.0)).to_i
end
# 稀有度
alias reroll_rarity rarity
def rarity
base = reroll_rarity
prefix_id = PrefixStorage.get_prefix(self)
base + (prefix_id > 0 ? Prefix_Data.rarity_change(prefix_id) : 0)
end
end
#==============================================================================
# ■ 扩展 RPG::Weapon(名称、价格、稀有度)
#==============================================================================
classRPG::Weapon
# 保留原始名称
alias reroll_original_name name
# 覆盖 name 方法,所有界面显示前缀
def name
prefix_id = PrefixStorage.get_prefix(self)
if prefix_id > 0
"#{Prefix_Data.prefix_name(prefix_id)}#{reroll_original_name}"
else
reroll_original_name
end
end
# 兼容旧方法(直接调用 name)
def display_name
name
end
# 实际价格(受前缀影响)
alias reroll_price price
def real_price
prefix_id = PrefixStorage.get_prefix(self)
(reroll_price * (prefix_id > 0 ? Prefix_Data.price_rate(prefix_id) : 1.0)).to_i
end
# 稀有度 = 基础稀有度 + 前缀修正(使用 super 而非别名,防止递归)
def rarity
base = super # 调用 RPG::BaseItem#rarity
prefix_id = PrefixStorage.get_prefix(self)
base + (prefix_id > 0 ? Prefix_Data.rarity_change(prefix_id) : 0)
end
end
#==============================================================================
# ■ 扩展 RPG::Armor(同 Weapon)
#==============================================================================
classRPG::Armor
alias reroll_original_name name
def name
prefix_id = PrefixStorage.get_prefix(self)
if prefix_id > 0
"#{Prefix_Data.prefix_name(prefix_id)}#{reroll_original_name}"
else
reroll_original_name
end
end
def display_name
name
end
alias reroll_price price
def real_price
prefix_id = PrefixStorage.get_prefix(self)
(reroll_price * (prefix_id > 0 ? Prefix_Data.price_rate(prefix_id) : 1.0)).to_i
end
def rarity
base = super
prefix_id = PrefixStorage.get_prefix(self)
base + (prefix_id > 0 ? Prefix_Data.rarity_change(prefix_id) : 0)
end
end
#==============================================================================
# ■ 核心:在 Game_BattlerBase 中注入前缀属性加成
#==============================================================================
class Game_BattlerBase
# 别名:原 param_plus 方法
alias reroll_param_plus param_plus
def param_plus(param_id)
base = reroll_param_plus(param_id)
# 累加所有装备的前缀加成
base + equip_prefix_bonus(param_id)
end
# 计算当前所有装备的前缀属性加成总和
def equip_prefix_bonus(param_id)
equips.compact.inject(0)do |sum, item|
if item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
prefix_id = PrefixStorage.get_prefix(item)
sum + Prefix_Data.get_param_bonus(prefix_id, param_id)
else
sum
end
end
end
end
#==============================================================================
# ■ 修正 Game_Party 的装备列表方法
#==============================================================================
class Game_Party
def all_weapons
result = []
@weapons.eachdo |item_id, count|
weapon = $data_weapons[item_id]
nextunless weapon
count.times{ result = 0 ? @data[@index] : nil
end
def item_max
@data ? @data.size : 0
end
def refresh
@data = $game_party.all_reroll_items
create_contents
draw_all_items
end
def update_help
item = current_item
if item
text = "#{item.display_name}\n"
text += "原价:#{item.price} G 现价:#{item.real_price} G\n"
text += "稀有度:#{item.rarity}"
@help_window.set_text(text)
else
@help_window.set_text("")
end
end
end
#==============================================================================
# ■ 存档/读档支持
#==============================================================================
module DataManager
class