annotate verbage.lua @ 101:f7162a1cadc7

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