--[[ Common functions since skills are a special inventory, adding skills need to be a special item ]] local itm = nrequire("item.lua") local log = nrequire("log.lua") --Common things --Make sure items have a "name" and "ammt" attribute local item = {} item.Name = "Skill" item.isskill = true item.Serialize = function(self) return util.TableToJSON({ name = self.name, ammt = self.ammt }) end item.DeSerialize = function(self,data) local tbl = util.JSONToTable(data) tbl.isskill = true return tbl end itm.RegisterItem(item) local pmeta = FindMetaTable("Player") function pmeta:AddSkill(name, ammt) local item = itm.GetItemByName("Skill") item.name = name item.ammt = ammt self:GiveItem(item) end local lib = {} local skills = {} --Skillname is a table of {string_group,string_name} function lib.RegisterSkill(skillname) print("funcs.RegisterSkill called with") PrintTable(skillname) local group,name = skillname[1],skillname[2] if not skills[group] then skills[group] = {} end local alin = false for k,v in pairs(skills[group]) do if v == name then alin = true break end end if alin then log.warn("Re-registering skill: " .. skillname) else skills[group][#skills[group] + 1] = name end print("After registering skill, skills is") PrintTable(skills) end function lib.SkillList() return skills end return lib