Mercurial > wow > mylilpony
comparison libMyLilPony/libMyLilPony_mountFunctions.lua @ 50:22011265a16f 1.2.0-b1
Updated and fixed for draenor xpack (patch 6.0) API changes
author | syzler |
---|---|
date | Sat, 07 Mar 2015 02:52:57 -0500 |
parents | 2ae5f67e313a |
children | 64e8f8e5fa41 |
comparison
equal
deleted
inserted
replaced
49:d29ceeeab123 | 50:22011265a16f |
---|---|
40 --- Summons a random mount. | 40 --- Summons a random mount. |
41 -- Does nothing if the only available mount is already summoned. | 41 -- Does nothing if the only available mount is already summoned. |
42 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 42 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
43 function MyLilPony.CallMount() | 43 function MyLilPony.CallMount() |
44 local filter = function (i) | 44 local filter = function (i) |
45 local _, _, _, _, summoned = GetCompanionInfo("MOUNT", i); | 45 local _, _, _, summoned = C_MountJournal.GetMountInfo(i); |
46 return not summoned; | 46 return not summoned; |
47 end | 47 end |
48 return MyLilPony.CallMountByFilter(filter); | 48 return MyLilPony.CallMountByFilter(filter); |
49 end | 49 end |
50 | 50 |
51 --- Summons a random flying mount. | 51 --- Summons a random flying mount. |
52 -- Does nothing if the only available mount is already summoned. | 52 -- Does nothing if the only available mount is already summoned. |
53 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 53 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
54 function MyLilPony.CallFlyingMount() | 54 function MyLilPony.CallFlyingMount() |
55 local filter = function (i) | 55 local filter = function (i) |
56 local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); | 56 local _, id, _, summoned = C_MountJournal.GetMountInfo(i); |
57 return not summoned and MyLilPony.IsFlyingMount(id); | 57 return not summoned and MyLilPony.IsFlyingMount(id); |
58 end | 58 end |
59 return MyLilPony.CallMountByFilter(filter); | 59 return MyLilPony.CallMountByFilter(filter); |
60 end | 60 end |
61 | 61 |
62 --- Summons a random ground mount. | 62 --- Summons a random ground mount. |
63 -- Does nothing if the only available mount is already summoned. | 63 -- Does nothing if the only available mount is already summoned. |
64 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 64 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
65 function MyLilPony.CallGroundMount() | 65 function MyLilPony.CallGroundMount() |
66 local filter = function (i) | 66 local filter = function (i) |
67 local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); | 67 local _, id, _, summoned = C_MountJournal.GetMountInfo(i); |
68 return not summoned and MyLilPony.IsGroundMount(id); | 68 return not summoned and MyLilPony.IsGroundMount(id); |
69 end | 69 end |
70 return MyLilPony.CallMountByFilter(filter); | 70 return MyLilPony.CallMountByFilter(filter); |
71 end | 71 end |
72 | 72 |
73 --- Summons a random aquatic mount. | 73 --- Summons a random aquatic mount. |
74 -- Does nothing if the only available mount is already summoned. | 74 -- Does nothing if the only available mount is already summoned. |
75 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 75 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
76 function MyLilPony.CallAquaticMount() | 76 function MyLilPony.CallAquaticMount() |
77 local filter = function (i) | 77 local filter = function (i) |
78 local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); | 78 local _, id, _, summoned = C_MountJournal.GetMountInfo(i); |
79 return not summoned and MyLilPony.IsAquaticMount(id); | 79 return not summoned and MyLilPony.IsAquaticMount(id); |
80 end | 80 end |
81 return MyLilPony.CallMountByFilter(filter); | 81 return MyLilPony.CallMountByFilter(filter); |
82 end | 82 end |
83 | 83 |
84 --- Summons a mount by slot number in mount spellbook. | 84 --- Summons a mount by slot number in mount spellbook. |
85 -- Does nothing if the specified mount is already summoned. | 85 -- Does nothing if the specified mount is already summoned. |
86 -- @param slotNumber The slot number of the desired mount in the mount spellbook. | 86 -- @param slotNumber The slot number of the desired mount in the mount spellbook. |
87 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 87 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
88 function MyLilPony.CallMountBySlot(slotNumber) | 88 function MyLilPony.CallMountBySlot(slotNumber) |
89 local countMounts = GetNumCompanions("MOUNT"); | 89 local countMounts = C_MountJournal.GetNumMounts(); |
90 if slotNumber > 0 and slotNumber < countMounts+1 then | 90 if slotNumber > 0 and slotNumber < countMounts+1 then |
91 local _, _, _, _, summoned = GetCompanionInfo("MOUNT", slotNumber); | 91 local _, _, _, summoned = C_MountJournal.GetMountInfo(i); |
92 MyLilPony.CallCompanion("MOUNT", slotNumber, not summoned); | 92 MyLilPony.CallCompanion("MOUNT", slotNumber, not summoned); |
93 return true; | 93 return true; |
94 end | 94 end |
95 return false; | 95 return false; |
96 end | 96 end |
99 -- Does nothing if the specified mount is already summoned. | 99 -- Does nothing if the specified mount is already summoned. |
100 -- @param mountName The exact name (including correct upper/lower case) of the desired mount. | 100 -- @param mountName The exact name (including correct upper/lower case) of the desired mount. |
101 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 101 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
102 function MyLilPony.CallMountByName(mountName) | 102 function MyLilPony.CallMountByName(mountName) |
103 local result = false; | 103 local result = false; |
104 local countMounts = GetNumCompanions("MOUNT"); | 104 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
105 for i = 1, countMounts do | 105 local name, _, _, summoned = C_MountJournal.GetMountInfo(i); |
106 local _, name, _, _, summoned = GetCompanionInfo("MOUNT", i); | |
107 if name == mountName then | 106 if name == mountName then |
108 MyLilPony.CallCompanion("MOUNT", i, not summoned); | 107 MyLilPony.CallCompanion("MOUNT", i, not summoned); |
109 result = true; | 108 result = true; |
110 do break end | 109 do break end |
111 end | 110 end |
118 -- Does nothing if the specified mount is already summoned. | 117 -- Does nothing if the specified mount is already summoned. |
119 -- @param mountNamePattern A string pattern against which mount names are matched (does not require correct upper/lower case). | 118 -- @param mountNamePattern A string pattern against which mount names are matched (does not require correct upper/lower case). |
120 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 119 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
121 function MyLilPony.CallMountByPattern(mountNamePattern) | 120 function MyLilPony.CallMountByPattern(mountNamePattern) |
122 local filter = function (i) | 121 local filter = function (i) |
123 local _, name, _, _, summoned = GetCompanionInfo("MOUNT", i); | 122 local name, _, _, summoned = C_MountJournal.GetMountInfo(i); |
124 return not summoned and MyLilPony.StringMatchIgnoreCase(name, mountNamePattern); | 123 return not summoned and MyLilPony.StringMatchIgnoreCase(name, mountNamePattern); |
125 end | 124 end |
126 return MyLilPony.CallMountByFilter(filter); | 125 return MyLilPony.CallMountByFilter(filter); |
127 end | 126 end |
128 | 127 |
130 -- Does nothing if the specified mount is already summoned. | 129 -- Does nothing if the specified mount is already summoned. |
131 -- @param id The creature or spell ID of the desired mount. | 130 -- @param id The creature or spell ID of the desired mount. |
132 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 131 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
133 function MyLilPony.CallMountById(id) | 132 function MyLilPony.CallMountById(id) |
134 local result = false; | 133 local result = false; |
135 local countMounts = GetNumCompanions("MOUNT"); | 134 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
136 for i = 1, countMounts do | 135 local _, spellId, _, summoned = C_MountJournal.GetMountInfo(i); |
137 local creatureId, _, spellId, _, summoned = GetCompanionInfo("MOUNT", i); | 136 local creatureId = C_MountJournal.GetMountInfoExtra(i); |
138 if id == creatureId or id == spellId then | 137 if id == creatureId or id == spellId then |
139 MyLilPony.CallCompanion("MOUNT", i, not summoned); | 138 MyLilPony.CallCompanion("MOUNT", i, not summoned); |
140 result = true; | 139 result = true; |
141 do break end | 140 do break end |
142 end | 141 end |
148 -- Does nothing if the specified mount is already summoned. | 147 -- Does nothing if the specified mount is already summoned. |
149 -- @param spellId The spell ID of the desired mount. | 148 -- @param spellId The spell ID of the desired mount. |
150 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 149 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
151 function MyLilPony.CallMountBySpell(spellId) | 150 function MyLilPony.CallMountBySpell(spellId) |
152 local result = false; | 151 local result = false; |
153 local countMounts = GetNumCompanions("MOUNT"); | 152 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
154 for i = 1, countMounts do | 153 local _, id, _, summoned = C_MountJournal.GetMountInfo(i); |
155 local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); | |
156 if id == spellId then | 154 if id == spellId then |
157 MyLilPony.CallCompanion("MOUNT", i, not summoned); | 155 MyLilPony.CallCompanion("MOUNT", i, not summoned); |
158 result = true; | 156 result = true; |
159 do break end | 157 do break end |
160 end | 158 end |
166 -- Does nothing if the specified mount is already summoned. | 164 -- Does nothing if the specified mount is already summoned. |
167 -- @param creatureId The creature ID of the desired mount. | 165 -- @param creatureId The creature ID of the desired mount. |
168 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 166 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
169 function MyLilPony.CallMountByCreature(creatureId) | 167 function MyLilPony.CallMountByCreature(creatureId) |
170 local result = false; | 168 local result = false; |
171 local countMounts = GetNumCompanions("MOUNT"); | 169 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
172 for i = 1, countMounts do | 170 local _, _, _, summoned = C_MountJournal.GetMountInfo(i); |
173 local id, _, _, _, summoned = GetCompanionInfo("MOUNT", i); | 171 local id = C_MountJournal.GetMountInfoExtra(i); |
174 if id == creatureId then | 172 if id == creatureId then |
175 MyLilPony.CallCompanion("MOUNT", i, not summoned); | 173 MyLilPony.CallCompanion("MOUNT", i, not summoned); |
176 result = true; | 174 result = true; |
177 do break end | 175 do break end |
178 end | 176 end |
188 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 186 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
189 -- @usage MyLilPony.CallMountByMatch("target"); | 187 -- @usage MyLilPony.CallMountByMatch("target"); |
190 function MyLilPony.CallMountByMatch(unit) | 188 function MyLilPony.CallMountByMatch(unit) |
191 local result = false; | 189 local result = false; |
192 local unitBuffs = MyLilPony.GetUnitBuffs(unit); | 190 local unitBuffs = MyLilPony.GetUnitBuffs(unit); |
193 local countMounts = GetNumCompanions("MOUNT"); | 191 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
194 for i = 1, countMounts do | 192 local _, id, _, summoned = C_MountJournal.GetMountInfo(i); |
195 local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); | |
196 if unitBuffs[id] ~= nil then | 193 if unitBuffs[id] ~= nil then |
197 MyLilPony.CallCompanion("MOUNT", i, not summoned); | 194 MyLilPony.CallCompanion("MOUNT", i, not summoned); |
198 result = true; | 195 result = true; |
199 do break end | 196 do break end |
200 end | 197 end |
205 --- Summons a random mount after filtering the mount spellbook. | 202 --- Summons a random mount after filtering the mount spellbook. |
206 -- Does nothing if the specified mount is already summoned. | 203 -- Does nothing if the specified mount is already summoned. |
207 -- @param filter A filter callback function which takes a single mount slot number and returns a Boolean value indicating whether or not the the indicated mount should be included. | 204 -- @param filter A filter callback function which takes a single mount slot number and returns a Boolean value indicating whether or not the the indicated mount should be included. |
208 -- @return A Boolean value indicating whether or not a mount was successfully summoned. | 205 -- @return A Boolean value indicating whether or not a mount was successfully summoned. |
209 -- @usage local filter = function (i) | 206 -- @usage local filter = function (i) |
210 -- local _, name, _, _, summoned = GetCompanionInfo("MOUNT", i); | 207 -- local name = C_MountJournal.GetMountInfo(i); |
211 -- return not summoned and string.match(name, pattern); | 208 -- return string.match(name, pattern); |
212 -- end | 209 -- end |
213 -- MyLilPony.CallMountByFilter(filter); | 210 -- MyLilPony.CallMountByFilter(filter); |
214 function MyLilPony.CallMountByFilter(filter) | 211 function MyLilPony.CallMountByFilter(filter) |
215 local countMounts = GetNumCompanions("MOUNT"); | 212 local mounts = {}; |
216 if countMounts > 0 then | 213 local x = 0; |
217 local results = {}; | 214 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
218 local countResults = 0; | 215 if filter(i) then |
219 | 216 x = x + 1; |
220 for i = 1, countMounts do | 217 mounts[x] = i; |
221 if filter(i) then | 218 end |
222 countResults = countResults + 1; | 219 end |
223 results[countResults] = i; | |
224 end | |
225 end | |
226 | 220 |
227 if countResults > 0 then | 221 if x > 0 then |
228 local i = random(1, countResults); | 222 local i = mounts[random(1, x)]; |
229 local _, _, _, _, summoned = GetCompanionInfo("MOUNT", results[i]); | 223 local _, _, _, summoned = C_MountJournal.GetMountInfo(i); |
230 MyLilPony.CallCompanion("MOUNT", results[i], not summoned); | 224 MyLilPony.CallCompanion("MOUNT", i, not summoned); |
231 return true; | 225 return true; |
232 end | |
233 end | 226 end |
234 return false; | 227 return false; |
235 end | 228 end |
236 | 229 |
237 --- Lists available mounts by name. | 230 --- Lists available mounts by name. |
238 -- @return A list of mount names. Since this function returns all known mounts, the index of each entry in the list is also the mount's slot number. | 231 -- @return A list of mount names. |
239 function MyLilPony.ListMounts() | 232 function MyLilPony.ListMounts() |
240 local results = {}; | 233 local results = {}; |
241 local countMounts = GetNumCompanions("MOUNT"); | 234 local x = 1; |
242 for i = 1, countMounts do | 235 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
243 local _, name, _, _, _ = GetCompanionInfo("MOUNT", i); | 236 local name = C_MountJournal.GetMountInfo(i); |
244 results[i] = name; | 237 results[i] = name; |
238 x = x + 1; | |
245 end | 239 end |
246 return results; | 240 return results; |
247 end | 241 end |
248 | 242 |
249 --- Lists available ground mounts by name. | 243 --- Lists available ground mounts by name. |
250 -- @return A list of ground mount names. | 244 -- @return A list of ground mount names. |
251 function MyLilPony.ListGroundMounts() | 245 function MyLilPony.ListGroundMounts() |
252 local results = {}; | 246 local results = {}; |
253 local countMounts = GetNumCompanions("MOUNT"); | 247 local x = 1; |
254 local x = 1; | 248 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
255 for i = 1, countMounts do | 249 local name, id = C_MountJournal.GetMountInfo(i); |
256 local _, _, id, _, _ = GetCompanionInfo("MOUNT", i); | |
257 if MyLilPony.IsGroundMount(id) then | 250 if MyLilPony.IsGroundMount(id) then |
258 results[x] = name; | 251 results[x] = name; |
259 x = x + 1; | 252 x = x + 1; |
260 end | 253 end |
261 end | 254 end |
264 | 257 |
265 --- Lists available flying mounts by name. | 258 --- Lists available flying mounts by name. |
266 -- @return A list of flying mount names. | 259 -- @return A list of flying mount names. |
267 function MyLilPony.ListFlyingMounts() | 260 function MyLilPony.ListFlyingMounts() |
268 local results = {}; | 261 local results = {}; |
269 local countMounts = GetNumCompanions("MOUNT"); | 262 local x = 1; |
270 local x = 1; | 263 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
271 for i = 1, countMounts do | 264 local name, id = C_MountJournal.GetMountInfo(i); |
272 local _, _, id, _, _ = GetCompanionInfo("MOUNT", i); | |
273 if MyLilPony.IsFlyingMount(id) then | 265 if MyLilPony.IsFlyingMount(id) then |
274 results[x] = name; | 266 results[x] = name; |
275 x = x + 1; | 267 x = x + 1; |
276 end | 268 end |
277 end | 269 end |
280 | 272 |
281 --- Lists available aquatic mounts by name. | 273 --- Lists available aquatic mounts by name. |
282 -- @return A list of aquatic mount names. | 274 -- @return A list of aquatic mount names. |
283 function MyLilPony.ListAquaticMounts() | 275 function MyLilPony.ListAquaticMounts() |
284 local results = {}; | 276 local results = {}; |
285 local countMounts = GetNumCompanions("MOUNT"); | 277 local x = 1; |
286 local x = 1; | 278 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
287 for i = 1, countMounts do | 279 local name, id = C_MountJournal.GetMountInfo(i); |
288 local _, _, id, _, _ = GetCompanionInfo("MOUNT", i); | |
289 if MyLilPony.IsAquaticMount(id) then | 280 if MyLilPony.IsAquaticMount(id) then |
290 results[x] = name; | 281 results[x] = name; |
291 x = x + 1; | 282 x = x + 1; |
292 end | 283 end |
293 end | 284 end |
297 --- Lists available mounts names whose name matches a given pattern. | 288 --- Lists available mounts names whose name matches a given pattern. |
298 -- @param mountNamePattern A string pattern against which mount names are matched (does not require correct upper/lower case). | 289 -- @param mountNamePattern A string pattern against which mount names are matched (does not require correct upper/lower case). |
299 -- @return A list of matching mount names. | 290 -- @return A list of matching mount names. |
300 function MyLilPony.ListMountsByPattern(mountNamePattern) | 291 function MyLilPony.ListMountsByPattern(mountNamePattern) |
301 local results = {}; | 292 local results = {}; |
302 local countMounts = GetNumCompanions("MOUNT"); | 293 local x = 1; |
303 local x = 1; | 294 for i in MyLilPony.EnumerateKnownMountSlotIDs() do |
304 for i = 1, countMounts do | 295 local name = C_MountJournal.GetMountInfo(i); |
305 local _, name, _, _, _ = GetCompanionInfo("MOUNT", i); | |
306 if MyLilPony.StringMatchIgnoreCase(name, mountNamePattern) then | 296 if MyLilPony.StringMatchIgnoreCase(name, mountNamePattern) then |
307 results[x] = name; | 297 results[x] = name; |
308 x = x + 1; | 298 x = x + 1; |
309 end | 299 end |
310 end | 300 end |
311 return results; | 301 return results; |
312 end | 302 end |
313 |