Код:
	#==============================================================================
# ** RPG::UsableItem
#------------------------------------------------------------------------------
#  Сверхкласс для RPG::Item и RPG::Skill.
#==============================================================================
module RPG
  ##
  # Сверхкласс для RPG::Item и RPG::Skill.
  ## 
  class UsableItem < BaseItem
    #==========================================================================
    #                                Атрибуты
    #========================================================================== 
    
    # Название объекта.
    # @return [String] 
    attr_accessor :name
    
    # Область применения.
    # @return [Integer]
    attr_accessor :scope
    
    # Где возможно применение.
    # @note 0: всегда, 1: только в битве, 2: только из меню, 3: никогда.
    # @return [Integer]
    attr_accessor :occasion    
    
    # Коррекция скорости применения.
    # @note Используется в VX.
    # @return [Integer]
    attr_accessor :speed
    
    # ID анимации эффекта.
    # @note Используется в VX.
    # @return [Integer]
    attr_accessor :animation_id
    
    # ID анимации применения.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :animation1_id
    
    # ID анимации эффекта.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :animation2_id
    
    # ID вызываемого события.
    # @return [Integer]
    attr_accessor :common_event_id
    
    # Базовый урон.
    # @note Используется в VX.
    # @return [Integer]
    attr_accessor :base_damage
    
    # Процент разбрасываемого урона.
    # @note Используется в VX.
    # @return [Integer]
    attr_accessor :variance
    
    # Процент влияния силы атаки эффект.
    # @return [Integer]
    attr_accessor :atk_f
    
    # Процент влияния силы духа на эффект.
    # @note Используется в VX.
    # @return [Integer]
    attr_accessor :spi_f
    
    # Процент влияния уклонения на эффект.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :eva_f
    
    # Процент влияния силы на эффект.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :str_f
    
    # Процент влияния ловкости на эффект.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :dex_f
    
    # Процент влияния скорости на эффект.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :agi_f
    
    # Процент влияния интеллекта на эффект.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :int_f
    
    # Процент влияния физической защиты на эффект.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :pdef_f
    
    # Процент влияния магической защиты на эффект.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :mdef_f
    
    # Вероятность воздействия эффекта.
    # @note Используется в XP.
    # @return [Integer]
    attr_accessor :hit
    
    # Флаг активной опции [Физическая атака]
    # @note Используется в VX.
    # @return [Bool]
    attr_accessor :physical_attack
    
    # Флаг активной опции [Повреждение ОМ]
    # @note Используется в VX.
    # @return [Bool]
    attr_accessor :damage_to_mp
    
    # Флаг активной опции [Поглащение жизни]
    # @note Используется в VX.
    # @return [Bool]
    attr_accessor :absorb_damage
    
    # Флаг активной опции [Игнорирование защиты]
    # @note Используется в VX.
    # @return [Bool]
    attr_accessor :ignore_defense
    
    # Список ID элементов.
    # @return [Array[Integer]]
    attr_accessor :element_set
    
    # Список ID добавляемых состояний.
    # @return [Array[Integer]]
    attr_accessor :plus_state_set
    
    # Список ID снимаемых состояний.
    # @return [Array[Integer]]
    attr_accessor :minus_state_set
    
    #==========================================================================
    #                                 Методы
    #==========================================================================
    
    ##
    # Инициализирует переменные класса, присваивает им значения по умолчанию
    # @note Вызывается автоматически при создании нового экземпляра
    # @return [NilClass]
    ## 
    def initialize
      super
      @scope = 0
      @occasion = 0
      @speed = 0
      @animation_id = 0
      @animation1_id = 0
      @animation2_id = 0
      @common_event_id = 0
      @base_damage = 0
      @variance = 20
      @atk_f = 0
      @spi_f = 0
      @eva_f = 0
      @str_f = 0
      @dex_f = 0
      @agi_f = 0
      @int_f = 0
      @pdef_f = 0
      @mdef_f = 0
      @hit = 0
      @physical_attack = false
      @damage_to_mp = false
      @absorb_damage = false
      @ignore_defense = false
      @element_set = []
      @plus_state_set = []
      @minus_state_set = []
    end
    
    ##
    # Определяет, может ли эффект воздействовать на врагов.
    # @return Boolean
    ## 
    def for_opponent?
      return [1, 2].include?(@scope) if Kernel.isXP?
      return [1, 2, 3, 4, 5, 6].include?(@scope) if Kernel.isVX?
    end
    
    ##
    # Определяет, может ли эффект воздействовать на союзников.
    # @return Boolean
    ## 
    def for_friend?
      return [3, 4, 5, 6].include?(@scope) if Kernel.isXP?
      return [7, 8, 9, 10, 11].include?(@scope) if Kernel.isVX?
    end
    
    ##
    # Определяет, может ли эффект воздействовать на мертвых союзников.
    # @return Boolean
    ## 
    def for_dead_friend?
      return [5, 6].include?(@scope) if Kernel.isXP?
      return [9, 10].include?(@scope) if Kernel.isVX?
    end
    
    ##
    # Определяет, может ли эффект воздействовать на вызавшего его.
    # @return Boolean
    ## 
    def for_user?
      return (@scope == (Kernel.isXP? ? 7 : 11))
    end
    
    ##
    # Определяет, является ли целью эффекта один актер.
    # @return Boolean
    ## 
    def for_one?
      return [1, 3, 5, 7].include?(@scope) if Kernel.isXP?
      return [1, 3, 4, 7, 9, 11].include?(@scope)
    end
    
    ##
    # Определяет, являются ли целью эффекта два актера.
    # @return Boolean
    ## 
    def for_two?
      return (Kernel.isXP? ? false : @scope == 5)
    end
    
    ##
    # Определяет, являются ли целью эффекта три актера.
    # @return Boolean
    ##
    def for_three?
      return (Kernel.isXP? ? false : @scope == 6)
    end
    
    ##
    # Определяет, воздействует ли эффект на случайную цель.
    # @return Boolean
    ##
    def for_random?
      return (Kernel.isXP? ? false : [4, 5, 6].include?(@scope))
    end
    
    ##
    # Определяет, являются ли целью эффекта все актеры.
    # @return Boolean
    ##
    def for_all?
      return [2, 4, 6].include?(@scope) if Kernel.isXP?
      return [2, 8, 10].include?(@scope)
    end
    
    ##
    # Определяет, будет ли эффект применен дважды к одному актеру.
    # @return Boolean
    ##
    def dual?
      return (Kernel.isXP? ? false : @scope == 3)
    end
    
    ##
    # Определяет, нужно ли указать цель.
    # @return Boolean
    ##
    def need_selection?
      return [1, 3, 5].include?(@scope) if Kernel.isXP?
      return [1, 3, 7, 9].include?(@scope) if Kernel.isVX?
    end
    
    ##
    # Определяет, возможно ли использовать предмет в бою.
    # @return Boolean
    ##
    def battle_ok?
      return [0, 1].include?(@occasion)
    end
    
    ##
    # Определяет, возможно ли использовать предмет вне боя.
    # @return Boolean
    ##
    def menu_ok?
      return [0, 2].include?(@occasion)
    end
    #--------------------------------------------------------------------------
  end
  #----------------------------------------------------------------------------
end
#==============================================================================
 
Социальные закладки