#===============================================================================
# 
# Craze's Script Asylum - Element Damage Boost
# Last Date Updated: 2010.05.22
# Level: Normal
# 
# Allow certain states and pieces of equipment to raise the damage a battler
# does with specific elements, such as an armor increasing the power of Fire 
# spells.
#===============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials and Battle Engine Melody but above ▼ Main. 
# Remember to save.
# 
# <ele dmg bonus x: y%> 
# The element with id x deals y% damage.
# 
#===============================================================================
# Examples
# -----------------------------------------------------------------------------
# <ele dmg bonus 3: 150%> 
# The actor or enemy would do 50% more Fire damage.
# 
# <ele dmg bonus 5: 80%> 
# The actor or enemy would do 20% less Volt damage.
# 
# This is for equipment and state noteboxes only.
#===============================================================================
# Compatibility
# -----------------------------------------------------------------------------
# Note: This script requires Yanfly's Battle Engine Melody. Make sure to place
# this script below BEM.
#===============================================================================
 
$imported = {} if $imported == nil
$imported["EleDamageBoost"] = true

if $imported["BattleEngineMelody"]
 
#==============================================================================
# RPG::BaseItem
#==============================================================================
 
class RPG::BaseItem
 
  #--------------------------------------------------------------------------
  # eleboosts 
  #--------------------------------------------------------------------------

  def eleboosts
    return @eleboosts if @eleboosts != nil
    @eleboosts = {}
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:ELE_DMG_BONUS|ele dmg bonus)[ ](.*):[ ](\d+)([%%])>/i
          @eleboosts[$1.to_i] += $2.to_i if $1.to_i != 0 and !@eleboosts[$1.to_i] == nil
          @eleboosts[$1.to_i] = $2.to_i if $1.to_i != 0
      end
    }
    return @eleboosts
  end
 
end
 
#==============================================================================
# RPG::State
#==============================================================================
 
class RPG::State
 
  #--------------------------------------------------------------------------
  # eleboosts 
  #--------------------------------------------------------------------------

  def eleboosts
    return @eleboosts if @eleboosts != nil
    @eleboosts = {}
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:ELE_DMG_BONUS|ele dmg bonus)[ ](.*):[ ](\d+)([%%])>/i
          @eleboosts[$1.to_i] += $2.to_i if $1.to_i != 0 and !@eleboosts[$1.to_i] == nil
          @eleboosts[$1.to_i] = $2.to_i if $1.to_i != 0
      end
    }
    return @eleboosts
  end
 
end
 
#==============================================================================
# Game_Battler
#==============================================================================
 
class Game_Battler
  
  #--------------------------------------------------------------------------
  # alias: apply_element_rate
  #--------------------------------------------------------------------------
  
  alias csa_eledmgb_apply_element_rate apply_element_rate unless $@
  def apply_element_rate(user, damage, obj = nil)
    result = csa_eledmgb_apply_element_rate(user, damage, obj) unless obj == nil
    result = csa_eledmgb_apply_element_rate(user, damage) if obj == nil
    rate = 0
    if obj != nil
      set = obj.element_set
      if obj.physical_attack and YEM::BATTLE_ENGINE::APPLY_PHYSICAL_ELE
        set += user.element_set
      elsif YEM::BATTLE_ENGINE::APPLY_MAGICAL_ELE
        set += user.element_set
      end
    else
      set = user.element_set
    end
    set = $game_temp.action_elements if $game_temp.action_elements != nil
    for i in set
      unless user.enemy?
        for equip in user.equips.compact
          next if equip == nil
          rate += (equip.eleboosts[i]) unless equip.eleboosts[i] == nil
        end
      end
      for state in user.states
        rate += (state.eleboosts[i]) unless state.eleboosts[i] == nil
      end
    end
    result *= rate unless rate == 0
    result /= 100 unless rate == 0
    return result
  end

end

end # imported["BattleEngineMelody"]
 
#===============================================================================
# 
# END OF FILE
# 
#===============================================================================