farmbuyer@95: local addon = select(2,...) farmbuyer@95: if addon.NOLOAD then return end farmbuyer@95: farmbuyer@1: local todo = [[ farmbuyer@88: - Right-clicking the [ouroloot] chat link could do something different than farmbuyer@88: the current left-clicking. Popup small menu in place? farmbuyer@88: farmbuyer@100: - A fight duration of (0:00) happens when DBM gets confused. If it happens farmbuyer@100: "near" another boss entry with nonzero duration, can we just safely assume farmbuyer@100: that's the real entry and delete the zero entry altogether? farmbuyer@100: farmbuyer@107: - Rework candidate groups into the expiring caches. farmbuyer@107: farmbuyer@88: - Break more methods out into private routines. farmbuyer@1: farmbuyer@1: - implement ack, then fallback to recording if not ack'd farmbuyer@1: farmbuyer@1: - Being able to drag rows up and down the main loot grid would be awesome. Coding farmbuyer@1: that would be likely to drive me batshiat insane. farmbuyer@1: ]] farmbuyer@1: farmbuyer@96: local helptree = { farmbuyer@1: { farmbuyer@1: value = "about", farmbuyer@1: text = "About", farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "basic", farmbuyer@1: text = "Basics", farmbuyer@1: children = { farmbuyer@1: { farmbuyer@1: value = "loot", farmbuyer@1: text = "Loot Entries", farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "boss", farmbuyer@1: text = "Boss Entries", farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "tracking", farmbuyer@1: text = "Tracking Loot", farmbuyer@1: children = { farmbuyer@1: { farmbuyer@1: value = "enabled", farmbuyer@1: text = "Full Tracking", farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "bcast", farmbuyer@1: text = "Rebroadcasting", farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "texts", farmbuyer@1: text = "Generated Texts", farmbuyer@1: children = { farmbuyer@1: { farmbuyer@1: value = "forum", farmbuyer@1: text = "Forum Markup", farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "other", farmbuyer@1: text = "Other Texts", farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "saved", farmbuyer@1: text = "Saved Texts", farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: { farmbuyer@7: value = "history", farmbuyer@7: text = "History Tab", farmbuyer@7: }, farmbuyer@7: { farmbuyer@1: value = "tips", farmbuyer@1: text = "Handy Tips", farmbuyer@1: children = { farmbuyer@1: { farmbuyer@1: value = "slashies", farmbuyer@1: text = "Slash Commands", farmbuyer@1: }, farmbuyer@73: { farmbuyer@73: value = "prescan", farmbuyer@73: text = "Prescanning", farmbuyer@73: }, farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "todo", farmbuyer@1: text = "TODOs, Bugs, etc", farmbuyer@1: children = { farmbuyer@1: { farmbuyer@1: value = "gotchas", farmbuyer@1: text = "Gotchas", farmbuyer@1: }, farmbuyer@1: { farmbuyer@1: value = "todolist", farmbuyer@1: text = "TODO/knownbugs", farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: }, farmbuyer@1: } farmbuyer@1: farmbuyer@1: -- Help text. Formatting doesn't matter, but use a blank line to split farmbuyer@1: -- paragraphs. This file needs to be edited with a text editor that doesn't farmbuyer@1: -- do anything stupid by placing extra spaces at the end of lines. farmbuyer@96: local helptext farmbuyer@1: do farmbuyer@73: local replacement_colors = { farmbuyer@73: ["+"]="|cff30adff", -- blue: right-click options, control panel names farmbuyer@73: ["<"]="|cff00ff00", -- light green, tab titles and generic highlighting farmbuyer@73: [">"]="|r" } farmbuyer@1: local T={} farmbuyer@1: T.about = [[ farmbuyer@1: Ouro Loot is the fault of Farmbuyer of Ouroboros on US-Kilrogg. Bug reports, farmbuyer@95: comments, and suggestions are welcome at the project page: farmbuyer@95: farmbuyer@95: farmbuyer@95: farmbuyer@95: farmbuyer@103: or send them to in non-HTML format. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.basic = [[ farmbuyer@95: The command opens this display. The buttons farmbuyer@1: on the right side control operation and are mostly self-explanatory. Hovering over farmbuyer@1: things will usually display some additional text in the gray line at the bottom. farmbuyer@1: farmbuyer@47: Each tab on the left side can additionally create extra contols in the lower right farmbuyer@47: section (with the same name as the tab). farmbuyer@1: farmbuyer@1: The first tab on the left side, , is where everything goes to and comes farmbuyer@1: from. Looting events and Deadly Boss Mods notifications go to the tab; the farmbuyer@1: other tabs are all generated from the information in the tab. farmbuyer@16: farmbuyer@16: |cffff335dNote about these Help pages:|r The category "titles" on the left side farmbuyer@16: have their own help text, in addition to the more specific entries in the expanded farmbuyer@16: list. Read those first before expanding the categories or you'll miss stuff. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.basic_loot = [[ farmbuyer@1: A "loot row" in the first tab has three columns: the item, the recipient, and any farmbuyer@103: extra notes. farmbuyer@1: farmbuyer@1: farmbuyer@1: farmbuyer@103: Hovering the mouse over the first column will display the item tooltip. farmbuyer@1: farmbuyer@1: Hovering over the second column will display a tooltip with the loot that person farmbuyer@1: has received. If they've won more than 10 items, the list is cut off with '...' farmbuyer@1: at the end; to see the full list, use the right-click +Show only this player> option farmbuyer@1: instead. farmbuyer@1: farmbuyer@1: farmbuyer@1: farmbuyer@1: Right-clicking a loot row shows a dropdown menu. farmbuyer@1: farmbuyer@1: Right-clicking in the first or third columns will display options for special farmbuyer@103: treatment of that loot entry (e.g., marking as offspec). Using any of those farmbuyer@103: options will change the text in the third column, which will then affect the farmbuyer@103: text in the generated tabs, such as forum markup. farmbuyer@1: farmbuyer@1: Right-clicking in the second column allows you to temporarily remove all other farmbuyer@1: players from the loot display. Use the reset button in the lower-right corner to farmbuyer@1: restore the display to normal. The menu also allows you to +reassign> loot from farmbuyer@1: one player to another; if the new recipient is not in the raid group at the time, farmbuyer@1: use the +Enter name...> option at the bottom of the list of names to type the farmbuyer@47: name into a text box. If your raid takes advantage of the ability to trade farmbuyer@1: soulbound items, you will need to reassign the item here for the generated text farmbuyer@1: to be factually correct. farmbuyer@1: farmbuyer@1: See the help screen on "Boss Entries" for the +Insert new boss kill event> option. farmbuyer@1: farmbuyer@1: farmbuyer@1: farmbuyer@1: Double-clicking a loot row in the third ("Notes") column allows you to edit that farmbuyer@1: field directly. The color of the text will still depend on any +Mark as ___> farmbuyer@1: actions done to that loot row, whether automatically or by hand. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.basic_boss = [[ farmbuyer@1: Boss wipe/kill entries are entirely dependant on Deadly Boss Mods being enabled and farmbuyer@1: up-to-date. The typical sequence of events for our usual raids goes like this: farmbuyer@1: farmbuyer@1: We make four or five attempts on Baron Steamroller. As DBM registers that combat farmbuyer@1: ends, a event is entered on the loot display along with the duration of the farmbuyer@1: fight. If the loot display is opened, the wipes will be visible with a light gray farmbuyer@1: background. farmbuyer@1: farmbuyer@47: After reminding the melee dps to move out of fire, we manage to kill farmbuyer@1: Steamroller. When DBM registers the win, a event is entered on the display farmbuyer@1: with a dark gray background. farmbuyer@1: All previous s are removed and collapsed into the event. The final farmbuyer@1: event shows the duration of the successful fight and the number of attempts farmbuyer@47: needed (or "one-shot" if we're competent). farmbuyer@1: farmbuyer@1: Sometimes this goes wrong, when DBM misses its own triggers. If DBM does not catch farmbuyer@1: the start of the boss fight, it can't register the end, so nothing at all is farmbuyer@1: recorded. If the fight was a win but DBM does not catch the victory conditions, farmbuyer@1: then DBM will (after several seconds) decide that it was a wipe instead. And farmbuyer@1: sometimes useful loot will drop from trash mobs, which DBM knows nothing about. farmbuyer@1: farmbuyer@1: For all those reasons, right-clicking on a "boss row" will display options for farmbuyer@1: +Insert new boss kill event>, and for toggling a into a . We often farmbuyer@1: insert bosses named "trash" to break up the display and correct the forum markup farmbuyer@1: listing. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.tracking = [[ farmbuyer@1: The first button underneath +Main> in the right-hand column displays the current farmbuyer@1: status of the addon. If it is disabled, then no recording, rebroadcasting, or farmbuyer@1: listening for rebroadcasts is performed. Any loot already recorded will be restored farmbuyer@1: across login sessions no matter the status. farmbuyer@1: farmbuyer@1: You can turn on tracking/broadcasting before joining a raid. If you join a raid farmbuyer@47: and the addon has not been turned on, then a popup dialog will ask for farmbuyer@1: instructions. (This can be turned off in the advanced .) farmbuyer@1: farmbuyer@1: The addon tries to be smart about logging on during a raid (due to a disconnect or farmbuyer@1: relog). If you log in, are already in a raid group, and loot has already been farmbuyer@16: stored from tracking, it will re-enable itself automatically. farmbuyer@1: farmbuyer@1: The intent of the addon design is that, after the end of a raid, all the generated farmbuyer@1: markup text is done, optionally saved (see "Generated Texts - Saved Texts"), and farmbuyer@1: then cleared from farmbuyer@1: storage altogether. As a result, if you login with restored loot information but farmbuyer@1: are not in a raid, the addon will do nothing on its own -- but will assume that farmbuyer@1: you've forgotten to finish those steps and will yammer about it in the chat window farmbuyer@1: as a reminder. farmbuyer@1: farmbuyer@1: The +Threshold> drop-down has no connection at all with any current loot threshold farmbuyer@1: set by you or a master looter. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.tracking_enabled = [[ farmbuyer@1: Full tracking records all loot events that fulfill these criteria: farmbuyer@1: farmbuyer@1: 1) The loot quality is equal to or better than what you have selected in the farmbuyer@1: +Threshold> drop-down. farmbuyer@1: farmbuyer@47: 2) The loot is not in the list of items to filter out (see the tab). farmbuyer@47: These are things like shards from disenchanting and Darkmoon Faire quest items. farmbuyer@1: farmbuyer@1: 3) More precisely, you need to be close enough farmbuyer@1: to the recipient of the loot to be able to see "So-And-So receives loot: [Stuff]" farmbuyer@1: in your chat window, even if you have those actual loot messages turned off. farmbuyer@1: farmbuyer@1: It is (3) that causes complications. A master looter can assign loot to anybody farmbuyer@1: anywhere in a raid instance, but the range on detecting loot events is much farmbuyer@1: smaller. If your raid does not use master looting then you merely need to be farmbuyer@1: close enough to the boss corpse, presuming that the winners will need to walk farmbuyer@1: over to get their phat epix. farmbuyer@1: farmbuyer@1: If you do use master looter, then you have two options: first, you can farmbuyer@1: require players farmbuyer@1: who might get loot to stay near the boss. You would then also need to stay near farmbuyer@1: the boss to detect the loot event. (This can be less hassle if you are also farmbuyer@1: the loot master.) The downside is that other players moving on to fight to the farmbuyer@1: next boss are doing so without the help of their teammates. farmbuyer@1: farmbuyer@1: The other option is to ask other players to also install Ouro Loot, and for farmbuyer@1: them to turn on the "Rebroadcasting" feature. Any loot events which they can farmbuyer@1: see will be communicated to you. Then it only becomes necessary for at least farmbuyer@1: one person to be close enough to the loot recipient to see the item awarded, farmbuyer@47: and you will record it no matter how far away you are -- even back in Orgrimmar. farmbuyer@1: farmbuyer@1: If you have Full Tracking enabled, then you are also automatically rebroadcasting. farmbuyer@1: Having more than one player with Full Tracking turned on is probably a good farmbuyer@1: idea, in case one of the trackers experiences a game crash or is suddenly kidnapped farmbuyer@1: by robot ninja monkeys. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.tracking_bcast = [[ farmbuyer@1: The simplest method of operation is only rebroadcasting the loot events that you farmbuyer@1: see, as you see them. Nothing is recorded in your local copy of the addon. farmbuyer@1: farmbuyer@1: If you logout for any reason, the addon will not reactivate when you log back in. farmbuyer@1: farmbuyer@95: You can use or to turn on rebroadcasting farmbuyer@95: without opening the GUI. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.texts = [[ farmbuyer@47: The middle tabs are simply large editable text boxes. Their text is initially farmbuyer@47: generated from farmbuyer@1: the information stored on the main tab, at the time you click on the tab. farmbuyer@1: Not every bit of information that farmbuyer@1: we want in the generated text is always available, or depends on things that the farmbuyer@1: game itself can't know. So you can edit the text in the tabs and your edits will farmbuyer@1: be preserved. farmbuyer@1: farmbuyer@1: Each time you click one of the text tabs, every new entry on the tab farmbuyer@1: since the last time this tab was shown will be turned into text. farmbuyer@1: farmbuyer@1: Clicking the +Regenerate> button will throw away all the text on that tab, including farmbuyer@1: any edits you've made, and recreate all of it from scratch. If you've accidentally farmbuyer@1: deleted the text from the editbox, or you've made manual changes to the tab, farmbuyer@1: you can use this button to start over. farmbuyer@1: farmbuyer@1: You can click in an editbox and use Control-A to select all text, then Control-C farmbuyer@1: to copy it to the system clipboard for subsequent pasting into a web browser or farmbuyer@1: whatever. If you're on a Mac, you probably already know the equivalent keys. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.texts_forum = [[ farmbuyer@1: The tab creates text as used by the guild forums for Ouroboros farmbuyer@31: of US-Kilrogg. By default this is fairly standard BBcode. The format of the farmbuyer@1: individual loot items can be adjusted via the dropdown menu on the lower right farmbuyer@1: of the tab. farmbuyer@1: farmbuyer@1: The [url] choice defaults to using Wowhead. If you have the [item] extension farmbuyer@1: for your BBcode installed, you can use either of those choices too. The "by ID" farmbuyer@16: variant is good for heroic raid items that share names with nonheroic items, farmbuyer@16: but the raw output is harder to read in the text tab. farmbuyer@1: farmbuyer@1: You can also specify a custom string. Formatting is done with these replacements: farmbuyer@1: farmbuyer@1: +$N>: item name|r farmbuyer@1: farmbuyer@1: +$I>: (capital "eye", not "ell") numeric item ID|r farmbuyer@1: farmbuyer@1: +$T>: loot recipient and any additional notes|r farmbuyer@1: farmbuyer@1: +$X>: if more than one of the item was looted, this is the "x2", "x3", etc farmbuyer@1: farmbuyer@1: farmbuyer@1: Pro tip #1: if something has happened on the main tab which cannot be farmbuyer@1: changed directly but would generate incorrect text, you can click this tab to farmbuyer@1: generate the text right away. Then edit/move the text as needed. When you farmbuyer@1: close the display or click back on the tab, your edited text will be farmbuyer@1: preserved for later. farmbuyer@1: farmbuyer@47: Pro tip #2: Barring situations like pro tip #1, this addon author typically farmbuyer@47: does not generate any text until the end of the raid, simplifying things farmbuyer@47: considerably. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.texts_other = [[ farmbuyer@1: So far the only other generated text is the tab, an alphabetized list farmbuyer@56: on a per-boss basis. Players who are probably inside the raid are grouped farmbuyer@56: under [:PLUS:], and the remaining players are under [-]. "Probably inside" is an farmbuyer@56: assumption that groups 1 and 2 are raiding in a 10-player instance, groups 1-5 farmbuyer@56: are raiding in a 25-player instance, and so forth. farmbuyer@1: farmbuyer@1: Other addons can register their own text tabs and corresponding generation farmbuyer@1: functions. If you want to be able to feed text into an offline program (for farmbuyer@1: example, a spreadsheet or DKP tracker), then this may be of use to you. farmbuyer@1: farmbuyer@1: Ideas for more tabs? Tell me! farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.texts_saved = [[ farmbuyer@16: The contents of the , , and other such tabs can be saved, farmbuyer@16: so that they will not be lost when you use the +Clear> button. farmbuyer@1: farmbuyer@1: Do any edits you want to the generated text tabs, then click the +Save Current As...> farmbuyer@1: button on the right-hand side. Enter a short descriptive reminder (for example, farmbuyer@1: "thursday hardmodes") in the popup dialog. The texts will remain in their tabs, farmbuyer@1: but clearing loot information will not lose them now. farmbuyer@1: farmbuyer@16: All saved texts are listed on the right-hand side. Clicking a saved text name farmbuyer@16: lets you +Load> or +Delete> that saved set. The primary tab is not saved farmbuyer@16: and restored by this process, only the generated texts. This also means you cannot farmbuyer@16: +Regenerate> the texts. farmbuyer@1: ]] farmbuyer@1: farmbuyer@7: T.history = [[ farmbuyer@7: The tab maintains a list of all loot. It is intended to help answer farmbuyer@7: questions such as "When was the last time PlayerX won something?" and "How much stuff farmbuyer@7: has PlayerY gotten lately?" The history tab is, by design, not as configurable farmbuyer@25: as the main tab; entries cannot be manually edited and so forth. farmbuyer@7: farmbuyer@25: This loot history is the only "live" data tab which persists across the +Clear Loot> command. farmbuyer@7: For this reason, very little information is stored: only the recipient, the item, farmbuyer@8: and a textual timestamp. Boss names, offspecs, and other notes are not preserved. farmbuyer@7: farmbuyer@7: The default history window shows the most recent item received by each person. It farmbuyer@7: is sorted with the most recent loot at the top, towards older loot at the bottom. farmbuyer@7: You can click the column headers to rearrange the rows, but doing so repeatedly can farmbuyer@7: lead to odd display issues. farmbuyer@7: farmbuyer@7: Left-clicking a row will change the window to display all recorded loot for that farmbuyer@25: player. While on that display, right-clicking any row will return to showing the farmbuyer@25: most recent single item for all players. farmbuyer@7: farmbuyer@7: Histories are maintained per-realm. This refers to the realm you are on when the farmbuyer@7: loot drops, not the realm of the player receiving it (in the case of cross-realm farmbuyer@7: groups). If you play multiple characters on the same realm, history will accumulate farmbuyer@7: across all your raids. To change the displayed realm, use the dropdown menu in farmbuyer@7: the lower right corner. farmbuyer@7: farmbuyer@7: The +Regenerate> button permanently erases the history of the displayed realm, and farmbuyer@7: creates fresh entries using whatever loot information is currently on the tab. farmbuyer@7: Be aware that the tab does not track realms, so if you have gathered data farmbuyer@7: for players on realm A, but are displaying realm B when you click the Regenerate button, farmbuyer@7: then your history for realm B will be... very odd. farmbuyer@7: farmbuyer@7: +Clear Realm History> and +Clear ALL History> are used to periodically wipe the farmbuyer@7: slate clean. They do not generate any new entries from existing loot. farmbuyer@7: farmbuyer@76: +Clear Older> deletes history information older than a certain threshold (by farmbuyer@76: default, 5 loot events). It is another good periodic maintenance step, but farmbuyer@76: does not discard as much data as the other actions. farmbuyer@7: farmbuyer@103: From the right-click menu on the main tab, using +Reassign to...> will also farmbuyer@103: move the item between player histories. The timestamp will not be changed; farmbuyer@103: it will "always have been" received by the new recipient. Using farmbuyer@103: +Mark as disenchanted> or +Mark as guild vault> will remove the item from farmbuyer@103: history altogether. Remarking such an item as +normal> or +offspec> will farmbuyer@103: replace the item back into the player's history. farmbuyer@25: farmbuyer@7: Note: the first time you display the histories during a game session, you will farmbuyer@7: likely see several items listed as +UNKNOWN>. This is not a bug; these items are farmbuyer@7: simply not in your local game cache. WoW will automatically retrieve the missing farmbuyer@7: data after several seconds, but the display will not update until the next time farmbuyer@7: the History tab is shown. Starting in WoW 4.0, the local game cache is not preserved farmbuyer@7: across play sessions, so the +UNKNOWN> entries will pop up from time to time. farmbuyer@7: ]] farmbuyer@7: farmbuyer@1: T.tips = [[ farmbuyer@16: The |cffff8000[Ouro Loot]|r "legendary item" displayed at the start of all farmbuyer@103: chat messages is a clickable link. Clicking opens the main display, and if farmbuyer@103: possible will jump to and/or highlight the relevent data which caused the farmbuyer@103: associated chat message to be printed in the first place. farmbuyer@103: The "Be chatty" options on the tab will cause a chat message to be farmbuyer@103: printed after various events, thus providing a way to quickly view them. farmbuyer@1: farmbuyer@1: If you are broadcasting to somebody else who is tracking, you should probably be farmbuyer@1: using the same threshold. If yours is lower, then some of the loot you broadcast farmbuyer@1: to him will be ignored. If yours is higher, then you will not be sending information farmbuyer@1: that he would have recorded. The "correct" setting depends on what your guild wants farmbuyer@1: to track. farmbuyer@1: farmbuyer@1: Ticking the "notraid" box in advanced debugging , before enabling tracking, farmbuyer@1: will make the tracking work outside of a raid group. Communication functions farmbuyer@1: will behave a little strangely when doing this. Be sure to check the threshold! farmbuyer@1: You can also use <"/ouroloot debug notraid"> instead. farmbuyer@1: farmbuyer@1: Using the "Saved Texts" feature plus the +Clear> button is a great way of putting farmbuyer@1: off pasting loot into your guild's website until a more convenient time. farmbuyer@83: farmbuyer@83: Shift-clicking an item in the or display will paste it into an farmbuyer@83: open chat editbox. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.tips_slashies = [[ farmbuyer@97: A text field in the tab lets you use additional slash commands as a farmbuyer@95: shortcut for . The author prefers , as an example. The farmbuyer@95: default used to be until that became a builtin command in MoP. farmbuyer@95: farmbuyer@95: If you give an unrecognized argument to a slash command, it will farmbuyer@16: search the tab titles left to right for a title beginning with the same letters as farmbuyer@95: the argument, and open the display to that tab. For example, <"/ol a"> would farmbuyer@103: open the tab, and <"/ol o"> would open the tab. If farmbuyer@95: you had added a theoretical tab, then <"/ol eq"> would be the fastest farmbuyer@103: way to see it. Only enough text to be unambiguous is required, and all of it farmbuyer@103: is case-insensitive. farmbuyer@103: farmbuyer@103: Some tabs will accept additional text after the tab title, and try to Do The farmbuyer@103: Right Thing. For example, <"/ol history blah"> will search for a player named farmbuyer@103: "blah", and if found, will act as if you had clicked on that row, switching farmbuyer@103: the display to every loot received by that player. The same unambiguous prefix farmbuyer@103: searching is used for names as for tab titles, so <"/ol hi farm"> is enough to farmbuyer@103: trigger Farmbuyer's history display (as long as nobody named Farmville joins farmbuyer@103: the raid), and so forth. farmbuyer@16: farmbuyer@1: The command can take arguments to do things without going through farmbuyer@1: the UI. Parts given in *(angle brackets)* are required, parts in [square brackets] farmbuyer@1: are optional: farmbuyer@1: farmbuyer@103: +help>: opens the UI to the help tab|r farmbuyer@103: farmbuyer@1: +broadcast>/+bcast>: turns on rebroadcasting|r farmbuyer@1: farmbuyer@1: +on [T]>: turns on full tracking, optionally setting threshold to T|r farmbuyer@1: farmbuyer@1: +off>: turns off everything|r farmbuyer@1: farmbuyer@1: +thre[shold] T>: sets tracking threshold to T|r farmbuyer@1: farmbuyer@103: +ping>: same as clicking "Ping!" on the Options tab|r farmbuyer@103: farmbuyer@1: +list>: prints saved text names and numbers|r farmbuyer@1: farmbuyer@1: +save *(your set name)*>: saves texts as "your set name"|r farmbuyer@1: farmbuyer@1: +restore *(N)*>: restores set number N|r farmbuyer@1: farmbuyer@1: +delete *(N)*>: deletes set number N|r farmbuyer@1: farmbuyer@103: +toggle>: opens or closes the UI (used mostly in automated wrappers)|r farmbuyer@1: farmbuyer@103: +fix ?>: lists the available automated data integrity fixes|r farmbuyer@1: farmbuyer@1: farmbuyer@1: If you use the slash commands to enable tracking or set loot thresholds, you can farmbuyer@1: give numbers or common names for the threshold. For example, "0", "poor", "trash", farmbuyer@1: "gray"/"grey" are all the same, "4", "epic", "purple" are the same, and so on. farmbuyer@1: ]] farmbuyer@1: farmbuyer@73: T.tips_prescan = [[ farmbuyer@73: When loot is manipulated, the history of previous loot entries must be scanned farmbuyer@73: to determine whether you already have any information for that loot. In this farmbuyer@73: case, "loot manipulation" includes things like receiving loot broadcasts from farmbuyer@73: other players, marking older loot as being disenchanted, and so on. farmbuyer@73: farmbuyer@73: You can speed up these actions by turning on the +Prescan for faster handling> farmbuyer@73: toggle on the tab. This is a tradeoff: loot manipulation will farmbuyer@73: go faster, but data from the prescan will use up more memory. (If you end up farmbuyer@73: doing things to every single piece of loot, you would use up all that memory farmbuyer@73: eventually. But if you don't, then that memory is essentially wasted.) farmbuyer@73: farmbuyer@73: This prescanning is only done for the specific realm on which you're playing. farmbuyer@73: Much depends on how far back you preserve history. The more history you keep farmbuyer@73: for a given realm, then... farmbuyer@73: farmbuyer@73: [option on] ...the more memory this option uses... farmbuyer@73: farmbuyer@73: [option off] ...the longer loot work takes... farmbuyer@73: farmbuyer@73: ...while manipulating loot for that realm. See the tradeoff? farmbuyer@73: farmbuyer@73: The prescan is only done once, during login. It will print out how much farmbuyer@73: additional memory is used, so you can better decide whether this option is farmbuyer@73: worth turning on. This also means that you need to relog or /reload to have farmbuyer@73: the option take effect once you enable it. farmbuyer@73: ]] farmbuyer@73: farmbuyer@1: T.todo = [[ farmbuyer@1: If you have ideas or complaints or bug reports, first check the Bugs subcategories farmbuyer@1: to see if they're already being worked on. Bug reports are especially helpful farmbuyer@73: if you can include a screenshot (in whatever image format you find convenient), farmbuyer@73: and a copy of your SavedVariables file. This is found in your World of Warcraft farmbuyer@73: installation folder, named "WTF/Account/you/SavedVariables/Ouro_Loot.lua" farmbuyer@73: (where "you" is your account name). You may need to compress this file farmbuyer@73: before the ticket system will accept it. farmbuyer@1: farmbuyer@1: Click the "About" line on the left for contact information. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.todo_gotchas = [[ farmbuyer@1: (and things I'm not sure I like in the farmbuyer@1: current design): farmbuyer@1: farmbuyer@73: Manipulating existing information while logged into a realm other than the farmbuyer@73: realm represented by that same information can yield strange results, including farmbuyer@73: outright breakage. farmbuyer@73: farmbuyer@1: If you relog (or get disconnected) while in a raid group, behavior when you log farmbuyer@1: back in can be surprising. If you have already recorded loot (and therefore farmbuyer@1: the loot list is restored), then OL assumes it's from the current raid and should farmbuyer@1: reactivate automatically in full tracking mode. If you were tracking but no farmbuyer@1: loot had dropped yet (and therefore there was nothing *to* restore), then OL farmbuyer@1: will pop up its reminder and ask again. Either way, if you were only broadcasting farmbuyer@1: then OL will *not* go back to only broadcasting. This is probably a bug. farmbuyer@1: farmbuyer@1: The saved texts feature does exactly that: only saves the generated texts, not farmbuyer@1: the full loot list. Restoring will get you a blank first tab and whatever you farmbuyer@1: previously had in the various generated text tabs. farmbuyer@1: farmbuyer@47: The generated forum text tries to only list the name of the instance if it has farmbuyer@47: not already been listed, or if it is different than the instance of the previous farmbuyer@1: boss. If you relog, the "last printed instance name" will be forgotten, and farmbuyer@1: you'll see redundant raid instance names appearing in the text. farmbuyer@1: farmbuyer@1: After a boss wipe, multiple broadcasting players releasing spirit more than farmbuyer@1: several seconds apart can cause spurious "wipe" entries (of zero duration) on farmbuyer@1: the loot grid. The surefire way to avoid this is to not release spirit until farmbuyer@1: DBM announces the wipe, but the problem isn't serious enough to really worry farmbuyer@1: about. (Right-click the spurious entries and delete them.) farmbuyer@69: farmbuyer@69: When a boss is killed, ALL previous wipes for that boss are removed and farmbuyer@69: collapsed... even if they're on other days with other raids. If you only farmbuyer@69: raid with one guild, this can result in some amusing statistics ("kill farmbuyer@69: on 27th attempt" would actually mean something), but if there are multiple farmbuyer@69: raid configurations without clearing loot in between, then this number farmbuyer@69: is simply garbage. farmbuyer@1: ]] farmbuyer@1: farmbuyer@1: T.todo_todolist = todo farmbuyer@1: farmbuyer@1: farmbuyer@1: -- Fill out the table that will actually be used. Join adjacent lines here so farmbuyer@1: -- that they'll wrap properly. farmbuyer@96: helptext = {} farmbuyer@1: for k,text in pairs(T) do farmbuyer@1: local funkykey = k:gsub('_','\001') -- this is how TreeGroup makes unique keys farmbuyer@1: local wrapped = text farmbuyer@1: wrapped = wrapped:gsub ("[%+<>]", replacement_colors) farmbuyer@1: wrapped = wrapped:gsub ("([^\n])\n([^\n])", "%1 %2") farmbuyer@83: --safeprint(wrapped) farmbuyer@1: wrapped = wrapped:gsub ("|r\n\n", "|r\n") farmbuyer@1: wrapped = wrapped:gsub ("Ouroboros", "|cffa335ee|r") farmbuyer@83: --safeprint(wrapped) farmbuyer@56: wrapped = wrapped:gsub ("%*%(", "<") :gsub("%)%*", ">") :gsub(":PLUS:", "+") farmbuyer@96: helptext[funkykey] = wrapped farmbuyer@1: end farmbuyer@1: end -- do scope farmbuyer@1: todo = nil farmbuyer@1: farmbuyer@1: farmbuyer@95: -- Tab 5: Help farmbuyer@95: do farmbuyer@95: local AceGUI = LibStub("AceGUI-3.0") farmbuyer@95: -- widget container status tables (will have things magically appear farmbuyer@95: -- inside them that we wish to preserve) farmbuyer@95: local status_for_scroll = {} farmbuyer@95: local status_for_select = { treewidth = 145 } farmbuyer@1: farmbuyer@95: -- Clicking an entry on the left tree column. farmbuyer@95: local help_OnGroupSelected_func = function (treeg,event,category) farmbuyer@96: -- Some way of just reusing the same Label widget when clicking farmbuyer@96: -- different topics? farmbuyer@95: treeg:ReleaseChildren() farmbuyer@95: local txt = AceGUI:Create("Label") farmbuyer@95: txt:SetFullWidth(true) farmbuyer@95: txt:SetFontObject(GameFontNormal)--Highlight) farmbuyer@96: txt:SetText(helptext[category]) farmbuyer@95: local sf = AceGUI:Create("ScrollFrame") farmbuyer@95: sf:SetStatusTable(status_for_scroll) farmbuyer@95: sf:SetLayout("Fill") farmbuyer@95: -- This forces the scrolling area to be bigger than the visible area; else farmbuyer@95: -- some of the text gets cut off without ever triggering the scrollbar. farmbuyer@95: sf.content:SetHeight(700) farmbuyer@95: sf:AddChild(txt) farmbuyer@95: treeg:AddChild(sf) farmbuyer@95: if treeg:GetUserData("help restore scroll") then farmbuyer@95: if status_for_scroll.scrollvalue then farmbuyer@95: sf:SetScroll(status_for_scroll.scrollvalue) farmbuyer@95: end farmbuyer@95: treeg:SetUserData("help restore scroll", false) farmbuyer@95: else farmbuyer@95: sf:SetScroll(0) farmbuyer@95: end farmbuyer@95: end farmbuyer@95: farmbuyer@95: -- Clicking the Help tab as a whole (tabs_OnGroupSelected["help"]). farmbuyer@95: local tabs_OGS = function(container,specials) farmbuyer@95: container:SetLayout("Fill") farmbuyer@95: local left = AceGUI:Create("TreeGroup") farmbuyer@95: left:SetStatusTable(status_for_select) farmbuyer@95: left:SetLayout("Fill") farmbuyer@95: left:SetFullWidth(true) farmbuyer@95: left:SetFullHeight(true) farmbuyer@95: left:EnableButtonTooltips(false) farmbuyer@96: left:SetTree(helptree) farmbuyer@95: left:SetCallback("OnGroupSelected", help_OnGroupSelected_func) farmbuyer@95: container:AddChild(left) farmbuyer@95: if status_for_select.selected then farmbuyer@95: left:SetUserData("help restore scroll", true) farmbuyer@95: left:SelectByValue(status_for_select.selected) farmbuyer@95: else farmbuyer@95: left:SelectByValue("basic") farmbuyer@95: end farmbuyer@95: end farmbuyer@95: farmbuyer@103: addon:register_tab_control_AT_END ("help", [[Help]], farmbuyer@103: [[Instructions, reminders, and tips for non-obvious features]], farmbuyer@103: tabs_OGS, [[ farmbuyer@95: Every tab across the top also gets its own special buttons here in the lower farmbuyer@95: right, under the same name as the tab. Some controls do not become visible farmbuyer@103: until that tab has data to work with.]]) farmbuyer@95: farmbuyer@95: end farmbuyer@70: farmbuyer@109: addon.FILES_LOADED = addon.FILES_LOADED + 1 farmbuyer@1: -- vim:noet