Save-Point
KNegate XP & VX - 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)
+--- Thread: KNegate XP & VX (/thread-7585.html)



KNegate XP & VX - kyonides - 11-21-2019

KNegate XP & VX

by Kyonides Arkanthes


Introduction

This time the explanation is quite simple indeed Laughing you only need to setup battlers that will negate any damage taken if it is less than a percent of their MAXHP. Shocked

XP Script
Code:
# * KNegate XP
#   Scripter : Kyonides Arkanthes
#   2019-11-20

# This scriptlet will let battlers negate damage if it is lower than a percent
# of their MAXHP. It will not interfere with healing spells.

module KNegate
 DAMAGE_BATTLER_IDS = {} # Do Not Edit This Line!
 # BattlerID => MAXHP Percent, etc.
 DAMAGE_BATTLER_IDS[:actor] = { 1 => 20 }
 DAMAGE_BATTLER_IDS[:enemy] = {}
end

class Game_Battler
 alias :kyon_negate_gm_battler_ae :attack_effect
 alias :kyon_negate_gm_battler_se :skill_effect
 def attack_effect(user)
   result = kyon_negate_gm_battler_ae(user)
   result |= check_damage_negation(result)
   result
 end

 def skill_effect(user, skill)
   result = kyon_negate_gm_battler_se(user, skill)
   result |= check_damage_negation(result)
   result
 end

 def check_damage_negation(result)
   no_dmg = KNegate::DAMAGE_BATTLER_IDS[self.kind][self.id]
   return result if !no_dmg or !@damage.between?(1, maxhp * no_dmg / 100)
   self.hp += @damage
   @damage = 0
   false
 end
end

class Game_Actor
 def kind() :actor end
end

class Game_Enemy
 def kind() :enemy end
end


VX Script
Code:
# * KNegate VX
#   Scripter : Kyonides Arkanthes
#   2019-11-20

# This scriptlet will let battlers negate damage if it is lower than a percent
# of their MAXHP. It will not interfere with healing spells.

module KNegate
 DAMAGE_BATTLER_IDS = {} # Do Not Edit This Line!
 # BattlerID => MAXHP Percent, etc.
 DAMAGE_BATTLER_IDS[:actor] = { 1 => 20 }
 DAMAGE_BATTLER_IDS[:enemy] = {}
end

class Game_Battler
 alias :kyon_negate_gm_battler_madv :make_attack_damage_value
 alias :kyon_negate_gm_battler_modv :make_obj_damage_value
 def make_attack_damage_value(user)
   kyon_negate_gm_battler_madv(user)
   check_damage_negation
 end

 def make_obj_damage_value(user, obj)
   kyon_plotto_gm_battler_modv(user, obj)
   check_damage_negation if obj.is_a?(RPG::Skill)
 end

 def check_damage_negation
   no_dmg = KNegate::DAMAGE_BATTLER_IDS[self.kind][self.id]
   return if !no_dmg or !@hp_damage.between?(1, maxhp * no_dmg / 100)
   self.hp += @hp_damage
   @hp_damage = 0
   @critical = false
 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.
Do not repost it anywhere else!
Free for 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