Save-Point
KStatsRefill VX + ACE - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker VX/VXAce (RGSS2/3) Engines (https://www.save-point.org/forum-117.html)
+---- Thread: KStatsRefill VX + ACE (/thread-9401.html)



KStatsRefill VX + ACE - kyonides - 09-15-2024

KStatsRefill VX + ACE

by Kyonides


Introduction

From now on you can make certain skills heal your heroes or monsters by a specific percent of their maximum HP or SP (aka MP). Shocked
Why!? Happy with a sweat Well, Confused that might be because your monsters are kind of resistant to magic!? Laughing Just go pick an excuse and make your game different from any other games uploaded to the net! Laughing + Tongue sticking out  

VX Script
Code:
# * KStatsRefill VX
#   Scripter : Kyonides Arkanthes
#   2019-11-06

# This scriptlet allows you to setup heroes or monsters that will earn some
# Life or Mana by getting hit by certain skills only.

module KStats
  REFILL_SKILL_IDS = {}# Do Not Edit This Line!
  # Type : :life or :mana
  # Actors' List:  ActorID => { SkillID => [Type, percent], etc. }, etc. }
  REFILL_SKILL_IDS[:actor] = {
    1 => { 1 => [:life, 5], 2 => [:mana, 10] }
  }
  # Enemies' List: EnemyID => { SkillID => [Type, percent], etc. }, etc. }
  REFILL_SKILL_IDS[:enemy] = {
    1 => { 1 => [:life, 5], 2 => [:mana, 10] }
  }
end

class Game_Battler
  alias :kyon_stats_refill_gm_battler_se :skill_effect
  def skill_effect(user, skill)
    result = kyon_stats_refill_gm_battler_se(user, skill)
    refill_stats(skill.id) if result
    result
  end

  def refill_stats(skill_id)
    data = KStats::REFILL_SKILL_IDS[self.kind] || {}
    data = data[self.id] || {}
    stype, percent = data[skill_id]
    if stype == :life
      self.hp += total = maxhp * percent / 100
      @hp_damage = @hp_damage - total rescue -total
    elsif stype == :mana
      self.mp += total = maxmp * percent / 100
      @mp_damage = @mp_damage - total rescue -total
    end
  end
end

class Game_Actor
  def kind() :actor end
end

class Game_Enemy
  def kind() :enemy end
end

VX ACE Script
Code:
# * KStatsRefill ACE
#   Scripter : Kyonides Arkanthes
#   2019-11-06

# This scriptlet allows you to setup heroes or monsters that will earn some
# Life or Mana by getting hit by certain skills only.

module KStats
  REFILL_SKILL_IDS = {}# Do Not Edit This Line!
  # Type : :life or :mana
  # Actors' List:  ActorID => { SkillID => [Type, percent], etc. }, etc. }
  REFILL_SKILL_IDS[:actor] = {
    1 => { 1 => [:life, 5], 2 => [:mana, 10] }
  }
  # Enemies' List: EnemyID => { SkillID => [Type, percent], etc. }, etc. }
  REFILL_SKILL_IDS[:enemy] = {
    1 => { 1 => [:life, 5], 2 => [:mana, 10] }
  }
end

class Game_ActionResult
  alias :kyon_stats_refill_gm_ar_md :make_damage
  def make_damage(value, item)
    kyon_stats_refill_gm_ar_md(value, item)
    return unless item.is_a?(RPG::Skill)
    data = KStats::REFILL_SKILL_IDS[@battler.kind] || {}

    data = data[@battler.id] || {}
    stype, percent = data[item.id]
    if stype == :life
      @hp_damage -= @battler.mhp * percent / 100
    elsif stype == :mana
      @mp_damage -= @battler.mmp * percent / 100
    end
  end
end

class Game_Actor
  def kind() :actor end
end

class Game_Enemy
  def kind() :enemy end
end

Terms & Conditions

You must include my nickname and the current website's URL in your game credits.
You are free to use it in non commercial games.
Give me a free copy of your completed game if you include at least 2 of my scripts! Laughing + Tongue sticking out