Help - Search - Members - Calendar
Full Version: Yet another (small maybe) request for Yan's YEM Item Overhaul
RPG RPG Revolution Forums > Scripting > Script Development and Support > Script Requests
Destinynite1
I was playing around with YEM Item Overhaul but I noticed something, you can't change it to a new window if your weapons/armor guards/resists certain effects. How difficult would it be to make it so you can press 'A' or 'Shift' and make it so it moves to a new window with the rest of these effects? And if not hard at all, could someone do it for me?

EDIT: I can include Yan's normal script or I could PM it to whoever takes this request

EDIT: See attachment. I can only have 4 effects in that window, and most of my items/weapons/armor have multiple effects/requirements and it all doesnt fit on there. I need a new window that will allow another set of effects (without the Stats from the first page) so it allows swapping between windows.
Destinynite1
Bump (Im sorry for it not being two days). Added a picture with some more detail
Destinynite1
Bump
Destinynite1
Bumpers
Destinynite1
And another bump because of the dire need for this.
Destinynite1
Bump
Shaddow
Sorry for the massive delay, dunno how I didn't see this topic. Anyways post the script, I'll see what I can do. I make no promises, but hey I was able to figure out the last problem. sweat.gif

Remember, post it in the code box.
Destinynite1
Will do. Sorry for not responding D= PC issues =\

CODE
#===============================================================================
#
# Yanfly Engine Melody - Item Overhaul
# Last Date Updated: 2010.06.20
# Level: Normal, Hard
#
# The item scene can become seriously lacking as it often keeps players in the
# dark as to what items actually do. This script rewrites the item scene and
# provides the player adequate information about how an item functions, be it
# a healing item, battle item, weapon, or a piece of armour. And if needed,
# custom data can be inserted, too.
#
#===============================================================================
# Updates
# -----------------------------------------------------------------------------
# o 2010.06.20 - Finished Script.
# o 2010.06.18 - Started Script.
#===============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Item and Equip Tags - For Items, Weapons, and Armours.
# -----------------------------------------------------------------------------
# <key item>
# This labels the item as a key item, making it appear in the key item category
# inside of the item scene. Does nothing else.
#
# <custom data>
# icon, string1, string2
# </custom data>
# This allows you to input in custom data to be displayed in the item list
# data window. Replace "icon" with a number to depict which icon you want
# shown in the data. Replace "string1" with the category you want shown in the
# data. Replace "string2" with the text you want shown in the data.
#===============================================================================

$imported = {} if $imported == nil
$imported["ItemOverhaul"] = true

module YEM
  module ITEM
    
    #==========================================================================
=
    # Section I. Basic Settings
    # --------------------------------------------------------------------------
    # The following below will adjust the basic settings and vocabulary that
    # alter the basic item scene the players see before them.
    #==========================================================================
=
    
    # This adjusts the commands used within the item scene. The command window
    # is the window that lets you switch between various item scene options.
    #
    # :usable           Opens up usable menu items.
    # :battle           Views battle-only items.
    # :weapons          Views weapons list.
    # :armours          Views armours list.
    # :misc             Views miscellaneous items.
    # :key_items        Views key items.
    # :all_items        Views all items.
    #
    COMMANDS =[
      :usable,        # Opens up usable menu items.
      :battle,        # Views battle-only items.
      :weapons,       # Views weapons list.
      :armours,       # Views armours list.
      :misc,          # Views miscellaneous items.
      :key_items,     # Views key items.
    # :all_items,     # Views all items.
    ] # Do not remove this.
    
    # The following determines the vocabulary used for the remade item scene.
    # Adjust it accordingly to set the way text is displayed.
    VOCAB ={
      :usable         => "Usable",
      :battle         => "Battle",
      :weapons        => "Weapons",
      :armours        => "Armours",
      :misc           => "Various",
      :key_items      => "Key Items",
      :all_items      => "All Items",
    } # Do not remove this.
    
    #==========================================================================
=
    # Section II. Data Window Settings
    # --------------------------------------------------------------------------
    # These settings adjust what you see in the data window shown to the lower
    # right of the item scene. The window shows the selected item's properties.
    # The data represented differs depending on the item, its tags, and whether
    # or not it is an item, weapon, or armour.
    #==========================================================================
=
    
    # These constants determine how the gold value appears in the data windows.
    DRAW_GOLD_ICON  = 205
    DRAW_GOLD_TEXT  = "Value"
    
    # This adjusts the settings shown for items. Adjust as you see fit. The
    # majority of these keys are vocab settings.
    ITEM_DATA ={
      :properties   => "Properties",
      :gold_value   => true,
      :fontsize     => 16,
      :hp_heal_icon => 128,
      :hp_heal_text => "HP Heal",
      :mp_heal_icon => 214,
      :mp_heal_text => "MP Heal",
      :dmg_icon     => 119,
      :base_dmg     => "Base Damage",
      :heal_icon    => 128,
      :base_heal    => "Base Healing",
      :multiplier   => "%s Multiplier",
      :element      => "Element",
      :add_state    => "Applies",
      :rem_state    => "Cancels",
      :growth       => "%s Growth",
      :resist       => "%s Resist",
      :bonus        => "%s Bonus",
    } # Do not remove this.
    
    # This adjusts the settings shown for equipment. Adjust as you see fit. For
    # :shown_stats, valid stats to be shown are as follows:
    #   :hp, :mp, :atk, :def, :spi, :res, :dex, :agi
    EQUIP_DATA ={
      :properties   => "Attributes",
      :gold_value   => false,
      :fontsize     => 16,
      :shown_stats  => [:hp, :mp, :atk, :def, :spi, :res, :dex, :agi],
      :ele_weapon   => "Adds",
      :ele_armour   => "Guards",
      :state_weapon => "Applies",
      :state_armour => "Resists",
    } # Do not remove this.
    
    # This array contains all of the elements you want displayed and in which
    # order to display them in. You can display them as individual integers or
    # as number ranges.
    SHOWN_ELEMENTS = [3, 4, 5, 6..10]
    
    # Since elements do not have icons innately, use the following hash below
    # adjust and apply icons to them.
    ELEMENT_ICONS ={
      3 => 104,  # Fire element.
      4 => 105,  # Ice element.
      5 => 106,  # Volt element.
      6 => 108,  # Earth element.
      7 => 107,  # Water element.
      8 => 109,  # Air element.
      9 => 110,  # Light element.
     10 => 111,  # Dark element.
    } # Do not remove this.
    
  end # ITEM
end # YEM

#===============================================================================
# Editting anything past this point may potentially result in causing computer
# damage, incontinence, explosion of user's head, coma, death, and/or halitosis.
# Therefore, edit at your own risk.
#===============================================================================

module YEM
  module REGEXP
  module BASEITEM
      
    KEY_ITEM = /<(?:KEY_ITEM|key item|key)>/i
    
    CUSTOM_DATA1 = /<(?:CUSTOM_DATA|custom data)>/i
    CUSTOM_DATA2 = /<\/(?:CUSTOM_DATA|custom data)>/i
    
  end # BASEITEM
  end # REGEXP
  module ITEM
    module_function
    #--------------------------------------------------------------------------
    # convert_integer_array
    #--------------------------------------------------------------------------
    def convert_integer_array(array)
      result = []
      array.each { |i|
        case i
        when Range; result |= i.to_a
        when Integer; result |= [i]
        end }
      return result
    end
  
    #--------------------------------------------------------------------------
    # converted_contants
    #--------------------------------------------------------------------------
    SHOWN_ELEMENTS = convert_integer_array(SHOWN_ELEMENTS)
  end # ITEM
end # YEM

#===============================================================================
# module Icon
#===============================================================================

module Icon
  
  #--------------------------------------------------------------------------
  # self.gold_cost
  #--------------------------------------------------------------------------
  def self.gold_cost; return YEM::ITEM::DRAW_GOLD_ICON; end
  
  #--------------------------------------------------------------------------
  # self.element
  #--------------------------------------------------------------------------
  def self.element(element_id)
    icon = YEM::ITEM::ELEMENT_ICONS[element_id]
    return (icon == nil) ? 0 : icon
  end
  
  #--------------------------------------------------------------------------
  # self.hp_heal
  #--------------------------------------------------------------------------
  def self.hp_heal; return YEM::ITEM::ITEM_DATA[:hp_heal_icon]; end
  
  #--------------------------------------------------------------------------
  # self.mp_heal
  #--------------------------------------------------------------------------
  def self.mp_heal; return YEM::ITEM::ITEM_DATA[:mp_heal_icon]; end
  
  #--------------------------------------------------------------------------
  # self.base_damage
  #--------------------------------------------------------------------------
  def self.base_damage; return YEM::ITEM::ITEM_DATA[:dmg_icon]; end
  
  #--------------------------------------------------------------------------
  # self.base_healing
  #--------------------------------------------------------------------------
  def self.base_healing; return YEM::ITEM::ITEM_DATA[:heal_icon]; end
  
  #--------------------------------------------------------------------------
  # self.stat
  #--------------------------------------------------------------------------
  def self.stat(actor, item); return 0; end
  
end # Icon

#===============================================================================
# RPG::BaseItem
#===============================================================================

class RPG::BaseItem
  
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :custom_data
  attr_accessor :key_item
  
  #--------------------------------------------------------------------------
  # common cache: yem_cache_baseitem_io
  #--------------------------------------------------------------------------
  def yem_cache_baseitem_io
    return if @cached_baseitem_io; @cached_baseitem_io = true
    @key_item = false
    enable_custom_data = false
    @custom_data = [] unless self.is_a?(RPG::Skill)
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEM::REGEXP::BASEITEM::KEY_ITEM
        @key_item = true
      #---
      when YEM::REGEXP::BASEITEM::CUSTOM_DATA1
        next if self.is_a?(RPG::Skill)
        enable_custom_data = true
      when YEM::REGEXP::BASEITEM::CUSTOM_DATA2
        next if self.is_a?(RPG::Skill)
        enable_custom_data = false
      when /(\d+),[ ](.*),[ ](.*)/i
        next unless enable_custom_data
        next if self.is_a?(RPG::Skill)
        array = [$1.to_i, $2.to_s, $3.to_s]
        @custom_data.push(array)
      end
    } # end self.note.split
  end # yem_cache_baseitem_io
  
end # RPG::BaseItem

#===============================================================================
# Scene_Title
#===============================================================================

class Scene_Title < Scene_Base
  
  #--------------------------------------------------------------------------
  # alias method: load_bt_database
  #--------------------------------------------------------------------------
  alias load_bt_database_io load_bt_database unless $@
  def load_bt_database
    load_bt_database_io
    load_io_cache
  end
  
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  alias load_database_io load_database unless $@
  def load_database
    load_database_io
    load_io_cache
  end
  
  #--------------------------------------------------------------------------
  # new method: load_io_cache
  #--------------------------------------------------------------------------
  def load_io_cache
    groups = [$data_items, $data_weapons, $data_armors]
    for group in groups
      for obj in group
        next if obj == nil
        obj.yem_cache_baseitem_io if obj.is_a?(RPG::BaseItem)
      end
    end
  end
  
end # Scene_Title

#===============================================================================
# Window_ItemStatus
#===============================================================================

class Window_ItemStatus < Window_Base
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize
    super(160, 0, Graphics.width - 160, 128)
    refresh
  end
  
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item = @item_window == nil ? nil : @item_window.item
    draw_item
    draw_party_members
  end
  
  #--------------------------------------------------------------------------
  # set_item_window
  #--------------------------------------------------------------------------
  def set_item_window(new_item_window)
    @item_window = new_item_window
    update
  end
  
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    return if @item_window == nil
    refresh if @item != @item_window.item
  end
  
  #--------------------------------------------------------------------------
  # draw_item
  #--------------------------------------------------------------------------
  def draw_item
    return if @item == nil
    draw_icon(@item.icon_index, 0, 0)
    self.contents.draw_text(24, 0, contents.width-28, WLH, @item.name, 0)
  end
  
  #--------------------------------------------------------------------------
  # draw_party_members
  #--------------------------------------------------------------------------
  def draw_party_members
    $game_temp.in_battle = true
    size = $game_party.members.size
    dx = (contents.width - (size * 64))/2 + 32
    dy = contents.height * 3/4
    for member in $game_party.members
      next if member == nil
      draw_member(member, dx, dy)
      dx += 64
    end
    $game_temp.in_battle = false
  end
  
  #--------------------------------------------------------------------------
  # draw_member
  #--------------------------------------------------------------------------
  def draw_member(actor, dx, dy)
    bitmap = Cache.character(actor.character_name)
    sign = actor.character_name[/^[\!\$]./]
    if sign != nil and sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
    end
    n = actor.character_index
    src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
    if @item.is_a?(RPG::Weapon) or @item.is_a?(RPG::Armor)
      opacity = actor.equippable?(@item) ? 255 : 128
    elsif @item.is_a?(RPG::Item)
      opacity = @item.for_friend? ? 255 : 128
    else
      opacity = 255
    end
    self.contents.blt(dx - cw / 2, dy - ch, bitmap, src_rect, opacity)
  end
  
end # Window_ItemStatus

#===============================================================================
# Window_ItemList
#===============================================================================

class Window_ItemList < Window_Selectable
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(help_window)
    @help_window = help_window
    dy = @help_window.y + @help_window.height
    super(0, dy, Graphics.width - 240, Graphics.height - dy)
    refresh
    self.active = false
    self.index = 0
  end
  
  #--------------------------------------------------------------------------
  # item
  #--------------------------------------------------------------------------
  def item; return @data[[self.index, 0].max]; end
  
  #--------------------------------------------------------------------------
  # used_item_refresh
  #--------------------------------------------------------------------------
  def used_item_refresh(array)
    for item in array
      next if item == nil
      next unless @data.include?(item)
      refresh
      break
    end
  end
  
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    for item in $game_party.items
      next unless include?(item)
      @data.push(item)
    end
    @data.push(nil) if @data.size <= 0
    @item_max = @data.size
    self.index = [self.index, @item_max - 1].min
    create_contents
    for i in 0...@item_max; draw_item(i); end
  end
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    return false if item.name == ""
    return false unless item.is_a?(RPG::Item)
    return item.menu_ok?
  end
  
  #--------------------------------------------------------------------------
  # draw_item
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    return if item == nil
    enabled = enable?(item)
    draw_obj_name(item, rect.clone, enabled)
    draw_obj_charges(item, rect.clone, enabled)
    draw_obj_total(item, rect.clone, enabled)
  end
  
  #--------------------------------------------------------------------------
  # enable?
  #--------------------------------------------------------------------------
  def enable?(item)
    return false if item == nil
    return $game_party.has_item?(item)
  end
  
  #--------------------------------------------------------------------------
  # new method: draw_obj_name
  #--------------------------------------------------------------------------
  def draw_obj_name(obj, rect, enabled)
    draw_icon(obj.icon_index, rect.x, rect.y, enabled)
    self.contents.font.size = Font.default_size
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    rect.width -= 48
    self.contents.draw_text(rect.x+24, rect.y, rect.width-24, WLH, obj.name)
  end
  
  #--------------------------------------------------------------------------
  # new method: draw_obj_charges
  #--------------------------------------------------------------------------
  def draw_obj_charges(obj, rect, enabled)
    return unless $imported["BattleEngineMelody"]
    return unless obj.is_a?(RPG::Item)
    return unless obj.consumable
    return if obj.charges <= 1
    $game_party.item_charges = {} if $game_party.item_charges == nil
    $game_party.item_charges[obj.id] = obj.charges if
      $game_party.item_charges[obj.id] == nil
    charges = $game_party.item_charges[obj.id]
    dx = rect.x; dy = rect.y + WLH/3
    self.contents.font.size = YEM::BATTLE_ENGINE::ITEM_SETTINGS[:charge]
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(dx, dy, 24, WLH * 2/3, charges, 2)
    self.contents.font.size = Font.default_size
  end
  
  #--------------------------------------------------------------------------
  # new method: draw_obj_total
  #--------------------------------------------------------------------------
  def draw_obj_total(obj, rect, enabled)
    if $imported["BattleEngineMelody"]
      hash = YEM::BATTLE_ENGINE::ITEM_SETTINGS
    else
      hash ={ :size => Font.default_size, :colour => 0, :text => "×%2d" }
    end
    number = $game_party.item_number(obj)
    dx = rect.x + rect.width - 36; dy = rect.y; dw = 32
    text = sprintf(hash[:text], number)
    self.contents.font.size = hash[:size]
    self.contents.font.color = text_color(hash[:colour])
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(dx, dy, dw, WLH, text, 2)
  end
  
  #--------------------------------------------------------------------------
  # update_help
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(item == nil ? "" : item.description)
  end
  
end # Window_ItemList

#===============================================================================
# Window_BattleItemList
#===============================================================================

class Window_BattleItemList < Window_ItemList
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    return false if item.name == ""
    return false unless item.is_a?(RPG::Item)
    return false if item.menu_ok?
    return item.battle_ok?
  end
  
end # Window_BattleItemList

#===============================================================================
# Window_WeaponItemList
#===============================================================================

class Window_WeaponItemList < Window_ItemList
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    return false if item.name == ""
    return item.is_a?(RPG::Weapon)
  end
  
end # Window_WeaponItemList

#===============================================================================
# Window_ArmourItemList
#===============================================================================

class Window_ArmourItemList < Window_ItemList
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    return false if item.name == ""
    return item.is_a?(RPG::Armor)
  end
  
end # Window_ArmourItemList

#===============================================================================
# Window_MiscItemList
#===============================================================================

class Window_MiscItemList < Window_ItemList
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    return false if item.name == ""
    return false if item.is_a?(RPG::Weapon)
    return false if item.is_a?(RPG::Armor)
    return false if item.menu_ok?
    return false if item.battle_ok?
    return false if item.key_item
    return true
  end
  
end # Window_MiscItemList

#===============================================================================
# Window_KeyItemList
#===============================================================================

class Window_KeyItemList < Window_ItemList
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    return false if item.name == ""
    return item.key_item
  end
  
end # Window_KeyItemList

#===============================================================================
# Window_AllItemList
#===============================================================================

class Window_AllItemList < Window_ItemList
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    return false if item.name == ""
    return true
  end
  
end # Window_AllItemList

#===============================================================================
# Window_ItemData
#===============================================================================

class Window_ItemData < Window_Base
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(help_window)
    dy = help_window.y + help_window.height
    super(Graphics.width - 240, dy, 240, Graphics.height - dy)
    create_clone
  end
  
  #--------------------------------------------------------------------------
  # create_clone
  #--------------------------------------------------------------------------
  def create_clone
    @clone = Game_Actor.new(1)
    @clone.maxhp = @clone.base_maxhp
    @clone.maxmp = @clone.base_maxmp
    @clone.atk = @clone.base_atk
    @clone.def = @clone.base_def
    @clone.spi = @clone.base_spi
    @clone.res = @clone.base_res if $imported["RES Stat"]
    @clone.dex = @clone.base_dex if $imported["DEX Stat"]
    @clone.agi = @clone.base_agi
  end
  
  #--------------------------------------------------------------------------
  # set_item_window
  #--------------------------------------------------------------------------
  def set_item_window(new_item_window)
    @item_window = new_item_window
    update
  end
  
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    return if @item_window == nil
    refresh if @item != @item_window.item
  end
  
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item = @item_window.item
    return if @item == nil
    dx = 0; dy = 0
    dy = draw_item_name(dy)
    if @item.is_a?(RPG::Item)
      @hash = YEM::ITEM::ITEM_DATA
      dy = draw_item_properties(dy)
    elsif @item.is_a?(RPG::Weapon) or @item.is_a?(RPG::Armor)
      @hash = YEM::ITEM::EQUIP_DATA
      dy = draw_equip_properties(dy)
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_item_name
  #--------------------------------------------------------------------------
  def draw_item_name(dy)
    draw_icon(@item.icon_index, 0, dy)
    self.contents.font.size = Font.default_size
    self.contents.font.color = normal_color
    self.contents.draw_text(24, dy, contents.width-28, WLH, @item.name)
    dy += WLH
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_item_properties
  #--------------------------------------------------------------------------
  def draw_item_properties(dy)
    dy = draw_properties(dy)
    dy = draw_item_value(dy)
    dy = draw_healing_properties(dy)
    dy = draw_base_damage(dy)
    dy = draw_multipliers(dy)
    dy = draw_elements(dy)
    dy = draw_plus_states(dy)
    dy = draw_minus_states(dy)
    dy = draw_item_growth(dy)
    dy = draw_custom_data(dy)
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_equip_properties
  #--------------------------------------------------------------------------
  def draw_equip_properties(dy)
    dy = draw_properties(dy)
    dy = draw_item_value(dy)
    dy = draw_equip_stats(dy)
    dy = draw_elements(dy)
    dy = draw_states(dy)
    dy = draw_custom_data(dy)
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_properties
  #--------------------------------------------------------------------------
  def draw_properties(dy)
    text = @hash[:properties]
    self.contents.font.size = @hash[:fontsize]
    self.contents.font.color = system_color
    self.contents.draw_text(4, dy, contents.width-8, WLH, text, 1)
    dy += WLH
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_item_value
  #--------------------------------------------------------------------------
  def draw_item_value(dy)
    return dy unless @hash[:gold_value]
    return dy if @item.price == 0
    draw_icon(Icon.gold_cost, 0, dy)
    text = YEM::ITEM::DRAW_GOLD_TEXT
    self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
    text = sprintf("%d%s", @item.price, Vocab.gold)
    self.contents.font.color = normal_color
    self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
    dy += WLH
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_healing_properties
  #--------------------------------------------------------------------------
  def draw_healing_properties(dy)
    return dy if dy + WLH > contents.height
    #---
    if @item.hp_recovery_rate != 0 or @item.hp_recovery != 0
      draw_icon(Icon.hp_heal, 0, dy)
      self.contents.font.color = system_color
      text = @hash[:hp_heal_text]
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      self.contents.font.color = normal_color
      if @item.hp_recovery_rate != 0 and @item.hp_recovery != 0
        text = sprintf("%+d%%", @item.hp_recovery_rate)
        self.contents.draw_text(24, dy, (contents.width-28)*2/3, WLH, text, 2)
        text = sprintf("%+d", @item.hp_recovery)
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      elsif @item.hp_recovery_rate != 0
        text = sprintf("%+d%%", @item.hp_recovery_rate)
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      elsif @item.hp_recovery != 0
        text = sprintf("%+d", @item.hp_recovery)
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      end
      dy += WLH
    end
    #---
    return dy if dy + WLH > contents.height
    #---
    if @item.mp_recovery_rate != 0 or @item.mp_recovery != 0
      draw_icon(Icon.mp_heal, 0, dy)
      self.contents.font.color = system_color
      text = @hash[:mp_heal_text]
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      self.contents.font.color = normal_color
      if @item.mp_recovery_rate != 0 and @item.mp_recovery != 0
        text = sprintf("%+d%%", @item.mp_recovery_rate)
        self.contents.draw_text(24, dy, (contents.width-28)*2/3, WLH, text, 2)
        text = sprintf("%+d", @item.mp_recovery)
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      elsif @item.mp_recovery_rate != 0
        text = sprintf("%+d%%", @item.mp_recovery_rate)
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      elsif @item.mp_recovery != 0
        text = sprintf("%+d", @item.mp_recovery)
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      end
      dy += WLH
    end
    #---
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_base_damage
  #--------------------------------------------------------------------------
  def draw_base_damage(dy)
    return dy if dy + WLH > contents.height
    return dy if (-5..5) === @item.base_damage
    if @item.base_damage > 0
      draw_icon(Icon.base_damage, 0, dy)
      text = @hash[:base_dmg]
    else
      draw_icon(Icon.base_healing, 0, dy)
      text = @hash[:base_heal]
    end
    self.contents.font.color = system_color
    self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
    self.contents.font.color = normal_color
    text = (@item.base_damage).abs
    self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2); dy += WLH
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_multipliers
  #--------------------------------------------------------------------------
  def draw_multipliers(dy)
    return dy if dy + WLH > contents.height
    return dy if @item.base_damage == 0
    icon = @item.base_damage > 0 ? Icon.base_damage : Icon.base_healing
    #---
    if @item.atk_f > 0
      draw_icon(icon, 0, dy)
      text = sprintf(@hash[:multiplier], Vocab.atk)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = sprintf("%s%%", @item.atk_f)
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    #---
    return dy if dy + WLH > contents.height
    #---
    if $imported["BattleEngineMelody"] and @item.def_f > 0
      draw_icon(icon, 0, dy)
      text = sprintf(@hash[:multiplier], Vocab.def)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = sprintf("%s%%", @item.def_f)
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    #---
    return dy if dy + WLH > contents.height
    #---
    if @item.spi_f > 0
      draw_icon(icon, 0, dy)
      text = sprintf(@hash[:multiplier], Vocab.spi)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = sprintf("%s%%", @item.spi_f)
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    #---
    return dy if dy + WLH > contents.height
    #---
    if $imported["BattleEngineMelody"] and $imported["RES Stat"] and
    @item.res_f > 0
      draw_icon(icon, 0, dy)
      text = sprintf(@hash[:multiplier], Vocab.res)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = sprintf("%s%%", @item.res_f)
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    #---
    return dy if dy + WLH > contents.height
    #---
    if $imported["BattleEngineMelody"] and $imported["DEX Stat"] and
    @item.dex_f > 0
      draw_icon(icon, 0, dy)
      text = sprintf(@hash[:multiplier], Vocab.dex)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = sprintf("%s%%", @item.dex_f)
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    #---
    return dy if dy + WLH > contents.height
    #---
    if $imported["BattleEngineMelody"] and @item.agi_f > 0
      draw_icon(icon, 0, dy)
      text = sprintf(@hash[:multiplier], Vocab.agi)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = sprintf("%s%%", @item.agi_f)
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    #---
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_elements
  #--------------------------------------------------------------------------
  def draw_elements(dy)
    return dy if @item.element_set == []
    for element_id in YEM::ITEM::SHOWN_ELEMENTS
      break if dy + WLH > contents.height
      next unless @item.element_set.include?(element_id)
      draw_icon(Icon.element(element_id), 0, dy)
      text = @hash[:element] if @item.is_a?(RPG::Item)
      text = @hash[:ele_weapon] if @item.is_a?(RPG::Weapon)
      text = @hash[:ele_armour] if @item.is_a?(RPG::Armor)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = $data_system.elements[element_id]
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    return dy
  end
  
  #--------------------------------------------------------------------------
  # total_drawn_states
  #--------------------------------------------------------------------------
  def total_drawn_states(array)
    result = 0
    for state_id in array
      next if $data_states[state_id] == nil
      next if $data_states[state_id].icon_index == 0
      result += 1
    end
    return [result, 8].min
  end
  
  #--------------------------------------------------------------------------
  # draw_states
  #--------------------------------------------------------------------------
  def draw_states(dy)
    return dy if @item.state_set == []
    total = total_drawn_states(@item.state_set)
    if total == 1
      return dy if dy + WLH > contents.height
      state = $data_states[@item.state_set[0]]
      draw_icon(state.icon_index, 0, dy)
      text = @hash[:state_weapon] if @item.is_a?(RPG::Weapon)
      text = @hash[:state_armour] if @item.is_a?(RPG::Armor)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = state.name
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
    else
      return dy if dy + WLH*2 > contents.height
      text = @hash[:state_weapon] if @item.is_a?(RPG::Weapon)
      text = @hash[:state_armour] if @item.is_a?(RPG::Armor)
      self.contents.font.color = system_color
      self.contents.draw_text(4, dy, contents.width-8, WLH, text, 1)
      dy += WLH
      dx = (contents.width - total*24)/2
      for state_id in @item.state_set
        break if dx + 24 > contents.width
        state = $data_states[state_id]
        next if state.icon_index == 0
        draw_icon(state.icon_index, dx, dy)
        dx += 24
      end
    end
    dy += WLH
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_plus_states
  #--------------------------------------------------------------------------
  def draw_plus_states(dy)
    return dy if @item.plus_state_set == []
    total = total_drawn_states(@item.plus_state_set)
    if total == 1
      return dy if dy + WLH > contents.height
      state = $data_states[@item.plus_state_set[0]]
      draw_icon(state.icon_index, 0, dy)
      text = @hash[:add_state]
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = state.name
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
    else
      return dy if dy + WLH*2 > contents.height
      text = @hash[:add_state]
      self.contents.font.color = system_color
      self.contents.draw_text(4, dy, contents.width-8, WLH, text, 1)
      dy += WLH
      dx = (contents.width - total*24)/2
      for state_id in @item.plus_state_set
        break if dx + 24 > contents.width
        state = $data_states[state_id]
        next if state.icon_index == 0
        draw_icon(state.icon_index, dx, dy)
        dx += 24
      end
    end
    dy += WLH
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_minus_states
  #--------------------------------------------------------------------------
  def draw_minus_states(dy)
    return dy if @item.minus_state_set == []
    total = total_drawn_states(@item.minus_state_set)
    if total == 1
      return dy if dy + WLH > contents.height
      state = $data_states[@item.minus_state_set[0]]
      draw_icon(state.icon_index, 0, dy)
      text = @hash[:rem_state]
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = state.name
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
    else
      return dy if dy + WLH*2 > contents.height
      text = @hash[:rem_state]
      self.contents.font.color = system_color
      self.contents.draw_text(4, dy, contents.width-8, WLH, text, 1)
      dy += WLH
      dx = (contents.width - total*24)/2
      for state_id in @item.minus_state_set
        break if dx + 24 > contents.width
        state = $data_states[state_id]
        next if state.icon_index == 0
        draw_icon(state.icon_index, dx, dy)
        dx += 24
      end
    end
    dy += WLH
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_item_growth
  #--------------------------------------------------------------------------
  def draw_item_growth(dy)
    #---
    if @item.parameter_type != 0
      case @item.parameter_type
      when 1; text = sprintf(@hash[:growth], Vocab.hp)
      when 2; text = sprintf(@hash[:growth], Vocab.mp)
      when 3; text = sprintf(@hash[:growth], Vocab.atk)
      when 4; text = sprintf(@hash[:growth], Vocab.def)
      when 5; text = sprintf(@hash[:growth], Vocab.spi)
      when 6; text = sprintf(@hash[:growth], Vocab.agi)
      end
      draw_icon(@item.icon_index, 0, dy)
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = sprintf("%+d", @item.parameter_points)
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    #---
    if $imported["StatusMenuMelody"]
      for stat in [:hp, :mp, :atk, :def, :spi, :res, :dex, :agi]
        return dy if dy + WLH > contents.height
        next if stat == :res and !$imported["RES Stat"]
        next if stat == :dex and !$imported["DEX Stat"]
        next if @item.stat_growth[stat] == 0 or @item.stat_growth[stat] == nil
        text = sprintf(@hash[:growth], eval("Vocab." + stat.to_s))
        draw_icon(@item.icon_index, 0, dy)
        self.contents.font.color = system_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
        text = sprintf("%+d", @item.stat_growth[stat])
        self.contents.font.color = normal_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
        dy += WLH
      end
    end
    #---
    if $imported["BattleEngineMelody"]
      growth = []
      for key in @item.element_growth
        growth.push(key[0]) if YEM::ITEM::SHOWN_ELEMENTS.include?(key[0])
      end
      growth.sort!
      for element_id in growth
        return dy if dy + WLH > contents.height
        icon = Icon.element(element_id)
        next if icon == 0
        draw_icon(icon, 0, dy)
        text = sprintf(@hash[:resist], $data_system.elements[element_id])
        self.contents.font.color = system_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
        text = sprintf("%+d%%", -@item.element_growth[element_id])
        self.contents.font.color = normal_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
        dy += WLH
      end
    end
    #---
    if $imported["BattleEngineMelody"]
      growth = []
      for key in @item.state_growth
        growth.push(key[0])
      end
      growth.sort!
      for state_id in growth
        return dy if dy + WLH > contents.height
        state = $data_states[state_id]
        next if state == nil
        icon = state.icon_index
        next if icon == 0
        draw_icon(icon, 0, dy)
        text = sprintf(@hash[:resist], state.name)
        self.contents.font.color = system_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
        text = sprintf("%+d%%", -@item.state_growth[state_id])
        self.contents.font.color = normal_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
        dy += WLH
      end
    end
    #---
    if $imported["EquipmentOverhaul"]
      for stat in [:hp, :mp, :atk, :def, :spi, :res, :dex, :agi]
        return dy if dy + WLH > contents.height
        next if stat == :res and !$imported["RES Stat"]
        next if stat == :dex and !$imported["DEX Stat"]
        next if @item.apt_growth[stat] == 0 or @item.apt_growth[stat] == nil
        text = sprintf(@hash[:bonus], eval("Vocab." + stat.to_s))
        draw_icon(@item.icon_index, 0, dy)
        self.contents.font.color = system_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
        text = sprintf("%+d%%", @item.apt_growth[stat])
        self.contents.font.color = normal_color
        self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
        dy += WLH
      end
    end
    #---
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_equip_stats
  #--------------------------------------------------------------------------
  def draw_equip_stats(dy)
    dx = 0
    array = [:hp, :mp, :atk, :def, :spi, :res, :dex, :agi]
    for stat in @hash[:shown_stats]
      return if dy + WLH > contents.height
      next if stat == :res and !$imported["RES Stat"]
      next if stat == :dex and !$imported["DEX Stat"]
      next if [:hp, :mp].include?(stat) and !$imported["EquipmentOverhaul"]
      next unless array.include?(stat)
      draw_icon(Icon.stat(@clone, stat), dx, dy)
      text = eval("Vocab." + stat.to_s)
      self.contents.font.color = system_color
      self.contents.draw_text(dx+24, dy, contents.width/2-28, WLH, text, 0)
      stat_text = stat.to_s
      stat_text = "max" + stat_text if ["hp", "mp"].include?(stat_text)
      item_value = eval("@item." + stat_text)
      text = sprintf("%+d", item_value)
      self.contents.font.color = normal_color
      self.contents.font.color.alpha = item_value == 0 ? 128 : 255
      self.contents.draw_text(dx+24, dy, contents.width/2-28, WLH, text, 2)
      if dx == 0
        dx = contents.width/2
      else
        dx = 0
        dy += WLH
      end
    end
    dy += WLH if dx != 0
    return dy
  end
  
  #--------------------------------------------------------------------------
  # draw_custom_data
  #--------------------------------------------------------------------------
  def draw_custom_data(dy)
    return dy if @item.custom_data == []
    for array in @item.custom_data
      break if dy + WLH > contents.height
      draw_icon(array[0], 0, dy)
      text = array[1]
      self.contents.font.color = system_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 0)
      text = array[2]
      self.contents.font.color = normal_color
      self.contents.draw_text(24, dy, contents.width-28, WLH, text, 2)
      dy += WLH
    end
    return dy
  end
  
end # Window_ItemData

#===============================================================================
# Scene_Item
#===============================================================================

class Scene_Item < Scene_Base

  #--------------------------------------------------------------------------
  # overwrite method: start
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @help_window = Window_Help.new
    @help_window.viewport = @viewport
    @help_window.y = 128
    @data_window = Window_ItemData.new(@help_window)
    @data_window.viewport = @viewport
    @windows = []
    @target_window = Window_MenuStatus.new(0, 0)
    @target_window.visible = false
    @target_window.active = false
    @status_window = Window_ItemStatus.new
    @status_window.viewport = @viewport
    create_command_window
    update_windows
  end
  
  #--------------------------------------------------------------------------
  # new method: create_command_window
  #--------------------------------------------------------------------------
  def create_command_window
    commands = []; @data = []
    for command in YEM::ITEM::COMMANDS
      case command
      when :usable
        @usable_window = Window_ItemList.new(@help_window)
        @windows.push(@usable_window)
      when :battle
        @battle_window = Window_BattleItemList.new(@help_window)
        @windows.push(@battle_window)
      when :weapons
        @weapon_window = Window_WeaponItemList.new(@help_window)
        @windows.push(@weapon_window)
      when :armours
        @armour_window = Window_ArmourItemList.new(@help_window)
        @windows.push(@armour_window)
      when :misc
        @misc_window = Window_MiscItemList.new(@help_window)
        @windows.push(@misc_window)
      when :key_items
        @key_item_window = Window_KeyItemList.new(@help_window)
        @windows.push(@key_item_window)
      when :all_items
        @all_item_window = Window_AllItemList.new(@help_window)
        @windows.push(@all_item_window)
      else; next
      end
      @data.push(command)
      if YEM::ITEM::VOCAB[command] != nil
        commands.push(YEM::ITEM::VOCAB[command])
      end
    end
    for window in @windows
      next if window == nil?
      window.active = false
      window.viewport = @viewport
      window.help_window = @help_window if window.is_a?(Window_Selectable)
    end
    @command_window = Window_Command_Centered.new(160, commands)
    @command_window.viewport = @viewport
    @command_window.height = 128
    @command_window.active = true
  end
  
  #--------------------------------------------------------------------------
  # new method: update_windows
  #--------------------------------------------------------------------------
  def update_windows
    @last_command_index = @command_window.index
    @help_window.y = Graphics.height*8
    @data_window.y = Graphics.height*8
    for window in @windows
      next if window == nil
      window.y = Graphics.height*8
    end
    #---
    case @data[@command_window.index]
    when :usable
      show_item_windows(@usable_window)
    when :battle
      show_item_windows(@battle_window)
    when :weapons
      show_item_windows(@weapon_window)
    when :armours
      show_item_windows(@armour_window)
    when :misc
      show_item_windows(@misc_window)
    when :key_items
      show_item_windows(@key_item_window)
    when :all_items
      show_item_windows(@all_item_window)
    end
  end
  
  #--------------------------------------------------------------------------
  # overwrite method: terminate
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @help_window.dispose
    @command_window.dispose
    @status_window.dispose
    for window in @windows
      next if window == nil
      next if window.disposed?
      window.dispose
    end
    @viewport.dispose
  end
  
  #--------------------------------------------------------------------------
  # overwrite method: update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    if @command_window.active
      update_command_selection
    elsif @target_window.active
      update_target_selection
    elsif @item_window != nil and @item_window.active
      update_item_selection
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: update_command_selection
  #--------------------------------------------------------------------------
  def update_command_selection
    @command_window.update
    update_windows if @last_command_index != @command_window.index
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @command_window.active = false
      case @data[@command_window.index]
      when :usable, :battle, :weapons, :armours, :misc, :key_items, :all_items
        @item_window.active = true
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: show_usable_windows
  #--------------------------------------------------------------------------
  def show_item_windows(window)
    @help_window.y = 128
    @data_window.set_item_window(window)
    @status_window.set_item_window(window)
    @data_window.y = @help_window.y + @help_window.height
    window.y = @data_window.y
    window.update_help
    @item_window = window
  end
  
  #--------------------------------------------------------------------------
  # overwrite method: update_item_selection
  #--------------------------------------------------------------------------
  def update_item_selection
    @status_window.update
    @item_window.update
    @data_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @item_window.active = false
      @command_window.active = true
      return unless @item_used
      for window in @windows
        next unless window.is_a?(Window_ItemList)
        window.used_item_refresh(@item_used)
      end
      @item_used = []
    elsif Input.trigger?(Input::C)
      @item = @item_window.item
      if enable_item?
        Sound.play_decision
        determine_item
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: enable_item?
  #--------------------------------------------------------------------------
  def enable_item?
    return false unless @item.is_a?(RPG::Item)
    return false unless @item.menu_ok?
    return false unless @item_window.enable?(@item)
    return true
  end
  
  #--------------------------------------------------------------------------
  # alias method: update_target_selection
  #--------------------------------------------------------------------------
  alias update_target_selection_io update_target_selection unless $@
  def update_target_selection
    @target_window.update
    update_target_selection_io
  end
  
  #--------------------------------------------------------------------------
  # alias method: show_target_window
  #--------------------------------------------------------------------------
  alias show_target_window_io show_target_window unless $@
  def show_target_window(right)
    show_target_window_io(true)
  end
  
  #--------------------------------------------------------------------------
  # alias method: use_item_nontarget
  #--------------------------------------------------------------------------
  alias use_item_nontarget_io use_item_nontarget unless $@
  def use_item_nontarget
    @item_used = [] if @item_used == nil
    @item_used.push(@item) unless @item_used.include?(@item)
    use_item_nontarget_io
    @status_window.refresh
  end
  
end # Scene_Base

#===============================================================================
#
# END OF FILE
#
#===============================================================================
Destinynite1
Bump. Still need. Sorry for necro post. I thought I had it figured out but I don't D=
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2013 Invision Power Services, Inc.