# @taroxd metadata 1.0
# @display 属性修正的扩展
# @require taroxd_core
# @id element_effect
# @help
# 表示该角色/该职业/习得技能后/装上装备后/该敌人/获得状态后,
# 战斗者使用第 id 号属性的技能时,效果乘以 rate
Taroxd::ElementEffect = true
class RPG::BaseItem
# 属性效果构成的 hash,属性ID => 效果
def element_effect
@element_effect ||= @note.scan(/<ELEMENT\s+(\d+)\s+(\d+(?:\.\d+)?)>/i)
.each_with_object(Hash.new(1.0)) { |(id, rate), hash|
hash[id.to_i] *= rate.to_f }
end
end
class Game_Battler < Game_BattlerBase
def element_effect
note_objects.each_with_object(Hash.new(1.0)) do |e, h|
h.merge!(e.element_effect) { |_, r1, r2| r1 * r2 }
end
end
calc_new_rate = lambda do |old, user, item|
if item.damage.element_id < 0
user.atk_elements.pi(old) { |id| user.element_effect[id] }
else
old * user.element_effect[item.damage.element_id]
end
end
def_with :item_element_rate, calc_new_rate
end
属性修正的扩展
按比例吸血
# @taroxd metadata 1.0
# @id drain
# @display 按比例吸血
# @require taroxd_core
# 在可以设置“特性”的地方备注 <drain r>。
# 其中 r 为吸血的比例。
Taroxd::Drain = true
RPG::BaseItem.note_f :drain
Game_Battler.send :def_after, :execute_damage do |user|
if @result.hp_damage > 0
user.hp += (@result.hp_damage * user.feature_objects.sum(&:drain)).to_i
end
end
禁用贵重物品
# @taroxd metadata 1.0
# @id disable_key_item
# @display 禁用贵重物品
# @require taroxd_core
# @help 禁用“贵重物品”功能
Taroxd::DisableKeyItem = true
class RPG::Item < RPG::UsableItem
def key_item?
false
end
end
class Window_ItemCategory < Window_HorzCommand
def col_max
3
end
def make_command_list
add_command(Vocab::item, :item)
add_command(Vocab::weapon, :weapon)
add_command(Vocab::armor, :armor)
end
end
class Window_KeyItem < Window_ItemList
def_after(:start) { self.category = :item }
def enable?(item)
true
end
end