aboutsummaryrefslogtreecommitdiff
path: root/gamemode/core/inventory/item.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/core/inventory/item.lua')
-rw-r--r--gamemode/core/inventory/item.lua22
1 files changed, 15 insertions, 7 deletions
diff --git a/gamemode/core/inventory/item.lua b/gamemode/core/inventory/item.lua
index 79f9ad5..16b30dd 100644
--- a/gamemode/core/inventory/item.lua
+++ b/gamemode/core/inventory/item.lua
@@ -41,7 +41,7 @@ function itm.RegisterItem(tbl)
if items[tbl.Name] ~= nil then
log.warn(string.format("Attempted to register 2 items with the same name: %q, overwriteing previous",tbl.Name))
else
- log.info(string.format("Registered item %s",tbl.Name))
+ --log.info(string.format("Registered item %s",tbl.Name))
end
items[tbl.Name] = tbl
--print("Registered item: " .. tbl.Name)
@@ -54,11 +54,13 @@ end
function itm.GetItemByName(name)
assert(type(name) == "string",string.format("Attempted to get an item by name with a %s.",type(name)))
assert(items[name] ~= nil,string.format("Attempted to get item with invalid name %q Valid item names are:\n\t%s",name,table.concat(table.GetKeys(items),"\n\t")))
- local item
- if items[name].init then
- item = items[name]:init()
- else
- item = table.Copy(items[name])
+ local item_m = {
+ __index = items[name]
+ }
+ local item = {}
+ setmetatable(item,item_m)
+ if item.init then
+ item:init()
end
return item
end
@@ -70,7 +72,13 @@ end
--@treturn itemtbl The item that was deserialized
function itm.GetItemFromData(name,data)
assert(items[name] ~= nil,string.format("Attempted to get item with invalid name %q",name))
- return items[name]:DeSerialize(data)
+ local ret_m = {
+ __index = items[name]
+ }
+ local ret = {}
+ setmetatable(ret,ret_m)
+ ret:DeSerialize(data)
+ return ret
end
local function printitems()