vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 -- ZoneLevel.lua
2 -- Author: The Nerd Wonder (thenerdwonder@yahoo.com)
3  
4 local zoneLevelShort;
5 local zoneLevelLow;
6 local zoneLevelHigh;
7 local zone;
8  
9 -- Load/initialization function
10 function ZoneLevel_OnLoad()
11 -- Register for events
12 this:RegisterEvent("MINIMAP_ZONE_CHANGED");
13 this:RegisterEvent("VARIABLES_LOADED");
14 this:RegisterEvent("ZONE_CHANGED_NEW_AREA");
15 this:RegisterEvent("PLAYER_LEVEL_UP");
16  
17 SLASH_ZoneLevel1 = "/zonelevel";
18 SLASH_ZoneLevel2 = "/zlvl";
19 SlashCmdList["ZoneLevel"] = ZoneLevel_SlashHandler;
20 SLASH_ZoneLevelInfo1 = "/zonelevelinfo";
21 SLASH_ZoneLevelInfo2 = "/zinfo";
22 SlashCmdList["ZoneLevelInfo"] = ZoneLevel_InfoHandler;
23  
24 if(TitanPanelModMenu_RegisterMenu) then
25 zlvlArray = {
26 frame = "ZoneLevelBase",
27 cat = TITAN_MODMENU_CAT_MAP,
28 text = "ZoneLevel",
29 submenu = {
30 {text = TITAN_MODMENU_TOGGLE..ZONELEVEL_TEXT, cmd = "/zlvl maptext"},
31 {text = TITAN_MODMENU_TOGGLE..ZONELEVEL_ICON, cmd = "/zlvl icon"},
32 TITAN_MODMENU_SPACER,
33 {text = TITAN_MODMENU_HELP, cmd = "/zlvl"}
34 }
35 };
36  
37 TitanPanelModMenu_RegisterMenu("ZoneLevel", zlvlArray);
38 end
39  
40 if(Cosmos_RegisterConfiguration) then
41 --[[ Sky.registerSlashCommand(
42 {
43 id="ZoneLevel";
44 commands={"/zonelevel", "/zlvl"};
45 onExecute=function (msg, cmd, ctype) ZoneLevel_SlashHandler(msg); end;
46 helpText="Shows the help for ZoneLevel.";
47 }
48 );
49 ]]--
50 Cosmos_RegisterConfiguration(
51 "COS_ZLVLOPTION",
52 "SECTION",
53 "ZoneLevel",
54 ZONELEVEL_DESC
55 );
56 Cosmos_RegisterConfiguration(
57 "COS_ZLVLICON",
58 "CHECKBOX",
59 ZONELEVEL_HELP_ICON,
60 ZONELEVEL_HELP_ICON,
61 ZoneLevel_IconHandler,
62 1
63 );
64 Cosmos_RegisterConfiguration(
65 "COS_ZLVLTEXT",
66 "CHECKBOX",
67 "Show text",
68 ZONELEVEL_HELP_MINIMAP,
69 ZoneLevel_TextHandler,
70  
71 );
72 end
73  
74 zoneLevelOnMap = false;
75 zoneLevelShowIcon = true;
76 zoneLevelLocked = false;
77  
78 -- Construct tables to hold level information for each zone
79 zoneLevelLow={};
80 zoneLevelHigh={};
81 zoneLevelShort={};
82 ZoneLevel_MakeTables();
83 end
84  
85 function ZoneLevel_ShowTooltip()
86 GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
87 if(ZoneLevel_ZoneIsValid(GetRealZoneText())) then
88 ZoneLevel_SetTooltipText();
89 else
90 GameTooltip:AddLine(ZONELEVEL_ZONENOTFOUNDTOOLTIP, 1.0, 1.0, 1.0);
91 end
92 GameTooltip:Show();
93 end
94  
95 function ZoneLevel_StartDrag()
96 end
97  
98 -- Cosmos handler for the icon
99 function ZoneLevel_IconHandler(arg1)
100 if (arg1 == 1)
101 then
102 zoneLevelShowIcon = true;
103 ZoneLevelBase:Show();
104 else
105 zoneLevelShowIcon = false;
106 ZoneLevelBase:Hide();
107 end
108 end
109  
110 -- Cosmos handler for the text
111 function ZoneLevel_TextHandler(arg1)
112 zone = string.lower(GetRealZoneText());
113 if (arg1 == 1)
114 then
115 zoneLevelOnMap = true;
116 if(ZoneLevel_ZoneIsValid(zone)) then
117 if(zoneLevelLow[zone] < 1)
118 then
119 txt = "";
120 else
121 txt = "("..zoneLevelLow[GetRealZoneText()].." - "..zoneLevelHigh[GetRealZoneText()]..") ";
122 end
123 else
124 txt = "(???) "
125 end
126 MinimapZoneText:SetText(txt..GetMinimapZoneText());
127 else
128 zoneLevelOnMap = false;
129 MinimapZoneText:SetText(GetMinimapZoneText());
130 end
131 end
132  
133 -- Slash command handler for ZoneLevel
134 function ZoneLevel_SlashHandler(arg1)
135 zone = string.lower(GetRealZoneText());
136  
137 if(arg1 == "")
138 then
139 DEFAULT_CHAT_FRAME:AddMessage(ZONELEVEL_HELP_HEADER..ZONELEVEL_HELP_MINIMAP..ZONELEVEL_HELP_MAPCMD..
140 ZONELEVEL_HELP_ICON..ZONELEVEL_HELP_ICOCMD..ZONELEVEL_HELP_CMD);
141 elseif(arg1 == "maptext")
142 then
143 if(zoneLevelOnMap)
144 then
145 MinimapZoneText:SetText(GetMinimapZoneText());
146 zoneLevelOnMap = false;
147 if (Cosmos_RegisterConfiguration)
148 then
149 Cosmos_UpdateValue("COS_ZLVLTEXT",CSM_CHECKONOFF,0);
150 CosmosMaster_Save();
151 end
152 else
153 if(ZoneLevel_ZoneIsValid(zone)) then
154 if(zoneLevelLow[zone] < 1)
155 then
156 txt = "";
157 else
158 txt = "("..zoneLevelLow[zone].." - "..zoneLevelHigh[zone]..") ";
159 end
160 else
161 txt = "(???) "
162 end
163 MinimapZoneText:SetText(txt..GetMinimapZoneText());
164 zoneLevelOnMap = true;
165 if (Cosmos_RegisterConfiguration)
166 then
167 Cosmos_UpdateValue("COS_ZLVLTEXT",CSM_CHECKONOFF,1);
168 CosmosMaster_Save();
169 end
170 end
171 elseif(arg1 == "icon")
172 then
173 if(zoneLevelShowIcon)
174 then
175 ZoneLevelBase:Hide();
176 zoneLevelShowIcon = false;
177 if (Cosmos_RegisterConfiguration)
178 then
179 Cosmos_UpdateValue("COS_ZLVLICON",CSM_CHECKONOFF,0);
180 CosmosMaster_Save();
181 end
182 else
183 ZoneLevelBase:Show();
184 zoneLevelShowIcon = true;
185 if (Cosmos_RegisterConfiguration)
186 then
187 Cosmos_UpdateValue("COS_ZLVLICON",CSM_CHECKONOFF,1);
188 CosmosMaster_Save();
189 end
190 end
191 elseif(arg1 == "lock")
192 then
193 DEFAULT_CHAT_FRAME:AddMessage("Locking");
194 DEFAULT_CHAT_FRAME:AddMessage("var: "..tostring(zoneLevelLocked));
195  
196 zoneLevelLocked = true;
197 ZoneLevelBase:GetTitleRegion():ClearAllPoints()
198 ZoneLevelBase:GetTitleRegion():SetPoint("TOPLEFT", frame, "TOPLEFT", 0,0 )
199 ZoneLevelBase:GetTitleRegion():SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 0,0 )
200  
201 DEFAULT_CHAT_FRAME:AddMessage("var: "..tostring(zoneLevelLocked));
202 elseif(arg1 == "unlock")
203 then
204 DEFAULT_CHAT_FRAME:AddMessage("Unlocking");
205 DEFAULT_CHAT_FRAME:AddMessage("var: "..tostring(zoneLevelLocked));
206  
207 zoneLevelLocked = false;
208 ZoneLevelBase:GetTitleRegion():SetAllPoints(ZoneLevelBase);
209  
210 DEFAULT_CHAT_FRAME:AddMessage("var: "..tostring(zoneLevelLocked));
211 else
212  
213 DEFAULT_CHAT_FRAME:AddMessage(string.format(ZONELEVEL_BADOPT, arg1));
214 end
215  
216 end
217  
218 function ZoneLevel_InfoHandler(arg1)
219 local lower = string.lower(arg1);
220  
221 capZone = ZoneLevel_TranslateShort(lower);
222 if(zoneLevelLow[lower]) then
223 zone = lower;
224 else
225 zone = string.lower(capZone);
226 end
227  
228 if(ZoneLevel_ZoneIsValid(zone)) then
229 if(ZoneLevel_ZoneIsTiered(zone))
230 then
231 low, high = ZoneLevel_HandleTiering(zone);
232 txt = capZone.." "..(string.format(ZONELEVEL_ZONETEXT, low, high));
233 else
234 if(zoneLevelLow[zone] < 1)
235 then
236 txt = capZone.." "..ZONELEVEL_CITYTEXT;
237 else
238 txt = capZone.." "..(string.format(ZONELEVEL_ZONETEXT, zoneLevelLow[zone], zoneLevelHigh[zone]));
239 end
240  
241 --[[ Commented out for possible color coding in the future
242  
243 local mid = (low+high)/2;
244 if(high < level-5) then -- Grey icon
245 GameTooltip:AddLine(zone, 2.0, 2.0, 2.0);
246 elseif(low > level+5) then -- Red icon
247 GameTooltip:AddLine(zone, 1.0, 0.0, 0.0);
248 elseif(mid < level) then -- Green icon
249 GameTooltip:AddLine(zone, 0.0, 1.0, 0.0);
250 else -- Yellow icon
251 GameTooltip:AddLine(zone, 1.0, 1.0, 0.0);
252 end
253 ]]--
254 end
255 else -- Zone not found
256 txt = ZONELEVEL_ZONENOTFOUNDTOOLTIP;
257 end
258  
259 DEFAULT_CHAT_FRAME:AddMessage(txt);
260 end
261  
262 -- Event handler for ZoneLevel
263 function ZoneLevel_OnEvent()
264 if(event == "VARIABLES_LOADED")
265 then
266 if(zoneLevelShowIcon)
267 then
268 ZoneLevelBase:Show();
269 else
270 ZoneLevelBase:Hide();
271 end
272  
273 if(not zoneLevelOnMap)
274 then
275 MinimapZoneText:SetText(GetMinimapZoneText());
276 end
277  
278 if(zoneLevelLocked)
279 then
280 ZoneLevelBase:GetTitleRegion():ClearAllPoints()
281 ZoneLevelBase:GetTitleRegion():SetPoint("TOPLEFT", frame, "TOPLEFT", 0,0 )
282 ZoneLevelBase:GetTitleRegion():SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 0,0 )
283 else
284 ZoneLevelBase:GetTitleRegion():SetAllPoints(ZoneLevelBase);
285 end
286 else
287 zone = string.lower(GetRealZoneText());
288 local level = UnitLevel("player");
289  
290 if(ZoneLevel_ZoneIsValid(zone)) then
291 local low = zoneLevelLow[zone];
292 local high = zoneLevelHigh[zone];
293  
294 if(zoneLevelOnMap)
295 then
296 if(zoneLevelLow[zone] < 1)
297 then
298 txt = "(city) ";
299 else
300 txt = "("..zoneLevelLow[zone].." - "..zoneLevelHigh[zone]..") ";
301 end
302 MinimapZoneText:SetText(txt..GetMinimapZoneText());
303 end
304  
305 local mid = (low+high)/2;
306 if(zoneLevelLow[zone] < 1)
307 then
308 ZoneLevelGrey:Hide();
309 ZoneLevelGreen:Hide();
310 ZoneLevelYellow:Hide();
311 ZoneLevelRed:Hide();
312 ZoneLevelCity:Show();
313 ZoneLevelBad:Hide();
314 elseif(high < level-5) then -- Grey icon
315 ZoneLevelGrey:Show();
316 ZoneLevelGreen:Hide();
317 ZoneLevelYellow:Hide();
318 ZoneLevelRed:Hide();
319 ZoneLevelCity:Hide();
320 ZoneLevelBad:Hide();
321 elseif(low > level+5) then -- Red icon
322 ZoneLevelGrey:Hide();
323 ZoneLevelGreen:Hide();
324 ZoneLevelYellow:Hide();
325 ZoneLevelRed:Show();
326 ZoneLevelCity:Hide();
327 ZoneLevelBad:Hide();
328 elseif(mid < level) then -- Green icon
329 ZoneLevelGrey:Hide();
330 ZoneLevelGreen:Show();
331 ZoneLevelYellow:Hide();
332 ZoneLevelRed:Hide();
333 ZoneLevelCity:Hide();
334 ZoneLevelBad:Hide();
335 else -- Yellow icon
336 ZoneLevelGrey:Hide();
337 ZoneLevelGreen:Hide();
338 ZoneLevelYellow:Show();
339 ZoneLevelRed:Hide();
340 ZoneLevelCity:Hide();
341 ZoneLevelBad:Hide();
342 end
343 else
344 if(event == "ZONE_CHANGED_NEW_AREA")
345 then
346 DEFAULT_CHAT_FRAME:AddMessage(string.format(ZONELEVEL_ZONENOTFOUND, zone));
347 ZoneLevelGrey:Hide();
348 ZoneLevelGreen:Hide();
349 ZoneLevelYellow:Hide();
350 ZoneLevelRed:Hide();
351 ZoneLevelCity:Hide();
352 ZoneLevelBad:Show();
353 end
354 end
355  
356 if(zoneLevelShowIcon == false)
357 then
358 ZoneLevelBase:Hide();
359 end
360 end
361 end
362  
363 function ZoneLevel_SetTooltipText()
364 local level = UnitLevel("player");
365 capZone = GetRealZoneText();
366 zone = string.lower(capZone);
367  
368 local low = zoneLevelLow[zone];
369 local high = zoneLevelHigh[zone];
370 local txt;
371  
372 if(ZoneLevel_ZoneIsValid(zone)) then
373 if(ZoneLevel_ZoneIsTiered(zone))
374 then
375 low, high = ZoneLevel_HandleTiering(zone);
376 else
377 if(zoneLevelLow[zone] < 1)
378 then
379 txt = ZONELEVEL_CITYTEXT;
380 else
381 txt = string.format(ZONELEVEL_ZONETEXT, zoneLevelLow[zone], zoneLevelHigh[zone]);
382 end
383  
384 local mid = (low+high)/2;
385 if(high < level-5) then -- Grey text
386 GameTooltip:AddLine(capZone, 2.0, 2.0, 2.0);
387 elseif(low > level+5) then -- Red text
388 GameTooltip:AddLine(capZone, 1.0, 0.0, 0.0);
389 elseif(mid < level) then -- Green text
390 GameTooltip:AddLine(capZone, 0.0, 1.0, 0.0);
391 else -- Yellow icon
392 GameTooltip:AddLine(capZone, 1.0, 1.0, 0.0);
393 end
394 end
395 else -- Zone not found
396 txt = ZONELEVEL_ZONENOTFOUNDTOOLTIP;
397 end
398  
399 GameTooltip:AddLine(txt, 1.0, 1.0, 1.0);
400 end
401  
402 -- Returns true if zone is in table, false otherwise
403 function ZoneLevel_ZoneIsValid(zone)
404 if(zone == nil or zoneLevelLow[string.lower(zone)] == nil)
405 then
406 retVal = false;
407 else
408 retVal = true;
409 end
410  
411 return retVal;
412 end
413  
414 function ZoneLevel_TranslateShort(zone)
415 if(zone == nil)
416 then
417 return nil;
418 end
419  
420 if(zoneLevelShort[zone] == nil)
421 then
422 return zone;
423 else
424 return zoneLevelShort[zone];
425 end
426 end
427  
428 -- Returns true is the zone is segregated by level ranges
429 function ZoneLevel_ZoneIsTiered(zone)
430 if (zone == nil)
431 then
432 DEFAULT_CHAT_FRAME:AddMessage(ZONELEVEL_NOZONE);
433 retVal = false;
434 else
435 if(zone == string.lower(WGch) or zone == string.lower(ABsn))
436 then
437 retVal = true;
438 else
439 retVal = false;
440 end
441 end
442  
443 return retVal;
444 end
445  
446 -- Handles the level stuff for tiered zones
447 function ZoneLevel_HandleTiering(zone)
448 local level = UnitLevel("player");
449 local low;
450 local high;
451 if(level == 60)
452 then
453 low = 60;
454 high = 60;
455 elseif(level >= 50)
456 then
457 low = 50
458 high = 59
459 elseif(level >= 40)
460 then
461 low = 40
462 high = 49
463 elseif(level >= 30)
464 then
465 low = 30;
466 high = 39
467 elseif(level >= 20)
468 then
469 low = 20;
470 high = 29
471 elseif(level >= 10)
472 then
473 low = 10;
474 high = 19
475 end
476  
477 return low, high;
478 end
479  
480 -- Makes tables containing level ranges for each zone
481 function ZoneLevel_MakeTables()
482 -- Eastern Kingdom zones
483 zoneLevelLow[string.lower(BtyB)]=-6;
484 zoneLevelHigh[string.lower(BtyB)]=-6;
485 zoneLevelLow[string.lower(Tram)]=-6;
486 zoneLevelHigh[string.lower(Tram)]=-6;
487 zoneLevelLow[string.lower(Irfg)]=-6;
488 zoneLevelHigh[string.lower(Irfg)]=-6;
489 zoneLevelLow[string.lower(StwC)]=-6;
490 zoneLevelHigh[string.lower(StwC)]=-6;
491 zoneLevelLow[string.lower(EwnF)]=1;
492 zoneLevelHigh[string.lower(EwnF)]=10;
493 zoneLevelLow[string.lower(DunM)]=1;
494 zoneLevelHigh[string.lower(DunM)]=10;
495 zoneLevelLow[string.lower(Tfal)]=1;
496 zoneLevelHigh[string.lower(Tfal)]=10;
497 zoneLevelLow[string.lower(LMod)]=10;
498 zoneLevelHigh[string.lower(LMod)]=20;
499 zoneLevelLow[string.lower(SvpF)]=10;
500 zoneLevelHigh[string.lower(SvpF)]=20;
501 zoneLevelLow[string.lower(Wtfl)]=10;
502 zoneLevelHigh[string.lower(Wtfl)]=20;
503 zoneLevelLow[string.lower(RrMt)]=15;
504 zoneLevelHigh[string.lower(RrMt)]=25;
505 zoneLevelLow[string.lower(Dkwd)]=18;
506 zoneLevelHigh[string.lower(Dkwd)]=30;
507 zoneLevelLow[string.lower(HdFt)]=20;
508 zoneLevelHigh[string.lower(HdFt)]=30;
509 zoneLevelLow[string.lower(Wtld)]=20;
510 zoneLevelHigh[string.lower(Wtld)]=30;
511 zoneLevelLow[string.lower(AcMt)]=30;
512 zoneLevelHigh[string.lower(AcMt)]=40;
513 zoneLevelLow[string.lower(AHld)]=30;
514 zoneLevelHigh[string.lower(AHld)]=40;
515 zoneLevelLow[string.lower(StrV)]=30;
516 zoneLevelHigh[string.lower(StrV)]=50;
517 zoneLevelLow[string.lower(Bdld)]=35;
518 zoneLevelHigh[string.lower(Bdld)]=45;
519 zoneLevelLow[string.lower(SoSs)]=35;
520 zoneLevelHigh[string.lower(SoSs)]=45;
521 zoneLevelLow[string.lower(DwPs)]=37;
522 zoneLevelHigh[string.lower(DwPs)]=60;
523 zoneLevelLow[string.lower(Htld)]=40;
524 zoneLevelHigh[string.lower(Htld)]=50;
525 zoneLevelLow[string.lower(SgGg)]=43;
526 zoneLevelHigh[string.lower(SgGg)]=50;
527 zoneLevelLow[string.lower(BlLd)]=45;
528 zoneLevelHigh[string.lower(BlLd)]=55;
529 zoneLevelLow[string.lower(BgSt)]=50;
530 zoneLevelHigh[string.lower(BgSt)]=58;
531 zoneLevelLow[string.lower(WPlg)]=51;
532 zoneLevelHigh[string.lower(WPlg)]=58;
533 zoneLevelLow[string.lower(EPlg)]=53;
534 zoneLevelHigh[string.lower(EPlg)]=60;
535  
536 -- Kalimdor Zones
537 zoneLevelLow[string.lower(Rcht)]=-6;
538 zoneLevelHigh[string.lower(Rcht)]=-6;
539 zoneLevelLow[string.lower(Gtzn)]=-6;
540 zoneLevelHigh[string.lower(Gtzn)]=-6;
541 zoneLevelLow[string.lower(Orgr)]=-6;
542 zoneLevelHigh[string.lower(Orgr)]=-6;
543 zoneLevelLow[string.lower(TdrB)]=-6;
544 zoneLevelHigh[string.lower(TdrB)]=-6;
545 zoneLevelLow[string.lower(Ucty)]=-6;
546 zoneLevelHigh[string.lower(Ucty)]=-6;
547 zoneLevelLow[string.lower(Drtr)]=1;
548 zoneLevelHigh[string.lower(Drtr)]=10;
549 zoneLevelLow[string.lower(Mlgr)]=1;
550 zoneLevelHigh[string.lower(Mlgr)]=10;
551 zoneLevelLow[string.lower(Dksr)]=10;
552 zoneLevelHigh[string.lower(Dksr)]=20;
553 zoneLevelLow[string.lower(Brns)]=10;
554 zoneLevelHigh[string.lower(Brns)]=25;
555 zoneLevelLow[string.lower(StMt)]=15;
556 zoneLevelHigh[string.lower(StMt)]=27;
557 zoneLevelLow[string.lower(Ashv)]=18;
558 zoneLevelHigh[string.lower(Ashv)]=30;
559 zoneLevelLow[string.lower(KNdl)]=25;
560 zoneLevelHigh[string.lower(KNdl)]=35;
561 zoneLevelLow[string.lower(Dslc)]=30;
562 zoneLevelHigh[string.lower(Dslc)]=40;
563 zoneLevelLow[string.lower(DtwM)]=35;
564 zoneLevelHigh[string.lower(DtwM)]=45;
565 zoneLevelLow[string.lower(Frls)]=40;
566 zoneLevelHigh[string.lower(Frls)]=50;
567 zoneLevelLow[string.lower(Tnrs)]=40;
568 zoneLevelHigh[string.lower(Tnrs)]=50;
569 zoneLevelLow[string.lower(Azsr)]=45;
570 zoneLevelHigh[string.lower(Azsr)]=55;
571 zoneLevelLow[string.lower(Flwd)]=48;
572 zoneLevelHigh[string.lower(Flwd)]=55;
573 zoneLevelLow[string.lower(Goro)]=48;
574 zoneLevelHigh[string.lower(Goro)]=55;
575 zoneLevelLow[string.lower(Slts)]=55;
576 zoneLevelHigh[string.lower(Slts)]=60;
577 zoneLevelLow[string.lower(Wtsg)]=55;
578 zoneLevelHigh[string.lower(Wtsg)]=60;
579 zoneLevelLow[string.lower(Hyal)]=60;
580 zoneLevelHigh[string.lower(Hyal)]=60;
581 zoneLevelLow[string.lower(AnQG)]=60;
582 zoneLevelHigh[string.lower(AnQG)]=65;
583  
584 -- Elf zones & Moonglade
585 zoneLevelLow[string.lower(Mngd)]=-6;
586 zoneLevelHigh[string.lower(Mngd)]=-6;
587 zoneLevelLow[string.lower(Darn)]=-6;
588 zoneLevelHigh[string.lower(Darn)]=-6;
589 zoneLevelLow[string.lower(Tldr)]=1;
590 zoneLevelHigh[string.lower(Tldr)]=10;
591  
592 -- Battlegrounds
593 zoneLevelLow[string.lower(AVal)]=60;
594 zoneLevelHigh[string.lower(AVal)]=61;
595 zoneLevelLow[string.lower(WGch)]=-6;
596 zoneLevelHigh[string.lower(WGch)]=-6;
597 zoneLevelLow[string.lower(ABsn)]=-6;
598 zoneLevelHigh[string.lower(ABsn)]=-6;
599  
600 zoneLevelLow[string.lower(Outl)]=60;
601 zoneLevelHigh[string.lower(Outl)]=75;
602  
603 -- Instances
604 if(GetLocale() == "enUS") then
605 zoneLevelLow[string.lower(Stck)]=24;
606 zoneLevelHigh[string.lower(Stck)]=32;
607 zoneLevelLow[string.lower(RfCm)]=13;
608 zoneLevelHigh[string.lower(RfCm)]=18;
609 zoneLevelLow[string.lower(ZlFk)]=44;
610 zoneLevelHigh[string.lower(ZlFk)]=54;
611 zoneLevelLow[string.lower(Ddmn)]=17;
612 zoneLevelHigh[string.lower(Ddmn)]=26;
613 zoneLevelLow[string.lower(WCvn)]=17;
614 zoneLevelHigh[string.lower(WCvn)]=24;
615 zoneLevelLow[string.lower(Grgn)]=29;
616 zoneLevelHigh[string.lower(Grgn)]=38;
617 zoneLevelLow[string.lower(RfKr)]=29;
618 zoneLevelHigh[string.lower(RfKr)]=38;
619 zoneLevelLow[string.lower(BlfD)]=24;
620 zoneLevelHigh[string.lower(BlfD)]=32;
621 zoneLevelLow[string.lower(SfKp)]=22;
622 zoneLevelHigh[string.lower(SfKp)]=30;
623 zoneLevelLow[string.lower(StMn)]=34;
624 zoneLevelHigh[string.lower(StMn)]=45;
625 zoneLevelLow[string.lower(Uldm)]=41;
626 zoneLevelHigh[string.lower(Uldm)]=51;
627 zoneLevelLow[string.lower(RfDn)]=37;
628 zoneLevelHigh[string.lower(RfDn)]=46;
629 zoneLevelLow[string.lower(Mrdn)]=46;
630 zoneLevelHigh[string.lower(Mrdn)]=55;
631 zoneLevelLow[string.lower(Onyx)]=60;
632 zoneLevelHigh[string.lower(Onyx)]=62;
633 zoneLevelLow[string.lower(BlMt)]=42;
634 zoneLevelHigh[string.lower(BlMt)]=54;
635 zoneLevelLow[string.lower(CvTm)]=43;
636 zoneLevelHigh[string.lower(CvTm)]=61;
637 zoneLevelLow[string.lower(Tmpl)]=50;
638 zoneLevelHigh[string.lower(Tmpl)]=60;
639 zoneLevelLow[string.lower(DrMl)]=56;
640 zoneLevelHigh[string.lower(DrMl)]=60;
641 zoneLevelLow[string.lower(BlrD)]=52;
642 zoneLevelHigh[string.lower(BlrD)]=60;
643 zoneLevelLow[string.lower(BlrS)]=55;
644 zoneLevelHigh[string.lower(BlrS)]=60;
645 zoneLevelLow[string.lower(Sthm)]=58;
646 zoneLevelHigh[string.lower(Sthm)]=60;
647 zoneLevelLow[string.lower(MCor)]=60;
648 zoneLevelHigh[string.lower(MCor)]=62;
649 zoneLevelLow[string.lower(Slmc)]=58;
650 zoneLevelHigh[string.lower(Slmc)]=60;
651 zoneLevelLow[string.lower(BlwL)]=60;
652 zoneLevelHigh[string.lower(BlwL)]=62;
653 zoneLevelLow[string.lower(ZlGb)]=60;
654 zoneLevelHigh[string.lower(ZlGb)]=62;
655 zoneLevelLow[string.lower(AnQR)]=60;
656 zoneLevelHigh[string.lower(AnQR)]=65;
657 zoneLevelLow[string.lower(AnQT)]=60;
658 zoneLevelHigh[string.lower(AnQT)]=65;
659 zoneLevelLow[string.lower(Naxx)]=60;
660 zoneLevelHigh[string.lower(Naxx)]=65;
661 else
662 zoneLevelLow[string.lower(Stck)]=23;
663 zoneLevelHigh[string.lower(Stck)]=26;
664 zoneLevelLow[string.lower(RfCm)]=13;
665 zoneLevelHigh[string.lower(RfCm)]=15;
666 zoneLevelLow[string.lower(ZlFk)]=43;
667 zoneLevelHigh[string.lower(ZlFk)]=47;
668 zoneLevelLow[string.lower(Ddmn)]=15;
669 zoneLevelHigh[string.lower(Ddmn)]=20;
670 zoneLevelLow[string.lower(WCvn)]=15;
671 zoneLevelHigh[string.lower(WCvn)]=21;
672 zoneLevelLow[string.lower(Grgn)]=24;
673 zoneLevelHigh[string.lower(Grgn)]=33;
674 zoneLevelLow[string.lower(RfKr)]=25;
675 zoneLevelHigh[string.lower(RfKr)]=35;
676 zoneLevelLow[string.lower(BlfD)]=20;
677 zoneLevelHigh[string.lower(BlfD)]=27;
678 zoneLevelLow[string.lower(SfKp)]=18;
679 zoneLevelHigh[string.lower(SfKp)]=25;
680 zoneLevelLow[string.lower(StMn)]=30;
681 zoneLevelHigh[string.lower(StMn)]=40;
682 zoneLevelLow[string.lower(Uldm)]=35;
683 zoneLevelHigh[string.lower(Uldm)]=45;
684 zoneLevelLow[string.lower(RfDn)]=35;
685 zoneLevelHigh[string.lower(RfDn)]=40;
686 zoneLevelLow[string.lower(Mrdn)]=40;
687 zoneLevelHigh[string.lower(Mrdn)]=49;
688 zoneLevelLow[string.lower(Onyx)]=60;
689 zoneLevelHigh[string.lower(Onyx)]=62;
690 zoneLevelLow[string.lower(BlMt)]=42;
691 zoneLevelHigh[string.lower(BlMt)]=54;
692 zoneLevelLow[string.lower(CvTm)]=-6;
693 zoneLevelHigh[string.lower(CvTm)]=-6;
694 zoneLevelLow[string.lower(Tmpl)]=44;
695 zoneLevelHigh[string.lower(Tmpl)]=50;
696 zoneLevelLow[string.lower(DrMl)]=56;
697 zoneLevelHigh[string.lower(DrMl)]=60;
698 zoneLevelLow[string.lower(BlrD)]=48;
699 zoneLevelHigh[string.lower(BlrD)]=56;
700 zoneLevelLow[string.lower(BlrS)]=53;
701 zoneLevelHigh[string.lower(BlrS)]=60;
702 zoneLevelLow[string.lower(Sthm)]=55;
703 zoneLevelHigh[string.lower(Sthm)]=60;
704 zoneLevelLow[string.lower(MCor)]=60;
705 zoneLevelHigh[string.lower(MCor)]=62;
706 zoneLevelLow[string.lower(Slmc)]=56;
707 zoneLevelHigh[string.lower(Slmc)]=60;
708 zoneLevelLow[string.lower(BlwL)]=60;
709 zoneLevelHigh[string.lower(BlwL)]=62;
710 zoneLevelLow[string.lower(ZlGb)]=60;
711 zoneLevelHigh[string.lower(ZlGb)]=62;
712 zoneLevelLow[string.lower(AnQR)]=60;
713 zoneLevelHigh[string.lower(AnQR)]=65;
714 zoneLevelLow[string.lower(AnQT)]=60;
715 zoneLevelHigh[string.lower(AnQT)]=65;
716 zoneLevelLow[string.lower(Naxx)]=60;
717 zoneLevelHigh[string.lower(Naxx)]=65;
718 end
719  
720 -- Abbreviation table
721 zoneLevelShort["alterac"] = AcMt;
722 zoneLevelShort["alterac mountains"] = AcMt;
723 zoneLevelShort["ab"] = ABsn;
724 zoneLevelShort["aq"] = AnQG;
725 zoneLevelShort["arathi basin"] = ABsn;
726 zoneLevelShort["arathi"] = AHld;
727 zoneLevelShort["arathi highlands"] = AHld;
728 zoneLevelShort["av"] = AVal;
729 zoneLevelShort["alterac valley"] = AVal;
730 zoneLevelShort["ashenvale"] = Ashv;
731 zoneLevelShort["azshara"] = Azsr;
732 zoneLevelShort["badlands"] = Bdld;
733 zoneLevelShort["bs"] = BgSt;
734 zoneLevelShort["burning steppes"] = BgSt;
735 zoneLevelShort["bfd"] = BlfD;
736 zoneLevelShort["blackfathom deeps"] = BlfD;
737 zoneLevelShort["bl"] = BlLd;
738 zoneLevelShort["blasted lands"] = BlLd;
739 zoneLevelShort["brm"] = BlMt;
740 zoneLevelShort["blackrock mountain"] = BlMt;
741 zoneLevelShort["brd"] = BlrD;
742 zoneLevelShort["blackrock depths"] = BlrD;
743 zoneLevelShort["brs"] = BlrS;
744 zoneLevelShort["blackrock spire"] = BlrS;
745 zoneLevelShort["barrens"] = Brns;
746 zoneLevelShort["bwl"] = BlwL;
747 zoneLevelShort["blackwing lair"] = BlwL;
748 zoneLevelShort["bb"] = BtyB;
749 zoneLevelShort["booty bay"] = BtyB;
750 zoneLevelShort["cot"] = CvTm;
751 zoneLevelShort["caverns of time"] = CvTm;
752 zoneLevelShort["darkshore"] = Dksr;
753 zoneLevelShort["darn"] = Darn;
754 zoneLevelShort["darnassus"] = Darn;
755 zoneLevelShort["deadmines"] = Ddmn;
756 zoneLevelShort["deadwind"] = DwPs;
757 zoneLevelShort["deadwind pass"] = DwPs;
758 zoneLevelShort["desolace"] = Dslc;
759 zoneLevelShort["dm"] = DrMl;
760 zoneLevelShort["dire maul"] = DrMl;
761 zoneLevelShort["dun morogh"] = DunM;
762 zoneLevelShort["durotar"] = Drtr;
763 zoneLevelShort["duskwood"] = Dkwd;
764 zoneLevelShort["dustwallow"] = DtwM;
765 zoneLevelShort["dwm"] = DtwM;
766 zoneLevelShort["dustwallow marsh"] = DtwM;
767 zoneLevelShort["epl"] = EPlg;
768 zoneLevelShort["eastern plaguelands"] = EPlg;
769 zoneLevelShort["elwynn"] = EwnF;
770 zoneLevelShort["elwynn forest"] = EwnF;
771 zoneLevelShort["felwood"] = Flwd;
772 zoneLevelShort["feralas"] = Frls;
773 zoneLevelShort["loch"] = LMod;
774 zoneLevelShort["loch modan"] = LMod;
775 zoneLevelShort["mulgore"] = Mlgr;
776 zoneLevelShort["moonglade"] = Mngd;
777 zoneLevelShort["silithus"] = Slts;
778 zoneLevelShort["ungoro"] = Goro;
779 zoneLevelShort["ungoro crater"] = Goro;
780 zoneLevelShort["gnomer"] = Grgn;
781 zoneLevelShort["gnomeregon"] = Grgn;
782 zoneLevelShort["gadget"] = Gtzn;
783 zoneLevelShort["gadgetzan"] = Gtzn;
784 zoneLevelShort["hillsbrad"] = HdFt;
785 zoneLevelShort["hillsbrad foothills"] = HdFt;
786 zoneLevelShort["hinterlands"] = Htld;
787 zoneLevelShort["1kn"] = KNdl;
788 zoneLevelShort["thousand needles"] = KNdl;
789 zoneLevelShort["mc"] = MCor;
790 zoneLevelShort["molten core"] = MCor;
791 zoneLevelShort["md"] = Mrdn;
792 zoneLevelShort["maur"] = Mrdn;
793 zoneLevelShort["mauradon"] = Mrdn;
794 zoneLevelShort["nax"] = Naxx;
795 zoneLevelShort["naxx"] = Naxx;
796 zoneLevelShort["naxxramas"] = Naxx;
797 zoneLevelShort["onyxia"] = Onyx;
798 zoneLevelShort["onyx"] = Onyx;
799 zoneLevelShort["onyxias lair"] = Onyx;
800 zoneLevelShort["rfc"] = RfCm;
801 zoneLevelShort["ragefire chasm"] = RfCm;
802 zoneLevelShort["rfd"] = RfDn;
803 zoneLevelShort["razorfen downs"] = RfDn;
804 zoneLevelShort["rfk"] = RfKr;
805 zoneLevelShort["razorfen kraul"] = RfKr;
806 zoneLevelShort["redridge"] = RrMt;
807 zoneLevelShort["redridge mts"] = RrMt;
808 zoneLevelShort["redridge mountains"] = RrMt;
809 zoneLevelShort["sfk"] = SfKp;
810 zoneLevelShort["shadowfang keep"] = SfKp;
811 zoneLevelShort["scholo"] = Slmc;
812 zoneLevelShort["scholomance"] = Slmc;
813 zoneLevelShort["stratholme"] = Sthm;
814 zoneLevelShort["sos"] = SoSs;
815 zoneLevelShort["swamp of sorrows"] = SoSs;
816 zoneLevelShort["stockade"] = Stck;
817 zoneLevelShort["sm"] = StMn;
818 zoneLevelShort["scarlet monastery"] = StMn;
819 zoneLevelShort["stonetalon"] = StMt;
820 zoneLevelShort["stonetalon mts"] = StMt;
821 zoneLevelShort["stonetalon mountains"] = StMt;
822 zoneLevelShort["stv"] = StrV;
823 zoneLevelShort["stranglethorn vale"] = StrV;
824 zoneLevelShort["silverpine"] = SvpF;
825 zoneLevelShort["silverpine forest"] = SvpF;
826 zoneLevelShort["tb"] = TdrB;
827 zoneLevelShort["thunder bluff"] = TdrB;
828 zoneLevelShort["tirisfal"] = Tfal;
829 zoneLevelShort["tirisfal glades"] = Tfal;
830 zoneLevelShort["teldrassil"] = Trdl;
831 zoneLevelShort["tanaris"] = Tnrs;
832 zoneLevelShort["uldaman"] = Uldm;
833 zoneLevelShort["westfall"] = Wtfl;
834 zoneLevelShort["wetlands"] = Wtld;
835 zoneLevelShort["ws"] = Wtsg;
836 zoneLevelShort["winterspring"] = Wtsg;
837 zoneLevelShort["st"] = Tmpl;
838 zoneLevelShort["sunken temple"] = Tmpl;
839 zoneLevelShort["wc"] = WCvn;
840 zoneLevelShort["wailing caverns"] = WCvn;
841 zoneLevelShort["wsg"] = WGch;
842 zoneLevelShort["warsong gulch"] = WGch;
843 zoneLevelShort["wpl"] = WPlg;
844 zoneLevelShort["western plaguelands"] = WPlg;
845 zoneLevelShort["zf"] = ZlFk;
846 zoneLevelShort["zulfarrak"] = ZlFk;
847 zoneLevelShort["zul farrak"] = ZlFk;
848 zoneLevelShort["zg"] = ZlGb;
849 zoneLevelShort["zulgurub"] = ZlGb;
850 zoneLevelShort["zul gurub"] = ZlGb;
851 end