diff options
Diffstat (limited to 'gamemode/inventorysystem/skills/sh_skillcommon.lua')
| -rw-r--r-- | gamemode/inventorysystem/skills/sh_skillcommon.lua | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gamemode/inventorysystem/skills/sh_skillcommon.lua b/gamemode/inventorysystem/skills/sh_skillcommon.lua new file mode 100644 index 0000000..d48fb98 --- /dev/null +++ b/gamemode/inventorysystem/skills/sh_skillcommon.lua @@ -0,0 +1,68 @@ +--[[ + Common functions since skills are a special inventory, adding skills need to be a special item +]] +local itm = nrequire("item.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 |
