vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 ************
2 DamageMeters - A user-interface modification for World of Warcraft.
3 ************
4  
5 Author - Patrick Cyr (wwdandelion@yahoo.com) (Dandelion on Whisperwind)
6 Permissions - Do anything you want with it except take credit for it or make
7 money from it.
8 Credit To -
9 Zoldan and Chakotay1357 for the German translation.
10 Kurty and eXess for the French translation.
11 Author(s) of DPSPlus and CombatStats for the parsing technique.
12 Authors of Sky (for their assert function).
13 Lead Tester - Tagamogi
14 Thanks To - Rancor, Cyntax, Kixxs, Gileran, Dex, Zurai, Kotor,
15 Sensi, Kon, and Pharaoh for help with testing.
16  
17  
18 ************
19 **Contents**
20 ************
21 I. Summary
22 II. How It Works
23 III. Features
24 1) Interface
25 2) Bar Counts
26 3) Quantities
27 4) Players
28 5) Event Data
29 6) Reporting
30 a) DMReporter.exe
31 7) Synchronization
32 a) Event Synchronization
33 b) The Ready Command
34 8) Memory Register
35 IV. Version History
36  
37 -------------------------------------------------------------------------------
38  
39 ***********
40 I. Summary:
41 ***********
42  
43 DamageMeters keeps track of the damage you and nearby players does
44 and shows the total damage as meters in a window on the screen. It makes it
45 easy to compare the relative damage/healing output of members of a party or
46 raid. At any time you can have the mod output the resulting information as
47 text "say"s or to a channel of your choice.
48  
49  
50 *****************
51 II. How It Works:
52 *****************
53  
54 DM works by analyzing (parsing) text messages of the sort you see in your
55 "Combat Log" chat window. An example would be "You hit Onyxia for 10." This
56 is the only way a mod can know what damage/healing anyone is doing/taking,
57 which is unfortunate because parsing strings isn't terribly fast or easy.
58  
59 There is a VERY important limitation to DM: a player only receives combat
60 text messages for those players that are near him. The distance varies quite
61 a bit but it doesn't seem to ever be any higher than 45 yards or so. You
62 are not guaranteed to get messages even for members of your own party if they
63 are not near you. DM's Synchronization system provides something of a
64 work-around for this problem.
65  
66 Also: it is a common misconception that you need to have messages turned on
67 in your chat window in order for DM to work. This is not the case: they are
68 entirely independent of each other.
69  
70  
71 **************
72 III. Features:
73 **************
74  
75 -------------
76 1) Interface:
77 -------------
78  
79 DM appears as a frame (window) with a vertical stack of horizontal meters
80 (bars). Each bar represents a value for a single player. Bars can be sorted
81 in increasing or decreasing order, though almost always in the latter. The
82 bar for the player with the highest value of a given quantity will always be
83 at full length. Everyone else's bar will be some shorter length in proportion
84 to the lead player's value. In addition to the bar itself, various text
85 can be specified to be drawn over each bar, including the player name, the
86 value, etc. Moving the mouse over a given person's bar brings up a tooltip
87 which shows detailed information for a given player.
88  
89 There are two interfaces for setting program options: menus and console
90 commands. There are two menus. The main menu is reached by right clicking
91 on the title of the DM window. There is also a player menu which is reached
92 by right clicking on a particular player's bar. Console commands all start
93 with /dm and are entered like chat commands. Use /dmhelp to get a full list.
94  
95 The window can be moved by click-and-dragging on the title button. Lastly,
96 clicking on a player's bar will attempt to target them.
97  
98  
99 --------------
100 2) Bar Counts:
101 --------------
102  
103 When a player is detected doing something we are interested in, DM
104 automatically adds it to its internal list. The internal list can have at
105 most 50 entries, at which point it is full and NO new players will be added.
106 The number of players in the list, though, is independant of the number of
107 bars visible on the screen. Generally, there are two ways you can specify the
108 number of bars: 1) as a hard number, or 2) as an up-to number. The latter
109 is called the "auto-count" number, and it basically means "show as many bars
110 as I have player information for, up to this number."
111  
112 Again, though, it is important to note: the internal player list is NOT
113 limited by the number of visible bars.
114  
115  
116 --------------
117 3) Quantities:
118 --------------
119  
120 DM monitors the following quantities:
121  
122 - Damage Done: The amount of damage done by a player.
123  
124 - Healing Done: The amount of healing done by a player.
125  
126 - Damage Taken: The amount of damage taken by a player.
127  
128 - Healing Taken: The amount of healing taken by a player.
129  
130 - Idle Time: The amount of time that has passed since the player has last
131 done something (either done damage or done healing). This is useful for
132 detecting when someone has gone ninja-afk.
133  
134 - DPS: The Damage Per Second done by a player. DM's DPS is averaged over
135 the entire duration of the current fight. It is very difficult to determine
136 the duration a fight in software. DM defines it like so: the first time
137 a monitored person does damage is the start of combat. When you start
138 regenerating health again (pretty much equivalent to when your portrait shows
139 you leaving combat) signifies the end. It is NOT precise, it will NOT give
140 good numbers all the time, but it is pretty good for most instances and is
141 really only intended to give you a rough idea anyway.
142  
143  
144 --------------
145 4) Players:
146 --------------
147  
148 DM, by default, monitors yourself, your pet, your party/raid members,
149 any nearby friendly players, and miscellaneous things like totems. There is
150 a menu option, "Only Monitor Group Members", which tells DM to reject nearby
151 friendlies and miscellaneous things. There are valid reasons for having both
152 options available. For example, in a pvp environment data from friendlys
153 can quickly bury your own, and so you'd want to turn that option on.
154 However, if you are a soloing shaman you could be interested in how much
155 healing your totems are doing, for instance, so you'd want the option off.
156  
157 Note: there is no easy way to distinguish totems from players, and
158 there is no way at all to determine who dropped a particular totem.
159  
160 Pets present challenges for DM which require some understanding on the users
161 part for best results. DM CANNOT distinguish someone else's pet from a random
162 friendly player. If "Only Monitor Group Members" is on you will not see
163 other players's pets. DM CAN tell if something is YOUR pet. Your pet is
164 always shown.
165  
166 The "Treat Pet Data As Your Data" option is meant to help people determine what
167 their total (themselves plus their pets) contributions are. When this option
168 is on, any data that registers for your pet is treated as if it came from
169 yourself. If you accumulate data from one or more pets with this option off,
170 then turn the option on, the pet(s) data will be AUTOMATICALLY merged into your
171 own.
172  
173  
174 --------------
175 5) Event Data.
176 --------------
177  
178 DamageMeters can be configured to record stats on an event-by-event basis.
179 [I'm using the term event to refer to a specific damage/healing source, such
180 as a melee attack or spell.] While the information displayed isn't terribly
181 in-depth, it can still be handy for quickly determining how much various
182 abilities are contributing to someone's totals. Event data for a player is
183 displayed in their bar tooltip.
184  
185 The downside to event data is that it takes up quite a bit of memory to
186 store, so by default DM only saves event data for one's self. It also makes
187 sync'ing take a *lot* longer (see the section on synchronization).
188  
189 Here is an example of some DamageTaken events:
190  
191 Fireball = 300 (75%) 0/2 0% 150 (0 Fire)
192 [Melee] = 100 (25%) 1/2 50% 50
193  
194 The entries are:
195 "Fireball" - Event name
196 "300" - Total from this event (in this case, total damage taken)
197 "(75%)" - Percent that this event contributes to this quantity
198 "0/2" - Crits/hits
199 "0%" - Crit percentage
200 "150" - Average
201 "(0 Fire)" - The magic type and your average resistance (only if applicable)
202  
203  
204 --------------
205 6) Reporting.
206 --------------
207  
208 DM has a system for reporting its data to other people. It is accessible
209 using the "Report" menu or via the /dmreport command. The former is quicker,
210 but the latter is much more flexible.
211  
212 The basic syntax for the /dmreport command is:
213  
214 /dmreport [X[#]] [tell target|channel]
215  
216 X is the report destination, and can be one of the following:
217  
218 c - Console: Chat messages that you only can see. This is the default.
219 s - Say
220 p - Party
221 r - Raid
222 g - Guild
223 w - Whisper - For example, /dmreport w dandelion
224 h - cHannel - Use the channel name, not number: /dmreport h mychannel
225 f - Frame - Shows results in a frame (window), which you can use to copy the
226 text to the clipboard.
227  
228 # is optional. If specified, it limits the number of people reported to the
229 top #. For example, to output the top 10 to raid, use:
230  
231 /dmreport r10
232  
233 As far as doing reports via the menu: it works the same as the console
234 command, though of course the Whisper and cHannel report types are unavailable.
235 Also, note that when using the menu it will only report up to the number of
236 bars you have visible. [I only did this to cut down on the amount of spam
237 it was generating in my raids, heh.]
238  
239  
240 a) DMReporter.exe
241  
242 DMReporter.exe is a stand-alone application that generates reports without
243 having to cut-and-pase from the report frame. To use, just run it: the first
244 time it runs it will ask you where your SavedVariables.lua file is. After
245 that, it uses the scripts in DMReporter.lua.default to generate report files
246 for you. If you want to change the options or even try generating your own
247 reports, you can copy DMReporter.lua.default to DMReporter.lua. The program
248 will always load the latter file if it exists.
249  
250 A note about virus safety: the ONLY approved version of DamageMeters comes
251 from www.curse-gaming.com. If you get it from somewhere else I cannot vouch
252 for the safety of DMReporter.exe.
253  
254  
255 -------------------
256 7) Synchronization:
257 -------------------
258  
259 The Sync system is an attempt to work around the fundamental problem of
260 people not receiving messages from people who are too far away from them.
261 It was made with raid groups in mind, and so this discussion will focus on
262 how raid groups can best use it.
263  
264 Here's how it works: in principle, the only source of errors in DM are from
265 someone being outside of your range and so you miss their messages. For
266 example, a raid that is attacking a mob normally has a melee guys close to
267 the mob and casters standing back. A caster is very likely to miss messages
268 from melee guys, and a melee guy is very likely to miss messages from a caster.
269 However, if you took the melee guys' numbers for the melee players, and the
270 caster's numbers for the other casters, you'd likely have a very good set of
271 data.
272  
273 Thats basically what synchronizing does. The actual mechanism is very simple:
274 everyone transmits all their numbers, and then people just take whatever
275 numbers are HIGHEST. In theory, each player has perfect data for himself, so
276 if everyone was involved in the sync'ing you would have a perfect picture.
277 In practice, thats probably overkill...a handful of people who play different
278 positions should be fine--maybe a healer, a melee'er, and a hunter.
279  
280  
281 Sync Quick-Start Guide:
282  
283 1) Someone (I'll call her the Sync Leader) chooses a channel name and joins
284 it, ie. /dmsyncchan ourchannel.
285 2) The Sync Leader then calls /dmsyncbroadcastchan. Anyone who is running
286 a sufficiently recent version of DM will automatically be joined into
287 that channel.
288 3) Once everyone is in the channel, but before the activity begins, the Sync
289 Leader should call /dmsyncclear to make sure everyone's data is cleared.
290 4) Play! Collect data!
291 5) Finally, the Sync Leader calls /dmsync whenever she wants the raid to
292 share data. Since it can cause a little slowdown it is best to do this
293 between fights (though not necessarily between every fight).
294  
295 Note: There is nothing special about the "Sync Leader": any player can
296 perform any of these commands. It just seems simpler to have one person
297 in charge of it.
298  
299  
300 In addition to the above steps, I'd recommend that everyone doing sync'ing
301 use the following settings:
302  
303 * "Only Monitor Group Members" ON: Totems, pets, and such can make the
304 internal tables reach their limit, potentially preventing actual raid members
305 from having their data recorded.
306  
307 * "Treat Pet Data As Your Data" ON: If you are a pet using class, this is
308 the best (only) way to make sure your total contribution is counted.
309  
310  
311 a) Event Synchonization
312  
313 There are menu options which allow you to separately specify how much
314 event data you want to record and transmit. This may seem a bit
315 like overkill, but there are two very important reasons for this. First,
316 there is a *ton* of event data. The normal (quantity) data for a person all
317 fits into one message, but event data takes much more--anywhere from say 1
318 to 100. Second, Blizzard seems to have a mechanism in place that
319 automatically disconnects players that send too many messages too quickly.
320 Because of this, DamageMeters queues up all of its sync messages and streams
321 them out rather slowly to avoid dropping anyone during syncs.
322  
323 These two factors taken together mean that full event sync's can take a
324 *long* time--up to a couple minutes. Its for this reason that by default
325 only one's own event data is recorded and transmitted--event data isn't the
326 main point of this mod, and it is unreasonable to make sync'ing go much slower
327 for something that most people will not need.
328  
329  
330 b) The Ready Command
331  
332 To avoid parsing healing done while not in combat, /dmsyncready has been added.
333 Basically, /dmsyncready tells everyone to pause, but unpause immediately as
334 soon as any damage (done or received) is detected. In addition, the person(s)
335 who detects the damage will broadcast an unpause event. The idea is to "ready"
336 after a wipe so that none of the healing done while recovering will count.
337 Ready will make it so you don't have to remember to unpause once you start
338 combat.
339  
340  
341 -------------------
342 8) Memory Register:
343 -------------------
344  
345 DamageMeters has a second table of information, the Memory Register. It
346 functions pretty much exactly like a memory button on a calculator. Its
347 purpose is to have a place for you to save a set of information (for example,
348 the data from your last raid).
349  
350 There is a menu option, "Accumulate Data", which makes it so whenever data
351 is added to the main table (ie. when it appears in your bars), it is also
352 added to the MR. One possible use of this is in conjunction with the
353 "Reset Data When Combat Starts" option. If both options were on, for example,
354 you could do an instance run and see what the data is for each fight
355 individually, and then at the end look at the memory data to see what the
356 totals are.
357  
358 A quick note about event data: at the moment, event data is -not- stored with
359 regular data. Most memory functions, therefore, don't work with event data.
360 Swap does. Save does. Everything else (especially merge and accumulate) don't.
361  
362  
363 ********************
364 IV. Version History:
365 ********************
366  
367 3.2.0 - 9-16-05 : Fixed bug which caused just under half of all sync'ed
368 events to be ignored. Sorry. :( Added /dmsyncleave command. Added
369 /dmready, /dmsyncready, and /dmsynckick commands. Added resist averaging
370 stuff.
371  
372 3.1.0 - 8-02-05 : Added more count options to the Bar Count menu. Added
373 "Clear when joining" menu option. SYNC VERSION CHANGED. Simplified event
374 and sync options a bit. Added "e" option to /dmsync which specifies that
375 events are to be transmitted.
376  
377 3.0.0 - 7-20-05 : Event Data system added. Synchronization system made much
378 more user friendly. Too many bugs fixed and small features added to list .
379 DMReporter.exe now included with DamageMeters.
380  
381 2.3.0 - 6-7-05 : SYNC VERSION CHANGED: This version will not
382 be able to sync with older versions. Added alphabetical sort option.
383 Fixed major bug: all non-melee damage done to friendly characters
384 was being ignored. Hit/crit counts now shown for all main
385 quantities, not just damage. Added "Show Total" menu option. Fixed bug
386 where invisible bars could still be clicked and would block mouse messages
387 intended for ui elements beneath them. Added "% of Leader" text option.
388  
389 2.2.0 - 6-3-05 : Added /dmtotal, which displays the current quantity's
390 total in a small button beneath the frames. Reports now list a total
391 at the bottom. Added keybinding for /dmswap. Added /dmsyncmsg for sending
392 msgs to other people in the same syncchan (assuming that everyone will have
393 that channel's messages hidden). Reordered Report menu a little. Added
394 /dmmemclear and menu option. Fixed bug with all spells and effects with
395 "'s" in the name (Ramstein's Lighting Bolts, etc). Created a new Position
396 menu which contains a few old position options and two new ones; "Resize Up"
397 and "Resize Left". These determine the way the window moves when it changes
398 size. Added /dmshowmax and keybinding for it.
399  
400 2.1.0 - 5-30-05 : Synchronization data now has a version number (2), meaning
401 it will no longer be possible to synchronize with people with older versions.
402 Improved "total" reports: now shows rank of each person for each quantity.
403 Total reports also show who contributed to the report (if sync'ing was involved).
404 Fixed parsing for party/friendly players using Julie's Dagger. Group-only option
405 now defaults on. Added text cycling and quantity cycling menu options. Added
406 /dmversion. /dmsyncchan will now attempt to automatically join the channel you
407 specify. Added a "Help" option to the Report menu. Added "Accumulate Data"
408 toggle to the memory menu.
409  
410 2.0.0 - 5-21-05 : Text options now settable via the menu. Fixed bug
411 when reporting idle time. The colors associated with various quantities
412 are now settable via the "Visible Quantities" menu. Reordered the quantities
413 a little, thus requiring a version change (so once you install this
414 any saved data will be wiped). Added key binding to cycle quantity
415 backwards. Added DPS quantity. /dmsyncclear now clears your own meters
416 as well. LOCALIZED FOR FRENCH AND GERMAN VERSIONS. Renamed /dmsyncreport
417 to /dmsyncsend (the way it was listed in the help). Syncing now
418 works while paused. Reports now automatically omit characters with 0
419 of the given quantity. Fixed huge bug in sync'ing--pretty much everything
420 but damage done was being computed wrong. Idle time is now only reset
421 by "active" values (damage done, healing done). Updated the help file to
422 be more...er, helpful. Added "Frame" report option. Fixed bug with
423 pet damage being added to player multiple times during syncs. Added
424 key binding to open report frame.
425  
426 1.1.0 - 5-6-05 : While help was in for /dmpause before, it is actually
427 implemented now. Added /dmlockpos and menu option for locking the
428 position of the meters. Paused and hidden states now save. Added
429 /dmgrouponly and menu option for making it so anyone who isn't yourself,
430 your pet, or a party or raid member is ignored. Added /dmsyncclear.
431 Damage done to pets now tracked. Spell damage done to self and party
432 now tracked. Added /dmaddpettoplayer command. Fixed display bug when
433 there are an odd number of bars over 20.
434  
435 1.0.1 - 4-22-05 : Bug fixes: Saved tables weren't having their time
436 reset, could pulse continuously after load. Character classes weren't being
437 found for raid/party members.
438  
439 1.0.0 - 4-17-05 : All known bugs fixed. Version added: if saved data is of
440 a different version the data will be cleared.
441  
442 0.9.9 - 4-15-05 : Added tracking of healing and damaged received. Improved calculation
443 of crit percentage. Removed dmsynclear, dmsyncleader, dmysncinfo. Added
444 dmsyncsend. dmsync now does both a send and a receive.
445  
446 0.9.8 - 4-13-05 : dmpop command no longer clears the list. Added dmlock.
447 Added dmpause. Added dmsyncclear, dmsyncleader, dmsyncinfo. Both the regular
448 and memory data lists are now persistant. Title button no longer visible
449 when interface is hidden with alt-z.
450  
451 0.9.7 - 4-11-05 : Added dmsync, dmsyncchan, dmsyncrequest commands. Added
452 dmpop command. Completed fixing up the code in preparation to be
453 localized, though no localization has been done yet. Hiding the window no
454 longer leaves the title button visible. Added a few key bindings. Added
455 rank text option.
456  
457 0.9.6 : Forgot...oops.
458  
459 0.9.5 - 4-08-05 : Removed dmfilter from the help list. Fixed bug which was incorrectly
460 making friendly characters appear as though they were in your party. Added
461 /dmvisinparty, /dmautocount, /dmlistbanned, and /dmclearbanned commands.
462 Added drop down menus. Added title button for easy moving and clicking on.
463 Added ability to ban damage sources.
464  
465 0.9.4 - 4-02-05 : Removed /dmfilter, as it seems to be unlikely to ever work as
466 intended. Window background now colored to reflect quantity being shown. Added
467 g dmreport option for reporting to guild chat. Improved time text display.
468 Believe I am catching all healing messages now, though in order to do so I am
469 getting some enemy heals too.
470  
471 0.9.3 - 4-01-05 : Added h dmreport option for reporting to a chat channel.
472 Reporting now reports on the current quantity (damage, healing, etc).
473  
474 0.9.2 - 3-31-05 : Separated functionality of dmsort into dmsort and dmquant.
475 Healing done is now tracked, just like damage dealt. Fixed bug where melee
476 damage done by non-party members was being lost. Added detection of damage
477 shields (thorns, etc).
478  
479 0.9.1 - 3-30-05 : Removed Cosmos dependency. (Was using their Print function.)
480  
481 0.9.0 - 3-30-05 : Released to guild for testing.
482