class Game_Action #-------------------------------------------------------------------------- # * Set Confusion Action #-------------------------------------------------------------------------- def set_confusion if subject.enemy? == true subject.make_actions else confused_skill = Array.new confused_skill.push($data_skills[subject.attack_skill_id]) if subject.attack_usable? confused_skill.push($data_skills[subject.guard_skill_id]) if subject.guard_usable? confused_skill.concat(subject.usable_skills) confused_skill.concat(subject.usable_items) @item.object = confused_skill[rand(confused_skill.size-1)] end end #-------------------------------------------------------------------------- # * Create Target Array #-------------------------------------------------------------------------- unless method_defined?(:ex_ga_make_targets) alias_method(:ex_ga_make_targets, :make_targets) end def make_targets(*args, &block) if !forcing && subject.confusion? return confusion_target if confusion_target.is_a?(Array) end ex_ga_make_targets(*args, &block) end #-------------------------------------------------------------------------- # * Target When Confused #-------------------------------------------------------------------------- def confusion_target(*args, &block) case subject.confusion_level when 1 unit_scope(opponents_unit) when 2 if rand(2) == 0 unit_scope(opponents_unit) else unit_scope(friends_unit) end else unit_scope(friends_unit) end end #-------------------------------------------------------------------------- # * Unit Scope #-------------------------------------------------------------------------- def unit_scope(unit) if item.for_random? Array.new(item.number_of_targets) { unit.random_target } elsif item.for_user? [subject] elsif item.for_dead_friend? if item.for_one? [unit.smooth_dead_target(@target_index)] else unit.dead_members end elsif item.for_one? num = 1 + (attack? ? subject.atk_times_add.to_i : 0) if @target_index < 0 [unit.random_target] * num else [unit.smooth_target(@target_index)] * num end else unit.alive_members end end endclass Game_Actor #-------------------------------------------------------------------------- # * Get Array of Currently Usable Items #-------------------------------------------------------------------------- def usable_items $game_party.items.select {|item| usable?(item) } end end