#Critical Effects and Multipliers#----------##Features: Provides the ability to tweak the damage modifier of critical hits for# skills, weapons, classes, actors, and monsters, as well as determining# if they apply specific states (i.e critical hit means instant death)##Usage: Place any of the following into the note boxes of skills, weapons# classes, actors, or monsters:# <crit multiplier [multiplier]> # - [multiplier] is the percent difference in damage, can be any number# <crit state[#] [state id]># - [#] is 1-4, allowing one notebox to apply 4 states# - [state id] is the id# of the state to be applied##Examples: <crit multiplier 1000># <crit state1 2># <crit state2 6>##Game hangs or freezes up? Check the noteboxes related to last used skill for# a missing ">"#----------##-- Script by: V.M of D.T#--- Free to use in any project with credit given class Game_Battler alias crit_effect_make_damage_value make_damage_value alias crit_effect_execute_damage execute_damage alias crit_apply_critical apply_critical def make_damage_value(user, item)@crit_item = item@crit_target = usercrit_effect_make_damage_value(user, item) end def apply_critical(damage)damage = crit_apply_critical(damage)damage = apply_actor_multiplier(damage)damage = apply_class_multiplier(damage)damage = apply_weapon_multiplier(damage) if @crit_item.physical?damage = apply_skill_multiplier(damage) end def execute_damage(user)crit_effect_execute_damage(user)crit_apply_state if @result.critical end def apply_multiplier(note, start, damage)ends = startwhile ends != "banana" if note[ends] == ">" or note[ends] == '\n' then break end ends += 1endends -= 1damage * (1 + (note[start..ends].to_f / 100.0)) end def apply_skill_multiplier(damage)note = $data_skills[self.attack_skill_id].noteif note.index('<crit multiplier') == nil then return damage endstart = note.index('<crit multiplier') + 17apply_multiplier(note, start, damage) end def apply_actor_multiplier(damage)if @crit_target.is_a?(Game_Actor) note = $data_actors[@crit_target.id].noteelse note = $data_enemies[@crit_target.enemy_id].noteendif note.index('<crit multiplier') == nil then return damage endstart = note.index('<crit multiplier') + 17apply_multiplier(note, start, damage) end def apply_class_multiplier(damage)if @crit_target.is_a?(Game_Actor) note = $data_classes[@crit_target.class_id].note if note.index('<crit multiplier') == nil then return damage end start = note.index('<crit multiplier') + 17 apply_multiplier(note, start, damage)else damageend end def apply_weapon_multiplier(damage)if @crit_target.is_a?(Game_Actor) if @crit_target.equips[0] != nil note = $data_weapons[@crit_target.equips[0].id].note else note = "" end if note.index('<crit multiplier') == nil then return damage end start = note.index('<crit multiplier') + 17 apply_multiplier(note, start, damage)else damageend end def crit_apply_state@states_apply = []note = $data_skills[self.attack_skill_id].notepush_apply_states(note)if @crit_target.is_a?(Game_Actor) note = $data_actors[@crit_target.id].noteelse note = $data_enemies[@crit_target.enemy_id].noteendpush_apply_states(note)if @crit_target.is_a?(Game_Actor) note = $data_classes[@crit_target.class_id].note push_apply_states(note)endif @crit_target.is_a?(Game_Actor) if @crit_target.equips[0] != nil note = $data_weapons[@crit_target.equips[0].id].note else note = "" end push_apply_states(note)endfor i in @states_apply self.add_state(i)end end def push_apply_states(note)for i in Range.new(1,5) if note.index('<crit state' + i.to_s) != nilget_start_end(note, i)@states_apply.push(note[@start..@ends].to_i) endend end def get_start_end(note, i)start = note.index('<crit state' + i.to_s) + 13ends = startwhile ends != "banana" if note[ends] == ">" or note[ends] == "\n" then break end ends += 1end@start = start@ends = ends - 1 endend