diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2018-07-15 19:57:27 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2018-07-15 19:57:27 -0400 |
| commit | 534103be54a129d8255988fc1e75a21a63c6021f (patch) | |
| tree | c172b0884b4ca26452c5a74f5033b3b1526b6e3a /gamemode/questsystem/component_gather.lua | |
| parent | 34d9ae7c4f4176fa9a943e9c2776afc32a867163 (diff) | |
| download | artery-534103be54a129d8255988fc1e75a21a63c6021f.tar.gz artery-534103be54a129d8255988fc1e75a21a63c6021f.tar.bz2 artery-534103be54a129d8255988fc1e75a21a63c6021f.zip | |
Finished gather quest arcs
Finished base quest system, and added "Gather" arcs, where players
gather a certain number of a certain item.
Diffstat (limited to 'gamemode/questsystem/component_gather.lua')
| -rw-r--r-- | gamemode/questsystem/component_gather.lua | 71 |
1 files changed, 63 insertions, 8 deletions
diff --git a/gamemode/questsystem/component_gather.lua b/gamemode/questsystem/component_gather.lua index fccb32a..5647f42 100644 --- a/gamemode/questsystem/component_gather.lua +++ b/gamemode/questsystem/component_gather.lua @@ -1,25 +1,80 @@ +if SERVER then + inv = nrequire("sv_invtracker.lua") +end +local log = nrequire("log.lua") + +local quests = {} local comp = {} comp.Name = "Quest Component Gather" +function comp:Update() + if SERVER then + local items = {} + self.items = 0 + log.debug("in comp:Update, self.ItemNumber is" .. tostring(self.ItemNumber)) + for i = 1, self.ItemNumber do + local loc = self.Owner:HasItem(self.ItemName) + if loc then + items[loc] = self.Owner:RemoveItem(loc) + self.items = i + else + break + end + end + log.debug("Update called, self.items is now" .. tostring(self.items)) + for k,v in pairs(items) do + self.Owner:PutItem(k,v) + end + end + self.Quest:UpdateCompleted() +end + +function comp:Complete() + if self.items >= self.ItemNumber then + log.debug("Completed a gather arc of a quest!") + end + return self.items >= self.ItemNumber +end + +function comp:Init(ply,itemname,itemnumber) + if not ply or not itemname or not itemnumber then return end + self.ItemName = itemname + self.ItemNumber = itemnumber + self.Items = 0 + if CLIENT then return end + self.Owner = ply + -- self:Update() + quests[#quests + 1] = self + log.debug("After initalizing quest, found " .. tostring(self.items) .. " items") +end -function comp:Init(itemname,itemnumber) - self.itemname = itemname - self.itemnumber = itemnumber +if SERVER then + local plymeta = FindMetaTable("Player") + local det = plymeta.GiveItem + function plymeta:GiveItem(tbl) + det(self,tbl) + log.debug("Calling component_gather's GiveItem()") + for k,v in pairs(quests) do + if v.ItemName == tbl.Name then + v:Update() + end + end + end end function comp:GetText() - return string.format("Gather %s %s",self.itemnumber,self.itiemname) + return string.format("Gather %s %s",self.ItemNumber,self.ItemName) end function comp:Serialize() - return util.TableToJSON({itemname,itemnumber}) + return util.TableToJSON({self.ItemName,self.ItemNumber}) end function comp:DeSerialize(data) local tbl = util.JSONToTable(data) - self.itemname = tbl[1] - self.itemnumber = tbl[2] + self.ItemName = tbl[1] + self.ItemNumber = tbl[2] end -nrequire("core/quests/quest.lua").RegisterArc(comp) +nrequire("core/quests/arcs.lua").RegisterArc(comp) |
