annotate verbage.lua @ 147:e1a90e398231

Add unique seconds to history timestamp. Rewrite :format_timestamp to suck less. Include seconds in the formatted history timestamp, because preening fails horribly when the same person has received multiple pieces of loot within the same "minute". Ensure the timestamps are unique if needed; fast looting easily results in multiple loot events per second. Tweak wording of some GUI warnings.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Tue, 30 Dec 2014 20:26:41 -0500
parents 375059a11c1d
children 63bda09d88fe
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@1 501 +off>: turns off everything|r
farmbuyer@1 502
farmbuyer@1 503 +thre[shold] T>: sets tracking threshold to T|r
farmbuyer@1 504
farmbuyer@103 505 +ping>: same as clicking "Ping!" on the Options tab|r
farmbuyer@103 506
farmbuyer@1 507 +list>: prints saved text names and numbers|r
farmbuyer@1 508
farmbuyer@1 509 +save *(your set name)*>: saves texts as "your set name"|r
farmbuyer@1 510
farmbuyer@1 511 +restore *(N)*>: restores set number N|r
farmbuyer@1 512
farmbuyer@1 513 +delete *(N)*>: deletes set number N|r
farmbuyer@1 514
farmbuyer@103 515 +toggle>: opens or closes the UI (used mostly in automated wrappers)|r
farmbuyer@1 516
farmbuyer@103 517 +fix ?>: lists the available automated data integrity fixes|r
farmbuyer@1 518
farmbuyer@1 519
farmbuyer@142 520 If you use the slash commands to enable tracking or set loot thresholds, you
farmbuyer@142 521 can give numbers or common names for the threshold. For example, "0", "poor",
farmbuyer@142 522 "trash", "gray"/"grey" are all the same, "4", "epic", "purple" are the same,
farmbuyer@142 523 and so on.
farmbuyer@1 524 ]]
farmbuyer@1 525
farmbuyer@73 526 T.tips_prescan = [[
farmbuyer@73 527 When loot is manipulated, the history of previous loot entries must be scanned
farmbuyer@73 528 to determine whether you already have any information for that loot. In this
farmbuyer@73 529 case, "loot manipulation" includes things like receiving loot broadcasts from
farmbuyer@73 530 other players, marking older loot as being disenchanted, and so on.
farmbuyer@73 531
farmbuyer@73 532 You can speed up these actions by turning on the +Prescan for faster handling>
farmbuyer@73 533 toggle on the <Options> tab. This is a tradeoff: loot manipulation will
farmbuyer@73 534 go faster, but data from the prescan will use up more memory. (If you end up
farmbuyer@73 535 doing things to every single piece of loot, you would use up all that memory
farmbuyer@73 536 eventually. But if you don't, then that memory is essentially wasted.)
farmbuyer@73 537
farmbuyer@73 538 This prescanning is only done for the specific realm on which you're playing.
farmbuyer@73 539 Much depends on how far back you preserve history. The more history you keep
farmbuyer@73 540 for a given realm, then...
farmbuyer@73 541
farmbuyer@73 542 [option on] ...the more memory this option uses...
farmbuyer@73 543
farmbuyer@73 544 [option off] ...the longer loot work takes...
farmbuyer@73 545
farmbuyer@73 546 ...while manipulating loot for that realm. See the tradeoff?
farmbuyer@73 547
farmbuyer@73 548 The prescan is only done once, during login. It will print out how much
farmbuyer@73 549 additional memory is used, so you can better decide whether this option is
farmbuyer@73 550 worth turning on. This also means that you need to relog or /reload to have
farmbuyer@73 551 the option take effect once you enable it.
farmbuyer@73 552 ]]
farmbuyer@73 553
farmbuyer@1 554 T.todo = [[
farmbuyer@142 555 If you have ideas or complaints or bug reports, first check the Bugs
farmbuyer@142 556 subcategories to see if they're already being worked on. Bug reports are
farmbuyer@142 557 especially helpful if you can include a screenshot (in whatever image format
farmbuyer@142 558 you find convenient), and a copy of your SavedVariables file. This is found
farmbuyer@142 559 in your World of Warcraft installation folder, named
farmbuyer@142 560 "WTF/Account/you/SavedVariables/Ouro_Loot.lua" (where "you" is your account
farmbuyer@142 561 name). You may need to compress this file before the ticket system will
farmbuyer@142 562 accept it.
farmbuyer@1 563
farmbuyer@1 564 Click the "About" line on the left for contact information.
farmbuyer@1 565 ]]
farmbuyer@1 566
farmbuyer@1 567 T.todo_gotchas = [[
farmbuyer@1 568 <Things Which Might Surprise You> (and things I'm not sure I like in the
farmbuyer@1 569 current design):
farmbuyer@1 570
farmbuyer@73 571 Manipulating existing information while logged into a realm other than the
farmbuyer@73 572 realm represented by that same information can yield strange results, including
farmbuyer@73 573 outright breakage.
farmbuyer@73 574
farmbuyer@1 575 If you relog (or get disconnected) while in a raid group, behavior when you log
farmbuyer@1 576 back in can be surprising. If you have already recorded loot (and therefore
farmbuyer@142 577 the loot list is restored), then OL assumes it's from the current raid and
farmbuyer@142 578 should reactivate automatically in full tracking mode. If you were tracking
farmbuyer@142 579 but no loot had dropped yet (and therefore there was nothing *to* restore),
farmbuyer@142 580 then OL will pop up its reminder and ask again. Either way, if you were only
farmbuyer@142 581 broadcasting then OL will *not* go back to only broadcasting. This is
farmbuyer@142 582 probably a bug.
farmbuyer@1 583
farmbuyer@1 584 The saved texts feature does exactly that: only saves the generated texts, not
farmbuyer@1 585 the full loot list. Restoring will get you a blank first tab and whatever you
farmbuyer@1 586 previously had in the various generated text tabs.
farmbuyer@1 587
farmbuyer@47 588 The generated forum text tries to only list the name of the instance if it has
farmbuyer@47 589 not already been listed, or if it is different than the instance of the previous
farmbuyer@1 590 boss. If you relog, the "last printed instance name" will be forgotten, and
farmbuyer@1 591 you'll see redundant raid instance names appearing in the text.
farmbuyer@1 592
farmbuyer@1 593 After a boss wipe, multiple broadcasting players releasing spirit more than
farmbuyer@1 594 several seconds apart can cause spurious "wipe" entries (of zero duration) on
farmbuyer@1 595 the loot grid. The surefire way to avoid this is to not release spirit until
farmbuyer@1 596 DBM announces the wipe, but the problem isn't serious enough to really worry
farmbuyer@1 597 about. (Right-click the spurious entries and delete them.)
farmbuyer@69 598
farmbuyer@69 599 When a boss is killed, ALL previous wipes for that boss are removed and
farmbuyer@69 600 collapsed... even if they're on other days with other raids. If you only
farmbuyer@69 601 raid with one guild, this can result in some amusing statistics ("kill
farmbuyer@69 602 on 27th attempt" would actually mean something), but if there are multiple
farmbuyer@69 603 raid configurations without clearing loot in between, then this number
farmbuyer@69 604 is simply garbage.
farmbuyer@1 605 ]]
farmbuyer@1 606
farmbuyer@1 607 T.todo_todolist = todo
farmbuyer@1 608
farmbuyer@1 609
farmbuyer@1 610 -- Fill out the table that will actually be used. Join adjacent lines here so
farmbuyer@1 611 -- that they'll wrap properly.
farmbuyer@96 612 helptext = {}
farmbuyer@1 613 for k,text in pairs(T) do
farmbuyer@1 614 local funkykey = k:gsub('_','\001') -- this is how TreeGroup makes unique keys
farmbuyer@1 615 local wrapped = text
farmbuyer@1 616 wrapped = wrapped:gsub ("[%+<>]", replacement_colors)
farmbuyer@1 617 wrapped = wrapped:gsub ("([^\n])\n([^\n])", "%1 %2")
farmbuyer@83 618 --safeprint(wrapped)
farmbuyer@1 619 wrapped = wrapped:gsub ("|r\n\n", "|r\n")
farmbuyer@1 620 wrapped = wrapped:gsub ("Ouroboros", "|cffa335ee<Ouroboros>|r")
farmbuyer@83 621 --safeprint(wrapped)
farmbuyer@56 622 wrapped = wrapped:gsub ("%*%(", "<") :gsub("%)%*", ">") :gsub(":PLUS:", "+")
farmbuyer@96 623 helptext[funkykey] = wrapped
farmbuyer@1 624 end
farmbuyer@1 625 end -- do scope
farmbuyer@1 626 todo = nil
farmbuyer@1 627
farmbuyer@1 628
farmbuyer@95 629 -- Tab 5: Help
farmbuyer@95 630 do
farmbuyer@129 631 local mkbutton = addon.gui_state_pointer.mkbutton
farmbuyer@129 632 local gui = addon.gui_state_pointer
farmbuyer@95 633 local AceGUI = LibStub("AceGUI-3.0")
farmbuyer@95 634 -- widget container status tables (will have things magically appear
farmbuyer@95 635 -- inside them that we wish to preserve)
farmbuyer@95 636 local status_for_scroll = {}
farmbuyer@95 637 local status_for_select = { treewidth = 145 }
farmbuyer@1 638
farmbuyer@95 639 -- Clicking an entry on the left tree column.
farmbuyer@95 640 local help_OnGroupSelected_func = function (treeg,event,category)
farmbuyer@96 641 -- Some way of just reusing the same Label widget when clicking
farmbuyer@96 642 -- different topics?
farmbuyer@95 643 treeg:ReleaseChildren()
farmbuyer@95 644 local txt = AceGUI:Create("Label")
farmbuyer@95 645 txt:SetFullWidth(true)
farmbuyer@122 646 txt:SetFontObject(GameFontNormal)
farmbuyer@96 647 txt:SetText(helptext[category])
farmbuyer@95 648 local sf = AceGUI:Create("ScrollFrame")
farmbuyer@95 649 sf:SetStatusTable(status_for_scroll)
farmbuyer@95 650 sf:SetLayout("Fill")
farmbuyer@95 651 -- This forces the scrolling area to be bigger than the visible area; else
farmbuyer@95 652 -- some of the text gets cut off without ever triggering the scrollbar.
farmbuyer@95 653 sf.content:SetHeight(700)
farmbuyer@95 654 sf:AddChild(txt)
farmbuyer@95 655 treeg:AddChild(sf)
farmbuyer@95 656 if treeg:GetUserData("help restore scroll") then
farmbuyer@95 657 if status_for_scroll.scrollvalue then
farmbuyer@95 658 sf:SetScroll(status_for_scroll.scrollvalue)
farmbuyer@95 659 end
farmbuyer@95 660 treeg:SetUserData("help restore scroll", false)
farmbuyer@95 661 else
farmbuyer@95 662 sf:SetScroll(0)
farmbuyer@95 663 end
farmbuyer@95 664 end
farmbuyer@95 665
farmbuyer@95 666 -- Clicking the Help tab as a whole (tabs_OnGroupSelected["help"]).
farmbuyer@95 667 local tabs_OGS = function(container,specials)
farmbuyer@95 668 container:SetLayout("Fill")
farmbuyer@95 669 local left = AceGUI:Create("TreeGroup")
farmbuyer@95 670 left:SetStatusTable(status_for_select)
farmbuyer@95 671 left:SetLayout("Fill")
farmbuyer@95 672 left:SetFullWidth(true)
farmbuyer@95 673 left:SetFullHeight(true)
farmbuyer@95 674 left:EnableButtonTooltips(false)
farmbuyer@96 675 left:SetTree(helptree)
farmbuyer@95 676 left:SetCallback("OnGroupSelected", help_OnGroupSelected_func)
farmbuyer@95 677 container:AddChild(left)
farmbuyer@95 678 if status_for_select.selected then
farmbuyer@95 679 left:SetUserData("help restore scroll", true)
farmbuyer@95 680 left:SelectByValue(status_for_select.selected)
farmbuyer@95 681 else
farmbuyer@95 682 left:SelectByValue("basic")
farmbuyer@95 683 end
farmbuyer@129 684
farmbuyer@129 685 local b = mkbutton("Force Loot Refresh",
farmbuyer@129 686 [[Force the Loot tab display to update from stored data. Shouldn't be needed.]])
farmbuyer@129 687 b:SetFullWidth(true)
farmbuyer@129 688 b:SetCallback("OnClick", function ()
farmbuyer@129 689 addon.loot_clean = nil
farmbuyer@129 690 addon:gui_init()
farmbuyer@129 691 addon:Print[[Loot tab display re-initialized.]]
farmbuyer@129 692 end)
farmbuyer@129 693 specials:AddChild(b)
farmbuyer@95 694 end
farmbuyer@95 695
farmbuyer@103 696 addon:register_tab_control_AT_END ("help", [[Help]],
farmbuyer@103 697 [[Instructions, reminders, and tips for non-obvious features]],
farmbuyer@103 698 tabs_OGS, [[
farmbuyer@95 699 Every tab across the top also gets its own special buttons here in the lower
farmbuyer@95 700 right, under the same name as the tab. Some controls do not become visible
farmbuyer@103 701 until that tab has data to work with.]])
farmbuyer@95 702
farmbuyer@95 703 end
farmbuyer@70 704
farmbuyer@109 705 addon.FILES_LOADED = addon.FILES_LOADED + 1
farmbuyer@1 706 -- vim:noet