vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 --[[
2 --
3 -- DamageMeters Localization Data (GERMAN)
4 -- by wisc aka Radwar / Sentinel aka Jaffnar
5 -- some translations by 8tImER
6 -- first released by java
7 -- Version 5.0.0 SR3
8 --
9 Special Keys in German:
10 -- Ä = \195\132
11 -- Ö = \195\150
12 -- Ü = \195\156
13 -- ä = \195\164
14 -- ö = \195\182
15 -- ü = \195\188
16 -- ß = \195\159
17  
18 --]]
19  
20 if ( GetLocale() == "deDE" ) then
21  
22 -- CombatMessageAmbigousfix by No-Nonsense, improved by Sentinel
23 local COMBAT_MESSAGES = {
24 -- Combat Messages.
25 "SPELLLOGCRITOTHEROTHER",
26 "SPELLLOGOTHEROTHER",
27 "SPELLLOGCRITSCHOOLOTHERSELF",
28 "SPELLLOGCRITSCHOOLOTHEROTHER",
29 "SPELLLOGSCHOOLOTHERSELF",
30 "SPELLLOGSCHOOLOTHEROTHER",
31 "SPELLSPLITDAMAGEOTHEROTHER",
32 "SPELLSPLITDAMAGEOTHERSELF",
33 "SPELLRESISTOTHEROTHER",
34  
35 -- Heal Messages.
36 "PERIODICAURAHEALOTHEROTHER",
37 "HEALEDCRITOTHEROTHER",
38 "HEALEDCRITOTHERSELF",
39 "HEALEDOTHEROTHER"
40 };
41  
42 -- Apply modifications.
43 for _, cmsg in COMBAT_MESSAGES do
44 local fixcode = cmsg .. '= string.gsub(string.gsub(' .. cmsg .. ', "(%%%d%$s)s ", "%1\'s "), "%%ss ", "%%s\'s ")';
45 RunScript(fixcode);
46 end
47  
48 -- Free Memory.
49 local COMBAT_MESSAGES = nil;
50  
51 -- General --
52 DamageMeters_PRINTCOLOR = "|cFF8F8FFF"
53  
54 -- Bindings --
55 BINDING_HEADER_DAMAGEMETERSHEADER = "DamageMeters";
56 BINDING_NAME_DAMAGEMETERS_TOGGLESHOW = "Fenster anzeigen/verstecken";
57 BINDING_NAME_DAMAGEMETERS_CYCLEQUANT = "Daten vorw. durchschalten";
58 BINDING_NAME_DAMAGEMETERS_CYCLEQUANTBACK= "Daten r\195\188ckw. durchschalten";
59 BINDING_NAME_DAMAGEMETERS_CLEAR = "Daten l\195\182schen";
60 BINDING_NAME_DAMAGEMETERS_TOGGLEPAUSED = "Pause an/aus";
61 BINDING_NAME_DAMAGEMETERS_SHOWREPORTFRAME = "Berichtsfenster anzeigen";
62 BINDING_NAME_DAMAGEMETERS_SWAPMEMORY = "Speicherstand austauschen";
63 BINDING_NAME_DAMAGEMETERS_TOGGLESHOWMAX = "Max. Balken anzeigen an/aus";
64 BINDING_NAME_DAMAGEMETERS_SYNCREADY = "Sync-Bereitschaft senden";
65 BINDING_NAME_DAMAGEMETERS_TOGGLESHOWFIGHTASPS = "Daten \"pro Sekunde\" anzeigen an/aus";
66 BINDING_NAME_DAMAGEMETERS_TOGGLENORMALANDFIGHT = "Daten \"pro Kampf\" anzeigen an/aus";
67 BINDING_NAME_DAMAGEMETERS_TOGGLEMINIMODE = "Mini-Modus an/aus";
68 BINDING_NAME_DAMAGEMETERS_SYNCPAUSE = "Sync-Pause";
69 BINDING_NAME_DAMAGEMETERS_SYNCUNPAUSE = "Sync-Fortsetzen";
70 BINDING_NAME_DAMAGEMETERS_SYNCCLEAR = "Sync-L\195\182schen";
71  
72 --[[ work in progress
73 -- command, function, help string
74 DM_HELPDEF = {
75 -- Main commands.
76 { "help", DamageMeters_Help, DM_CMD_HELP },
77 { "cmd", DamageMeters_ListCommands, DM_CMD_CMD },
78 { "version", DamageMeters_ShowVersion, DM_CMD_VERSION },
79 { "show", DamageMeters_ToggleShow, DM_CMD_SHOW },
80 { "hide", DamageMeters_Hide, DM_CMD_HIDE },
81 { "clear", DamageMeters_Clear, DM_CMD_CLEAR },
82 { "report", DamageMeters_Report, DM_CMD_REPORT },
83 { "sort", DamageMeters_SetSort, DM_CMD_SORT },
84 { "count", DamageMeters_SetCount, DM_CMD_SETCOUNT },
85 { "autocount", DamageMeters_SetAutoCount, DM_CMD_AUTOCOUNT },
86 { "lock", DamageMeters_ToggleLock, DM_CMD_LOCK },
87 { "pause", DamageMeters_TogglePause, DM_CMD_PAUSE },
88 { "ready", DamageMeters_SetReady, DM_CMD_READY },
89 { "resetpos", DamageMeters_ResetPos, DM_CMD_RESETPOS },
90 { "pop", DamageMeters_Populate, DM_CMD_POP },
91 { "listbanned", DamageMeters_ListBanned, DM_CMD_LISTBANNED },
92 { "clearbanned", DamageMeters_ClearBanned, DM_CMD_CLEARBANNED },
93  
94 -- Memory
95 { "save", DamageMeters_Save, DM_CMD_SAVE },
96 { "restore", DamageMeters_Restore, DM_CMD_RESTORE },
97 { "swap", DamageMeters_Swap, DM_CMD_SWAP },
98 { "memclear", DamageMeters_MemClear, DM_CMD_MEMCLEAR },
99  
100 -- These all have menu options.
101 { "color", DamageMeters_SetColorScheme, DM_CMD_COLOR },
102 { "quant", DamageMeters_SetQuantity, DM_CMD_QUANT },
103 { "text", DamageMeters_SetTextOptions, DM_CMD_TEXT },
104 { "visinparty", DamageMeters_SetVisibleInParty, DM_CMD_VISINPARTY },
105 { "lockpos", DamageMeters_ToggleLockPos, DM_CMD_LOCKPAUSE },
106 { "grouponly", DamageMeters_ToggleGroupMembersOnly, DM_CMD_GROUPONLY },
107 { "addpettoplayer", DamageMeters_ToggleAddPetToPlayer, DM_CMD_ADDPETTOPLAYER },
108 { "resetoncombat", DamageMeters_ToggleResetWhenCombatStarts, DM_CMD_RESETONCOMBAT },
109 { "total", DamageMeters_ToggleTotal, DM_CMD_TOTAL },
110 { "showmax", DamageMeters_ToggleMaxBars, DM_CMD_SHOWMAX },
111  
112 -- Sync commands.
113 { "sync", DamageMeters_Sync, DM_CMD_SYNC },
114 { "syncchan", DamageMeters_SyncChan, DM_CMD_SYNCCHAN },
115 { "syncleave", DamageMeters_SyncLeaveChanCmd, DM_CMD_SYNCLEAVE },
116 { "syncsend", DamageMeters_SyncReport, DM_CMD_SYNCSEND },
117 { "syncrequest", DamageMeters_SyncRequest, DM_CMD_SYNCREQUEST },
118 { "syncclear", DamageMeters_SyncClear, DM_CMD_SYNCCLEAR },
119 { "syncmsg", DamageMeters_SendSyncMsg, DM_CMD_SYNCMSG },
120 { "syncbroadcastchan", DamageMeters_SyncBroadcastChan, DM_CMD_SYNCBROADCASTCHAN },
121 { "syncping", DamageMeters_SyncPingRequest, DM_CMD_SYNCPING },
122 { "syncpause", DamageMeters_SyncPause, DM_CMD_SYNCPAUSE },
123 { "syncunpause", DamageMeters_SyncUnpause, DM_CMD_SYNCUNPAUSE },
124 { "syncready", DamageMeters_SyncReady, DM_CMD_SYNCREADY },
125 { "synckick", DamageMeters_SyncKick, DM_CMD_SYNCKICK },
126 { "synclabel", DamageMeters_SyncLabel, DM_CMD_SYNCLABEL },
127 { "syncstart", DamageMeters_SyncStart, DM_CMD_SYNCSTART },
128 { "synchalt", DamageMeters_SyncHalt, DM_CMD_SYNCHALT },
129 { "synce", DamageMeters_SyncEmote, DM_CMD_SYNCEMOTE },
130  
131 -- Debug commands.
132 { "reset", DamageMeters_Reset, DM_CMD_RESET },
133 { "test", DamageMeters_Test, DM_CMD_TEST },
134 { "add", DamageMeters_Add, DM_CMD_ADD },
135 { "dumptable", DamageMeters_DumpTable, DM_CMD_DUMPTABLE },
136 { "debug", DM_ToggleDMPrintD, DM_CMD_DEBUG },
137 { "dumpmsg", DM_DumpMsg, DM_CMD_DUMPMSG },
138 { "print", DM_ConsolePrint, DM_CMD_PRINT },
139 };
140 ]]--
141  
142 -- Help --
143 DamageMeters_helpTable = {
144 "Die folgenden Befehle stehen zur Verf\195\188gung:",
145 "/dmhelp - Hilfe zur Benutzung von DamageMeters.",
146 "/dmcmd - Listet alle verf\195\188gbaren /dm (DamageMeters)-Befehle auf.",
147 "/dmshow - Zeigt oder versteckt das DamageMeters-Fenster. Bitte beachten: Die Kampfdaten werden im Hintergrund weiterhin gesammelt, sollte das Fenster versteckt sein.",
148 "/dmhide - Versteckt das Fenster.",
149 "/dmclear [#] - Entfernt (unten beginnend) Eintr\195\164ge aus der Liste, bis # St\195\188ck \195\188brig sind. Wenn keine Zahl angegeben wird, wird die gesamte Liste geleert.",
150 "/dmreport [help] [total] [c/s/p/r/w/h/g/f[#]] [Fl\195\188sterZiel/ChannelName] - Gibt einen Bericht zu den momentan vorliegenden Daten aus: '/dmreport help' f\195\188r Detailhilfe benutzen.",
151 "/dmsort [#] - Legt die Sortierreihenfolge fest. Keine Nummer angeben, um eine Liste aller verf\195\188gbaren Reihenfolgen zu erhalten.",
152 "/dmcount [#] - Legt die Anzahl gleichzeitig sichtbarer Balken fest. Wenn keine Zahl angegeben wird, werden so viele wie m\195\182glich angezeigt.",
153 "/dmsave - Speichert die aktuellen Daten intern.",
154 "/dmrestore - Stellt fr\195\188her (via /dmsave) gespeicherte Daten wieder her und \195\188berschreibt jegliche aktuelle Daten.",
155 --"/dmmerge - F\195\188hrt fr\195\188her (via /dmsave) gespeicherte Daten mit den aktuellen Daten zusammen.",
156 "/dmswap - Tauscht fr\195\188her (via /dmsave) gespeicherte Daten mit den aktuellen Daten.",
157 "/dmmemclear - L\195\182scht (via /dmsave) gespeicherte Daten.",
158 "/dmresetpos - Setzt die Position des Fensters auf die Ausgangsposition zur\195\188ck (hilfreich, wenn man es vom Bildschirm geschoben haben sollte).",
159 "/dmtext 0/<[r][n][p][l][v]> - Legt fest, welcher Text auf den Balken angezeigt werden soll. r - Platzierung. n - Spielername. p - Prozentanteil am Gesamtschaden. l - Prozent von Platz 1. v - Wert (Rohe Zahl).",
160 "/dmcolor # - Legt das Farbschema f\195\188r die Balken fest. Keine Zahl angeben f\195\188r eine Liste m\195\182glicher Optionen.",
161 "/dmquant # - Legt fest, an Hand welchen Wertes die Balken gezeichnet werden. Keine Zahl angeben f\195\188r eine Liste m\195\182glicher Optionen.",
162 "/dmvisinparty [y/n] - Legt fest, ob das Fenster nur angezeigt werden soll, wenn du in einer Gruppe/Schlachtzug bist. Kein Argument angeben um hin- und herzuschalten.",
163 "/dmautocount # - Wenn die Zahl gr\195\182sser als Null ist, zeigt das Fenster so viele Balken an, wie ihm Daten zur verf\195\188gung stehen bis zu einem Maximum von #. Wenn # Null ist, wird diese Funktion abgeschaltet.",
164 "/dmlistbanned - F\195\188hrt alle gebannten Objekte auf.",
165 "/dmclearbanned - L\195\182scht die Liste aller gebannten Objekte auf.",
166  
167 "/dmsync [d#] [e] - L\195\182st die Synchronisierung deiner Daten mit der anderer DamageMeters-Nutzer, die denselben Sync-Channel benutzen, aus. (Ruft /dmsyncsend und /dmsyncrequest auf.) Wenn d angegeben wurde, wird die Synchronisierung um d Sekunden verz\195\182gert. Wenn e angegeben wurde, werden Ereignisdaten gesendet/angefordert.",
168 "/dmsyncchan - Legt den Namen des Channels fest, der zum Synchronisieren genutzt werden soll.",
169 "/dmsyncleave - Verl\195\164sst den aktuellen Synchronisierungs-Channel.",
170 "/dmsyncsend - Sendet Synchronisierungs-Informationen an den Synchronisierungs-Channel.",
171 "/dmsyncrequest - Sendet eine Anfrage an andere Leute im Synchronisierungs-Channel, eine automatische Synchronisierung (/dmsync) durchzuf\195\188hren.",
172 "/dmsyncclear - Sendet eine Anfrage an andere Leute im Synchronisierungs-Channel, jedermanns jeweilige Daten zur\195\188ckzusetzen.",
173 "/dmsyncmsg <Nachricht> - Sendet eine Nachricht an andere Leute im Synchronisierungs-Channel. /dmm tut dasselbe.",
174 "/dmsyncbroadcastchan - Teilt deiner Gruppe/Schlachtzug deinen aktuellen Synchronisierungs-Channel mit. /dmsyncb tut dasselbe.",
175 "/dmsyncping - 'Pingt' andere Leute im Synchronisierungs-Channel, wodurch diese mit ihrer jeweiligen DamageMeters-Versionsnummer antworten.",
176 "/dmsyncpause - Pausiert die DamageMeters anderer Leute im Synchronisierungs-Channel.",
177 "/dmsyncunpause - Entpausiert die DamageMeters anderer Leute im Synchronisierungs-Channel.",
178 "/dmsyncready - Sendet einen Befehl, der alle im Synchronisierungs-Channel befindlichen Nutzer in den Bereitschafts-Status gehen l\195\164sst.",
179 "/dmsynckick player - Entfernt einen Spieler aus dem Synchronisierungs-Channel.",
180 "/dmsynclabel Titel - Gibt der momentanen Datensammlung einen Namen (Standardindex: 1).",
181 "/dmsyncstart Titel - Kombinierte Funktion aus: /dmsynclabel, /dmsyncpause, und /dmsyncclear. F\195\188r Faule. ;-)",
182 "/dmsynchalt - Bricht jeglichen momentanen Synchronisierungsvorgang ab.",
183  
184 "/dmpop - F\195\188llt die Liste mit den momentanen Gruppen/Schlachtzug-Mitgliedern (\195\188berschreibt keine vorhandenen Eintr\195\164ge).",
185 "/dmlock - Schaltet die Listensperre an/aus. Neue Eintr\195\164ge werden einer gesperrten Liste nicht mehr hinzugef\195\188gt, bereits vorhandene jedoch aktualisiert.",
186 "/dmpause - Schaltet die Datensammlungs-Funktion an/aus.",
187 "/dmlockpos - Schaltet die Bewegbarkeitssperre des Fensters an/aus.",
188 "/dmgrouponly - Schaltet an/aus, ob ausschlie\195\159lich Gruppen/Schlachtzug-Mitglieder ber\195\188cksichtigt werden sollen. (Dein Begleiter wird unabh\195\164ngig von dieser Einstellung ber\195\188cksichtigt.)",
189 "/dmaddpettoplayer - Schaltet an/aus, ob die Daten eines Begleiter als Daten des Spielers selbst behandelt werden sollen.",
190 "/dmresetoncombat - Schaltet an/aus, ob die Daten zur\195\188ckgesetzt werden, wenn ein Kampf beginnt.",
191 "/dmversion - Zeigt Versionsinformationen an.",
192 "/dmtotal - Schaltet die Anzeige des Gesamtwertes an/aus.",
193 "/dmshowmax - Schaltet die Anzeige der Gesamtzahl angezeigter Balken an/aus.",
194 };
195  
196 -- Filters --
197 DamageMeters_Filter_STRING1 = "Gruppenmitglieder";
198 DamageMeters_Filter_STRING2 = "Alle befreundeten Spieler";
199  
200 -- Despelling --
201 DM_YOU_LOCALIZED = "Ihr";
202  
203 -- Relationships --
204 DamageMeters_Relation_STRING = {
205 "Ich",
206 "Mein Begleiter",
207 "Gruppe",
208 "Freundliche Spieler"};
209  
210 -- Color Schemes --
211 DamageMeters_colorScheme_STRING = {
212 "Beziehung",
213 "Klassenfarben"};
214  
215 -- Quantities --
216 DM_QUANTSTRING_DAMAGEDONE = "Schaden";
217 DM_QUANTSTRING_HEALINGDONE = "Heilung";
218 DM_QUANTSTRING_DAMAGETAKEN = "Erlittener Schaden";
219 DM_QUANTSTRING_HEALINGTAKEN = "Erhaltene Heilung";
220 DM_QUANTSTRING_DAMAGEDONE_FIGHT = "Schaden (Kampf)";
221 DM_QUANTSTRING_HEALINGDONE_FIGHT = "Heilung (Kampf)";
222 DM_QUANTSTRING_DAMAGETAKEN_FIGHT = "Erlt. Schad. (Kampf)";
223 DM_QUANTSTRING_HEALINGTAKEN_FIGHT = "Erhlt. Heil. (Kampf)";
224 DM_QUANTSTRING_DAMAGEDONE_PS = "DPS";
225 DM_QUANTSTRING_HEALINGDONE_PS = "HPS";
226 DM_QUANTSTRING_DAMAGETAKEN_PS = "DTPS";
227 DM_QUANTSTRING_HEALINGTAKEN_PS = "HTPS";
228 DM_QUANTSTRING_IDLETIME = "Unt\195\164tige Zeit";
229 DM_QUANTSTRING_NETDAMAGE = "Nettoschaden";
230 DM_QUANTSTRING_NETHEALING = "Nettoheilung";
231 DM_QUANTSTRING_DAMAGEPLUSHEALING = "Schaden + Heilung";
232 DM_QUANTSTRING_CURING = "S\195\164uberungen";
233 DM_QUANTSTRING_CURING_FIGHT = "S\195\164ub. (Kampf)";
234 DM_QUANTSTRING_CURING_PS = "S\195\164ub./Sekunde";
235 DM_QUANTSTRING_OVERHEAL = "\195\156berheilung";
236 DM_QUANTSTRING_OVERHEAL_FIGHT = "\195\156berheil. (Kampf)";
237 DM_QUANTSTRING_OVERHEAL_PS = "OHPS";
238 DM_QUANTSTRING_HEALTH = "Gesundheit";
239 DM_QUANTSTRING_OVERHEAL_PERCENTAGE = "\195\156berheilung in %";
240 DM_QUANTSTRING_ABSHEAL = "Abs. Heilung";
241 DM_QUANTSTRING_ABSHEAL_FIGHT = "Abs. Heilung (Kampf)";
242 DM_QUANTSTRING_ABSHEAL_PS = "Abs. HPS";
243  
244 DMI_NAMES = {
245 DM_QUANTSTRING_DAMAGEDONE,
246 DM_QUANTSTRING_HEALINGDONE,
247 DM_QUANTSTRING_DAMAGETAKEN,
248 DM_QUANTSTRING_HEALINGTAKEN,
249 DM_QUANTSTRING_CURING,
250 DM_QUANTSTRING_OVERHEAL,
251 DM_QUANTSTRING_ABSHEAL,
252 };
253  
254 DM_QUANTABBREV_DAMAGEDONE = "D";
255 DM_QUANTABBREV_HEALINGDONE = "H";
256 DM_QUANTABBREV_DAMAGETAKEN = "DT";
257 DM_QUANTABBREV_HEALINGTAKEN = "HT";
258 DM_QUANTABBREV_CURING = "Cu";
259 DM_QUANTABBREV_OVERHEAL = "Oh";
260 DM_QUANTABBREV_ABSHEAL = "RohHD";
261  
262 DM_QUANTABBREV_DAMAGEDONE_PS = "DPS";
263 DM_QUANTABBREV_HEALINGDONE_PS = "HPS";
264 DM_QUANTABBREV_DAMAGETAKEN_PS = "DTPS";
265 DM_QUANTABBREV_HEALINGTAKEN_PS = "HTPS";
266 DM_QUANTABBREV_CURING_PS = "CuPS";
267 DM_QUANTABBREV_OVERHEAL_PS = "OHPS";
268 DM_QUANTABBREV_ABSHEAL_PS = "AbsHDPS";
269  
270 DM_QUANTABBREV_IDLETIME = "LL";
271 DM_QUANTABBREV_NETDAMAGE = "NetD";
272 DM_QUANTABBREV_NETHEALING = "NetH";
273 DM_QUANTABBREV_DAMAGEPLUSHEALING = "D+H";
274 DM_QUANTABBREV_HEALTH = "HP";
275 DM_QUANTABBREV_OVERHEAL_PERCENTAGE = "Oh%";
276  
277  
278 -- Sort --
279 DamageMeters_Sort_STRING = {
280 "Absteigend",
281 "Aufsteigend",
282 "Alphabetisch"};
283  
284 DamageMeters_ClassConversion = {
285 ["J\195\132GER"] = "HUNTER",
286 ["HEXENMEISTER"] = "WARLOCK",
287 ["PRIESTER"] = "PRIEST",
288 ["PALADIN"] = "PALADIN",
289 ["MAGIER"] = "MAGE",
290 ["SCHURKE"] = "ROGUE",
291 ["DRUIDE"] = "DRUID",
292 ["SCHAMANE"] = "SHAMAN",
293 ["KRIEGER"] = "WARRIOR"
294 };
295  
296 function DamageMeters_GetClassColor(className)
297 return RAID_CLASS_COLORS[DamageMeters_ClassConversion[string.upper(className)]];
298 end
299  
300  
301 -- This associates the string names of damage types (schools) with the DM_DMGTYPE constants.
302 DM_DMGNAMETOID = {
303 ["Arkan"] = DM_DMGTYPE_ARCANE,
304 ["Feuer"] = DM_DMGTYPE_FIRE,
305 ["Natur"] = DM_DMGTYPE_NATURE,
306 ["Frost"] = DM_DMGTYPE_FROST,
307 ["Schatten"] = DM_DMGTYPE_SHADOW,
308 ["Heilig"] = DM_DMGTYPE_HOLY,
309 ["K\195\182rperlich"] = DM_DMGTYPE_PHYSICAL,
310 };
311  
312 DM_DMGTYPENAMES = {
313 "Arkan",
314 "Feuer",
315 "Natur",
316 "Frost",
317 "Schatten",
318 "Heilig",
319 "K\195\182rperlich",
320 "Normal",
321 };
322  
323 -- Errors --
324 DM_ERROR_INVALIDARG = "DamageMeters: Ung\195\188ltige(s) Argument(e).";
325 DM_ERROR_MISSINGARG = "DamageMeters: Argument(e) fehlt/en.";
326 DM_ERROR_NOSAVEDTABLE = "DamageMeters: Kein gespeicherter Datensatz vorhanden.";
327 DM_ERROR_BADREPORTTARGET = "DamageMeters: Ung\195\188ltiges Berichtziel: ";
328 DM_ERROR_MISSINGWHISPERTARGET = "DamageMeters: Fl\195\188stern ausgew\195\164lt, aber kein Spielername angegeben.";
329 DM_ERROR_MISSINGCHANNEL = "DamageMeters: Channel angegeben aber keine Zahl angegeben.";
330 DM_ERROR_NOSYNCCHANNEL = "DamageMeters: Synchronisations-Kanal muss angegeben werden, bevor Sync-Funktionen genutzt werden k\195\182nnen.";
331 DM_ERROR_JOINSYNCCHANNEL = "DamageMeters: Du musst den Synchronisations-Kanal ('%s') betreten, bevor du Sync-Funktionen benutzen kannst.";
332 DM_ERROR_SYNCTOOSOON = "DamageMeters: Synchronisations-Anfrage zu kurz nach der letzten - ignoriert.";
333 DM_ERROR_POPNOPARTY = "DamageMeters: Kann die Tabelle nicht bef\195\188llen: Du bist nicht in einer Gruppe/Schlachtzug.";
334 DM_ERROR_NOROOMFORPLAYER = "DamageMeters: Kann Begleiter-Daten nicht mit Spielerdaten verschmelzen, da der Spieler der Liste nicht hinzugef\195\188gt werden konnte. (Liste voll?)";
335 DM_ERROR_BROADCASTNOGROUP = "DamageMeters: Du musst in einer Gruppe/Schlachtzug sein, um den Synchronisations-Kanal bekanntzugeben!";
336 DM_ERROR_NOPARTY = "DamageMeters: Du bist nicht in eine Gruppe.";
337 DM_ERROR_NORAID = "DamageMeters: Du bist nicht Teil eines Schlachtzugs.";
338  
339 -- Messages --
340 DM_MSG_SETQUANT = "DamageMeters: Setze Anzahl sichtbarer Anzeigen auf: ";
341 DM_MSG_CURRENTQUANT = "DamageMeters: Aktueller Wert: ";
342 DM_MSG_CURRENTSORT = "DamageMeters: Aktuelle Sortierung: ";
343 DM_MSG_SORT = "DamageMeters: Setze Sortierung auf: ";
344 DM_MSG_CLEAR = "DamageMeters: Entferne Eintr\195\164ge %d bis %d.";
345 --DM_MSG_REMAINING = "DamageMeters: %d Objekte \195\188brig.";
346 DM_MSG_REPORTHEADER = "DamageMeters: <%s> Bericht \195\188ber %d/%d Quellen:";
347 DM_MSG_PLAYERREPORTHEADER = "DamageMeters: Spielerbericht \195\188ber %s:";
348 DM_MSG_SETCOUNTTOMAX = "DamageMeters: Keine Anzahl angegeben, stelle das Maximum ein.";
349 DM_MSG_SETCOUNT = "DamageMeters: Neue Balkenanzahl: ";
350 DM_MSG_RESETFRAMEPOS = "DamageMeters: Setze Fensterposition zur\195\188ck.";
351 DM_MSG_SAVE = "DamageMeters: Speichere aktuelle Daten.";
352 DM_MSG_RESTORE = "DamageMeters: Stelle gespeicherte Daten wieder her.";
353 DM_MSG_MERGE = "DamageMeters: Verschmelze gespeicherte Daten mit den aktuellen Daten.";
354 DM_MSG_SWAP = "DamageMeters: Tausche aktuelle Daten (%d) gegen gespeicherte Daten (%d).";
355 DM_MSG_SETCOLORSCHEME = "DamageMeters: Setze Farbschema auf: ";
356 DM_MSG_TRUE = "Ja";
357 DM_MSG_FALSE = "Nein";
358 DM_MSG_SETVISINPARTY = "DamageMeters: Nur-in-Gruppe-sichtbar ist eingestellt auf: ";
359 DM_MSG_SETAUTOCOUNT = "DamageMeters: Setze die Obergrenze automatisch angezeiger Balken auf: ";
360 DM_MSG_LISTBANNED = "DamageMeters: Liste gebannter Eintr\195\164ge: ";
361 DM_MSG_CLEARBANNED = "DamageMeters: L\195\182sche alle gebannten Eintr\195\164ge.";
362 DM_MSG_HOWTOSHOW = "DamageMeters: Verstecke das Fenster. Benutze /dmshow um es wieder sichtbar zu machen.";
363 DM_MSG_SYNCCHAN = "DamageMeters: Synchronisations-Kanal eingestellt auf: ";
364 DM_MSG_SYNCREQUESTACK = "DamageMeters: Synchronisierung angefordert von Spieler: ";
365 DM_MSG_SYNCREQUESTACKEVENTS = "DamageMeters: Synchronisierung (mit Ereignissen) angefordert von Spieler: ";
366 DM_MSG_SYNC = "DamageMeters: Sende Synchronisierungs-Daten.";
367 DM_MSG_SYNCEVENTS = "DamageMeters: Sende Synchronisierungs-Daten (mit Ereignissen).";
368 DM_MSG_LOCKED = "DamageMeters: Liste fixiert.";
369 DM_MSG_NOTLOCKED = "DamageMeters: Liste freigegeben.";
370 DM_MSG_PAUSED = "DamageMeters: Datensammlung pausiert.";
371 DM_MSG_UNPAUSED = "DamageMeters: Datensammlung fortgesetzt.";
372 DM_MSG_POSLOCKED = "DamageMeters: Position fixiert.";
373 DM_MSG_POSNOTLOCKED = "DamageMeters: Position freigegeben.";
374 DM_MSG_CLEARRECEIVED = "DamageMeters: L\195\182schanfrage erhalten von Spieler: ";
375 DM_MSG_ADDINGPETTOPLAYER = "DamageMeters: Begleiterdaten werden nun behandelt, als k\195\164men sie von dir selbst.";
376 DM_MSG_NOTADDINGPETTOPLAYER = "DamageMeters: Begleiterdaten werden nun separat von deinen eigenen behandelt.";
377 DM_MSG_PETMERGE = "DamageMeters: Verschmelze Begleiterdaten (von %s) mit deinen eigenen.";
378 DM_MSG_RESETWHENCOMBATSTARTSCHANGE = "DamageMeters: Zur\195\188cksetzen wenn ein Kampf beginnt: ";
379 DM_MSG_SHOWFIGHTASPS = "DamageMeters: Zeige Kampfdaten als \"pro Sekunde\": ";
380 DM_MSG_COMBATDURATION = "Kampfdauer: %.2f Sekunden.";
381 DM_MSG_RECEIVEDSYNCDATA = "DamageMeters: Empfange Synchronisierungs-Daten von %s.";
382 DM_MSG_TOTAL = "GESAMT";
383 DM_MSG_VERSION = "DamageMeters Version %s geladen.";
384 DM_MSG_REPORTHELP = "Der Befehl /dmreport besteht aus drei Teilen:\n\n1) Der Zielbuchstabe. Dies kann einer der folgenden Buchstaben sein:\n c - Console (Nur du selbst kannst es sehen)\n s - Sagen\n p - Gruppenchat\n r - Schlachtzugchat\n g - Gildenchat\n o - Gildenoffiziers-Chat\n h - Chatchannel. /dmreport h MeinChannel\n w - Einem Spieler fl\195\188stern. /dmreport w Leeroy\n f - Fenster: Zeigt den Bericht in diesem Fenster.\n\nWenn der Buchstabe kleingeschrieben ist, wird der Bericht in umgekehrter Reihenfolge sein (niedrigster -> h\195\182chster)%.\n\n2) Optional die Anzahl Leute auf die der Bericht begrenzt sein soll. Diese Zahl kommt direkt hinter den Zielbuchstaben.\nZum Beispiel: /dmreport p5.\n\n3) Standardm\195\164\195\159ig umfasst ein Bericht nur den momentan angezeigten Wert. Wenn jedoch das Wort 'total' vor dem Zielbuchstaben angegeben wird, umfasst der Bericht die Gesamtzahlen f\195\188r alle Werte. Auf diese Art erstellte Berichte sind so formatiert, dass sie in einer Textdatei gut aussehen und eignen sich daher am besten zur Verwendung mit der Ausgabe in einem Fenster zum herauskopieren.\nZum Beispiel: /dmreport total f\n\nEin weiteres Beispiel: Fl\195\188stere dem Spieler 'Leeroy' die Top drei in der Liste:\n/dmreport w3 Leeroy";
385 DM_MSG_COLLECTORS = "Datensammler: (%s)";
386 DM_MSG_ACCUMULATING = "DamageMeters: Sammle Daten im Speicher.";
387 DM_MSG_REPORTTOTALDPS = "Gesamt = %.1f (%.1f sichtbar)";
388 DM_MSG_REPORTTOTAL = "Gesamt = %d (%d sichtbar)";
389 DM_MSG_SYNCMSG = "[DMM] |Hplayer:%s|h[%s]|h: %s";
390 DM_MSG_MEMCLEAR = "DamageMeters: Gespeicherte Daten gel\195\182scht.";
391 DM_MSG_MAXBARS = "DamageMeters: Zeige so viele Balken wie m\195\182glich an: %s.";
392 DM_MSG_MINBARS = "DamageMeters: Fenster minimiert: %s.";
393 DM_MSG_LEADERREPORTHEADER = "DamageMeters: Anf\195\188her-Bericht \195\188ber %d/%d Quellen:\n #";
394 -- This causes disconnects...maybe its too long? ..maybe WoW doesn't like the \n character?
395 --DM_MSG_FULLREPORTHEADER = "DamageMeters: Full Report on %d/%d Sources:\nPlayer Damage Healing Damaged Healed Hits Crits\n_______________________________________________________________________________";
396 DM_MSG_FULLREPORTHEADER1 = "DamageMeters: Voller Bericht \195\188ber %d/%d Quellen:";
397 DM_MSG_FULLREPORTHEADER2 = "Spieler Schaden Heilung Erlt.Schaden Erhlt.Heilung Treffer Crits";
398 DM_MSG_FULLREPORTHEADER3 = "_______________________________________________________________________________";
399 DM_MSG_CLEARACKNOWLEDGED = "DamageMeters: L\195\182schung best\195\164tigt von Spieler: %s.";
400 DM_MSG_EVENTREPORTHEADER = "DamageMeters: Ereignis-Bericht \195\188ber %d/%d Quellen:\n";
401 DM_MSG_PLAYERONLYEVENTDATAOFF = "DamageMeters: Zeichne Ereignisdaten aller Spieler auf.";
402 DM_MSG_PLAYERONLYEVENTDATAON = "DamageMeters: Zeichne nur deine eigenen Ereignisdaten auf.";
403 DM_MSG_SYNCCHANBROADCAST = "<DamageMeters>: Setting this group's sync channel to: ";
404 DM_MSG_SYNCINGROUPON = "DamageMeters: Du tauscht Synchronisations-Daten nur mit Gruppenmitgliedern aus.";
405 DM_MSG_SYNCINGROUPOFF = "DamageMeters: Du tauscht Synchronisations-Daten mit jedermann aus.";
406 DM_MSG_AUTOSYNCJOINON = "DamageMeters: Du betrittst nun automatisch im Gruppen-/Schlachtzugchat bekanntgegebene Synchronisations-Kan\195\164le.";
407 DM_MSG_AUTOSYNCJOINOFF = "DamageMeters: Du betrittst nun nicht mehr automatisch im Gruppen-/Schlachtzugchat bekanntgegebene Synchronisations-Kan\195\164le";
408 DM_MSG_SYNCHELP = "DamageMeters' Synchronisiation ist ein Vorgang bei dem mehrere DamageMeters-Benutzer ihre gesammelten Daten austauschen. Der Hauptverwendungszweck liegt in Instanzen, in denen Spieler oft weit genug voneinander entfernt sind, um nicht mehr alle Kampfnachrichten aller anderen Mitspieler mitgeteilt zu bekommen.\n\nKurzanleitung zur Synchronisation\n\n1) Jemand (der Sync-Leiter) w\195\164hlt einen Kanalnamen aus und betritt ihn, z.B. mit /dmsyncchan UnserBeispielChannel\n2) Der Sync-Leiter benutzt dann /dmsyncbroadcastchan (bzw. /dmsyncb). Jeder, der eine halbwegs aktuelle Version von DamageMeters benutzt, wird dann automatisch diesem Channel beitreten.\n3) Der Sync-Leiter w\195\164hlt einen Namen f\195\188r die Sitzung -- zum Beispiel 'Onyxia' -- und benutzt dann /dmsyncstart mit diesem Namen. (/dmsyncstart Onyxia) Dies l\195\182scht die Daten aller Teilnehmer, pausiert alle DamageMeters der Teilnehmer und markiert die Daten mit diesem Namen.\n3) Sobald alle im angegebenen Channel sind, aber noch bevor die Action losgeht, sollte der Sync-Leiter /dmsyncready oder /dmsyncunpause benutzen, damit wieder Daten gesammelt werden.\n4) Spielt! Sammelt Daten!\n5) Zu guter Letzt benutzt der Sync-Leiter /dmsync um die Daten aller Teilnehmer abzugleichen. Da dieser Vorgang ein wenig anstrengend f\195\188r WoW ist, ist es empfehlenswert dies nicht mitten im Kampf zu machen, sondern eher, wenn gerade mal nicht so viel los ist. Wenn Ereignisdaten gew\195\188nscht sind, muss (/dmsync e) verwendet werden - allerdings dauert dies dann bedeutend l\195\164nger.\n\nHinweis: Der Sync-Leiter kann nichts besonderes, die Befehle k\195\182nnen von jedem Teilnehmer ausgef\195\188hrt werden. Es erleichert jedoch die gesamte Verwaltung, wenn eine bestimmte Person f\195\188r all dies zust\195\164ndig ist.";
409 DM_MSG_PINGING = "DamageMeters: Pinge andere Spieler...";
410 DM_MSG_SYNCONLYPLAYEREVENTSON = "DamageMeters: Nur deine eigenen Ereignisdaten werden \195\188bermittelt.";
411 DM_MSG_SYNCONLYPLAYEREVENTSOFF = "DamageMeters: Ereignisdaten aller Spieler werden \195\188bermittelt.";
412 DM_MSG_SYNCPAUSE = "DamageMeters: Pause-Befehl von Spieler %s erhalten.";
413 DM_MSG_SYNCUNPAUSE = "DamageMeters: Fortsetzen-Befehl von Spieler %s erhalten.";
414 DM_MSG_SYNCREADY = "DamageMeters: Bereitschafts-Befehl von Spieler %s erhalten.";
415 DM_MSG_SYNCPAUSEREQ = "DamageMeters: Sende Pause-Befehl...";
416 DM_MSG_SYNCUNPAUSEREQ = "DamageMeters: Sende Fortsetzen-Befehl...";
417 DM_MSG_SYNCREADYREQ = "DamageMeters: Sende Bereitschafts-Befehl...";
418 DM_MSG_PRESSCONTROLEVENT = "Halte Steuerung gedr\195\188ckt, um Ereignisdaten zu sehen";
419 DM_MSG_PRESSCONTROLQUANTITY = "Halte Steuerung gedr\195\188ckt, um Wertedaten zu sehen";
420 DM_MSG_PRESSALTSINGLEQUANTITY = "Halte Alt gedr\195\188ckt, um nur den aktuellen Wert zu sehen";
421 DM_MSG_PAUSEDTITLE = "Pausiert";
422 DM_MSG_READYTITLE = "Bereit";
423 DM_MSG_EVENTDATALEVEL = {
424 "DamageMeters: Sammle keine Ereignisdaten.",
425 "DamageMeters: Sammle nur die Ereignisdaten des Spielers selbst.",
426 "DamageMeters: Sammle Ereignisdaten aller Spieler."
427 };
428 DM_MSG_SYNCEVENTDATALEVEL = {
429 "DamageMeters: \195\156bermittle keine Ereignisdaten.",
430 "DamageMeters: \195\156bermittle nur die Ereignisdaten des Spielers selbst.",
431 "DamageMeters: \195\156bermittle Ereignisdaten aller Spieler."
432 };
433 DM_MSG_HELP = "- /dmcmd eingeben, um eine Liste der verf\195\188gbaren Befehle zu erhalten.\n- Solltest du das DamageMeters-Fenster nicht sehen k\195\182nnen, versuch' /dmresetpos.";
434 DM_MSG_LEAVECHAN = "DamageMeters: Verlasse Synchronisations-Kanal '%s'.";
435 DM_MSG_READYUNPAUSING = "DamageMeters: Schadensereignis empfangen, \195\188bermittle Sync-Fortsetzen-Befehl...";
436 DM_MSG_KICKED = "DamageMeters: Du wurdest von %s aus dem Synchronisations-Kanal entfernt.";
437 DM_MSG_SETLABEL = "DamageMeters: Name der Datensammlung auf <%s> eingestellt. (Index = %d)";
438 DM_MSG_SESSIONMISMATCH = "DamageMeters: Synchronisierungs-Daten aus einer anderen Datensammlung erhalten. L\195\182sche aktuelle Daten automatisch.";
439 DM_MSG_SHOWINGFIGHTEVENTSONLY = "Zeige nur Ereignisse aus dem aktuellen Kampf.";
440 DM_MSG_SYNCCLEARREQ = "DamageMeters: \195\156bermittle L\195\182schanfrage...";
441 DM_MSG_CURRENTBARWIDTH = "DamageMeters: Momentane Balkenbreite = %d.\nBenutze (/dmsetbarwidth default) zum zur\195\188cksetzen.";
442 DM_MSG_NEWBARWIDTH = "DamageMeters: Neue Balkenbreite: %d.";
443 DM_MSG_PLAYERJOINEDSYNCCHAN = "DamageMeters: Spieler %s hat den Synchronisations-Kanal betreten. [Version %s]";
444 DM_MSG_SYNCSESSIONMISMATCH = "Datensammlung des Spielers %s (%s:%d) passte nicht: Daten des Spielers gel\195\182scht.";
445 DM_MSG_SYNCHALTRECEIVED = "DamageMeters: Synchronisierungs-Stopp-Befehl erhalten von Spieler %s.";
446 DM_MSG_SYNCHALTSENT = "DamageMeters: \195\156bermittle Stopp-Befehl...";
447 -- RPS
448 DM_MSG_RPS_CHALLENGE = "Du forderst %s zu Stein-Schere-Papier heraus! Dein Zug ist: %s.";
449 DM_MSG_RPS_CHALLENGED = "%s hat dich zu Stein-Schere-Papier herausgefordert! Benutze /dmrpsr [Spielername] [r/s/p] um zu reagieren.";
450 DM_MSG_RPS_MISSING_PLAYER = "FEHLER: Fehlendes Argument. Der Spielername kann NUR ausgelassen werden, wenn nur ein einziger Spieler dich momentan herausfordert.";
451 DM_MSG_RPS_NOTCHALLENGED = "FEHLER: %s hat dich nicht herausgefordert.";
452 DM_MSG_RPS_YOUPLAY = "Dein Zug ist: %s.";
453 DM_MSG_RPS_PLAYS = "%ss Zug ist: %s.";
454 DM_MSG_RPS_DEFEATED = "%s hat dich besiegt.";
455 DM_MSG_RPS_VICTORIOUS = "Du hast %s besiegt!"
456 DM_MSG_RPS_TIE = "Das Spiel gegen %s endet mit einem Patt.";
457  
458 --[[ Note: This is only to help construct the DM_MSG_REPORTHELP string.
459 The /dmreport command consists of three parts:
460  
461 1) The destination character. This can be one of the following letters:
462 c - Console (only you can see it)%.
463 s - Say
464 p - Party chat
465 r - Raid chat
466 g - Guild chat
467 h - Chat cHannel. /dmreport h mychannel
468 w - Whisper to player. /dmreport w dandelion
469 f - Frame: Shows the report in this window.
470  
471 If the letter is lower case the report will be in reverse order (lowest to highest)%.
472  
473 2) Optionally, the number of people to limit it to. This number goes right after the destination character.
474 Example: /dmreport p5
475  
476 3) By default, reports are on the currently visible quantity only. If the word 'total' is specified before the destination character, though, the report will be on the totals for every quantity. 'Total' reports are formatted so that they look good when cut-and-paste into a text file, and so work best with the Frame destination.
477 Example: /dmreport total f
478  
479 Example: Whisper to player "dandelion" the top three people in the list:
480 /dmreport w3 dandelion
481 ]]--
482  
483 --[[ Note: This is only to help construct the DM_MSG_SYNCHELP string.
484 DamageMeters Sync'ing (short for synchronization) is a process whereby multiple DM users can transmit their data to each other. Its primary use is for instances where the players are often far from each other and thus miss some of each other's combat messages.\n\nSync Quick-Start Guide:\n\n1) Someone (I'll call her the Sync Leader) chooses a channel name and joins it, ie. /dmsyncchan ourchannel.\n2) The Sync Leader then calls /dmsyncbroadcastchan (or just /dmsyncb). Anyone who is running a sufficiently recent version of DM will automatically be joined into that channel.\n3) The Sync Leader choses a name for the session--for example, Onyxia-- then calls /dmsyncstart with that name. (/dmsyncstart Onyxia_. This will clear everyone's data and pause them, as well as mark them with this label.\n3) Once everyone is in the channel, but before the activity begins, the Sync Leader should call /dmsyncready or /dmsyncunpause so that data collection can happen.\n4) Play! Collect data!\n5) Finally, the Sync Leader calls /dmsync whenever she wants the raid to share data. Since it can cause a little slowdown it is best to do this between fights (though not necessarily between every fight). If event data is desired, call (/dmsync e), though it takes a lot longer to sync.\n\nNote: There is nothing special about the Sync Leader: any player can perform any of these commands. It just seems simpler to have one person in charge of it.
485 ]]--
486  
487 -- Menu Options --
488 DM_MENU_CLEAR = "L\195\182schen";
489 DM_MENU_RESETPOS = "Position zur\195\188cksetzen";
490 DM_MENU_HIDE = "Fenster verstecken";
491 DM_MENU_SHOW = "Fenster anzeigen";
492 DM_MENU_VISINPARTY = "Nur in Gruppen sichtbar";
493 DM_MENU_REPORT = "Bericht";
494 DM_MENU_BARCOUNT = "Balkenanzahl";
495 DM_MENU_AUTOCOUNTLIMIT = "Autom. Balken";
496 DM_MENU_SORT = "Sortierreihenfolge";
497 DM_MENU_VISIBLEQUANTITY = "Sichtbarer Wert";
498 --DM_MENU_COLORSCHEME = "Farbschema";
499 DM_MENU_MEMORY = "Datenspeicher";
500 DM_MENU_SAVE = "Speichern";
501 DM_MENU_RESTORE = "Wiederherstellen";
502 DM_MENU_MERGE = "Verschmelzen";
503 DM_MENU_SWAP = "Austauschen";
504 DM_MENU_DELETE = "L\195\182schen";
505 DM_MENU_BAN = "Verbannen";
506 DM_MENU_CLEARABOVE = "Oberhalb l\195\182schen";
507 DM_MENU_CLEARBELOW = "Unterhalb l\195\182schen";
508 --DM_MENU_LOCK = "Liste fixieren";
509 --DM_MENU_UNLOCK = "Liste freigeben";
510 DM_MENU_PAUSE = "Pausieren";
511 --DM_MENU_UNPAUSE = "Datensammlung fortsetzen";
512 DM_MENU_LOCKPOS = "Position fixieren";
513 DM_MENU_UNLOCKPOS = "Position freigeben";
514 DM_MENU_GROUPMEMBERSONLY = "Nur Gruppenmitglieder \195\188berwachen";
515 DM_MENU_ADDPETTOPLAYER = "Begleiterdaten als eigene Daten z\195\164hlen";
516 DM_MENU_TEXT = "Textoptionen";
517 DM_MENU_TEXT_RANK = "Platz";
518 DM_MENU_TEXT_NAME = "Name";
519 DM_MENU_TEXT_TOTALPERCENTAGE = "% von Gesamt";
520 DM_MENU_TEXT_LEADERPERCENTAGE = "% des Anf\195\188hrers";
521 DM_MENU_TEXT_VALUE = "Wert";
522 DM_MENU_TEXT_DELTA = "Differenz";
523 DM_MENU_SETCOLORFORALL = "Setze Farbe f\195\188r alle";
524 DM_MENU_DEFAULTCOLORS = "Stelle Standardfarben wieder her";
525 DM_MENU_RESETONCOMBATSTARTS = "Daten bei Kampfbeginn zur\195\188cksetzen";
526 DM_MENU_SHOWFIGHTASPS = "Kampfdaten als \"pro Sekunde\" anzeigen";
527 DM_MENU_REFRESHBUTTON = "Aktualisieren";
528 DM_MENU_TOTAL = "Gesamt";
529 DM_MENU_CHOOSEREPORT = "Bericht w\195\164hlen";
530 -- Note reordered this list in version 2.2.0
531 DM_MENU_REPORTNAMES = {"Fenster", "Konsole", "Sagen", "Gruppe", "Schlachtzug", "Gilde", "Offiziere"};
532 DM_MENU_TEXTCYCLE = "Durchschalten";
533 DM_MENU_QUANTCYCLE = "Automatisch Durchschalten";
534 DM_MENU_HELP = "Hilfe";
535 DM_MENU_ACCUMULATEINMEMORY = "Daten aufsummieren";
536 DM_MENU_POSITION = "Position";
537 DM_MENU_RESIZELEFT = "Gr\195\182\195\159e nach links anpassen";
538 DM_MENU_RESIZEUP = "Gr\195\182\195\159e nach oben anpassen";
539 DM_MENU_SHOWMAX = "Alle";
540 DM_MENU_SHOWTOTAL = "Gesamtwert anzeigen";
541 DM_MENU_LEADERS = "Anf\195\188hrer";
542 DM_MENU_PLAYERREPORT = "Spielerbericht";
543 DM_MENU_EVENTREPORT = "Ereignisbericht";
544 DM_MENU_EVENTDATA = "Ereignisdaten";
545 DM_MENU_EVENTDATA_NONE = "Keine Ereignisse beachten";
546 DM_MENU_EVENTDATA_PLAYER = "Ereignisse des Spielers beachten";
547 DM_MENU_EVENTDATA_ALL = "Ereignisse aller Spieler beachten";
548 --DM_MENU_SYNCEVENTDATA_NONE = "\195\156bermittle keine Ereignisse";
549 --DM_MENU_SYNCEVENTDATA_PLAYER = "\195\156bermittle Ereignisse des Spielers selbst";
550 --DM_MENU_SYNCEVENTDATA_ALL = "\195\156bermittle Ereignisse aller Spieler";
551 DM_MENU_SHOWEVENTDATATOOLTIP = "Tooltip-Standard";
552 DM_MENU_EVENTS1 = "Ereignisse 1-20";
553 DM_MENU_EVENTS2 = "Ereignisse 21-40";
554 DM_MENU_EVENTS3 = "Ereignisse 41-50";
555 DM_MENU_SYNC = "Synchronisation";
556 DM_MENU_ONLYSYNCWITHGROUP = "Nur mit Gruppenmitgliedern synchronisieren";
557 DM_MENU_PERMITSYNCAUTOJOIN = "Bekanntgegebenen Channels beitreten";
558 DM_MENU_CLEARONAUTOJOIN = "Daten beim Beitreten l\195\182schen";
559 DM_MENU_SYNCBROADCASTCHAN = "Kanal bekanntgeben";
560 DM_MENU_SYNCLEAVECHAN = "Kanal verlassen";
561 DM_MENU_SYNCONLYPLAYEREVENTS = "Nur Ereignisse des Spielers synchronisieren";
562 DM_MENU_ENABLEDMM = "DMM-Nachrichten anzeigen";
563 DM_MENU_NOSYNCCHAN = "KEIN SYNC-KANAL ANGEGEBEN";
564 DM_MENU_SYNCCHAN = "Momentaner Sync-Kanal: ";
565 DM_MENU_SESSION = "Momentane Datensammlung: ";
566 DM_MENU_SAVEDSESSION = "Datensammlung: ";
567 DM_MENU_JOINSYNCCHAN = "Kanal beitreten: Benutze /dmsyncchan";
568 DM_MENU_PARSEEVENTMESSAGES = "Eingehende Ereignisse verarbeiten";
569 DM_MENU_SENDINGBAR = "Sende...";
570 DM_MENU_PROCESSINGBAR = "Verarbeite...";
571 DM_MENU_QUANTITYFILTER = "Werte-Filter";
572 DM_MENU_MINIMIZE = "Minimieren";
573 DM_MENU_LEFTJUSTIFYTEXT = "Links-Ausrichtung";
574 DM_MENU_RESTOREDEFAULTOPTIONS = "Standard-Einstellungen wiederherstellen";
575 DM_MENU_PLAYERALWAYSVISIBLE = "Spieler selbst immer sichtbar";
576 DM_MENU_APPLYFILTERTOMANUALCYCLING = "Auf manuelles Durchschalten anwenden";
577 DM_MENU_APPLYFILTERTOAUTOCYCLING = "Auf automatisches Durchschalten anwenden";
578 DM_MENU_GENERAL = "Allgemeine Optionen";
579 DM_MENU_GROUPDPSMODE = "Gruppen-DPS-Modus";
580 DM_MENU_CLEARBANNED = "Alle entbannen";
581 DM_MENU_CONSTANTVISUALUPDATE = "Permanentes Grafikupdate";
582 DM_MENU_CLEARWHENJOINPARTY = "L\195\182schen beim Gruppenbeitritt";
583  
584 -- Misc
585 DM_CLASS = "Klasse"; -- The word for player class, like Druid or Warrior.
586 DM_TOOLTIP = "\nZeit seit letzter Aktion = %.1fs\nBeziehung = %s";
587 DM_YOU = "Du"
588 DM_CRITSTR = "Crit";
589 DM_UNKNOWNENTITY = "Unbekannte Entit\195\164t";
590 DM_SYNCSPELLNAME = "[Sync]";
591  
592 DM_DMG_MELEE = "[Nahkampf]";
593 DM_DMG_FALLING = "[Fallschaden]";
594 DM_DMG_LAVA = "[Lava]";
595 DM_DMG_DAMAGESHIELD = "[Schadensschild]";
596 DM_DMG_DEATH = "[Tod]";
597 DM_DMG_COMBAT = "[Nicht im Kampf]";
598  
599 DamageMeters_RPSmoveStrings =
600 {
601 r = "Stein",
602 p = "Papier",
603 s = "Schere"
604 };
605  
606 -------------------------------------------------------------------------------
607  
608 --[[ This system based on the one in Gello's Recap, which itself was based on the one in Telo's MobHealth.
609 - source and dest = 0 means the player
610  
611 TODO: These are all special cases in English because they contain apostrophes.
612 Julie's Dagger
613 Rammstein's Lightning Bolts
614 Night Dragon's Breath
615  
616 ]]--
617  
618 --[[
619 This table defines types of messages that DM parses and how to parse them.
620  
621 The index of the table is a human-readable name, which by convention is
622 normally the name of the string variable (as defined in GlobalStrings.lua) that
623 is being parsed. Every type of message that is parsed for the "Damage Done",
624 "Healing Done", "Damage Taken", and "Healing Taken" quantities must be defined in this
625 table.
626  
627 The key to the system is the "pattern" member. This is usually (there are some
628 special cases) a string defined in GlobalStrings.lua. An example is COMBATHITSELFOTHER =
629 "You hit %s for %d.". When DM loads up it goes through this list and converts all the
630 patterns into "regular expression" search strings. So, for example, the above becomes
631 "You hit (.+) for (%d+)%."
632  
633 When a match is found there will be an array of "elements" for
634 each unknown in the pattern. In the above pattern, elements[1] will be the string name
635 of who was hit, and elements[2] will be how much damage was done. Each msgInfo has fields
636 in which you specify which elements mean what. So, in the msgInfo for this example we set
637 "dest=1" and "amount=2".
638  
639 The fields of each entry are defined as follows:
640 - source: The index of the element that specifies the source of the amount. The source is the
641 person doing damage or doing the healing in the case of "Damage done" and "healing done" messages,
642 but it is the the person being hit in the case of "damage received" messages. When source=0, it
643 means the player (us) is the source.
644 - dest: The name of the entity being effected. Again, dest=0 means the player.
645 - amount: The index of the element that contains the quantity of damage/healing done.
646 - spell: This is the index of the element which references the spell that is doing the damage/healing.
647 Alternately, if it is a string that spell will be used explicitly. Spell=0 or nil defaults to regular
648 melee damage.
649 - damageType: Also known as "school", this is the index of the element which specifies the type of
650 damage done, ie. "physical", "fire", "frost", etc.
651 - crit: This is one of three defined values: DM_HIT, DM_CRT, DM_DOT. Set this to specify whether
652 the message represents a spell that hit normally, critically hit, or was a non-crittable spell.
653 (Damage Over Time spells, DOTs, cannot crit, hence the name.)
654 - pattern: This is the pattern, usually a string from GlobalStrings.lua.
655 - custom: If this is set to true, the pattern will not be transformed when DM is loaded. Use
656 this for custom patterns.
657 ]]--
658  
659 DamageMeters_msgInfo = {
660 -- CHAT_MSG_COMBAT_SELF_HITS
661 _COMBATHITSELFOTHER =
662 { source=0, dest=1, amount=2, spell=0, damageType=0, crit=DM_HIT, pattern=COMBATHITSELFOTHER }, -- You hit (.+) for (%d+)
663 _COMBATHITCRITSELFOTHER =
664 { source=0, dest=1, amount=2, spell=0, damageType=0, crit=DM_CRT, pattern=COMBATHITCRITSELFOTHER }, -- You crit (.+) for (%d+)
665 _VSENVIRONMENTALDAMAGE_FALLING_SELF =
666 { source=0, dest=0, amount=1, spell=DM_DMG_FALLING, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_FALLING_SELF }, -- You fall and lose (%d+) health
667 _VSENVIRONMENTALDAMAGE_LAVA_SELF =
668 { source=0, dest=0, amount=1, spell=DM_DMG_LAVA, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_LAVA_SELF }, -- You lose %d health for swimming in lava.
669  
670  
671 -- CHAT_MSG_SPELL_SELF_DAMAGE
672 _SPELLLOGSCHOOLSELFOTHER =
673 { source=0, dest=2, amount=3, spell=1, damageType=4, crit=DM_HIT, pattern=SPELLLOGSCHOOLSELFOTHER }, -- Your (.+) hits (.+) for (%d+) (.+)%.
674 _SPELLLOGCRITSCHOOLSELFOTHER =
675 { source=0, dest=2, amount=3, spell=1, damageType=4, crit=DM_CRT, pattern=SPELLLOGCRITSCHOOLSELFOTHER }, -- "Your %s crits %s for %d %s damage.";
676 _SPELLLOGSELFOTHER =
677 { source=0, dest=2, amount=3, spell=1, damageType=0, crit=DM_HIT, pattern=SPELLLOGSELFOTHER }, -- Your (.+) hits (.+) for (%d+)
678 _SPELLLOGCRITSELFOTHER =
679 { source=0, dest=2, amount=3, spell=1, damageType=0, crit=DM_CRT, pattern=SPELLLOGCRITSELFOTHER }, -- Your (.+) crits (.+) for (%d+)
680  
681 -- "CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE"
682 -- No such message.
683 --_PERIODICAURADAMAGEABSORBEDSELFOTHER =
684 -- { source=0, dest=1, amount=2, spell=4, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGEABSORBEDSELFOTHER }, -- = "%s suffers %d %s damage from your %s (%d absorbed)."
685 _PERIODICAURADAMAGESELFOTHER =
686 { source=0, dest=1, amount=2, spell=4, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGESELFOTHER }, -- (.+) suffers (%d+) (.+) damage from your (.+).
687 -- No such message.
688 --_PERIODICAURADAMAGEABSORBEDOTHEROTHER =
689 -- { source=4, dest=1, amount=2, spell=5, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGEABSORBEDOTHEROTHER }, -- %s suffers %d %s damage from %s's %s (%d absorbed).
690 _PERIODICAURADAMAGEOTHEROTHER =
691 { source=4, dest=1, amount=2, spell=5, damageType=0, crit=DM_DOT, pattern=PERIODICAURADAMAGEOTHEROTHER }, -- (.+) suffers (%d+) (.+) damage from (.+)'s (.+)
692  
693 -- "CHAT_MSG_COMBAT_PARTY_HITS" or "CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS" or "CHAT_MSG_COMBAT_PET_HITS")
694 _COMBATHITOTHEROTHER =
695 { source=1, dest=2, amount=3, spell=7, damageType=0, crit=DM_HIT, pattern=COMBATHITOTHEROTHER }, -- (.+) hits (.+) for (%d+)
696 _COMBATHITCRITOTHEROTHER =
697 { source=1, dest=2, amount=3, spell=7, damageType=0, crit=DM_CRT, pattern=COMBATHITCRITOTHEROTHER }, -- (.+) crits (.+) for (%d+)
698 _VSENVIRONMENTALDAMAGE_FALLING_OTHER =
699 { source=1, dest=1, amount=2, spell=DM_DMG_FALLING, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_FALLING_OTHER }, -- %s falls and loses %d health.
700 _VSENVIRONMENTALDAMAGE_LAVA_OTHER =
701 { source=1, dest=1, amount=2, spell=DM_DMG_LAVA, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_LAVA_OTHER }, -- %s loses %d health for swimming in lava.
702  
703 -- "CHAT_MSG_SPELL_PARTY_DAMAGE" "CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE" "CHAT_MSG_SPELL_PET_DAMAGE"
704 _SPELLLOGOTHEROTHER =
705 { source=1, dest=3, amount=4, spell=2, damageType=0, crit=DM_HIT, pattern=SPELLLOGOTHEROTHER }, -- (.+)'s (.+) hits (.+) for (%d+) --
706 _SPELLLOGCRITOTHEROTHER =
707 { source=1, dest=3, amount=4, spell=2, damageType=0, crit=DM_CRT, pattern=SPELLLOGCRITOTHEROTHER }, -- (.+)'s (.+) crits (.+) for (%d+)
708 _SPELLSPLITDAMAGEOTHEROTHER =
709 { source=1, dest=3, amount=4, spell=2, damageType=0, crit=DM_DOT, pattern=SPELLSPLITDAMAGEOTHEROTHER }, -- (.+)'s (.+) causes (.+) (%d+) damage
710  
711 -- CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF
712 _DAMAGESHIELDSELFOTHER =
713 { source=0, dest=3, amount=1, spell=DM_DMG_DAMAGESHIELD, damageType=0, crit=DM_DOT, pattern=DAMAGESHIELDSELFOTHER }, -- You reflect (%d+) (.+) damage to (.+)
714  
715 -- CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS
716 _DAMAGESHIELDOTHEROTHER =
717 { source=1, dest=4, amount=2, spell=DM_DMG_DAMAGESHIELD, damageType=0, crit=DM_DOT, pattern=DAMAGESHIELDOTHEROTHER }, -- (.+) reflects (%d+) (.+) damage to (.+)
718 -- ? soul link or something?
719 _SPELLSPLITDAMAGESELFOTHER =
720 { source=0, dest=2, amount=3, spell=1, damageType=0, crit=DM_DOT, pattern=SPELLSPLITDAMAGESELFOTHER }, -- Your (.+) causes (.+) (%d+) damage
721  
722 -- DAMAGE TAKEN
723 --"CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS" -- this gets complicated with pets.
724 --"CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS"
725 --"CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS"
726 _COMBATHITOTHERSELF =
727 { source=1, dest=0, amount=2, crit=DM_HIT, pattern=COMBATHITOTHERSELF }, -- "%s hits you for %d.";
728 _COMBATHITCRITOTHERSELF =
729 { source=1, dest=0, amount=2, crit=DM_CRT, pattern=COMBATHITCRITOTHERSELF }, -- "%s crits you for %d.";
730 _COMBATHITOTHEROTHER =
731 { source=1, dest=2, amount=3, crit=DM_HIT, pattern=COMBATHITOTHEROTHER }, -- "%s hits %s for %d.";
732 _COMBATHITCRITOTHEROTHER =
733 { source=1, dest=2, amount=3, crit=DM_CRT, pattern=COMBATHITCRITOTHEROTHER }, -- "%s crits %s for %d.";
734 _COMBATHITCRITSCHOOLOTHEROTHER =
735 { source=1, dest=2, amount=3, damageType=4, crit=DM_CRT, pattern=COMBATHITCRITSCHOOLOTHEROTHER }, -- "%s crits %s for %d %s damage.";
736 _COMBATHITSCHOOLOTHEROTHER =
737 { source=1, dest=2, amount=3, damageType=4, crit=DM_HIT, pattern=COMBATHITSCHOOLOTHEROTHER }, -- "%s hits %s for %d %s damage.";
738 _COMBATHITCRITSCHOOLOTHERSELF =
739 { source=1, dest=0, amount=2, damageType=3, crit=DM_CRT, pattern=COMBATHITCRITSCHOOLOTHERSELF }, -- "%s crits you for %d %s damage.";
740 _COMBATHITSCHOOLOTHERSELF =
741 { source=1, dest=0, amount=2, damageType=3, crit=DM_HIT, pattern=COMBATHITSCHOOLOTHERSELF }, -- "%s hits you for %d %s damage.";
742  
743  
744 --"CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE" or
745 --"CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE" or
746 --"CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE") then
747 _SPELLLOGOTHERSELF =
748 { source=1, dest=0, amount=3, spell=2, damageType=0, crit=DM_HIT, pattern=SPELLLOGOTHERSELF }, -- "%s's %s hits you for %d.";
749 _SPELLLOGSCHOOLOTHERSELF =
750 { source=1, dest=0, amount=3, spell=2, damageType=4, crit=DM_HIT, pattern=SPELLLOGSCHOOLOTHERSELF }, -- "%s's %s hits you for %d %s damage.";
751 _SPELLLOGCRITSCHOOLOTHERSELF =
752 { source=1, dest=0, amount=3, spell=2, damageType=4, crit=DM_CRT, pattern=SPELLLOGCRITSCHOOLOTHERSELF }, -- "%s's %s crits you for %d %s damage.";
753 _SPELLLOGCRITOTHERSELF =
754 { source=1, dest=0, amount=3, spell=2, crit=DM_CRT, pattern=SPELLLOGCRITOTHERSELF }, -- "%s's %s crits you for %d.";
755 -- bunch of junk in here in the old code
756 _SPELLRESISTOTHERSELF =
757 { source=1, dest=0, amount=0, spell=2, crit=DM_HIT, pattern=SPELLRESISTOTHERSELF }, -- "%s's %s was resisted.";
758  
759 _SPELLLOGSCHOOLOTHEROTHER =
760 { source=1, dest=3, amount=4, spell=2, damageType=5, crit=DM_HIT, pattern=SPELLLOGSCHOOLOTHEROTHER }, -- "%s's %s hits %s for %d %s damage.";
761 _SPELLLOGCRITSCHOOLOTHEROTHER =
762 { source=1, dest=3, amount=4, spell=2, damageType=5, crit=DM_CRT, pattern=SPELLLOGCRITSCHOOLOTHEROTHER }, -- "%s's %s crits %s for %d %s damage.";
763 _SPELLRESISTOTHEROTHER =
764 { source=1, dest=3, amount=0, spell=2, crit=DM_HIT, pattern=SPELLRESISTOTHEROTHER }, -- "%s's %s was resisted by %s.";
765  
766 --"CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE"
767 _PERIODICAURADAMAGEOTHERSELF =
768 { source=3, dest=0, amount=1, spell=4, damageType=2, crit=DM_DOT, pattern=PERIODICAURADAMAGEOTHERSELF }, -- "You suffer %d %s damage from %s's %s."
769 _PERIODICAURADAMAGESELFSELF =
770 { source=0, dest=0, amount=1, spell=3, damageType=2, crit=DM_DOT, pattern=PERIODICAURADAMAGESELFSELF }, -- "You suffer %d %s damage from your %s."
771 -- pet
772 _PERIODICAURADAMAGEOTHEROTHER =
773 { source=4, dest=1, amount=2, spell=5, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGEOTHEROTHER }, -- "%s suffers %d %s damage from %s's %s."
774  
775 --HEALING
776 -- "CHAT_MSG_SPELL_SELF_BUFF" "CHAT_MSG_SPELL_PARTY_BUFF" "CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF" "CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF"
777 _HEALEDSELFSELF =
778 { source=0, dest=0, amount=2, spell=1, crit=DM_HIT, pattern=HEALEDSELFSELF }, -- "Your %s heals you for %d.";
779 _HEALEDCRITSELFSELF =
780 { source=0, dest=0, amount=2, spell=1, crit=DM_CRT, pattern=HEALEDCRITSELFSELF }, -- "Your %s critically heals you for %d.";
781 _HEALEDSELFOTHER =
782 { source=0, dest=2, amount=3, spell=1, crit=DM_HIT, pattern=HEALEDSELFOTHER }, -- "Your %s heals %s for %d."
783 -- missing some here, ie. HEALEDSELFSELF "Your %s heals you for %d."
784 _HEALEDCRITSELFOTHER =
785 { source=0, dest=2, amount=3, spell=1, crit=DM_CRT, pattern=HEALEDCRITSELFOTHER }, -- "Your %s critically heals %s for %d.";
786 __NIGHTDRAGONSBREATHOTHER =
787 { source=1, dest=2, amount=3, spell="Nachtdrachenodem", crit=DM_HIT, pattern="(.+)'s Nachtdrachenodem heilt (.+) um (%d+) Punkte.", custom=true }, -- "%s's Night Dragon's Breath heals %s for %d.";
788 __NIGHTDRAGONSBREATHOTHERCRIT =
789 { source=1, dest=2, amount=3, spell="Nachtdrachenodem", crit=DM_CRT, pattern="(.+)'s Nachtdrachenodem heilt (.+) kritisch um (%d+) Punkte.", custom=true }, -- "%s's Night Dragon's Breath heals %s for %d.";
790 _HEALEDOTHERSELF =
791 { source=1, dest=0, amount=3, spell=2, crit=DM_HIT, pattern=HEALEDOTHERSELF }, -- "%s's %s heals %s you %d.";
792 _HEALEDCRITOTHERSELF =
793 { source=1, dest=0, amount=3, spell=2, crit=DM_CRT, pattern=HEALEDCRITOTHERSELF }, -- "%s's %s critically heals %s you %d.";
794 _HEALEDOTHEROTHER =
795 { source=1, dest=3, amount=4, spell=2, crit=DM_HIT, pattern=HEALEDOTHEROTHER }, -- "%s's %s heals %s for %d.";
796 _HEALEDCRITOTHEROTHER =
797 { source=1, dest=3, amount=4, spell=2, crit=DM_CRT, pattern=HEALEDCRITOTHEROTHER }, -- "%s's %s critically heals %s for %d.";
798  
799 --"CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS" "CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS" "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS" "CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS" -- why?
800 __JULIESBLESSINGOTHER =
801 { source=3, dest=1, amount=2, spell="Julies Segen", crit=DM_HIT, pattern="(.+) bekommt (%d+) Punkte durch (.+)'s Julies Segen%.", custom=true },
802  
803 _PERIODICAURAHEALOTHERSELF =
804 { source=2, dest=0, amount=1, spell=3, crit=DM_DOT, pattern=PERIODICAURAHEALOTHERSELF }, -- "You gain %d health from %s's %s."
805 _PERIODICAURAHEALSELFSELF =
806 { source=0, dest=0, amount=1, spell=2, crit=DM_DOT, pattern=PERIODICAURAHEALSELFSELF }, -- "You gain %d health from %s."
807 _PERIODICAURAHEALSELFOTHER =
808 { source=0, dest=1, amount=2, spell=3, crit=DM_DOT, pattern=PERIODICAURAHEALSELFOTHER }, -- "%s gains %d health from your %s."
809 _PERIODICAURAHEALOTHEROTHER =
810 { source=3, dest=1, amount=2, spell=4, crit=DM_DOT, pattern=PERIODICAURAHEALOTHEROTHER }, -- "%s gains %d health from %s's %s."
811  
812 --CURING
813 };
814  
815 --[[ DamageMeters_eventCaseTable
816  
817 This table defines which msgInfos are checked for which events. Although its a bit of a pain
818 maintaining this big list there are several big reasons why we do so. First and foremost, we
819 gain some information about the players involved in a message from the event type. For example,
820 we can deduce that if the event was CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS and the message was of the
821 type "[Someone] hit [someone] for [amount] damage." that the entity being hit was not us but rather
822 a pet or totem of ours. The second reason for this table is to greatly reduce the amount of patterns
823 each event is compared against. The final reason is that sometimes the order of parsing is critical.
824  
825 Here is an example:
826  
827 HEALEDOTHEROTHER = "%s's %s heals %s for %d."
828 HEALEDCRITOTHEROTHER - "%s's %s critically heals %s for %d."
829  
830 If we feed the following message into the above patterns, the
831 HEALEDOTHEROTHER will generate the following elements:
832  
833 "Dandelion's Healing Touch critically heals Sterne for 1234."
834 ->
835 "Dandelion", "Healing Touch critically", "Sterne", 1234
836  
837 Hence, we must in this case test for HEALEDCRITOTHEROTHER before HEALEDOTHEROTHER.
838  
839 ]]--
840  
841 DamageMeters_eventCaseTable = {
842 [DM_MSGTYPE_DAMAGE] = {
843 CHAT_MSG_COMBAT_SELF_HITS = {
844 [1] = { n = "_COMBATHITCRITSELFOTHER" }, -- ok
845 [2] = { n = "_COMBATHITSELFOTHER" }, -- ok
846 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_SELF", msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
847 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_SELF", msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
848 },
849 CHAT_MSG_SPELL_SELF_DAMAGE = {
850 -- These two are for school-less "spells" like Heroic Strike.
851 [1] = { n = "_SPELLLOGCRITSELFOTHER" }, -- ok
852 [2] = { n = "_SPELLLOGSELFOTHER" }, -- ok
853 -- These are for regular spells (ie. with Frost damage, etc).
854 [3] = { n = "_SPELLLOGCRITSCHOOLSELFOTHER" }, -- ok
855 [4] = { n = "_SPELLLOGSCHOOLSELFOTHER" }, -- ok
856 },
857  
858 CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE = {
859 [1] = { n = "_PERIODICAURADAMAGESELFOTHER" }, -- ok (rend)
860 [2] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
861 },
862 CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE = {
863 [1] = { n = "_PERIODICAURADAMAGESELFOTHER" },
864 [2] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
865 },
866  
867 CHAT_MSG_COMBAT_PARTY_HITS = {
868 [1] = { n = "_COMBATHITCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
869 [2] = { n = "_COMBATHITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
870 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER", sourceRelation=DamageMeters_Relation_PARTY },
871 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER", sourceRelation=DamageMeters_Relation_PARTY },
872 },
873 CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS = {
874 [1] = { n = "_COMBATHITCRITOTHEROTHER" }, -- ok
875 [2] = { n = "_COMBATHITOTHEROTHER" }, -- ok
876 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER", sourceRelation=DamageMeters_Relation_FRIENDLY }, -- ok
877 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER", sourceRelation=DamageMeters_Relation_FRIENDLY },
878 },
879 CHAT_MSG_COMBAT_PET_HITS = {
880 [1] = { n = "_COMBATHITCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, --ok
881 [2] = { n = "_COMBATHITOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
882 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER", destRelation=DamageMeters_Relation_PET, msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
883 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER", destRelation=DamageMeters_Relation_PET, msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
884 },
885  
886 CHAT_MSG_SPELL_PARTY_DAMAGE = {
887 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
888 [2] = { n = "_SPELLLOGCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
889 [3] = { n = "_SPELLSPLITDAMAGEOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY },
890 [4] = { n = "_SPELLLOGSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
891 [5] = { n = "_SPELLLOGOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
892 },
893 CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE = {
894 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER" }, -- ok
895 [2] = { n = "_SPELLLOGCRITOTHEROTHER" }, -- ok
896 [3] = { n = "_SPELLSPLITDAMAGEOTHEROTHER" },
897 [4] = { n = "_SPELLLOGSCHOOLOTHEROTHER" }, -- ok
898 [5] = { n = "_SPELLLOGOTHEROTHER" }, -- ok
899 },
900 CHAT_MSG_SPELL_PET_DAMAGE = {
901 [1] = { n = "_SPELLLOGCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
902 [2] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PET },
903 -- Totems do school damage.
904 [3] = { n = "_SPELLLOGSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
905 [4] = { n = "_SPELLSPLITDAMAGEOTHEROTHER", sourceRelation=DamageMeters_Relation_PET },
906 [5] = { n = "_SPELLLOGOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
907 },
908  
909 CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF = {
910 [1] = { n = "_DAMAGESHIELDSELFOTHER" }, -- ok
911 },
912 CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS = {
913 [1] = { n = "_DAMAGESHIELDOTHEROTHER" }, -- ok
914 [2] = { n = "_SPELLSPLITDAMAGESELFOTHER" },
915 },
916 },
917  
918 [DM_MSGTYPE_DAMAGERECEIVED] = {
919 CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS = {
920 [1] = { n = "_COMBATHITCRITOTHERSELF" }, -- ok
921 [2] = { n = "_COMBATHITCRITSCHOOLOTHERSELF" }, -- ok
922 [3] = { n = "_COMBATHITSCHOOLOTHERSELF" }, -- ok
923 [4] = { n = "_COMBATHITOTHERSELF" }, -- ok
924  
925 [5] = { n = "_COMBATHITCRITOTHEROTHER", destRelation=DamageMeters_Relation_PET },
926 [6] = { n = "_COMBATHITOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
927 [7] = { n = "_COMBATHITCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
928 [8] = { n = "_COMBATHITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
929 },
930 CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS = {
931 [1] = { n = "_COMBATHITCRITOTHEROTHER", destRelation=DamageMeters_Relation_PARTY },
932 [2] = { n = "_COMBATHITOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
933 [3] = { n = "_COMBATHITCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY },
934 [4] = { n = "_COMBATHITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
935 },
936 CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS = {
937 [1] = { n = "_COMBATHITCRITOTHEROTHER" }, -- ok
938 [2] = { n = "_COMBATHITOTHEROTHER" }, -- ok
939 [3] = { n = "_COMBATHITCRITSCHOOLOTHEROTHER" },
940 [4] = { n = "_COMBATHITSCHOOLOTHEROTHER" },
941 },
942  
943 -- absorb messages.
944 --CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES = {},
945 --CHAT_MSG_COMBAT_CREATURE_VS_PARTY_MISSES = {},
946 --CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_MISSES = {},
947  
948 CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE = {
949 [1] = { n = "_SPELLLOGCRITSCHOOLOTHERSELF" }, --! test
950 [2] = { n = "_SPELLLOGSCHOOLOTHERSELF" }, -- ok
951 [3] = { n = "_SPELLLOGCRITOTHERSELF" }, -- ok
952 [4] = { n = "_SPELLLOGOTHERSELF" }, -- ok
953 [5] = { n = "_SPELLRESISTOTHERSELF" }, -- ok
954  
955 [6] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET },
956 [7] = { n = "_SPELLLOGSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
957 [8] = { n = "_SPELLLOGCRITOTHEROTHER", destRelation=DamageMeters_Relation_PET },
958 [9] = { n = "_SPELLLOGOTHEROTHER", destRelation=DamageMeters_Relation_PET },
959 [10] = { n = "_SPELLRESISTOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
960 },
961 CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE = {
962 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
963 [2] = { n = "_SPELLLOGSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
964 [3] = { n = "_SPELLLOGCRITOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, --! hmm
965 [4] = { n = "_SPELLLOGOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
966 [5] = { n = "_SPELLRESISTOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
967 },
968 CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE = {
969 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER" }, -- ok
970 [2] = { n = "_SPELLLOGSCHOOLOTHEROTHER" }, -- ok
971 [3] = { n = "_SPELLLOGCRITOTHEROTHER" }, -- ok
972 [4] = { n = "_SPELLLOGOTHEROTHER" }, -- ok
973 [5] = { n = "_SPELLRESISTOTHEROTHER" }, -- ok
974 },
975  
976 -- Unsure against what players this occurs for. Happens vs. self and pets for sure.
977 CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE = {
978 [1] = { n = "_SPELLLOGCRITSCHOOLOTHERSELF" }, --ok
979 [2] = { n = "_SPELLLOGSCHOOLOTHERSELF" }, -- ok
980 [3] = { n = "_SPELLLOGCRITOTHERSELF" }, -- ok
981 [4] = { n = "_SPELLLOGOTHERSELF" }, -- ok
982 [5] = { n = "_SPELLRESISTOTHERSELF" }, -- ok
983  
984 [6] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER" }, -- ok
985 [7] = { n = "_SPELLLOGSCHOOLOTHEROTHER" }, -- ok
986 [8] = { n = "_SPELLLOGCRITOTHEROTHER" }, -- ok
987 [9] = { n = "_SPELLLOGOTHEROTHER" }, -- ok
988 [10] = { n = "_SPELLRESISTOTHEROTHER" }, -- ok
989 },
990  
991 CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE = {
992 [1] = { n = "_PERIODICAURADAMAGESELFSELF" }, --! hmm, would need to get a mob to reflect a dot onto me.
993 [2] = { n = "_PERIODICAURADAMAGEOTHERSELF" }, -- ok
994 [3] = { n = "_PERIODICAURADAMAGEOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
995 },
996  
997 CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE = {
998 [1] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
999 },
1000 CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE = {
1001 [1] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
1002 },
1003  
1004 CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS = {
1005 [1] = { n = "_COMBATHITCRITOTHERSELF" }, -- ok
1006 [2] = { n = "_COMBATHITOTHERSELF" }, -- ok
1007 [3] = { n = "_COMBATHITCRITOTHEROTHER" }, -- ok
1008 [4] = { n = "_COMBATHITOTHEROTHER" }, -- ok (sometimes pets but we couldn't know)
1009 [5] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER" }, -- ok (this monitors the damage our enemys take in pvp. we don't really care about this)
1010 [6] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER" },
1011 },
1012 },
1013  
1014 -- Healing :
1015 [DM_MSGTYPE_HEALING] = {
1016 CHAT_MSG_SPELL_SELF_BUFF = {
1017 [1] = { n="_HEALEDCRITSELFSELF" }, -- ok
1018 [2] = { n="_HEALEDSELFSELF" }, -- ok
1019 [3] = { n="_HEALEDCRITSELFOTHER" }, --ok
1020 [4] = { n="_HEALEDSELFOTHER" }, -- ok
1021  
1022 --[5] = { n="_HEALEDOTHEROTHER" }, -- this might theoretically happen if there was a direct heal (non-hot) for a pet class, but i don't think there are any
1023 --[6] = { n="_HEALEDCRITOTHEROTHER" },
1024 },
1025 CHAT_MSG_SPELL_PARTY_BUFF = {
1026 [1] = { n="__NIGHTDRAGONSBREATHOTHERCRIT", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY },
1027 [2] = { n="__NIGHTDRAGONSBREATHOTHER", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY },
1028 [3] = { n="_HEALEDCRITOTHERSELF", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_SELF }, --! test, and shouldn't there be relations?
1029 [4] = { n="_HEALEDOTHERSELF", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_SELF }, --!
1030 [5] = { n="_HEALEDCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
1031 [6] = { n="_HEALEDOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
1032 },
1033 CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF = {
1034 [1] = { n="__NIGHTDRAGONSBREATHOTHERCRIT" }, -- ok
1035 [2] = { n="__NIGHTDRAGONSBREATHOTHER" },
1036 [3] = { n="_HEALEDCRITOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --! test, and shouldn't there be relations?
1037 [4] = { n="_HEALEDOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --!
1038 [5] = { n="_HEALEDCRITOTHEROTHER" }, -- ok
1039 [6] = { n="_HEALEDOTHEROTHER" }, -- ok
1040 },
1041 CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF = {
1042 [1] = { n="__NIGHTDRAGONSBREATHOTHERCRIT" },
1043 [2] = { n="__NIGHTDRAGONSBREATHOTHER" },
1044 [3] = { n="_HEALEDCRITOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --! test, and shouldn't there be relations?
1045 [4] = { n="_HEALEDOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --!
1046 [5] = { n="_HEALEDCRITOTHEROTHER" }, -- ok
1047 [6] = { n="_HEALEDOTHEROTHER" }, -- ok
1048 },
1049  
1050 -- guessing
1051 CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS = {
1052 [1] = { n="_PERIODICAURAHEALOTHERSELF" }, -- ok
1053 [2] = { n="_PERIODICAURAHEALSELFSELF" }, -- ok
1054 [3] = { n="_PERIODICAURAHEALSELFOTHER" }, -- ok (ie. Mend Pet)
1055 },
1056 -- guessing
1057 CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS = {
1058 [1] = { n="__JULIESBLESSINGOTHER", sourceRelation=DamageMeters_Relation_PARTY },
1059 [2] = { n="_PERIODICAURAHEALSELFOTHER", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY }, -- ok
1060 [3] = { n="_PERIODICAURAHEALOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY }, -- ok
1061 };
1062 -- guessing
1063 CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS = {
1064 [1] = { n="__JULIESBLESSINGOTHER" },
1065 [2] = { n="_PERIODICAURAHEALSELFOTHER" }, -- ok
1066 [3] = { n="_PERIODICAURAHEALOTHEROTHER" }, -- ok
1067 };
1068 -- guessing
1069 CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS = {
1070 [1] = { n="_PERIODICAURAHEALOTHERSELF" }, --!
1071 [2] = { n="_PERIODICAURAHEALSELFSELF" }, --!
1072 [3] = { n="_PERIODICAURAHEALSELFOTHER" }, --!
1073 [4] = { n="_PERIODICAURAHEALOTHEROTHER" }, --! ok, but irrelevant, i think
1074 };
1075 },
1076 };
1077  
1078 -------------------------------------------------------------------------------
1079  
1080 --[[
1081 I lifted this system from some other mod (can't remember which, maybe DPSPlus).
1082 Basically, the DM_Spellometer_Patterns works a lot like my own system, but
1083 the patterns are quite a bit more complicated in this case. In English, the two
1084 patterns represent all 4 of the following:
1085  
1086 DISPELLEDOTHEROTHER = "%s wirkt %s auf %s.";
1087 DISPELLEDOTHERSELF = "%s wirkt %s auf Euch.";
1088 DISPELLEDSELFOTHER = "Ihr wirkt %s auf %s.";
1089 DISPELLEDSELFSELF = "Ihr wirkt %s.";
1090  
1091 ]]--
1092 DM_Spellometer_Patterns = {
1093 { pattern="^([^ ]+) wirkt (.*) auf (.*)%.$", caster=1, spell=2, target=3 },
1094 { pattern="^([^ ]+) wirkt (.*)%.$", caster = 1, spell=2, target=nil }
1095 };
1096  
1097 -- This list contains all of the "cure" spells we want to track.
1098 DM_CURESPELLS = {
1099 "Magiebannung",
1100 "Fluch aufheben",
1101 "Geringen Fluch aufheben",
1102 "Vergiftung heilen",
1103 "Vergiftung aufheben",
1104 "Krankheit heilen",
1105 "Krankheit aufheben",
1106 "Reinigung des Glaubens",
1107 "L\195\164utern",
1108 "Totem der Giftreinigung",
1109 "Totem der Krankheitsreinigung",
1110 "Geist der Ahnen",
1111 "Wiedergeburt",
1112 "Erl\195\182sung",
1113 "Auferstehung",
1114 "Defibrillation",
1115 };
1116  
1117 end
1118 -- if german version