查看: 2763|回复: 0

能够加强属性伤害的状态

[复制链接]

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-5-21 15:32:48 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 taroxd 于 2014-11-23 16:32 编辑

[pre lang="ruby" line="1"]

#--------------------------------------------------------------------------
# ● require Taroxd基础设置
#    使用方法:在角色/职业/技能/装备/敌人/状态上备注<element id rate>,
#             表示该角色/该职业/习得技能后/装上装备后/该敌人/获得状态后,
#             战斗者使用第 id 号属性的技能时,效果乘以 rate
#--------------------------------------------------------------------------

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
  #--------------------------------------------------------------------------
  # ● 获取属性效果构成的 Hash,属性ID => 效果
  #--------------------------------------------------------------------------
  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[/pre]

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本发帖返回顶部