Code:
=begin
????????????????????????????????????????????????????????????????????????????????
? Common Event Self Variables XP                                               ?
? Version 1.0                                                                  ?
? by PK8                                                                       ?
? 9/16/09                                                                      ?
? http://rmvxp.com                                                             ?
????????????????????????????????????????????????????????????????????????????????
? ? Table of Contents                                                          ?
? ?? Author's Notes                - Line 18?21                                ?
? ?? Introduction & Description    - Line 23?29                                ?
? ?? Features                      - Line 31?33                                ?
? ?? How to Use                    - Line 35?62                                ?
? ?? This aliases the following... - Line 64,65                                ?
? ?? Thanks                        - Line 67?71                                ?
? ?? Changelog                     - Line 73,74                                ?
????????????????????????????????????????????????????????????????????????????????
? ? Author's Notes                                                             ?
? Lowell/Adalwulf mentioned creating a "Personal Variables" system which filled?
? my head in with ideas about variables and switches. One of these ideas being ?
? giving COMMON EVENTS their own self variables.                               ?
????????????????????????????????????????????????????????????????????????????????
? ? Introduction & Description                                                 ?
? This script is a similar to that of the built in feature: Self Switches.     ?
? For those not familiar with Self Switches, Self Switches pretty much pertain ?
? to a specific event. Example: Treasure Chests.                               ?
?                                                                              ?
? Common Event Self Variables allows developers to set certain variables       ?
? pertaining to a certain Common Event.                                        ?
????????????????????????????????????????????????????????????????????????????????
? ? Features                                                                   ?
? ? Set Common Event's self variables via call script. (How to use is below)   ?
? ? Get Common Event's self variables via call script. (How to use is below)   ?
????????????????????????????????????????????????????????????????????????????????
? ? How to Use                                                                 ?
?                                                                              ?
? ? Setting up a Common Event's self variable:                                 ?
?   To set a self variable for a common event, you'll need to call this script:?
?     ce_self_variable(ceid, id, value, oper)                                  ?
?       ceid: Common Event's ID                                                ?
?       id:   Common Event's Self Variable ID. Example: 'A', 'B'               ?
?       value:  Give it a value.                                               ?
?       oper:   0: Set, 1: Add, 2: Sub, 3: Mul, 4: Div, 5: Mod                 ?
?   Example: ce_self_variable(1, 'A', 5, 0) sets the first Common Event's      ?
?            variable "A" to 5.                                                ?
?                                                                              ?
? ? Getting a Common Event's self variable:                                    ?
?   To get a self variable of a Common Event, you can call this script.        ?
?     ce_self_variable(ceid, id)                                               ?
?       ceid: Common Event's ID                                                ?
?       id:   Common Event's Self Variable ID. Example: 'A', 'B'               ?
?   Example: ce_self_variable(1, 'A') gets Common Event's variable "A".        ?
?                                                                              ?
? ? Using Common Event's self variable in evented if conditions.               ?
?   To do this, go to the conditional branch event command, click on the fourth?
?   tab, select Script and type either of these in the input form:             ?
?       ce_self_variable(ceid, id) == value   <- Equal to.                     ?
?       ce_self_variable(ceid, id) >= value   <- Greater than or Equal to.     ?
?       ce_self_variable(ceid, id) <= value   <- Less than or Equal to.        ?
?       ce_self_variable(ceid, id) > value    <- Greater than.                 ?
?       ce_self_variable(ceid, id) < value    <- Less than.                    ?
?       ce_self_variable(ceid, id) != value   <- Not Equal to.                 ?
????????????????????????????????????????????????????????????????????????????????
? ? This aliases the following...                                              ?
? initialize - Game_Map                                                        ?
????????????????????????????????????????????????????????????????????????????????
? ? Thanks                                                                     ?
? Lowell: He mentioned creating a personal variables system for his project    ?
?         which made me catch "the scripting bug".                             ?
? Kain Nobel: I'm using Kain Nobel's modifications to the Actor & Party's Self ?
?             Switches script as a base.                                       ?
????????????????????????????????????????????????????????????????????????????????
? ? Changelog                                                                  ?
? Version 1.0 - 9/16/09: Initial Release                                       ?
????????????????????????????????????????????????????????????????????????????????
=end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles maps. It includes scrolling and passage determination
# functions. The instance of this class is referenced by $game_map.
#==============================================================================
class Game_Map
  attr_accessor :ce_self_variables
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias_method :ceselfvariables_gmmap_initialize, :initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(*args)
    ceselfvariables_gmmap_initialize(*args)
    @ce_self_variables = Game_Map::CE_SelfVariables.new
  end
end
#==============================================================================
# ** Game_Map::CE_SelfVariables
#------------------------------------------------------------------------------
#  This handles variables. It's a wrapper for the built-in class "Array."
# The instance of this class is referenced by $game_map.ce_self_variables.
#==============================================================================
class Game_Map::CE_SelfVariables
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @data = {}
  end
  #--------------------------------------------------------------------------
  # * Get Self Variable of Common Event
  #     key : key
  #--------------------------------------------------------------------------
  def [](key)
    if @data[key] == nil
      return 0
    else
      return @data[key]
    end
  end
  #--------------------------------------------------------------------------
  # * Set Self Variable of Common Event
  #     key   : key
  #     value : value
  #--------------------------------------------------------------------------
  def []=(key, value)
    @data[key] = value
  end
end
#==============================================================================
# ** Interpreter
#------------------------------------------------------------------------------
#  This interpreter runs event commands. This class is used within the
#  Game_System class and the Game_Event class.
#==============================================================================
class Interpreter
  #--------------------------------------------------------------------------
  # * Control Common Event Self variable
  #--------------------------------------------------------------------------
  def ce_self_variable(ceid, id, value = nil, oper = nil)
    if $data_common_events[ceid].id > 0 and $data_common_events[ceid] != nil
      key = [$data_common_events[ceid].id, id]
      if value != nil
        case oper
        when nil, 0, 'equal', 'set', '='                     # Setting
          $game_map.ce_self_variables[key] = value
        when 1, 'add', '+'                                   # Adding
          $game_map.ce_self_variables[key] += value
        when 2, 'sub', 'subtract', '-'                       # Subtracting
          $game_map.ce_self_variables[key] -= value
        when 3, 'mul', 'multiply', 'x', '*'                  # Multiplying
          $game_map.ce_self_variables[key] *= value
        when 4, 'div', 'divide', '/'                         # Dividing
          $game_map.ce_self_variables[key] /= value if value != 0
        when 5, 'mod', 'modular', '%'                        # Modulating
          $game_map.ce_self_variables[key] %= value if value != 0
        end
      else
        return $game_map.ce_self_variables[key]
      end
    end
    $game_map.need_refresh = true
    return true
  end
end