comparison Looting.lua @ 81:62805e6b46c5

Fleshing out the UI for those without the addon. Announcements in the raid, bidding via whisper.
author John@Yosemite-PC
date Fri, 13 Apr 2012 22:09:17 -0400
parents 7b8fcea357d2
children db7e4ee34dce
comparison
equal deleted inserted replaced
80:40c882db34f8 81:62805e6b46c5
52 52
53 print("Let's get started SKing") 53 print("Let's get started SKing")
54 -- todo: check that I am ML and that I'm an admin! 54 -- todo: check that I am ML and that I'm an admin!
55 55
56 InitiateBeginLoot(items,stateactivelist) 56 InitiateBeginLoot(items,stateactivelist)
57
58 local chan -- todo: idiom
59 if _G.GetNumRaidMembers() > 0 then chan = "RAID" else chan = "PARTY" end
60 _G.SendChatMessage("The following items are available -",chan)
61 for i,v in pairs(items) do
62 _G.SendChatMessage(v.link,chan)
63 end
57 end 64 end
58 65
59 function FreeLoot(item,person) 66 function FreeLoot(item,person)
60 PrintTable(item) 67 PrintTable(item)
61 PrintTable(person) 68 PrintTable(person)
71 end 78 end
72 79
73 function ExpensiveLoot(item,lref) 80 function ExpensiveLoot(item,lref)
74 if getn(statebids) > 0 then 81 if getn(statebids) > 0 then
75 if FreeLoot(item,statebids[1]) then 82 if FreeLoot(item,statebids[1]) then
83 local chan -- todo: idiom
84 if _G.GetNumRaidMembers() > 0 then chan = "RAID" else chan = "PARTY" end
85 _G.SendChatMessage(sformat("Awarding %s to %s!",item.link,statebids[1].textPlain),chan)
86 --_G.SendChatMessage(sformat("Awarding %s to %s!",item.link,statebids[1].textPlain),"GUILD") -- todo: enable
76 lref:SuicidePerson(statebids[1].value) 87 lref:SuicidePerson(statebids[1].value)
88 InitiateCloseBidding()
77 else 89 else
78 printf("Could not suicide %s for item; they are ineligible or offline",statebids[1].textPlain) 90 printf("Could not suicide %s for item; they are ineligible or offline",statebids[1].textPlain)
79 end 91 end
80 return 92 return
81 end 93 end
82 if getn(staterolls) > 0 then 94 if getn(staterolls) > 0 then
83 if FreeLoot(item,staterolls[1]) then 95 if FreeLoot(item,staterolls[1]) then
84 --lref:SuicidePerson(staterolls[1].value) 96 local chan -- todo: idiom
97 if _G.GetNumRaidMembers() > 0 then chan = "RAID" else chan = "PARTY" end
98 _G.SendChatMessage(sformat("Awarding %s to %s!",item.link,staterolls[1].textPlain),chan)
99 InitiateCloseBidding()
85 else 100 else
86 printf("Could not suicide %s for item; they are ineligible or offline",staterolls[1].textPlain) 101 printf("Could not suicide %s for item; they are ineligible or offline",staterolls[1].textPlain)
87 end 102 end
88 return 103 return
89 end 104 end
96 else 111 else
97 printf("Could not suicide %s for item; they are ineligible or offline", person.textPlain) 112 printf("Could not suicide %s for item; they are ineligible or offline", person.textPlain)
98 end 113 end
99 end 114 end
100 115
116 function WhisperReceived(...)
117 local _,message,sender = ...
118 local senderAction = function(func)
119 local le = PersonList:Select(sender)
120 if le then
121 local person = ConvertLe2Line(le)
122 if person then
123 func(person)
124 end
125 end
126 end
127
128 if state == "bidding" and admin then -- todo: should only be ML
129 message = _G.strtrim(message)
130 message = _G.strlower(message)
131 if message == "bid" then
132 senderAction(InitiateBid)
133 elseif message == "retract" then
134 senderAction(InitiateRetract)
135 elseif message == "roll" then
136 senderAction(InitiateRollRequest)
137 end
138 end
139 end
140
141 local statelistener =
142 {
143 ["StateEvent"] = function(self)
144 if state == "bidding" then
145 event:RegisterEvent("CHAT_MSG_WHISPER", WhisperReceived)
146 else
147 --event:UnregisterEvent("CHAT_MSG_WHISPER") -- todo
148 end
149 end,
150 }
151
101 function InitializeLooting() 152 function InitializeLooting()
102 event:RegisterEvent("OPEN_MASTER_LOOT_LIST",OpenMasterLootList) 153 event:RegisterEvent("OPEN_MASTER_LOOT_LIST",OpenMasterLootList)
103 event:RegisterEvent("UPDATE_MASTER_LOOT_LIST",UpdateMasterLootList) 154 event:RegisterEvent("UPDATE_MASTER_LOOT_LIST",UpdateMasterLootList)
104 event:RegisterEvent("LOOT_CLOSED",LootClosed) 155 event:RegisterEvent("LOOT_CLOSED",LootClosed)
105 event:RegisterEvent("LOOT_OPENED",LootOpened) 156 event:RegisterEvent("LOOT_OPENED",LootOpened)
106 157
107 -- todo: what are these 158 -- todo: what are these
108 event:RegisterEvent("LOOT_SLOT_CLEARED",function() print("LSCleared") end) 159 event:RegisterEvent("LOOT_SLOT_CLEARED",function() print("LSCleared") end)
109 event:RegisterEvent("LOOT_SLOT_CHANGED",function() print("LSChanged") end) 160 event:RegisterEvent("LOOT_SLOT_CHANGED",function() print("LSChanged") end)
161
162 RegisterListenerStateChange(statelistener)
163 statelistener:StateEvent()
110 end 164 end
111 165