#===============================================================================# # # Better Critical Chance # Custom Script File by TG22 # Mod by Roninator2 # This script creates skill notetags to give the developper a better control # of skills' critical chance #-------------------------------------------------------------------------------# # Status : v0 : Just implemented, needs alpha testing. #-------------------------------------------------------------------------------# # # Usage : In the skill notes you can add : # # # This notetag will override the battler crit chance (but not the "can-crit?" # flag of the skill). In this example, if the skill can crit, the chance is # 10%, whoever uses it. Only the target CEV can modify it. # Set the value to zero and the skill will not be able to crit. # The entered value must be an integer! # # # # Unless overriden by an "=" notetag, this skill will have an additional chance # to have a critical effect. In this example, if the user has 4% cri, the # resulting crit chance will be 4+5 = 9% or 9-5 = 4% # Note: the target's cev is applied to the final value (9%) # The entered value must be an integer! # # # Unless overriden by an "=" notetag, this skill will have a multiplied chance # to have a critical effect. In this example, if the user has 4% cri, the # resulting critical chance will be 4 * 1.10 = 4.4% # Note: the target's cev is applied to the final value (4.4%) # Note: Can be used to increase or decrease (<100%) crit chance. # The entered value must be an integer! # # Stacking : # # # If these two tags are used, and unless they are overriden by the "=" notetag, # if the battler has a base 4% cri, the resulting crit chance will be : # (4 + 5) * 1.10 = 9.9% chance. The multiply tag is applied after the # additive one. # Note: the target's cev is applied to the final value (9.9%) # #-------------------------------------------------------------------------------# # Compatibility : # Warning : the method # -Game_Battler > item_cri # is erased. #-------------------------------------------------------------------------------# # Configuration #===============================================================================# module TGTT module BETTERCRITCHANCE REGEXP_CRITCHANCE = //i end end #===============================================================================# # End of Configuration #-------------------------------------------------------------------------------# # Erasing the crit chance computation #===============================================================================# class Game_Battler < Game_BattlerBase def item_cri(user, item) #Zero crit chance if the critical flag is not set. return 0 unless item.damage.critical #Base user crit chance base_cri = user.cri #Apply additional notetag if item.critchance_additional != 0.0 base_cri += item.critchance_additional end #Apply subtractive notetag if item.critchance_subtractive != 0.0 base_cri -= item.critchance_subtractive base_cri = 0 if base_cri < 0 end #Apply multiplicative notetag if item.critchance_multiplier != 1.0 base_cri *= item.critchance_multiplier end #Apply overriding notetag, if present if !item.critchance_override.nil? base_cri = item.critchance_override end #Applying CEV to the final value. return base_cri * (1.0 - cev) end end #===============================================================================# # Notetag management #===============================================================================# module DataManager #Aliasing the module "static" method class << self alias hrpg_betcc_load_database load_database end def self.load_database hrpg_betcc_load_database hrpg_betcc_load_notetags end def self.hrpg_betcc_load_notetags for sk in $data_skills next if sk.nil? sk.hrpg_betcc_load_notetags end end end class RPG::BaseItem attr_accessor :critchance_additional attr_accessor :critchance_subtractive attr_accessor :critchance_multiplier attr_accessor :critchance_override def hrpg_betcc_load_notetags #Default values. @critchance_additional = 0.0 @critchance_subtractive = 0.0 @critchance_multiplier = 1.0 @critchance_override = nil #nil means not present. Do not change that. self.note.split(/[\r\n]+/).each do |line| case line when TGTT::BETTERCRITCHANCE::REGEXP_CRITCHANCE case $1 when '+' @critchance_additional = $2.to_i * 0.01 when '-' @critchance_subtractive = $2.to_i * 0.01 when 'x' @critchance_multiplier = $2.to_i * 0.01 when '=' @critchance_override = $2.to_i * 0.01 end end end end end