comparison Modules/Events.lua @ 40:5273038322d7 release

Updated the way postage was counted so that if you mail multiple items at once, they will all have the postage counted. I also removed the 30c for postage from how QA thresholds are calculated now that they will be counted every time.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Mon, 19 Jul 2010 20:55:50 -0700
parents 003de902ae64
children 1ff3b83b104c
comparison
equal deleted inserted replaced
39:003de902ae64 40:5273038322d7
46 if self.db.factionrealm.outbound_cod[self.mailOutbox.key] ~= nil then 46 if self.db.factionrealm.outbound_cod[self.mailOutbox.key] ~= nil then
47 return self:GenerateBlankOutbox() 47 return self:GenerateBlankOutbox()
48 end 48 end
49 end 49 end
50 50
51 local attachedItems = {}
51 local Orig_SendMail = SendMail 52 local Orig_SendMail = SendMail
52 53
53 function SendMail(recipient, subject, body, ...) 54 function SendMail(recipient, subject, body, ...)
54 local self = ItemAuditor 55 local self = ItemAuditor
55 self:GenerateBlankOutbox() 56 self:GenerateBlankOutbox()
56 57
57 self:Debug(format("[To: %s] [Subject: %s]", recipient, subject)) 58 self:Debug(format("[To: %s] [Subject: %s]", recipient, subject))
58 59
59 self.mailOutbox.COD = GetSendMailCOD() 60 self.mailOutbox.COD = GetSendMailCOD()
60 61
61 if self.mailOutbox.COD == 0 then 62 attachedItems = {}
62 self:Debug("Non-COD mail") 63 local totalStacks = 0
63 return Orig_SendMail(recipient, subject, body, ...)
64 end
65
66 subject = format("[IA: %s] %s", self.mailOutbox.key, subject)
67 self.mailOutbox.subject = subject
68 self.mailOutbox.to = recipient
69
70 self.mailOutbox.count = 0
71 local link 64 local link
72 for index = 1, 12 do 65 for index = 1, ATTACHMENTS_MAX_SEND do
73 local itemName, _, itemCount = GetSendMailItem(index) 66 local itemName, _, itemCount = GetSendMailItem(index)
74 local newLink = GetSendMailItemLink(index) 67 local newLink = GetSendMailItemLink(index)
75 68
76 if link == nil then 69 if newLink ~= nil then
77 link = newLink 70 newLink = self:GetSafeLink(newLink)
78 end 71 totalStacks = totalStacks + 1
79 72 attachedItems[newLink] = (attachedItems[newLink] or {stacks = 0, count = 0})
80 if newLink ~= nil and self:GetIDFromLink(newLink) ~= self:GetIDFromLink(link) then 73 attachedItems[newLink].stacks = attachedItems[newLink].stacks + 1
81 self:Print(self:GetIDFromLink(newLink)) 74 attachedItems[newLink].count = attachedItems[newLink].count + itemCount
82 self:Print(self:GetIDFromLink(link)) 75 attachedItems[newLink].price = 0 -- This is a placeholder for below.
83 76 end
84 self:Print("WARNING: ItemAuditor can't track COD mail with more than one item type.") 77 end
78 local pricePerStack = GetSendMailPrice() / totalStacks
79 for link, data in pairs(attachedItems) do
80 data.price = pricePerStack * data.stacks
81 end
82
83 if self.mailOutbox.COD > 0 then
84 if self:tcount(attachedItems) > 1 then
85 self:Print("ERROR: ItemAuditor can't track COD mail with more than one item type.")
85 self:GenerateBlankOutbox() 86 self:GenerateBlankOutbox()
87 -- I need to make a prompt so the user can send the mail without interference
86 return 88 return
87 end 89 end
88 self.mailOutbox.link = link 90 self:Debug("COD mail")
89 self.mailOutbox.count = self.mailOutbox.count + itemCount 91
90 92 subject = format("[IA: %s] %s", self.mailOutbox.key, subject)
91 end 93 self.mailOutbox.subject = subject
92 94 self.mailOutbox.to = recipient
93 -- self:MAIL_SUCCESS("Mock Success") 95
96 -- At this point we know there is only one item
97 for link, data in pairs(attachedItems) do
98 self.mailOutbox.link = link
99 self.mailOutbox.count = data.count
100 end
101 else
102 self:Debug("Non-COD mail")
103 end
104
94 return Orig_SendMail(recipient, subject, body, ...) 105 return Orig_SendMail(recipient, subject, body, ...)
95 end 106 end
96 107
97 function addon:MAIL_SUCCESS(event) 108 function addon:MAIL_SUCCESS(event)
98 109 for link, data in pairs(attachedItems) do
110 self:SaveValue(link, data.price, data.count)
111 end
99 if self.mailOutbox.COD > 0 then 112 if self.mailOutbox.COD > 0 then
100 self:Debug(format("MAIL_SUCCESS %d [To: %s] [Subject: %s] [COD: %s]", self.mailOutbox.key, self.mailOutbox.to, self.mailOutbox.subject, self.mailOutbox.COD)) 113 self:Debug(format("MAIL_SUCCESS %d [To: %s] [Subject: %s] [COD: %s]", self.mailOutbox.key, self.mailOutbox.to, self.mailOutbox.subject, self.mailOutbox.COD))
101 114
102 self.mailOutbox.sent = time() 115 self.mailOutbox.sent = time()
103 self.db.factionrealm.outbound_cod[self.mailOutbox.key] = self.mailOutbox 116 self.db.factionrealm.outbound_cod[self.mailOutbox.key] = self.mailOutbox
104 end 117 end
105 118
106 self.mailOutbox = { 119
107 to = "", 120 self:GenerateBlankOutbox()
108 subject = "",
109 items = {},
110 COD = 0,
111 }
112 end 121 end
113 122
114 function addon:MAIL_CLOSED() 123 function addon:MAIL_CLOSED()
115 self:Debug("MAIL_CLOSED") 124 self:Debug("MAIL_CLOSED")
116 addon:UnregisterEvent("MAIL_CLOSED") 125 addon:UnregisterEvent("MAIL_CLOSED")