Project1

标题: 能够加强属性伤害的状态 [打印本页]

作者: taroxd    时间: 2014-5-21 15:32
标题: 能够加强属性伤害的状态
本帖最后由 taroxd 于 2014-11-23 16:32 编辑

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● require Taroxd基础设置
  3. #    使用方法:在角色/职业/技能/装备/敌人/状态上备注<element id rate>,
  4. #             表示该角色/该职业/习得技能后/装上装备后/该敌人/获得状态后,
  5. #             战斗者使用第 id 号属性的技能时,效果乘以 rate
  6. #--------------------------------------------------------------------------
  7.  
  8. class RPG::BaseItem
  9.   #--------------------------------------------------------------------------
  10.   # ● 获取属性效果构成的 Hash,属性ID => 效果
  11.   #--------------------------------------------------------------------------
  12.   def element_effect
  13.     @element_effect ||= @note.scan(/<ELEMENT\s+(\d+)\s+(\d+(?:\.\d+)?)>/i)
  14.       .each_with_object(Hash.new(1.0)) {|(id, rate), hash|
  15.         hash[id.to_i] *= rate.to_f }
  16.   end
  17. end
  18.  
  19. class Game_Battler < Game_BattlerBase
  20.   #--------------------------------------------------------------------------
  21.   # ● 获取属性效果构成的 Hash,属性ID => 效果
  22.   #--------------------------------------------------------------------------
  23.   def element_effect
  24.     note_objects.each_with_object(Hash.new(1.0)) do |e, h|
  25.       h.merge!(e.element_effect) {|_, r1, r2| r1 * r2 }
  26.     end
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 获取技能/物品的属性修正值
  30.   #--------------------------------------------------------------------------
  31.   calc_new_rate = lambda do |old, user, item|
  32.     if item.damage.element_id < 0
  33.       user.atk_elements.pi(old) {|id| user.element_effect[id] }
  34.     else
  35.       old * user.element_effect[item.damage.element_id]
  36.     end
  37.   end
  38.   def_with :item_element_rate, calc_new_rate
  39. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1