annotate verbage.lua @ 151:42dd3076baaf

Initial attempt at tracking bonus rolls and non-loot items. Add more loot-catching patterns, and generalize them a little more. Bonus rolls are tracked by default, non-loot stuff is not. Bonus rolls don't seem to be working, but non-loot definitely is. (It may be that the patterns for bonus rolls are not actually used by the game client, or rather, that the game client does not issue those events for bonus rolls which are not your own. I have yet to win a bonus roll since implementing the code, but one person in LFR claimed to win a bonus item which simply wasn't visible to me at all. More data needed.)
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Fri, 09 Jan 2015 19:14:56 -0500
parents 63bda09d88fe
children
rev   line source
farmbuyer@95 1 local addon = select(2,...)
farmbuyer@95 2 if addon.NOLOAD then return end
farmbuyer@95 3
farmbuyer@1 4 local todo = [[
farmbuyer@88 5 - Right-clicking the [ouroloot] chat link could do something different than
farmbuyer@88 6 the current left-clicking. Popup small menu in place?
farmbuyer@88 7
farmbuyer@100 8 - A fight duration of (0:00) happens when DBM gets confused. If it happens
farmbuyer@100 9 "near" another boss entry with nonzero duration, can we just safely assume
farmbuyer@100 10 that's the real entry and delete the zero entry altogether?
farmbuyer@100 11
farmbuyer@125 12 - Loading enough plugin tabs to grow a second tab row causes the ST frames
farmbuyer@125 13 to be too large.
farmbuyer@125 14
farmbuyer@107 15 - Rework candidate groups into the expiring caches.
farmbuyer@107 16
farmbuyer@88 17 - Break more methods out into private routines.
farmbuyer@1 18
farmbuyer@1 19 - implement ack, then fallback to recording if not ack'd
farmbuyer@1 20
farmbuyer@1 21 - Being able to drag rows up and down the main loot grid would be awesome. Coding
farmbuyer@1 22 that would be likely to drive me batshiat insane.
farmbuyer@116 23
farmbuyer@116 24 - Something to NOT do: sort cross-realm recipients into history realms based
farmbuyer@116 25 on the realm of the recipient instead of the realm of the player. While this
farmbuyer@116 26 would be useful for building up a history across realms... why would you want
farmbuyer@116 27 to do that? Massive data piling up that wouldn't be noticed unless the user
farmbuyer@116 28 makes a habit of clicking the realm dropdown menu and looking around history.
farmbuyer@1 29 ]]
farmbuyer@1 30
farmbuyer@96 31 local helptree = {
farmbuyer@1 32 {
farmbuyer@1 33 value = "about",
farmbuyer@1 34 text = "About",
farmbuyer@1 35 },
farmbuyer@1 36 {
farmbuyer@1 37 value = "basic",
farmbuyer@1 38 text = "Basics",
farmbuyer@1 39 children = {
farmbuyer@1 40 {
farmbuyer@1 41 value = "loot",
farmbuyer@1 42 text = "Loot Entries",
farmbuyer@1 43 },
farmbuyer@1 44 {
farmbuyer@1 45 value = "boss",
farmbuyer@1 46 text = "Boss Entries",
farmbuyer@1 47 },
farmbuyer@1 48 },
farmbuyer@1 49 },
farmbuyer@1 50 {
farmbuyer@1 51 value = "tracking",
farmbuyer@1 52 text = "Tracking Loot",
farmbuyer@1 53 children = {
farmbuyer@1 54 {
farmbuyer@1 55 value = "enabled",
farmbuyer@1 56 text = "Full Tracking",
farmbuyer@1 57 },
farmbuyer@1 58 {
farmbuyer@1 59 value = "bcast",
farmbuyer@1 60 text = "Rebroadcasting",
farmbuyer@1 61 },
farmbuyer@1 62 },
farmbuyer@1 63 },
farmbuyer@1 64 {
farmbuyer@1 65 value = "texts",
farmbuyer@1 66 text = "Generated Texts",
farmbuyer@1 67 children = {
farmbuyer@1 68 {
farmbuyer@1 69 value = "forum",
farmbuyer@1 70 text = "Forum Markup",
farmbuyer@1 71 },
farmbuyer@1 72 {
farmbuyer@1 73 value = "other",
farmbuyer@1 74 text = "Other Texts",
farmbuyer@1 75 },
farmbuyer@1 76 {
farmbuyer@1 77 value = "saved",
farmbuyer@1 78 text = "Saved Texts",
farmbuyer@1 79 },
farmbuyer@1 80 },
farmbuyer@1 81 },
farmbuyer@1 82 {
farmbuyer@7 83 value = "history",
farmbuyer@7 84 text = "History Tab",
farmbuyer@7 85 },
farmbuyer@7 86 {
farmbuyer@1 87 value = "tips",
farmbuyer@1 88 text = "Handy Tips",
farmbuyer@1 89 children = {
farmbuyer@1 90 {
farmbuyer@1 91 value = "slashies",
farmbuyer@1 92 text = "Slash Commands",
farmbuyer@1 93 },
farmbuyer@73 94 {
farmbuyer@73 95 value = "prescan",
farmbuyer@73 96 text = "Prescanning",
farmbuyer@73 97 },
farmbuyer@1 98 },
farmbuyer@1 99 },
farmbuyer@1 100 {
farmbuyer@1 101 value = "todo",
farmbuyer@1 102 text = "TODOs, Bugs, etc",
farmbuyer@1 103 children = {
farmbuyer@1 104 {
farmbuyer@1 105 value = "gotchas",
farmbuyer@1 106 text = "Gotchas",
farmbuyer@1 107 },
farmbuyer@1 108 {
farmbuyer@1 109 value = "todolist",
farmbuyer@1 110 text = "TODO/knownbugs",
farmbuyer@1 111 },
farmbuyer@1 112 },
farmbuyer@1 113 },
farmbuyer@1 114 }
farmbuyer@1 115
farmbuyer@1 116 -- Help text. Formatting doesn't matter, but use a blank line to split
farmbuyer@1 117 -- paragraphs. This file needs to be edited with a text editor that doesn't
farmbuyer@1 118 -- do anything stupid by placing extra spaces at the end of lines.
farmbuyer@96 119 local helptext
farmbuyer@1 120 do
farmbuyer@73 121 local replacement_colors = {
farmbuyer@73 122 ["+"]="|cff30adff", -- blue: right-click options, control panel names
farmbuyer@73 123 ["<"]="|cff00ff00", -- light green, tab titles and generic highlighting
farmbuyer@73 124 [">"]="|r" }
farmbuyer@1 125 local T={}
farmbuyer@1 126 T.about = [[
farmbuyer@1 127 Ouro Loot is the fault of Farmbuyer of Ouroboros on US-Kilrogg. Bug reports,
farmbuyer@95 128 comments, and suggestions are welcome at the project page:
farmbuyer@95 129
farmbuyer@95 130 <www.curse.com/addons/wow/ouroloot>
farmbuyer@95 131
farmbuyer@95 132
farmbuyer@103 133 or send them to <farmbuyer@gmail.com> in non-HTML format.
farmbuyer@117 134
farmbuyer@142 135 If you have downloaded this addon from anywhere other than Curse or
farmbuyer@142 136 WoWInterface, then it is probably outdated at best or stuffed full
farmbuyer@142 137 of |cffff335dmalware and viruses|r at worst. Get your addons from reputable
farmbuyer@142 138 safe sites!
farmbuyer@1 139 ]]
farmbuyer@1 140
farmbuyer@1 141 T.basic = [[
farmbuyer@95 142 The </ouroloot> command opens this display. The buttons
farmbuyer@142 143 on the right side control operation and are mostly self-explanatory. Hovering
farmbuyer@142 144 over things will usually display some additional text in the gray line at the
farmbuyer@142 145 bottom.
farmbuyer@1 146
farmbuyer@142 147 Each tab on the left side can additionally create extra contols in the lower
farmbuyer@142 148 right section (with the same name as the tab).
farmbuyer@1 149
farmbuyer@1 150 The first tab on the left side, <Loot>, is where everything goes to and comes
farmbuyer@142 151 from. Looting events and Deadly Boss Mods notifications go to the <Loot> tab;
farmbuyer@142 152 the other tabs are all generated from the information in the <Loot> tab.
farmbuyer@16 153
farmbuyer@142 154 |cffff335dNote about these Help pages:|r The category "titles" on the left
farmbuyer@142 155 side have their own help text, in addition to the more specific entries in the
farmbuyer@142 156 expanded list. Read those first before expanding the categories or you'll
farmbuyer@142 157 miss stuff.
farmbuyer@1 158 ]]
farmbuyer@1 159
farmbuyer@1 160 T.basic_loot = [[
farmbuyer@142 161 A "loot row" in the first tab has three columns: the item, the recipient, and
farmbuyer@142 162 any extra notes.
farmbuyer@1 163
farmbuyer@1 164 <Mouse Hover>
farmbuyer@1 165
farmbuyer@103 166 Hovering the mouse over the first column will display the item tooltip.
farmbuyer@1 167
farmbuyer@1 168 Hovering over the second column will display a tooltip with the loot that person
farmbuyer@1 169 has received. If they've won more than 10 items, the list is cut off with '...'
farmbuyer@142 170 at the end; to see the full list, use the right-click +Show only this player>
farmbuyer@142 171 option instead.
farmbuyer@1 172
farmbuyer@1 173 <Right-Click>
farmbuyer@1 174
farmbuyer@1 175 Right-clicking a loot row shows a dropdown menu.
farmbuyer@1 176
farmbuyer@1 177 Right-clicking in the first or third columns will display options for special
farmbuyer@103 178 treatment of that loot entry (e.g., marking as offspec). Using any of those
farmbuyer@103 179 options will change the text in the third column, which will then affect the
farmbuyer@103 180 text in the generated tabs, such as forum markup.
farmbuyer@1 181
farmbuyer@1 182 Right-clicking in the second column allows you to temporarily remove all other
farmbuyer@142 183 players from the loot display. Use the reset button in the lower-right corner
farmbuyer@142 184 to restore the display to normal. The menu also allows you to +reassign> loot
farmbuyer@142 185 from one player to another; if the new recipient is not in the raid group at
farmbuyer@142 186 the time, use the +Enter name...> option at the bottom of the list of names to
farmbuyer@142 187 type the name into a text box. If your raid takes advantage of the ability to
farmbuyer@142 188 trade soulbound items, you will need to reassign the item here for the
farmbuyer@142 189 generated text to be factually correct.
farmbuyer@1 190
farmbuyer@142 191 See the help screen on "Boss Entries" for the +Insert new boss kill event>
farmbuyer@142 192 option.
farmbuyer@1 193
farmbuyer@1 194 <Double-Click>
farmbuyer@1 195
farmbuyer@1 196 Double-clicking a loot row in the third ("Notes") column allows you to edit that
farmbuyer@1 197 field directly. The color of the text will still depend on any +Mark as ___>
farmbuyer@1 198 actions done to that loot row, whether automatically or by hand.
farmbuyer@1 199 ]]
farmbuyer@1 200
farmbuyer@1 201 T.basic_boss = [[
farmbuyer@142 202 Boss wipe/kill entries are entirely dependant on Deadly Boss Mods being enabled
farmbuyer@142 203 and up-to-date. The typical sequence of events for our usual raids goes like
farmbuyer@142 204 this:
farmbuyer@1 205
farmbuyer@142 206 We make four or five attempts on Baron Steamroller. As DBM registers that
farmbuyer@142 207 combat ends, a <wipe> event is entered on the loot display along with the
farmbuyer@142 208 duration of the fight. If the loot display is opened, the wipes will be
farmbuyer@142 209 visible with a light gray background.
farmbuyer@1 210
farmbuyer@47 211 After reminding the melee dps to move out of fire, we manage to kill
farmbuyer@142 212 Steamroller. When DBM registers the win, a <kill> event is entered on the
farmbuyer@142 213 display with a dark gray background. All previous <wipe>s are removed and
farmbuyer@142 214 collapsed into the <kill> event. The final <kill> event shows the duration
farmbuyer@142 215 of the successful fight and the number of attempts needed (or "one-shot" if
farmbuyer@142 216 we're competent).
farmbuyer@1 217
farmbuyer@142 218 Sometimes this goes wrong, when DBM misses its own triggers. If DBM does not
farmbuyer@142 219 catch the start of the boss fight, it can't register the end, so nothing at
farmbuyer@142 220 all is recorded. If the fight was a win but DBM does not catch the victory
farmbuyer@142 221 conditions, then DBM will (after several seconds) decide that it was a wipe
farmbuyer@142 222 instead. And sometimes useful loot will drop from trash mobs, which DBM knows
farmbuyer@142 223 nothing about.
farmbuyer@1 224
farmbuyer@1 225 For all those reasons, right-clicking on a "boss row" will display options for
farmbuyer@1 226 +Insert new boss kill event>, and for toggling a <wipe> into a <kill>. We often
farmbuyer@1 227 insert bosses named "trash" to break up the display and correct the forum markup
farmbuyer@1 228 listing.
farmbuyer@1 229 ]]
farmbuyer@1 230
farmbuyer@1 231 T.tracking = [[
farmbuyer@1 232 The first button underneath +Main> in the right-hand column displays the current
farmbuyer@1 233 status of the addon. If it is disabled, then no recording, rebroadcasting, or
farmbuyer@142 234 listening for rebroadcasts is performed. Any loot already recorded will be
farmbuyer@142 235 restored across login sessions no matter the status.
farmbuyer@1 236
farmbuyer@1 237 You can turn on tracking/broadcasting before joining a raid. If you join a raid
farmbuyer@47 238 and the addon has not been turned on, then a popup dialog will ask for
farmbuyer@1 239 instructions. (This can be turned off in the advanced <Options>.)
farmbuyer@1 240
farmbuyer@142 241 The addon tries to be smart about logging on during a raid (due to a disconnect
farmbuyer@142 242 or relog). If you log in, are already in a raid group, and loot has already
farmbuyer@142 243 been stored from tracking, it will re-enable itself automatically.
farmbuyer@1 244
farmbuyer@142 245 The intent of the addon design is that, after the end of a raid, all the
farmbuyer@142 246 generated markup text is done, optionally saved (see "Generated Texts - Saved Texts"),
farmbuyer@142 247 and then cleared from storage altogether. As a result, if you login with
farmbuyer@142 248 restored loot information but are not in a raid, the addon will do nothing on
farmbuyer@142 249 its own -- but will assume that you've forgotten to finish those steps and will
farmbuyer@142 250 yammer about it in the chat window as a reminder.
farmbuyer@1 251
farmbuyer@142 252 The +Threshold> drop-down has no connection at all with any current loot
farmbuyer@142 253 threshold set by you or a master looter.
farmbuyer@1 254 ]]
farmbuyer@1 255
farmbuyer@1 256 T.tracking_enabled = [[
farmbuyer@1 257 Full tracking records all loot events that fulfill these criteria:
farmbuyer@1 258
farmbuyer@1 259 1) The loot quality is equal to or better than what you have selected in the
farmbuyer@1 260 +Threshold> drop-down.
farmbuyer@1 261
farmbuyer@47 262 2) The loot is not in the list of items to filter out (see the <Options> tab).
farmbuyer@47 263 These are things like shards from disenchanting and Darkmoon Faire quest items.
farmbuyer@1 264
farmbuyer@1 265 3) <You can see the loot event.> More precisely, you need to be close enough
farmbuyer@142 266 to the recipient of the loot to be able to see "So-And-So receives loot:
farmbuyer@142 267 [Stuff]" in your chat window, even if you have those actual loot messages
farmbuyer@142 268 turned off.
farmbuyer@1 269
farmbuyer@1 270 It is (3) that causes complications. A master looter can assign loot to anybody
farmbuyer@1 271 anywhere in a raid instance, but the range on detecting loot events is much
farmbuyer@1 272 smaller. If your raid does not use master looting then you merely need to be
farmbuyer@1 273 close enough to the boss corpse, presuming that the winners will need to walk
farmbuyer@1 274 over to get their phat epix.
farmbuyer@1 275
farmbuyer@1 276 If you do use master looter, then you have two options: first, you can
farmbuyer@142 277 require players who might get loot to stay near the boss. You would then also
farmbuyer@142 278 need to stay near the boss to detect the loot event. (This can be less hassle
farmbuyer@142 279 if you are also the loot master.) The downside is that other players moving
farmbuyer@142 280 on to fight to the next boss are doing so without the help of their teammates.
farmbuyer@1 281
farmbuyer@1 282 The other option is to ask other players to also install Ouro Loot, and for
farmbuyer@1 283 them to turn on the "Rebroadcasting" feature. Any loot events which they can
farmbuyer@1 284 see will be communicated to you. Then it only becomes necessary for at least
farmbuyer@1 285 one person to be close enough to the loot recipient to see the item awarded,
farmbuyer@47 286 and you will record it no matter how far away you are -- even back in Orgrimmar.
farmbuyer@1 287
farmbuyer@142 288 If you have Full Tracking enabled, then you are also automatically
farmbuyer@142 289 rebroadcasting. Having more than one player with Full Tracking turned on is
farmbuyer@142 290 probably a good idea, in case one of the trackers experiences a game crash or
farmbuyer@142 291 is suddenly kidnapped by robot ninja monkeys.
farmbuyer@1 292 ]]
farmbuyer@1 293
farmbuyer@1 294 T.tracking_bcast = [[
farmbuyer@142 295 The simplest method of operation is only rebroadcasting the loot events that
farmbuyer@142 296 you see, as you see them. Nothing is recorded in your local copy of the addon.
farmbuyer@1 297
farmbuyer@142 298 If you logout for any reason, the addon will not reactivate when you log back
farmbuyer@142 299 in.
farmbuyer@1 300
farmbuyer@95 301 You can use </ouroloot bcast> or </ouroloot broadcast> to turn on rebroadcasting
farmbuyer@95 302 without opening the GUI.
farmbuyer@1 303 ]]
farmbuyer@1 304
farmbuyer@1 305 T.texts = [[
farmbuyer@47 306 The middle tabs are simply large editable text boxes. Their text is initially
farmbuyer@142 307 generated from the information stored on the main <Loot> tab, at the time you
farmbuyer@142 308 click on the tab. Not every bit of information that we want in the generated
farmbuyer@142 309 text is always available, or depends on things that the game itself can't know.
farmbuyer@142 310 So you can edit the text in the tabs and your edits will be preserved.
farmbuyer@1 311
farmbuyer@1 312 Each time you click one of the text tabs, every new entry on the <Loot> tab
farmbuyer@1 313 since the last time this tab was shown will be turned into text.
farmbuyer@1 314
farmbuyer@142 315 Clicking the +Regenerate> button will throw away all the text on that tab,
farmbuyer@142 316 including any edits you've made, and recreate all of it from scratch. If
farmbuyer@142 317 you've accidentally deleted the text from the editbox, or you've made manual
farmbuyer@142 318 changes to the <Loot> tab, you can use this button to start over.
farmbuyer@1 319
farmbuyer@1 320 You can click in an editbox and use Control-A to select all text, then Control-C
farmbuyer@1 321 to copy it to the system clipboard for subsequent pasting into a web browser or
farmbuyer@1 322 whatever. If you're on a Mac, you probably already know the equivalent keys.
farmbuyer@1 323 ]]
farmbuyer@1 324
farmbuyer@1 325 T.texts_forum = [[
farmbuyer@1 326 The <Forum Markup> tab creates text as used by the guild forums for Ouroboros
farmbuyer@31 327 of US-Kilrogg. By default this is fairly standard BBcode. The format of the
farmbuyer@1 328 individual loot items can be adjusted via the dropdown menu on the lower right
farmbuyer@1 329 of the tab.
farmbuyer@1 330
farmbuyer@1 331 The [url] choice defaults to using Wowhead. If you have the [item] extension
farmbuyer@1 332 for your BBcode installed, you can use either of those choices too. The "by ID"
farmbuyer@16 333 variant is good for heroic raid items that share names with nonheroic items,
farmbuyer@16 334 but the raw output is harder to read in the text tab.
farmbuyer@1 335
farmbuyer@142 336 You can also specify a custom string. Formatting is done with these
farmbuyer@142 337 replacements:
farmbuyer@1 338
farmbuyer@1 339 +$N>: item name|r
farmbuyer@1 340
farmbuyer@1 341 +$I>: (capital "eye", not "ell") numeric item ID|r
farmbuyer@1 342
farmbuyer@1 343 +$T>: loot recipient and any additional notes|r
farmbuyer@1 344
farmbuyer@1 345 +$X>: if more than one of the item was looted, this is the "x2", "x3", etc
farmbuyer@1 346
farmbuyer@1 347
farmbuyer@1 348 Pro tip #1: if something has happened on the main <Loot> tab which cannot be
farmbuyer@1 349 changed directly but would generate incorrect text, you can click this tab to
farmbuyer@1 350 generate the text right away. Then edit/move the text as needed. When you
farmbuyer@1 351 close the display or click back on the <Loot> tab, your edited text will be
farmbuyer@1 352 preserved for later.
farmbuyer@1 353
farmbuyer@47 354 Pro tip #2: Barring situations like pro tip #1, this addon author typically
farmbuyer@47 355 does not generate any text until the end of the raid, simplifying things
farmbuyer@47 356 considerably.
farmbuyer@1 357 ]]
farmbuyer@1 358
farmbuyer@1 359 T.texts_other = [[
farmbuyer@142 360 So far the only other generated text is the <Attendance> tab, an alphabetized
farmbuyer@142 361 list on a per-boss basis. Players who are probably inside the raid are grouped
farmbuyer@142 362 under [:PLUS:], and the remaining players are under [-]. "Probably inside" is
farmbuyer@142 363 an assumption that groups 1 and 2 are raiding in a 10-player instance,
farmbuyer@142 364 groups 1-5 are raiding in a 25-player instance, and so forth.
farmbuyer@1 365
farmbuyer@1 366 Other addons can register their own text tabs and corresponding generation
farmbuyer@1 367 functions. If you want to be able to feed text into an offline program (for
farmbuyer@1 368 example, a spreadsheet or DKP tracker), then this may be of use to you.
farmbuyer@1 369
farmbuyer@1 370 Ideas for more tabs? Tell me!
farmbuyer@1 371 ]]
farmbuyer@1 372
farmbuyer@1 373 T.texts_saved = [[
farmbuyer@142 374 The contents of the <Forum Markup>, <Attendance>, and other such tabs can be
farmbuyer@142 375 saved, so that they will not be lost when you use the +Clear> button.
farmbuyer@1 376
farmbuyer@1 377 Do any edits you want to the generated text tabs, then click the +Save Current As...>
farmbuyer@142 378 button on the right-hand side. Enter a short descriptive reminder (for
farmbuyer@142 379 example, "thursday hardmodes") in the popup dialog. The texts will remain in
farmbuyer@142 380 their tabs, but clearing loot information will not lose them now.
farmbuyer@1 381
farmbuyer@16 382 All saved texts are listed on the right-hand side. Clicking a saved text name
farmbuyer@142 383 lets you +Load> or +Delete> that saved set. The primary <Loot> tab is not
farmbuyer@142 384 saved and restored by this process, only the generated texts. This also means
farmbuyer@142 385 you cannot +Regenerate> the texts.
farmbuyer@1 386 ]]
farmbuyer@1 387
farmbuyer@7 388 T.history = [[
farmbuyer@7 389 The <History> tab maintains a list of all loot. It is intended to help answer
farmbuyer@142 390 questions such as "When was the last time PlayerX won something?" and "How
farmbuyer@142 391 much stuff has PlayerY gotten lately?" The history tab is, by design, not as
farmbuyer@142 392 configurable as the main <Loot> tab; entries cannot be manually edited and so
farmbuyer@142 393 forth.
farmbuyer@7 394
farmbuyer@142 395 This loot history is the only "live" data tab which persists across the
farmbuyer@142 396 +Clear Loot> command. For this reason, very little information is stored:
farmbuyer@142 397 only the recipient, the item, and a textual timestamp. Boss names, offspecs,
farmbuyer@142 398 and other notes are not preserved.
farmbuyer@7 399
farmbuyer@142 400 The default history window shows the most recent item received by each person.
farmbuyer@142 401 It is sorted with the most recent loot at the top, towards older loot at the
farmbuyer@142 402 bottom. You can click the column headers to rearrange the rows, but doing so
farmbuyer@142 403 repeatedly can lead to odd display issues.
farmbuyer@7 404
farmbuyer@142 405 Left-clicking a row will change the window to display all recorded loot for
farmbuyer@142 406 that player. While on that display, right-clicking any row will return to
farmbuyer@142 407 showing the most recent single item for all players.
farmbuyer@7 408
farmbuyer@142 409 Histories are maintained per-realm. This refers to the realm you are on when
farmbuyer@142 410 the loot drops, not the realm of the player receiving it (in the case of
farmbuyer@142 411 cross-realm groups). If you play multiple characters on the same realm,
farmbuyer@142 412 history will accumulate across all your raids. To change the displayed realm,
farmbuyer@142 413 use the dropdown menu in the lower right corner.
farmbuyer@7 414
farmbuyer@142 415 The +Regenerate> button permanently erases the history of the displayed realm,
farmbuyer@142 416 and creates fresh entries using whatever loot information is currently on the
farmbuyer@142 417 <Loot> tab. Be aware that the <Loot> tab does not track realms, so if you have
farmbuyer@142 418 gathered data for players on realm A, but are displaying realm B when you click
farmbuyer@142 419 the Regenerate button, then your history for realm B will be... very odd.
farmbuyer@7 420
farmbuyer@7 421 +Clear Realm History> and +Clear ALL History> are used to periodically wipe the
farmbuyer@7 422 slate clean. They do not generate any new entries from existing loot.
farmbuyer@7 423
farmbuyer@76 424 +Clear Older> deletes history information older than a certain threshold (by
farmbuyer@76 425 default, 5 loot events). It is another good periodic maintenance step, but
farmbuyer@76 426 does not discard as much data as the other actions.
farmbuyer@7 427
farmbuyer@103 428 From the right-click menu on the main tab, using +Reassign to...> will also
farmbuyer@103 429 move the item between player histories. The timestamp will not be changed;
farmbuyer@103 430 it will "always have been" received by the new recipient. Using
farmbuyer@103 431 +Mark as disenchanted> or +Mark as guild vault> will remove the item from
farmbuyer@103 432 history altogether. Remarking such an item as +normal> or +offspec> will
farmbuyer@103 433 replace the item back into the player's history.
farmbuyer@25 434
farmbuyer@7 435 Note: the first time you display the histories during a game session, you will
farmbuyer@142 436 likely see several items listed as +UNKNOWN>. This is not a bug; these items
farmbuyer@142 437 are simply not in your local game cache. WoW will automatically retrieve the
farmbuyer@142 438 missing data after several seconds, but the display will not update until the
farmbuyer@142 439 next time the History tab is shown. Starting in WoW 4.0, the local game cache
farmbuyer@142 440 is not preserved across play sessions, so the +UNKNOWN> entries will pop up
farmbuyer@142 441 from time to time.
farmbuyer@7 442 ]]
farmbuyer@7 443
farmbuyer@1 444 T.tips = [[
farmbuyer@16 445 The |cffff8000[Ouro Loot]|r "legendary item" displayed at the start of all
farmbuyer@103 446 chat messages is a clickable link. Clicking opens the main display, and if
farmbuyer@103 447 possible will jump to and/or highlight the relevent data which caused the
farmbuyer@103 448 associated chat message to be printed in the first place.
farmbuyer@103 449 The "Be chatty" options on the <Options> tab will cause a chat message to be
farmbuyer@103 450 printed after various events, thus providing a way to quickly view them.
farmbuyer@1 451
farmbuyer@142 452 If you are broadcasting to somebody else who is tracking, you should probably
farmbuyer@142 453 be using the same threshold. If yours is lower, then some of the loot you
farmbuyer@142 454 broadcast to him will be ignored. If yours is higher, then you will not be
farmbuyer@142 455 sending information that he would have recorded. The "correct" setting depends
farmbuyer@142 456 on what your guild wants to track.
farmbuyer@1 457
farmbuyer@142 458 Ticking the "notraid" box in advanced debugging <Options>, before enabling
farmbuyer@142 459 tracking, will make the tracking work outside of a raid group. Communication
farmbuyer@142 460 functions will behave a little strangely when doing this. Be sure to check
farmbuyer@142 461 the threshold! You can also use <"/ouroloot debug notraid"> instead.
farmbuyer@1 462
farmbuyer@142 463 Using the "Saved Texts" feature plus the +Clear> button is a great way of
farmbuyer@142 464 putting off pasting loot into your guild's website until a more convenient time.
farmbuyer@83 465
farmbuyer@83 466 Shift-clicking an item in the <Loot> or <History> display will paste it into an
farmbuyer@83 467 open chat editbox.
farmbuyer@1 468 ]]
farmbuyer@1 469
farmbuyer@1 470 T.tips_slashies = [[
farmbuyer@97 471 A text field in the <Options> tab lets you use additional slash commands as a
farmbuyer@95 472 shortcut for </ouroloot>. The author prefers </ol>, as an example. The
farmbuyer@95 473 default used to be </loot> until that became a builtin command in MoP.
farmbuyer@95 474
farmbuyer@142 475 If you give an unrecognized argument to a slash command, it will search the
farmbuyer@142 476 tab titles left to right for a title beginning with the same letters as
farmbuyer@95 477 the argument, and open the display to that tab. For example, <"/ol a"> would
farmbuyer@103 478 open the <Attendance> tab, and <"/ol o"> would open the <Options> tab. If
farmbuyer@95 479 you had added a theoretical <EQDKP> tab, then <"/ol eq"> would be the fastest
farmbuyer@103 480 way to see it. Only enough text to be unambiguous is required, and all of it
farmbuyer@103 481 is case-insensitive.
farmbuyer@103 482
farmbuyer@103 483 Some tabs will accept additional text after the tab title, and try to Do The
farmbuyer@103 484 Right Thing. For example, <"/ol history blah"> will search for a player named
farmbuyer@103 485 "blah", and if found, will act as if you had clicked on that row, switching
farmbuyer@103 486 the display to every loot received by that player. The same unambiguous prefix
farmbuyer@103 487 searching is used for names as for tab titles, so <"/ol hi farm"> is enough to
farmbuyer@103 488 trigger Farmbuyer's history display (as long as nobody named Farmville joins
farmbuyer@103 489 the raid), and so forth.
farmbuyer@16 490
farmbuyer@1 491 The </ouroloot> command can take arguments to do things without going through
farmbuyer@142 492 the UI. Parts given in *(angle brackets)* are required, parts
farmbuyer@142 493 in [square brackets] are optional:
farmbuyer@1 494
farmbuyer@103 495 +help>: opens the UI to the help tab|r
farmbuyer@103 496
farmbuyer@1 497 +broadcast>/+bcast>: turns on rebroadcasting|r
farmbuyer@1 498
farmbuyer@1 499 +on [T]>: turns on full tracking, optionally setting threshold to T|r
farmbuyer@1 500
farmbuyer@150 501 +on5 [T]>: same, but also toggles "notraid" (see Tips for this)|r
farmbuyer@150 502
farmbuyer@1 503 +off>: turns off everything|r
farmbuyer@1 504
farmbuyer@1 505 +thre[shold] T>: sets tracking threshold to T|r
farmbuyer@1 506
farmbuyer@103 507 +ping>: same as clicking "Ping!" on the Options tab|r
farmbuyer@103 508
farmbuyer@1 509 +list>: prints saved text names and numbers|r
farmbuyer@1 510
farmbuyer@1 511 +save *(your set name)*>: saves texts as "your set name"|r
farmbuyer@1 512
farmbuyer@1 513 +restore *(N)*>: restores set number N|r
farmbuyer@1 514
farmbuyer@1 515 +delete *(N)*>: deletes set number N|r
farmbuyer@1 516
farmbuyer@103 517 +toggle>: opens or closes the UI (used mostly in automated wrappers)|r
farmbuyer@1 518
farmbuyer@103 519 +fix ?>: lists the available automated data integrity fixes|r
farmbuyer@1 520
farmbuyer@1 521
farmbuyer@142 522 If you use the slash commands to enable tracking or set loot thresholds, you
farmbuyer@142 523 can give numbers or common names for the threshold. For example, "0", "poor",
farmbuyer@142 524 "trash", "gray"/"grey" are all the same, "4", "epic", "purple" are the same,
farmbuyer@142 525 and so on.
farmbuyer@1 526 ]]
farmbuyer@1 527
farmbuyer@73 528 T.tips_prescan = [[
farmbuyer@73 529 When loot is manipulated, the history of previous loot entries must be scanned
farmbuyer@73 530 to determine whether you already have any information for that loot. In this
farmbuyer@73 531 case, "loot manipulation" includes things like receiving loot broadcasts from
farmbuyer@73 532 other players, marking older loot as being disenchanted, and so on.
farmbuyer@73 533
farmbuyer@73 534 You can speed up these actions by turning on the +Prescan for faster handling>
farmbuyer@73 535 toggle on the <Options> tab. This is a tradeoff: loot manipulation will
farmbuyer@73 536 go faster, but data from the prescan will use up more memory. (If you end up
farmbuyer@73 537 doing things to every single piece of loot, you would use up all that memory
farmbuyer@73 538 eventually. But if you don't, then that memory is essentially wasted.)
farmbuyer@73 539
farmbuyer@73 540 This prescanning is only done for the specific realm on which you're playing.
farmbuyer@73 541 Much depends on how far back you preserve history. The more history you keep
farmbuyer@73 542 for a given realm, then...
farmbuyer@73 543
farmbuyer@73 544 [option on] ...the more memory this option uses...
farmbuyer@73 545
farmbuyer@73 546 [option off] ...the longer loot work takes...
farmbuyer@73 547
farmbuyer@73 548 ...while manipulating loot for that realm. See the tradeoff?
farmbuyer@73 549
farmbuyer@73 550 The prescan is only done once, during login. It will print out how much
farmbuyer@73 551 additional memory is used, so you can better decide whether this option is
farmbuyer@73 552 worth turning on. This also means that you need to relog or /reload to have
farmbuyer@73 553 the option take effect once you enable it.
farmbuyer@73 554 ]]
farmbuyer@73 555
farmbuyer@1 556 T.todo = [[
farmbuyer@142 557 If you have ideas or complaints or bug reports, first check the Bugs
farmbuyer@142 558 subcategories to see if they're already being worked on. Bug reports are
farmbuyer@142 559 especially helpful if you can include a screenshot (in whatever image format
farmbuyer@142 560 you find convenient), and a copy of your SavedVariables file. This is found
farmbuyer@142 561 in your World of Warcraft installation folder, named
farmbuyer@142 562 "WTF/Account/you/SavedVariables/Ouro_Loot.lua" (where "you" is your account
farmbuyer@142 563 name). You may need to compress this file before the ticket system will
farmbuyer@142 564 accept it.
farmbuyer@1 565
farmbuyer@1 566 Click the "About" line on the left for contact information.
farmbuyer@1 567 ]]
farmbuyer@1 568
farmbuyer@1 569 T.todo_gotchas = [[
farmbuyer@1 570 <Things Which Might Surprise You> (and things I'm not sure I like in the
farmbuyer@1 571 current design):
farmbuyer@1 572
farmbuyer@73 573 Manipulating existing information while logged into a realm other than the
farmbuyer@73 574 realm represented by that same information can yield strange results, including
farmbuyer@73 575 outright breakage.
farmbuyer@73 576
farmbuyer@1 577 If you relog (or get disconnected) while in a raid group, behavior when you log
farmbuyer@1 578 back in can be surprising. If you have already recorded loot (and therefore
farmbuyer@142 579 the loot list is restored), then OL assumes it's from the current raid and
farmbuyer@142 580 should reactivate automatically in full tracking mode. If you were tracking
farmbuyer@142 581 but no loot had dropped yet (and therefore there was nothing *to* restore),
farmbuyer@142 582 then OL will pop up its reminder and ask again. Either way, if you were only
farmbuyer@142 583 broadcasting then OL will *not* go back to only broadcasting. This is
farmbuyer@142 584 probably a bug.
farmbuyer@1 585
farmbuyer@1 586 The saved texts feature does exactly that: only saves the generated texts, not
farmbuyer@1 587 the full loot list. Restoring will get you a blank first tab and whatever you
farmbuyer@1 588 previously had in the various generated text tabs.
farmbuyer@1 589
farmbuyer@47 590 The generated forum text tries to only list the name of the instance if it has
farmbuyer@47 591 not already been listed, or if it is different than the instance of the previous
farmbuyer@1 592 boss. If you relog, the "last printed instance name" will be forgotten, and
farmbuyer@1 593 you'll see redundant raid instance names appearing in the text.
farmbuyer@1 594
farmbuyer@1 595 After a boss wipe, multiple broadcasting players releasing spirit more than
farmbuyer@1 596 several seconds apart can cause spurious "wipe" entries (of zero duration) on
farmbuyer@1 597 the loot grid. The surefire way to avoid this is to not release spirit until
farmbuyer@1 598 DBM announces the wipe, but the problem isn't serious enough to really worry
farmbuyer@1 599 about. (Right-click the spurious entries and delete them.)
farmbuyer@69 600
farmbuyer@69 601 When a boss is killed, ALL previous wipes for that boss are removed and
farmbuyer@69 602 collapsed... even if they're on other days with other raids. If you only
farmbuyer@69 603 raid with one guild, this can result in some amusing statistics ("kill
farmbuyer@69 604 on 27th attempt" would actually mean something), but if there are multiple
farmbuyer@69 605 raid configurations without clearing loot in between, then this number
farmbuyer@69 606 is simply garbage.
farmbuyer@1 607 ]]
farmbuyer@1 608
farmbuyer@1 609 T.todo_todolist = todo
farmbuyer@1 610
farmbuyer@1 611
farmbuyer@1 612 -- Fill out the table that will actually be used. Join adjacent lines here so
farmbuyer@1 613 -- that they'll wrap properly.
farmbuyer@96 614 helptext = {}
farmbuyer@1 615 for k,text in pairs(T) do
farmbuyer@1 616 local funkykey = k:gsub('_','\001') -- this is how TreeGroup makes unique keys
farmbuyer@1 617 local wrapped = text
farmbuyer@1 618 wrapped = wrapped:gsub ("[%+<>]", replacement_colors)
farmbuyer@1 619 wrapped = wrapped:gsub ("([^\n])\n([^\n])", "%1 %2")
farmbuyer@83 620 --safeprint(wrapped)
farmbuyer@1 621 wrapped = wrapped:gsub ("|r\n\n", "|r\n")
farmbuyer@1 622 wrapped = wrapped:gsub ("Ouroboros", "|cffa335ee<Ouroboros>|r")
farmbuyer@83 623 --safeprint(wrapped)
farmbuyer@56 624 wrapped = wrapped:gsub ("%*%(", "<") :gsub("%)%*", ">") :gsub(":PLUS:", "+")
farmbuyer@96 625 helptext[funkykey] = wrapped
farmbuyer@1 626 end
farmbuyer@1 627 end -- do scope
farmbuyer@1 628 todo = nil
farmbuyer@1 629
farmbuyer@1 630
farmbuyer@95 631 -- Tab 5: Help
farmbuyer@95 632 do
farmbuyer@129 633 local mkbutton = addon.gui_state_pointer.mkbutton
farmbuyer@129 634 local gui = addon.gui_state_pointer
farmbuyer@95 635 local AceGUI = LibStub("AceGUI-3.0")
farmbuyer@95 636 -- widget container status tables (will have things magically appear
farmbuyer@95 637 -- inside them that we wish to preserve)
farmbuyer@95 638 local status_for_scroll = {}
farmbuyer@95 639 local status_for_select = { treewidth = 145 }
farmbuyer@1 640
farmbuyer@95 641 -- Clicking an entry on the left tree column.
farmbuyer@95 642 local help_OnGroupSelected_func = function (treeg,event,category)
farmbuyer@96 643 -- Some way of just reusing the same Label widget when clicking
farmbuyer@96 644 -- different topics?
farmbuyer@95 645 treeg:ReleaseChildren()
farmbuyer@95 646 local txt = AceGUI:Create("Label")
farmbuyer@95 647 txt:SetFullWidth(true)
farmbuyer@122 648 txt:SetFontObject(GameFontNormal)
farmbuyer@96 649 txt:SetText(helptext[category])
farmbuyer@95 650 local sf = AceGUI:Create("ScrollFrame")
farmbuyer@95 651 sf:SetStatusTable(status_for_scroll)
farmbuyer@95 652 sf:SetLayout("Fill")
farmbuyer@95 653 -- This forces the scrolling area to be bigger than the visible area; else
farmbuyer@95 654 -- some of the text gets cut off without ever triggering the scrollbar.
farmbuyer@95 655 sf.content:SetHeight(700)
farmbuyer@95 656 sf:AddChild(txt)
farmbuyer@95 657 treeg:AddChild(sf)
farmbuyer@95 658 if treeg:GetUserData("help restore scroll") then
farmbuyer@95 659 if status_for_scroll.scrollvalue then
farmbuyer@95 660 sf:SetScroll(status_for_scroll.scrollvalue)
farmbuyer@95 661 end
farmbuyer@95 662 treeg:SetUserData("help restore scroll", false)
farmbuyer@95 663 else
farmbuyer@95 664 sf:SetScroll(0)
farmbuyer@95 665 end
farmbuyer@95 666 end
farmbuyer@95 667
farmbuyer@95 668 -- Clicking the Help tab as a whole (tabs_OnGroupSelected["help"]).
farmbuyer@95 669 local tabs_OGS = function(container,specials)
farmbuyer@95 670 container:SetLayout("Fill")
farmbuyer@95 671 local left = AceGUI:Create("TreeGroup")
farmbuyer@95 672 left:SetStatusTable(status_for_select)
farmbuyer@95 673 left:SetLayout("Fill")
farmbuyer@95 674 left:SetFullWidth(true)
farmbuyer@95 675 left:SetFullHeight(true)
farmbuyer@95 676 left:EnableButtonTooltips(false)
farmbuyer@96 677 left:SetTree(helptree)
farmbuyer@95 678 left:SetCallback("OnGroupSelected", help_OnGroupSelected_func)
farmbuyer@95 679 container:AddChild(left)
farmbuyer@95 680 if status_for_select.selected then
farmbuyer@95 681 left:SetUserData("help restore scroll", true)
farmbuyer@95 682 left:SelectByValue(status_for_select.selected)
farmbuyer@95 683 else
farmbuyer@95 684 left:SelectByValue("basic")
farmbuyer@95 685 end
farmbuyer@129 686
farmbuyer@129 687 local b = mkbutton("Force Loot Refresh",
farmbuyer@129 688 [[Force the Loot tab display to update from stored data. Shouldn't be needed.]])
farmbuyer@129 689 b:SetFullWidth(true)
farmbuyer@129 690 b:SetCallback("OnClick", function ()
farmbuyer@129 691 addon.loot_clean = nil
farmbuyer@129 692 addon:gui_init()
farmbuyer@129 693 addon:Print[[Loot tab display re-initialized.]]
farmbuyer@129 694 end)
farmbuyer@129 695 specials:AddChild(b)
farmbuyer@95 696 end
farmbuyer@95 697
farmbuyer@103 698 addon:register_tab_control_AT_END ("help", [[Help]],
farmbuyer@103 699 [[Instructions, reminders, and tips for non-obvious features]],
farmbuyer@103 700 tabs_OGS, [[
farmbuyer@95 701 Every tab across the top also gets its own special buttons here in the lower
farmbuyer@95 702 right, under the same name as the tab. Some controls do not become visible
farmbuyer@103 703 until that tab has data to work with.]])
farmbuyer@95 704
farmbuyer@95 705 end
farmbuyer@70 706
farmbuyer@109 707 addon.FILES_LOADED = addon.FILES_LOADED + 1
farmbuyer@1 708 -- vim:noet