Add extra utility methods to Inventory and utils plugin.

This commit is contained in:
Major-
2015-01-07 16:28:02 +00:00
parent 3e22f78ff2
commit ec516bda67
5 changed files with 58 additions and 15 deletions
+11 -1
View File
@@ -7,6 +7,16 @@ def valid_arg_length(args, length, player, message)
return valid
end
# Returns the name of the Object, Npc, or Item with the specified id.
def name_of(type, id)
types = [ :object, :item, :npc ]
unless types.include?(type)
raise "Invalid type of #{type} specified, must be one of #{types}"
end
return Kernel.const_get("#{type.capitalize}Definition").lookup(id).name.to_s
end
# Add a has_keys? method to hash
class Hash
@@ -19,7 +29,7 @@ end
class Player
# Returns whether or not the player's
# Returns whether or not the player's current level is greater than or equal to the specified level.
def has_level(skill, level)
return skill_set.get_skill(skill).current_level >= level
end
+9 -12
View File
@@ -19,17 +19,13 @@ end
def lookup_entity(type, symbol)
symbol = symbol.to_s
cached = NAME_CACHE[type + symbol]
return cached unless cached == nil
return cached unless cached.nil?
name = symbol.to_s.gsub('_', ' ')
if name.include?(' ')
id = name[name.rindex(' ') + 1, name.length - 1].to_i
end
id = find_entities(type, name, 1).first if id == nil || id == 0
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?)
if id == nil
raise "The #{type} called #{name} could not be identified."
end
raise "The #{type} called #{name} could not be identified." if id.nil?
NAME_CACHE[type + symbol] = id
return id
@@ -37,15 +33,16 @@ 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 = []; name.downcase!
ids = [];
name.downcase!
Kernel.const_get("#{type.capitalize}Definition").definitions.each do |definition|
break if ids.length == limit
ids << definition.id.to_i if definition.name.to_s.downcase == name
break if (ids.length == limit)
ids << definition.id.to_i if (definition.name.to_s.downcase == name)
end
return ids
end
private
NAME_CACHE = {}
NAME_CACHE = {} # Primitive, caching all may not be desirable.