aboutsummaryrefslogtreecommitdiff
path: root/gamemode/inventorysystem/skills/sh_skillcommon.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/inventorysystem/skills/sh_skillcommon.lua')
-rw-r--r--gamemode/inventorysystem/skills/sh_skillcommon.lua68
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