RUBY 代码
RUBY 代码
RUBY 代码
RUBY 代码
[code]#==============================================================================
# ★ 护盾系统 - Falcao 宝石镶嵌联动补丁
#==============================================================================
# 功能:使镶嵌在装备上的宝石如果备注了“护盾值:数字”,也会累加到角色的护盾值中。
# 注意:宝石物品必须至少有一个属性标签(如)才能被镶嵌系统识别。
#==============================================================================
ifdefined?(FalMana) && $imported["ShieldSystem"]
#============================================================================
# ■ 扩展 RPG::Item:添加护盾值读取方法
#============================================================================
classRPG::Item < RPG::UsableItem
def shield_value
if@shield_value.nil?
ifself.note =~ /#{SHIELD_CONFIG::SHIELD_NOTE_TAG}(\d+)/
@shield_value = $1.to_i
else
@shield_value = 0
end
end
@shield_value
end
end
#============================================================================
# ■ Game_Actor 护盾计算扩展(包含宝石护盾)
#============================================================================
class Game_Actor < Game_Battler
# 完全覆盖护盾计算,确保宝石护盾被累加
def refresh_shield_from_armors
total_shield = 0
# 遍历所有已装备物品(武器 + 防具)
equips.eachdo |equip|
nextif equip.nil?
# 1. 装备自身护盾值
if equip.note =~ /#{SHIELD_CONFIG::SHIELD_NOTE_TAG}(\d+)/
total_shield += $1.to_i
end
# 2. 镶嵌宝石的护盾值
slots = equip.manaslots
nextunless slots.is_a?(Array)
slots.eachdo |gem|
nextif gem.nil?
# 读取宝石的护盾值
total_shield += gem.shield_valueif gem.respond_to?(:shield_value)
end
end
# 应用总护盾值
self.shield_max = total_shield
end
# 确保更换装备、镶嵌宝石后自动刷新护盾
alias shield_gem_change_equip change_equip
def change_equip(slot_id, item)
shield_gem_change_equip(slot_id, item)
refresh_shield_from_armors
end
end
#============================================================================
# ■ 宝石操作后立即刷新护盾
#============================================================================
module FalMana
class