diff --git a/data/plugins/util/name-lookup.rb b/data/plugins/util/name-lookup.rb index a0f876f2..f45b5788 100644 --- a/data/plugins/util/name-lookup.rb +++ b/data/plugins/util/name-lookup.rb @@ -2,38 +2,39 @@ require 'java' # Looks up the id of the npc with the specified name. def lookup_npc(name) - return lookup_entity('npc', name) + return lookup_entity(:npc, name) end # Looks up the id of the item with the specified name. def lookup_item(name) - return lookup_entity('item', name) + return lookup_entity(:item, name) end # Looks up the id of the object with the specified name. def lookup_object(name) - return lookup_entity('object', name) + return lookup_entity(:object, name) end -# Looks up the id of an entity of the specified type (either 'npc', 'item', or 'object') -def lookup_entity(type, symbol) - symbol = symbol.to_s - cached = NAME_CACHE[type + symbol] +# Looks up the id of an entity of the specified type (either :npc, :item, or :object) +def lookup_entity(type, name) + type = type.to_s + name = name.to_s.gsub('_', ' ') + + cached = NAME_CACHE[type + name] return cached unless cached.nil? - name = symbol.to_s.gsub('_', ' ') id = name[name.rindex(' ') + 1, name.length - 1].to_i if name.include?(' ') id = find_entities(type, name, 1).first if (id .nil? || id.zero?) raise "The #{type} called #{name} could not be identified." if id.nil? - NAME_CACHE[type + symbol] = id + NAME_CACHE[type + name] = id return id end # Finds entities with the specified type (e.g. npc) and name, returning possible ids as an array. def find_entities(type, name, limit=5) - ids = []; + ids = [] name.downcase! Kernel.const_get("#{type.capitalize}Definition").definitions.each do |definition|