blob: b1ffa71449427158f80f496ae62e7b0a1d63ce82 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
--[[
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)
|