--[[ prayers must have a "Pray" method, a "Name" string, a "Description" string ]] local reg = nrequire("inventory/inventory.lua") local itm = nrequire("item.lua") local inv = {} if CLIENT then inv = nrequire("cl_prayers.lua") end inv.Name = "Prayers" inv.track = {} function inv:FindPlaceFor(item) if item.isprayer then return {#self.track} end return nil end function inv:CanFitIn(pos,item) return pos[1] == #self.track end function inv:Put(pos,item) self.track[pos[1]] = item end function inv:Has(a) if type(a) == "string" then for k,v in pairs(self.track) do if v == a then return {k} end end elseif type(a) == "function" then for k,v in pairs(self.track) do if a(v) then return {k} end end end return nil end function inv:Remove(pos) for i = 1,pos[1] do self.track[i] = self.track[i + 1] end end function inv:Get(pos) return self.track[pos[1]] end function inv:Serialize() local ret = {} for k,v in pairs(self.track) do ret[v.Name] = v:Serialize() end return util.TableToJSON(ret) end function inv:DeSerialize(str) local cpy = table.Copy(self) local tbl = util.JSONToTable(str) local i = 1 for k,v in pairs(tbl) do local this_prayer = itm.GetItemByName(k):DeSerialize(v) cpy:Put({i},this_prayer) end return cpy end reg.RegisterInventory(inv)