<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -184,8 +184,8 @@ function fux:QuestGained(event, title, uid, obj, zone)
 
 	local quest = zone:AddQuest(uid, title, tonumber(level), tags[tag])
 
-	for obj, got, need in Q:IterateObjectivesForQuest(uid) do
-		self:ObjectiveUpdate(event, title, uid, obj, nil, got, need)
+	for o, got, need in Q:IterateObjectivesForQuest(uid) do
+		self:ObjectiveUpdate(event, title, uid, o, nil, got, need)
 	end
 
 	if event then
@@ -229,10 +229,7 @@ function fux:ObjectiveUpdate(event, title, uid, desc, old, got, need)
 	local uid, id, title, level, tag = Q:GetQuestByUid(uid)
 	local quest = zone:AddQuest(uid, title, tonumber(level), tags[tag])
 
-	quest.got = quest.got + (tonumber(got) or 0)
-	quest.need = quest.need + (tonumber(need) or 0)
-
-	if got ~= need then
+	if got &lt; need then
 		quest:AddObjective(uid, desc, got, need)
 	else
 		quest:Remove(nil, desc)
@@ -278,7 +275,7 @@ function fux:QuestUpdate()
 
 			if objectives and objectives &gt; 0 and not complete then
 				for name, got, need in Q:IterateObjectivesForQuest(uid) do
-					fux:ObjectiveUpdate(nil, title, uid, name, nil, got, need)
+					self:ObjectiveUpdate(nil, title, uid, name, nil, got, need)
 				end
 			end
 		end</diff>
      <filename>core.lua</filename>
    </modified>
    <modified>
      <diff>@@ -96,8 +96,14 @@ local questOnEnter = function(self)
 	tip:SetOwner(fux.frame, &quot;ANCHOR_NONE&quot;)
 	tip:SetPoint(&quot;TOPLEFT&quot;, fux.frame, &quot;TOPRIGHT&quot;)
 
+	local need, got = 0, 0
+	for oid, obj in pairs(self.objectives) do
+		need = need + obj.need
+		got = got + obj.got
+	end
+
 	tip:ClearLines()
-	tip:AddDoubleLine(self.name, self.status and self.status or self.need &gt; 0 and self.got .. &quot;/&quot; .. self.need, r, g, b, r, g, b)
+	tip:AddDoubleLine(self.name, self.status and self.status or need &gt; 0 and got .. &quot;/&quot; .. need, r, g, b, r, g, b)
 
 	tip:AddLine(select(2, Q:GetQuestText(self.uid)), 0.8, 0.8, 0.8, true)
 	if #self.objectives &gt; 0 then
@@ -194,7 +200,6 @@ function fux:RemoveZone(id, zone)
 		zone = self.zonesByName[zone]
 	end
 
-
 	if not id and zone then
 		for k, v in pairs(self.zones) do
 			if v == zone then
@@ -292,9 +297,6 @@ function zone_proto:AddQuest(uid, name, level, tag, status)
 	row.visible = true
 	row.daily = tag == &quot;*&quot;
 
-	row.got = 0
-	row.need = 0
-
 	row:EnableMouse(true)
 	row:SetScript(&quot;OnEnter&quot;, questOnEnter)
 	row:SetScript(&quot;OnLeave&quot;, questOnLeave)
@@ -346,9 +348,21 @@ function quest_proto:HideAll()
 	for oid, o in pairs(self.objectives) do
 		o:Hide()
 	end
-	if self.need &gt; 0 then
-		self.right:SetText(self.got .. &quot;/&quot; .. self.need)
+
+	local need, got = 0, 0
+	for oid, obj in pairs(self.objectives) do
+		need = need + obj.need
+		got = got + obj.got
+	end
+
+	if need &gt; 0 then
+		if got == need then
+			self.right:SetText(&quot;(done)&quot;)
+		else
+			self.right:SetText(got .. &quot;/&quot; .. need)
+		end
 	end
+
 	self.visible = false
 end
 
@@ -356,9 +370,11 @@ function quest_proto:ShowAll()
 	if self.status ~= &quot;(done)&quot; then
 		self.right:SetText(&quot;&quot;)
 	end
+
 	for oid, o in pairs(self.objectives) do
 		o:Show()
 	end
+
 	self.visible = true
 end
 
@@ -393,6 +409,7 @@ end
 
 -- Objective creation
 function quest_proto:AddObjective(qid, name, got, need)
+	if not name or name == &quot;&quot; then return end
 	if self.objectivesByName[name] then
 		if got and need then
 			local obj = self.objectivesByName[name]
@@ -400,9 +417,11 @@ function quest_proto:AddObjective(qid, name, got, need)
 			obj.got = got
 			obj.need = need
 		end
+
 		if not self.visible and self.need &gt; 0 then
 			self.right:SetText(self.got .. &quot;/&quot; .. self.need)
 		end
+
 		return self.objectivesByName[name]
 	end
 </diff>
      <filename>quest.prototype.lua</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d1c75afc8ad3d81c81c92f2316967bb00b35f1b4</id>
    </parent>
  </parents>
  <author>
    <name>Zariel</name>
    <email>c.bannister@gmail.com</email>
  </author>
  <url>http://github.com/Zariel/fux/commit/f644ff3a26fd02f41f57ae15219a76feb792fe59</url>
  <id>f644ff3a26fd02f41f57ae15219a76feb792fe59</id>
  <committed-date>2009-08-31T08:13:55-07:00</committed-date>
  <authored-date>2009-08-31T08:13:55-07:00</authored-date>
  <message>Fix objective tracking and missing</message>
  <tree>b1b5a4f8345ef3f082b6a6183571ee5f83b1d3a1</tree>
  <committer>
    <name>Zariel</name>
    <email>c.bannister@gmail.com</email>
  </committer>
</commit>
