module Rsrb::Model::Equipment

Public Class Methods

equip(player, item, slot, name, id) click to toggle source
# File lib/rsrb/model/equipment.rb, line 56
def self.equip(player, item, slot, name, id)
  if item != nil && item.id == id
   equip_slot = self.get_exception(item.id)
   equip_slot = slot(name) if equip_slot == nil

   oldEquip = nil
   stackable = false

   if player.equipment.is_slot_used(equip_slot) && !stackable
     oldEquip = player.equipment.items[equip_slot]
     player.equipment.set equip_slot, nil
   end

   player.inventory.set slot, nil
   player.inventory.add oldEquip unless oldEquip == nil

   if stackable
     player.equipment.add item
   else
     player.equipment.set equip_slot, item
   end
 end
end
get_exception(id) click to toggle source
# File lib/rsrb/model/equipment.rb, line 51
def self.get_exception(id)
  item = EXCEPTIONS.find {|e| e[:id] == id }
  item && item[:slot]
end
is(item, type) click to toggle source
# File lib/rsrb/model/equipment.rb, line 45
def self.is(item, type)
  name = item.definition.name.downcase
  slot = SLOTS.find {|e| e[:check] == type }
  slot[:names].find {|s| name.include?(s) } != nil
end
load() click to toggle source
# File lib/rsrb/model/equipment.rb, line 8
def self.load()
  begin
    # Load sidebars
    SIDEBARS.clear
    sidebar_data = XmlSimple.xml_in("assets/equipment_sidebars.xml", 'KeyToSymbol' => true)
    sidebar_data[:sidebar].each {|sidebar|
      SIDEBARS[sidebar["regex"].to_regexp] = {
        :type => sidebar["type"].to_sym,
        :id => sidebar["id"].to_i
      }
    }

    # Load slots
    SLOTS.clear
    slot_data = XmlSimple.xml_in("assets/equipment_slots.xml", 'KeyToSymbol' => true)
    slot_data[:slot].each {|slot|
      SLOTS << {:slot => slot["id"].to_i, :check => slot["check"].to_i, :names => slot[:name]}
    }

    # Load exceptions
    EXCEPTIONS.clear
    exception_data = XmlSimple.xml_in("assets/equipment_exceptions.xml", 'KeyToSymbol' => true)
    exception_data[:exception].each {|exception|
      EXCEPTIONS << {:id => exception["id"].to_i, :slot => exception["slot"].to_i}
    }
  rescue Exception => e
    LOG.error "Failed to load equipment data!"
    LOG.error e
  end
end
slot(name) click to toggle source
# File lib/rsrb/model/equipment.rb, line 39
def self.slot(name)
  name = name.downcase
  slot = SLOTS.find {|e| e[:names].find {|s| name.include?(s) } }
  (slot && slot[:slot]) || 3
end