--[[ Something to stop gmod from freaking out ]] if SERVER then inv = nrequire("sv_invtracker.lua") end local log = nrequire("log.lua") local quests = {} local comp = {} comp.Name = "Quest Component Kill" comp.kills = 0 comp.npcname = "Init not yet called" function comp:Update() self.Quest:UpdateCompleted() end function comp:Complete() if self.kills >= self.numkills then log.debug("Completed a gather arc of a quest!") end return self.items >= self.ItemNumber end function comp:Init(ply,npcname,numkills) if not ply or not itemname or not itemnumber then log.error("Tried to create a kill arch for a quest without correct arguments") end self.npcname = itemname self.kills = 0 self.numkills = 0 if CLIENT then return end self.Owner = ply -- self:Update() quests[#quests + 1] = self end --[[ Detour the player's GiveItem(), to check if the quest is complete after giving the player the item ]] 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.Name == comp.Name and v.ItemName == tbl.Name then v:Update() end end end end function comp:GetText() return string.format("Gather %s %s",self.ItemNumber,self.ItemName) end function comp:Serialize() 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] end nrequire("core/quests/arcs.lua").RegisterArc(comp)