44 lines
772 B
Lua
44 lines
772 B
Lua
|
|
||
|
--[[
|
||
|
Your Name Is Benny
|
||
|
Item definition
|
||
|
]]
|
||
|
|
||
|
-- Not 100% sure how metastuff works yet.
|
||
|
|
||
|
-- Global weapons table
|
||
|
WEAPONS = {}
|
||
|
|
||
|
function WeaponGet(class)
|
||
|
return ItemDef(class)
|
||
|
end
|
||
|
|
||
|
-- ItemDef metatable
|
||
|
ItemDef = {}
|
||
|
|
||
|
function ItemDef.__index( self, key )
|
||
|
if rawget(self, "BaseClass") then
|
||
|
return rawget( rawget(self, "BaseClass"), key )
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function ItemDef:new( classname, classtable )
|
||
|
if classtable then
|
||
|
local newdef = classtable
|
||
|
newdef.ClassName = classname
|
||
|
newdef.BaseClass = WEAPONS[newdef.Base]
|
||
|
|
||
|
WEAPONS[classname] = newdef
|
||
|
|
||
|
setmetatable( newdef, ItemDef )
|
||
|
return newdef
|
||
|
else
|
||
|
return WEAPONS[classname]
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function ItemDef:__tostring()
|
||
|
return "ItemDef [" .. self.ClassName .. "]"
|
||
|
end
|
||
|
|
||
|
setmetatable( ItemDef, { __call = ItemDef.new } )
|