#===============================================================================
# Proto Damage Cap
# Author game_guy
# Version 1.0
#-------------------------------------------------------------------------------
# Intro:
# Applies a simple damage cap like in most rpg's. You can only do 9999 damage
# at the max for example. But in most rpg's you can also break that damage
# cap with certain skills, weapons, or armors.
#
# Features:
# Set damage cap to whatever
# Change damage cap in game
# Toggle damage cap in game
# Excluded weapons, items, armors, and skills and enemies
#
# Instructions:
# Go down to the config below and configure everything there.
#
# Script Calls:
# This can turn the damage cap on or off
# $game_system.cap_on = true/false : true = on, false = off
# This can change the damage cap in game
# $game_system.damage_cap = x : x = a number
#
# Compatibility:
# Not tested with SDK.
# Should work with about every battle system.
#
# Credits:
# game_guy ~ For making it
# GAX72 ~ For requesting it
# anagura.raziel ~ For requesting more features
#===============================================================================
module GG_Cap
#===========================================
# This is the max damage cap set for
# anything. Items, skills, attacks, etc.
#===========================================
Damage_Cap = 9999
#===========================================
# Any weapon placed in the array below is
# equipped, the damage cap won't apply to
# that actor.
#===========================================
Exclude_Weapons = [2, 3, 4]
#===========================================
# Any armor placed in the array below is
# equipped, the damage cap won't apply to
# that actor.
#===========================================
Exclude_Armors = [1, 2, 3]
#===========================================
# Any skill placed in the array below is
# used, the damage cap won't apply to
# that skill.
#===========================================
Exclude_Skills = [7, 8, 9, 57]
#===========================================
# Any skill placed in the array below is
# used, the damage cap won't apply to
# that skill.
#===========================================
Exclude_Items = [1, 2, 3]
#===========================================
# Any enemy placed in the array below,
# the damage cap won't apply to
# that enemy. This also means
# the cap will not apply to any skill
# that enemy uses.
#===========================================
Exclude_Enemies = [29, 30]
end
class Game_System
attr_accessor :damage_cap
attr_accessor :cap_on
alias gg_init_damage_cap_lat initialize
def initialize
@damage_cap = GG_Cap::Damage_Cap
@cap_on = true
gg_init_damage_cap_lat
end
end
class Game_Battler
include GG_Cap
alias gg_dmg_cap_atk_effect_lat attack_effect
def attack_effect(attacker)
return if !$game_system.cap_on
dmg = $game_system.damage_cap
last_hp = self.hp
result = gg_dmg_cap_atk_effect_lat(attacker)
if result && self.damage.is_a?(Integer)
if attacker.is_a?(Game_Actor)
flag = false
actor = attacker
Exclude_Armors.each{|a|
flag = (actor.armor1_id == a or
actor.armor2_id == a or
actor.armor3_id == a or
actor.armor4_id == a)
break if flag == true}
if Exclude_Weapons.include?(attacker.weapon_id)
flag = true
end
unless flag
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, dmg].min
self.hp -= Integer(self.damage)
end
elsif attacker.is_a?(Game_Enemy)
unless Exclude_Enemies.include?(self.id)
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, dmg].min
self.hp -= Integer(self.damage)
end
end
end
return result
end
alias gg_dmg_cap_skil_effect_lat skill_effect
def skill_effect(user, skill)
return if !$game_system.cap_on
dmg = $game_system.damage_cap
last_hp = self.hp
result = gg_dmg_cap_skil_effect_lat(user, skill)
if result && self.damage.is_a?(Integer)
if user.is_a?(Game_Actor)
if !Exclude_Skills.include?(skill.id)
if self.damage < 0
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, -dmg].max
self.hp -= Integer(self.damage)
else
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, dmg].min
self.hp -= Integer(self.damage)
end
end
elsif user.is_a?(Game_Enemy)
if !Exclude_Enemies.include?(self.id) ||
!Exclude_Skills.include?(skill.id)
if self.damage < 0
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, -dmg].max
self.hp -= Integer(self.damage)
else
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, dmg].min
self.hp -= Integer(self.damage)
end
end
end
end
return result
end
alias gg_dmg_cap_item_effect_lat item_effect
def item_effect(item)
return if !$game_system.cap_on
dmg = $game_system.damage_cap
result = gg_dmg_cap_item_effect(item)
if result && self.damamge.is_a?(Integer)
if !Exclude_Items.include?(item.id)
if self.damage < 0
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, -dmg].max
self.hp -= Integer(self.damage)
else
self.hp = last_hp
self.hp = self.hp
self.damage = [self.damage, dmg].min
self.hp -= Integer(self.damage)
end
end
end
end
end