module PC27 module CritAnimation WooshSound = "Absorb1" #ActorSounds = 3 Picture1 = 2 Picture2 = 1 endendclass Scene_Battle alias pc27_crit_effect_show_animation show_animation def show_animation(targets, animation_id) item = @subject.current_action.item targets.each { |target| target.eval_crit(@subject, item) } show_critical_animation if actor_crit?(targets) pc27_crit_effect_show_animation(targets, animation_id) end def show_critical_animation RPG::SE.new(PC27::CritAnimation::WooshSound).play wait(30) RPG::SE.new("Attack2").play show_crit_background show_crit_actor move_crit_actor(Graphics.width * 0.5 - 50, 20) RPG::SE.new("Attack3").play move_crit_actor(Graphics.width * 0.5 + 50, 60) move_crit_actor(Graphics.width + 50, 20) erease_crit_actor erease_crit_background end def show_crit_actor name = @subject.name + "CritImg" y = Graphics.height * 0.5 $game_troop.screen.pictures[PC27::CritAnimation:

icture1].show(name, 1, -50, y, 100, 100, 255, 0) end def move_crit_actor(x, time) y = Graphics.height * 0.5 $game_troop.screen.pictures[PC27::CritAnimation:

icture1].move(1, x, y, 100, 100, 255, 0, time) wait(time) end def erease_crit_actor $game_troop.screen.pictures[PC27::CritAnimation:

icture1].erase end def show_crit_background x = Graphics.width * 0.5 y = Graphics.height * 0.5 $game_troop.screen.pictures[PC27::CritAnimation:

icture2].show("CritBG", 1, x, y, 100, 100, 255, 0) end def erease_crit_background $game_troop.screen.pictures[PC27::CritAnimation:

icture2].erase end def actor_crit?(targets) return false unless @subject.is_a?(Game_Actor) targets.each do |target| return true if target.result.critical end return false end endclass Game_Battler def eval_crit(user, item) @result.critical = (rand < item_cri(user, item)) end def item_apply(user, item) crit = @result.critical @result.clear @result.used = item_test(user, item) @result.missed = (@result.used && rand >= item_hit(user, item)) @result.evaded = (!@result.missed && rand < item_eva(user, item)) if @result.hit? unless item.damage.none? @result.critical = crit make_damage_value(user, item) execute_damage(user) end item.effects.each {|effect| item_effect_apply(user, item, effect) } item_user_effect(user, item) end endend