# ▼▲▼ XRXS38. 属性修正计算数限制 ▼▲▼ built 081012
# by 桜雅 在土 (原作)
#    Tetra-Z   (強化)
#==============================================================================
# 简介:此脚本会将“系统默认的属性修正”和“战斗特殊效果属性”分开计算;
#       插入此脚本后,“战斗特殊效果属性”将“不计算属性有效度”。
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module XRXS38
  # 属性的限制数量
  ELEMENTS_NUMBER_LIMIT = 23
  # 属性修正的计算方法
  #        0 : 最大(默认的计算方法)
  #        1 : 乘法
  #        2 : 平均
  #        3 : 最小
  ELEMENT_CORRECT_METHOD = 1
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 属性修正的计算 + 倍率计算公式
#--------------------------------------------------------------------------
  alias xrxs38_elements_correct elements_correct
  def elements_correct(element_set)
    elements = element_set.dup
    # 属性数量的限制
    for element_id in element_set
      if element_id >XRXS38:: ELEMENTS_NUMBER_LIMIT
        elements.delete(element_id)
      end
    end
    #无属性的场合返回100
    return 100 if elements.size == 0
    #
    case XRXS38::ELEMENT_CORRECT_METHOD
    when 0 # 最大
      return xrxs38_elements_correct(elements)
    when 1 # 乘法
      result = 100.0
      minus_enable = false
      for i in elements
        n = self.element_rate(i)
        minus_enable |= (n < 0)
        result *= n / 100.0
      end
      result = -1 * result.abs if minus_enable 
      return result.to_i
    when 2 # 平均
      rates = []
      result = 0
      for i in elements
        rates.push(self.element_rate(i))
      end
      for rate in rates
        result += rate
      end
      return result / rates.size
    when 3 # 最小
      for i in elements
        n = self.element_rate(i)
        result = n if result.nil? or result > n
      end
      return result
    end
  end  
end