Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

 
Reply to this topicStart new topic
> HP Sacrifice, Skills and items can cost HP
LockeZ
post Feb 26 2012, 07:44 PM
Post #1


Level 9
Group Icon

Group: Revolutionary
Posts: 141
Type: Developer
RM Skill: Masterful




HP Sacrifice
By LockeZ

This script allows you to create skills and items that cost HP when used.

Compatible with the default battle system.
Compatible with Atoa's Custom Battle System.
Compatible with Tankentai.

Add this script below the default scripts and above Main. If you are using Tankentai or Atoa's Custom Battle System, add this script below those and above Main.

Near the top of the script you can specify which skills and items cost HP, how much HP they cost, and some other stuff for each one.

Contact me at ff3lockez@yahoo.com with questions. I do not actively check the RRR forums but will be glad to help with any problems.

There are two versions of this script: one for people who use Atoa's custom battle system, and one for people who don't.

If you use Atoa's custom battle system, use this version:

CODE
#==============================================================================
# HP Sacrifice
# By LockeZ
#==============================================================================
# This script allows you to create skills and items that cost HP when used.
#
# Compatible with Atoa's Custom Battle System.
#
# Contact me at ff3lockez@yahoo.com with questions.
#==============================================================================

module LockeZ
  # Do not remove this line
  HP_Sacrifice_Action = {'Skill' => {}, 'Item' => {}}
  # Do not remove this line
  
  # Below here are the lines you can change to control which actions
  #   cost HP, and how much.
  
  # Format for each line:
  # ---------------------
  # HP_Sacrifice_Action[action_type][id] = [chance, formula, amount, anim_id, pop, can_kill]
  
  
  # And here is what each of those things means:
  
  # action_type = Should be set to 'Skill' or 'Item'
  # id          = ID number of the skill/item that costs HP
  #
  # chance  = chance of damaging self
  # formula = How the amount lost is calculated.  Must be 'integer' or 'percent'.
  # amount  = Amount of HP lost, based on formula.  If formula is set to
  #           integer, this is the actual amount lost.  If it's set to percent,
  #           this is the percent lost.
  # anim_id = ID of the animation shown over the user; leave nil or 0 for
  #           no animation
  # pop     = true or false, whether the sacrificed amount pops up visually
  #           over the user's head like damage.
  # can_kill = true or false.  If false the skill will not reduce the user below
  #            1 HP.  If true it can kill the user.
  
  
  # Example Skills
  HP_Sacrifice_Action['Skill'][28] = [100, 'integer', 250, nil, true, false]
  # The "Darkness" spell (spell #28) now costs 250 HP to cast.  It won't
  #   reduce the caster below 1 HP.
  
  HP_Sacrifice_Action['Skill'][30] = [100, 'integer', 500, nil, true, false]
  # The "Mass Darkness" spell (spell #30) now costs 500 HP to cast.  It can
  #   kill the caster.
  
  HP_Sacrifice_Action['Item'][10] = [100, 'percent', 100, 51, false, true]
  # The "Full Tonic" item (item #10) now costs 100% of the user's max HP.
  #   In other words, it always kills the user.  Animation 51 is shown.
  #   The amount of damage isn't shown.
  
  
end

#==============================================================================
# ** Don't modify anything below this point.
#==============================================================================


#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle
  include LockeZ
  
  #--------------------------------------------------------------------------
  # This method makes the script compatible with Atoa's Custom Battle System.
  #--------------------------------------------------------------------------
  alias step4_part3_hp_sacrifice step4_part3
  def step4_part3(battler)
    step4_part3_hp_sacrifice(battler)
    action = battler.now_action
    if action != nil and HP_Sacrifice_Action[action.type_name] != nil and
       HP_Sacrifice_Action[action.type_name].include?(action_id(action))
      sacrifice_hp(battler, HP_Sacrifice_Action[action.type_name][action_id(action)].dup)
    end
  end
  
  #--------------------------------------------------------------------------
  # Sacrifice HP
  #     battler : active battler
  #     action  : action
  #--------------------------------------------------------------------------
  def sacrifice_hp(battler, action)
    if action[0] >= rand(100)
      if action[1] == 'integer'
        hp_sacrificed = action[2].to_i
      elsif action[1] == 'percent'
        hp_sacrificed = (battler.maxhp * action[2] / 100).to_i
      end
      if action[5] == false
        hp_sacrificed = [battler.hp - 1, hp_sacrificed].min
      end
      if hp_sacrificed != 0
        battler.damage = hp_sacrificed
        battler.animation_id = action[3].nil? ? 0 : action[3]
        battler.damage_pop = action[4]
        @status_window.refresh
      end
    end
  end
end



And if you use the default battle system or Tankentai, use this version:

CODE
#==============================================================================
# HP Sacrifice
# By LockeZ
#==============================================================================
# This script allows you to create skills and items that cost HP when used.
#
# Compatible with the default battle system.
# Compatible with Tankentai.
#
# Contact me at ff3lockez@yahoo.com with questions.
#==============================================================================

module LockeZ
  # Do not remove this line
  HP_Sacrifice_Action = {'Skill' => {}, 'Item' => {}}
  # Do not remove this line
  
  # Below here are the lines you can change to control which actions
  #   cost HP, and how much.
  
  # Format for each line:
  # ---------------------
  # HP_Sacrifice_Action[action_type][id] = [chance, formula, amount, anim_id, pop, can_kill]
  
  
  # And here is what each of those things means:
  
  # action_type = Should be set to 'Skill' or 'Item'
  # id          = ID number of the skill/item that costs HP
  #
  # chance  = chance of damaging self
  # formula = How the amount lost is calculated.  Must be 'integer' or 'percent'.
  # amount  = Amount of HP lost, based on formula.  If formula is set to
  #           integer, this is the actual amount lost.  If it's set to percent,
  #           this is the percent lost.
  # anim_id = ID of the animation shown over the user; leave nil or 0 for
  #           no animation
  # pop     = true or false, whether the sacrificed amount pops up visually
  #           over the user's head like damage.
  # can_kill = true or false.  If false the skill will not reduce the user below
  #            1 HP.  If true it can kill the user.
  
  
  # Example Skills
  HP_Sacrifice_Action['Skill'][28] = [100, 'integer', 250, nil, true, false]
  # The "Darkness" spell (spell #28) now costs 250 HP to cast.  It won't
  #   reduce the caster below 1 HP.
  
  HP_Sacrifice_Action['Skill'][30] = [100, 'integer', 500, nil, true, false]
  # The "Mass Darkness" spell (spell #30) now costs 500 HP to cast.  It can
  #   kill the caster.
  
  HP_Sacrifice_Action['Item'][10] = [100, 'percent', 100, 51, false, true]
  # The "Full Tonic" item (item #10) now costs 100% of the user's max HP.
  #   In other words, it always kills the user.  Animation 51 is shown.
  #   The amount of damage isn't shown.
  
  
end

#==============================================================================
# ** Don't modify anything below this point.
#==============================================================================


#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle
  include LockeZ
  
  #--------------------------------------------------------------------------
  # These 2 methods makes the script compatible with the default battle system.
  #--------------------------------------------------------------------------
  unless respond_to?('step4_part3')
    alias make_skill_action_result_hp_sacrifice make_skill_action_result
    def make_skill_action_result
      make_skill_action_result_hp_sacrifice
      action = @active_battler.current_action
      if action != nil and HP_Sacrifice_Action['Skill'].include?(action.skill_id)
        sacrifice_hp(@active_battler, HP_Sacrifice_Action['Skill'][action.skill_id].dup)
      end
    end
  
    alias make_item_action_result_hp_sacrifice make_item_action_result
    def make_item_action_result
      make_item_action_result_hp_sacrifice
      action = @active_battler.current_action
      if action != nil and HP_Sacrifice_Action['Item'].include?(action.item_id)
        sacrifice_hp(@active_battler, HP_Sacrifice_Action['Item'][action.item_id].dup)
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # Sacrifice HP
  #     battler : active battler
  #     action  : action
  #--------------------------------------------------------------------------
  def sacrifice_hp(battler, action)
    if action[0] >= rand(100)
      if action[1] == 'integer'
        hp_sacrificed = action[2].to_i
      elsif action[1] == 'percent'
        hp_sacrificed = (battler.maxhp * action[2] / 100).to_i
      end
      if action[5] == false
        hp_sacrificed = [battler.hp - 1, hp_sacrificed].min
      end
      if hp_sacrificed != 0
        # This line happens only in the DBS
        # Atoa's CBS does this automatically for all damage
        battler.hp -= hp_sacrificed

        battler.damage = hp_sacrificed
        battler.animation_id = action[3].nil? ? 0 : action[3]
        battler.damage_pop = action[4]
        @status_window.refresh
      end
    end
  end
end


This post has been edited by LockeZ: Jan 16 2013, 05:16 PM


__________________________
Go to the top of the page
 
+Quote Post
   

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 20th May 2013 - 10:24 PM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker