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
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