Main Menu
  • Welcome to The RPG Maker Resource Kit.

Skills that cost HP

Started by modern algebra, February 25, 2008, 01:05:53 PM

0 Members and 1 Guest are viewing this topic.

modern algebra

Skills that cost HP
Version: 1.2
Author: modern algebra
Date: February 27, 2008


Description



This script allows you to assign hp cost to skills. This means that you can make it so that a skill can hurt (or heal) the user when he casts it.

Features


  • Allows skills to have an HP basic cost, as well as a percentage cost
  • Very intuitive configuration; it is easy to set up

Instructions

See inside the header for instructions

Script




#======================================================================
#  Skills with HP Cost
#  Author: modern algebra (rmrk.net)
#  Version: 1.2
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#    Instructions:
#      Set up the database below according to instructions
#======================================================================
# ** RPG::Skill
#======================================================================

class RPG::Skill
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * HP Cost
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def hp_cost
    # Default value for skills with undefined HP cost
    cost, percent = 0, 0
    case @id
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Editable Region
    #-----------------------------------------------------------------------------------------------------------------------
    #  For each skill to which you want to assign an hp_cost, set it up like so:
    #      when skill ID
    #         cost = <the amount of HP that you want to subtract from the user. If the number is
    #                     negative, then the user of the skill will be healed by that amount>
    #         percent = <the percentage of max HP you wish to subtract from the user. If negative,
    #                             then the user of the skill will be healed by that percentage>
    #
    #  There are a couple of examples below. Feel free to delete them once you understand
    #  what is required of you
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    when 1  # Skill #1 in database
      cost = 10 # The amount of HP to subtract from user
      percent = 20 # The % of maxhp to subtract from user
    when 5
      cost = 100
    when 33
      percent = 10
    end
    percent = percent.to_f / 100
    return cost, percent
  end
end

#=====================================================================
# ** Game_Battler
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Summary of Changes:
#      aliased methods - skill_can_use?, skill_effect
#=====================================================================

class Game_Battler
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Skill Can Use?
  #-----------------------------------------------------------------------------------------------------------------------
  #  Added a requirement that a skill cannot be used if the user's HP is less than the HP Cost
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modalg_hp_cost_skills_can_use? skill_can_use?
  def skill_can_use? (skill)
    if !skill.nil?
      basic, percent = skill.hp_cost
      return false if (basic + (percent*maxhp).to_i) > hp
    end
    return modalg_hp_cost_skills_can_use? (skill)
  end
end

class Scene_Skill
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Skill Effect
  #-----------------------------------------------------------------------------------------------------------------------
  #  Subtract the HP Cost from the user
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modalg_hp_cost_useskill_7uj3 use_skill_nontarget
  def use_skill_nontarget (*args)
    if !@skill.nil?
      basic, percent = @skill.hp_cost
      @actor.hp -= ((percent*@actor.maxhp).to_i + basic)
    end
    modalg_hp_cost_useskill_7uj3  (*args)
  end
end

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Execute Battle Action: Skill
  #--------------------------------------------------------------------------
  alias mala_hpcost_excut_skill_6yh1 execute_action_skill
  def execute_action_skill (*args)
    mala_hpcost_excut_skill_6yh1 (*args)
    if @active_battler && @active_battler.action && @active_battler.action.skill
      basic, percent = @active_battler.action.skill.hp_cost
      @active_battler.hp -= ((percent*@active_battler.maxhp).to_i + basic)
    end
  end
end


Credit




  • modern algebra

Thanks


  • Johnny Intergalactic Man, for requesting the script

Support



Just post in this topic at rmrk for quick support. I wrote this script very quickly and have not done any extensive testing, so please inform me if any issues arise.

Known Compatibility Issues

It should be compatible with any script that does not perform the same function as this one. If any issues arise, I will be happy to fix them for you.




GasparXR

#1
This could come in handy for healing spells. Though it would be better if you could set a percentage value or a random value between numbers... But so far this sounds good. I'm definitely using this!

EDIT: I guess not! XD It only works for the user. Oh well. Could come to use sometime.

modern algebra

You can set healing spells in the database normally. Just set the damage effect to a negative value.

GasparXR

I know that, but it's a random value. I guess that's okay though, that's why there's such a thing as updating =P I remember in 2000 that you could set a spell to heal... I'll have to check it again.

modern algebra

random? set variance, pdef_f, and mdef_f to 0 and it will do the exact amount you set in basic effect

A13x

hate to rain on ur parade but.... this could be done with common events =P
I have:
GM7
RPGXP
RPGVX
FPS Creator
Cube 2
3D Gamemaker (SHITBOX!)

WIP stats:
RPGVX:
none, just experimenting with random events...

modern algebra

Yeah, I know that, but it's easier through a script like this.

And also, you aren't able to disable the skill easily if the hero doesn't have enough HP to cast it through events. It's a huge pain. With scripts, it simply doesn't allow you to use the skill if you don't have enough HP to do so.

ShadowMaster215

This script also works with MP.  You just have to change few things that have hp in the script. 

modern algebra

You can set the skill to decrease the user's MP through the database :P

ShadowMaster215


Yea. but I wonder we can modify the script to do percent instead.

KAZRCRW_ME

Yes...Very good script..

I might use this script..
If I found bug or other error I will post in this thread...

Thank you~^^

DE5PA1R

This is awesome! Thanks a lot.

Jexxy_63

Does this work with GubiD's Tactical Battle System VX?
I couldnt get it working on there for some reason. If there is a patch to make it work, or if you know it doesn't work, please get back to me on this one.

Thanks a lot.           Jesse

Ps. You have made all of my favourite work. (Not a big Yanfly fan, not saying Yanfly is bad, just an opinion)

modern algebra

I don't know if it works with GubiD or not, but I would think it strange not to. Have you tried putting this script below Gubid's TBS in the Script Editor. It should still be above Main.

And thanks for the compliment.

Jexxy_63

Yeah, I've tried that. I'm not too skilled at scripting in general, but if I have a problem I can usually find a solution... But this eludes me at every turn... Theres no errors. No leads... Just... Nothing.

modern algebra

#15
So there aren't any errors or anything - it just isn't being applied?


EDIT::

I just downloaded and tested - it worked for me - the HP was reduced, though there was no damage popup.

Jexxy_63

Hmm, I didnt even get that much out of it... What exactly did you do then? I may have written it wrong, or in the wrong place. Hence the fact that Im only human.  xD Lol. And thanks for your help.

modern algebra

All I did was put it directly above Main and below all parts of Gubid's script

Lazer Ki

This looks nice...


but I want one for RMXP ;_;
Hi

Aromatic

Hello,
I got an error when using this script.  The error comes when I attempt to use the skill of a hero who does not have any skills yet.

line 61: NoMethodError occurred.
undefined method 'hp_cost' for nil:NilClass

Thanks a bunch!

modern algebra

I updated the script in the main post. Replace your version with that and see if it works.

Aromatic

It works perfectly now! Thanks for your quick responses.  I'm using a lot of your scripts because they are just too useful to pass up.  ;D

skulper34

Would it be possible to make something with a state like if inflicted with a state all skills that require MP will use up HP instead?

hiromu656

I smell my 13th class - heh heh heh :zwink:, the Bloodmage. Great job yet again.

apoclaydon

hi would it be at all possible to have it so it shows the hp cost with the skill like it dse for mp