Variable Criticals
By adding a special line to the notes field, you can change how powerful a critical is for a weapon or enemy.
<critical_multiplier n>
Note that this will only be relevant for enemies if they are capable of dealing critical hits. The default, without this script, is 3. The default with the script is 3, except for unarmed actors where it is 2. Where a character is wielding two weapons, the better multiplier is used.
This script requires the TagNote 2.0 cript to function.
Download: http://chthonic.150m.com/scratch/Queex_scripts.zip
################################
# Variable Criticals #
########################################################
# Version 1.1 #
# Author: Queex #
# Licence: Creative Commons non-commercial attributive #
# Requires: TagNote 2.0+ #
#########################################################
# This replaces the fixed critical hit damage multipler #
# As before, weapons and enemies have a multiplier of 3 #
# if a new one is not specified. To give a weapon or #
# enemy a different bonus, include: #
# <critical_multiplier n> #
# in the note field. Decimals are allowed. This system #
# currently allows values less than 1 (so on a #
# critical, less damage is done). You can also adjust #
# the default unarmed multiplier, and the default #
# multipliers for weapons where it is not specified in #
# the notes field. #
# #
# Version History: #
# 1.0 First version #
# 1.1 Updated to TagNote 2.0 RELEASE #
#########################################################
class Game_Actor < Game_Battler
include TAGNOTE
UNARMED_MULTIPLIER=2
DEFAULT_MULTIPLIER=3
def critical_multiplier
multi=-1;
for weapon in weapons.compact
tmp = weapon_crit_multiplier(weapon)
multi = tmp if tmp > multi
end
multi = UNARMED_MULTIPLIER if multi < 0
return multi
end
def weapon_crit_multiplier(weapon)
tmp = get_tag(weapon.note,"critical_multiplier")
return tmp.to_f unless tmp==nil
return DEFAULT_MULTIPLIER
end
end
class Game_Enemy < Game_Battler
DEFAULT_MULTIPLIER=3
def critical_multiplier
tmp = get_tag(enemy.note,"critical_multiplier")
return tmp.to_f unless tmp==nil
return DEFAULT_MULTIPLIER
end
end
class Game_Battler
#--------------------------------------------------------------------------
# * Calculation of Damage From Normal Attack
# attacker : Attacker
# The results are substituted for @hp_damage
#--------------------------------------------------------------------------
def make_attack_damage_value(attacker)
damage = attacker.atk * 4 - self.def * 2 # base calculation
damage = 0 if damage < 0 # if negative, make 0
damage *= elements_max_rate(attacker.element_set) # elemental adjustment
damage /= 100
if damage == 0 # if damage is 0,
damage = rand(2) # half of the time, 1 dmg
elsif damage > 0 # a positive number?
@critical = (rand(100) < attacker.cri) # critical hit?
@critical = false if prevent_critical # criticals prevented?
if @critical
damage *= critical_multiplier # critical adjustment
damage = damage.to_i
end
end
damage = apply_variance(damage, 20) # variance
damage = apply_guard(damage) # guard adjustment
@hp_damage = damage # damage HP
end
end
By adding a special line to the notes field, you can change how powerful a critical is for a weapon or enemy.
<critical_multiplier n>
Note that this will only be relevant for enemies if they are capable of dealing critical hits. The default, without this script, is 3. The default with the script is 3, except for unarmed actors where it is 2. Where a character is wielding two weapons, the better multiplier is used.
This script requires the TagNote 2.0 cript to function.
Download: http://chthonic.150m.com/scratch/Queex_scripts.zip
################################
# Variable Criticals #
########################################################
# Version 1.1 #
# Author: Queex #
# Licence: Creative Commons non-commercial attributive #
# Requires: TagNote 2.0+ #
#########################################################
# This replaces the fixed critical hit damage multipler #
# As before, weapons and enemies have a multiplier of 3 #
# if a new one is not specified. To give a weapon or #
# enemy a different bonus, include: #
# <critical_multiplier n> #
# in the note field. Decimals are allowed. This system #
# currently allows values less than 1 (so on a #
# critical, less damage is done). You can also adjust #
# the default unarmed multiplier, and the default #
# multipliers for weapons where it is not specified in #
# the notes field. #
# #
# Version History: #
# 1.0 First version #
# 1.1 Updated to TagNote 2.0 RELEASE #
#########################################################
class Game_Actor < Game_Battler
include TAGNOTE
UNARMED_MULTIPLIER=2
DEFAULT_MULTIPLIER=3
def critical_multiplier
multi=-1;
for weapon in weapons.compact
tmp = weapon_crit_multiplier(weapon)
multi = tmp if tmp > multi
end
multi = UNARMED_MULTIPLIER if multi < 0
return multi
end
def weapon_crit_multiplier(weapon)
tmp = get_tag(weapon.note,"critical_multiplier")
return tmp.to_f unless tmp==nil
return DEFAULT_MULTIPLIER
end
end
class Game_Enemy < Game_Battler
DEFAULT_MULTIPLIER=3
def critical_multiplier
tmp = get_tag(enemy.note,"critical_multiplier")
return tmp.to_f unless tmp==nil
return DEFAULT_MULTIPLIER
end
end
class Game_Battler
#--------------------------------------------------------------------------
# * Calculation of Damage From Normal Attack
# attacker : Attacker
# The results are substituted for @hp_damage
#--------------------------------------------------------------------------
def make_attack_damage_value(attacker)
damage = attacker.atk * 4 - self.def * 2 # base calculation
damage = 0 if damage < 0 # if negative, make 0
damage *= elements_max_rate(attacker.element_set) # elemental adjustment
damage /= 100
if damage == 0 # if damage is 0,
damage = rand(2) # half of the time, 1 dmg
elsif damage > 0 # a positive number?
@critical = (rand(100) < attacker.cri) # critical hit?
@critical = false if prevent_critical # criticals prevented?
if @critical
damage *= critical_multiplier # critical adjustment
damage = damage.to_i
end
end
damage = apply_variance(damage, 20) # variance
damage = apply_guard(damage) # guard adjustment
@hp_damage = damage # damage HP
end
end