Quantcast
Channel: RGSS3 Scripts (RMVX Ace) Latest Topics
Viewing all articles
Browse latest Browse all 416

High Capability Mana Shield / Blood Magic

$
0
0

This is a high capability Mana Shield / Blood Magic script. It has high capability because it doesn't overwrite anything.

Simply just add <MANA SHIELD> in the state's notebox for mana shield and <BLOOD MAGIC> in the state's notebox for blood magic.

 

 

 

 

#----------------------------------------------------------------------------
#  [ADVT] Mana Shield and Blood Magic
#
#  Compatibility: High
#  Difficulty: Easy
#
#  Description: 
#  Mana Shield is a state that causes damage to be subtracted from 
#  MP instead of HP. However, if you do not have enough MP, the remaining damage
#  will be subtracted from HP.
#
#  Blood Magic is a state that causes you to pay HP to use skills instead of MP.
#  However, if you do not have enough HP to use the skill, the skill can not be used.
#
#  Notetags: 
#  Add <MANA SHIELD> in the notebox of the state you want to be mana shield.
#  Add <BLOOD MAGIC> in the notebox of the state you want to be blood magic.
#
#  Alias - Game_ActionResult > make_damage
#  New Method - Game_BattlerBase > bloodmagic?
#  Alias - Game_BattlerBase > skill_mp_cost
#  Alias - Game_BattlerBase > skill_cost_payable?
#  Alias - Game_BattlerBase > pay_skill_cost
#

#  For maximum compatibility, place this script below all other scripts.

#
#  Credit not required.
#  Credit "Adventurer_inc" if you want.
#
#----------------------------------------------------------------------------
class Game_ActionResult
  #--------------------------------------------------------------------------
  # * Alias: Calculate Damage
  #--------------------------------------------------------------------------
  alias advt_make_damage make_damage
  def make_damage(value, item)
    advt_make_damage(value, item)
    manashielded = false
    @battler.states.each{|state| manashielded = true if state.note.include?("<MANA SHIELD>")}
    if manashielded && @battler.mp > 0
      overdamage = @hp_damage - @battler.mp
      @mp_damage += @hp_damage
      @hp_damage = (overdamage > 0 ? overdamage : 0)
    end
    @success = false unless item.damage.to_hp? || @mp_damage != 0
  end
end
  #--------------------------------------------------------------------------
  # END- class Game_ActionResult
  #--------------------------------------------------------------------------

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # * New Method: bloodmagic?: for simplicity
  #-------------------------------------------------------------------------- 
  def bloodmagic?
    return false if self == nil
    bloodmagic = false
    self.states.each{|state| bloodmagic = true if state.note.include?("<BLOOD MAGIC>")}
    return bloodmagic
  end
  #--------------------------------------------------------------------------
  # * Alias: Calculate Skill's MP Cost
  #--------------------------------------------------------------------------  
  alias advt_skill_mp_cost skill_mp_cost
  def skill_mp_cost(skill)
    bloodmagic? ? 0 : advt_skill_mp_cost(skill)
  end
  #--------------------------------------------------------------------------
  # * Alias: Determine if Cost of Using Skill Can Be Paid
  #--------------------------------------------------------------------------
  alias advt_skill_cost_payable? skill_cost_payable?
  def skill_cost_payable?(skill)
    return false if bloodmagic? && hp < (skill.mp_cost * mcr).to_i 
    advt_skill_cost_payable?(skill)
  end
  #--------------------------------------------------------------------------
  # * Alias: Pay Cost of Using Skill
  #--------------------------------------------------------------------------
  alias advt_pay_skill_cost pay_skill_cost
  def pay_skill_cost(skill) 
    self.hp -= (skill.mp_cost * mcr).to_i if bloodmagic?
    advt_pay_skill_cost(skill)
  end   
end
  #--------------------------------------------------------------------------
  # END- class Game_BattlerBase
  #--------------------------------------------------------------------------

 

 


Viewing all articles
Browse latest Browse all 416

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>