Code:
#==============================================================================|
#  ** DoubleX RMVXA Reflect State v1.00a                                       |
#------------------------------------------------------------------------------|
#  * Changelog                                                                 |
#    v1.00b(GMT 0300 16-9-2017):                                               |
#    - Fixed reflecting to nil battlers bug                                    |
#    v1.00a(GMT 0800 27-1-2014):                                               |
#    - 1st version of this script finished                                     |
#------------------------------------------------------------------------------|
#  * Author                                                                    |
#    DoubleX                                                                   |
#------------------------------------------------------------------------------|
#  * Terms of use                                                              |
#    None other than not claiming this script as created by anyone except      |
#    DoubleX or his alias                                                      |
#------------------------------------------------------------------------------|
#  * Prerequisites                                                             |
#    Scripts:                                                                  |
#    - none                                                                    |
#    Knowledge:                                                                |
#    - Usage of notetags                                                       |
#------------------------------------------------------------------------------|
#  * Functions                                                                 |
#    - Adds reflect state reflecting non certain hit skill and item from anyone|
#      to enemies                                                              |
#------------------------------------------------------------------------------|
#  * Manual                                                                    |
#    To use this script, open the script editor and put this script into an    |
#    open slot between ▼ Materials and ▼ Main. Save to take effect.            |
#------------------------------------------------------------------------------|
#  * Compatibility                                                             |
#    Scripts aliasing or rewriting method:                                     |
#    - self.load_database under module DataManager                             |
#    - invoke_item under class Scene_Battle                                    |
#    may have compatibility issues with this script                            |
#    Place this script above those aliasing any of these methods if possible   |
#==============================================================================|
$imported = {} if $imported.nil?
$imported["DoubleX RMVXA Reflect State"] = true
#------------------------------------------------------------------------------|
#  * Notetag <reflect state> for states                                        |
#    To make states to reflect non certain hit skill and item from anyone to   |
#    enemies, put the above notetag into that state's notebox in the database. |
#------------------------------------------------------------------------------|
#==============================================================================|
#  ** You only need to edit this part as it's about what this script does      |
#------------------------------------------------------------------------------|
module DoubleX_RMVXA
  module Reflect_State
#------------------------------------------------------------------------------|
#  * REFLECT_PHYSICAL, default = false                                         |
#    Reflect state applies to physical attacks                                 |
#------------------------------------------------------------------------------|
  REFLECT_PHYSICAL = false
#------------------------------------------------------------------------------|
#  * REFLECT_MAGICAL, default = true                                           |
#    Reflect state applies to magical attacks                                  |
#------------------------------------------------------------------------------|
  REFLECT_MAGICAL = true
#------------------------------------------------------------------------------|
#  * REFLECT_TO_ENEMY_CASTER, default = true                                   |
#    Reflect state always reflects skills and items back to their casters if   |
#    they're enemies                                                           |
#------------------------------------------------------------------------------|
  REFLECT_TO_ENEMY_CASTER = true
  end # Reflect_State
end # DoubleX_RMVXA
#==============================================================================|
#==============================================================================|
#  ** You need not edit this part as it's about how this script works          |
#------------------------------------------------------------------------------|
module DoubleX_RMVXA
  module REGEXP
    module STATE
      REFLECT_STATE = /<(?:REFLECT_STATE|reflect state)>/i
    end # STATE
  end # REGEXP
end # DoubleX_RMVXA
module DataManager
  #----------------------------------------------------------------------------|
  #  Alias method: load_database                                               |
  #----------------------------------------------------------------------------|
  class <<self; alias load_database_reflect_state load_database; end
  def self.load_database
    load_database_reflect_state
    # This part is added by this script to load reflect state notetags
    load_notetags_reflect_state
  end # self.load_database
  #----------------------------------------------------------------------------|
  #  New method: load_notetags_reflect_state                                   |
  #----------------------------------------------------------------------------|
  def self.load_notetags_reflect_state
    for obj in $data_states
        next if obj.nil?
        obj.load_notetags_reflect_state
    end
  end # self.load_notetags_reflect_state
end # DataManager
class RPG::State < RPG::BaseItem
  #----------------------------------------------------------------------------|
  #  New public instance variable                                              |
  #----------------------------------------------------------------------------|
  attr_accessor :reflect_state
  #----------------------------------------------------------------------------|
  #  New common cache: load_notetags_reflect_state                             |
  #----------------------------------------------------------------------------|
  def load_notetags_reflect_state
    @reflect_state = false
    self.note.split(/[\r\n]+/).each { |line|
      case line
        when DoubleX_RMVXA::REGEXP::STATE::REFLECT_STATE
        @reflect_state = true
      end
    }
  end # load_notetags_reflect_state
end # RPG::State
class Game_BattlerBase
  #----------------------------------------------------------------------------|
  #  New method: reflect_state?                                                |
  #----------------------------------------------------------------------------|
  def reflect_state?(state)
    if state
      state.each { |a|
        return true if a.reflect_state
      }
    end
    return false
  end # reflect_state?
end # Game_BattlerBase
class Scene_Battle < Scene_Base
  #----------------------------------------------------------------------------|
  #  Alias method: invoke_item                                                 |
  #----------------------------------------------------------------------------|
  alias invoke_item_reflect_state invoke_item
  def invoke_item(target, item)
    # This part is rewritten by this script to handle reflect states
    if target.reflect_state?(target.states) && (item.physical? && DoubleX_RMVXA::Reflect_State::REFLECT_PHYSICAL || item.magical? && DoubleX_RMVXA::Reflect_State::REFLECT_MAGICAL)
      invoke_reflect_state(target, item)
    else
      invoke_item_reflect_state(target, item)
    end
    #
  end # invoke_item
  #----------------------------------------------------------------------------|
  #  New method: invoke_reflect_state                                          |
  #----------------------------------------------------------------------------|
  def invoke_reflect_state(target, item)
    if !@subject
      invoke_item_reflect_state(target, item)
    elsif @subject.opposite?(target)
      if DoubleX_RMVXA::Reflect_State::REFLECT_TO_ENEMY_CASTER
        @log_window.display_reflection(target, item)
        apply_item_effects(apply_substitute(@subject, item), item)
      else
        @log_window.display_reflection(target, item)
        apply_item_effects(apply_substitute(@subject.friends_unit.random_target, item), item)
      end
    else
      new_target = @subject.opponents_unit.random_target
      if new_target
        @log_window.display_reflection(target, item)
        apply_item_effects(apply_substitute(@subject.opponents_unit.random_target, item), item)
      else
        invoke_item_reflect_state(target, item)
      end
    end
  end # invoke_reflect_state
end # Scene_Battle
#==============================================================================|