vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | --[[-------------------------------------------------------------------------------------------- |
2 | |||
3 | MozzFullWorldMap.lua |
||
4 | MozzPack version 1.10 released 20060329 |
||
5 | |||
6 | This AddOn adds a 'Show Unexplored Areas' checkbox to your world map. |
||
7 | |||
8 | Uses a hardcoded set of overlay data which duplicates data available in the client. Since it |
||
9 | also queries the client to find out which overlays should be 100%, it will detect discrepancies |
||
10 | in the client data and record any mismatched or not-present data in a saved Errata table. |
||
11 | |||
12 | --]]-------------------------------------------------------------------------------------------- |
||
13 | |||
14 | -- AddOn state saved in SavedVariables.lua. |
||
15 | MozzFullWorldMap = { |
||
16 | ["Errata"] = {}, -- any differences from the base dataset are recorded here. |
||
17 | --Enabled = 1, -- (disabled by default) |
||
18 | } |
||
19 | |||
20 | ------------------------------------------------------------------------------------------------ |
||
21 | |||
22 | local MozzMapOverlayInfo = { |
||
23 | ["Teldrassil"] = { "RUTTHERANVILLAGE:128:100:494:548","STARBREEZEVILLAGE:200:200:561:292", |
||
24 | "GNARLPINEHOLD:185:128:368:443","LAKEALAMETH:256:185:436:380","WELLSPRINGLAKE:180:256:377:93", |
||
25 | "THEORACLEGLADE:170:240:272:127","BANETHILHOLLOW:160:210:382:281","DOLANAAR:190:128:462:323", |
||
26 | "SHADOWGLEN:225:225:491:153","POOLSOFARLITHRIEN:128:190:335:313","DARNASSUS:315:256:101:247", |
||
27 | },["DunMorogh"] = { "AMBERSTILLRANCH:128:128:573:280","FROSTMANEHOLD:125:125:217:287", |
||
28 | "ICEFLOWLAKE:128:180:281:167","THEGRIZZLEDDEN:200:185:314:311","HELMSBEDLAKE:155:170:694:273", |
||
29 | "SHIMMERRIDGE:128:190:347:163","CHILLBREEZEVALLEY:180:128:274:296","ANVILMAR:240:185:155:403", |
||
30 | "MISTYPINEREFUGE:128:165:502:221","GOLBOLARQUARRY:165:165:608:291","KHARANOS:200:200:386:294", |
||
31 | "THETUNDRIDHILLS:155:128:522:322","IRONFORGE:315:200:397:163","COLDRIDGEPASS:150:128:295:385", |
||
32 | "NORTHERNGATEOUTPOST:128:165:759:173","SOUTHERNGATEOUTPOST:128:120:792:279", |
||
33 | "GNOMERAGON:180:165:166:184","BREWNALLVILLAGE:115:115:252:249", |
||
34 | },["Elwynn"] = { "EASTVALELOGGINGCAMP:256:210:704:330","BRACKWELLPUMPKINPATCH:256:249:577:419", |
||
35 | "FORESTSEDGE:256:341:124:327","FARGODEEPMINE:256:240:238:428","JERODSLANDING:256:237:425:431", |
||
36 | "STORMWIND:485:405:0:0","GOLDSHIRE:240:220:250:270","TOWEROFAZORA:255:250:551:292", |
||
37 | "CRYSTALLAKE:225:220:422:332","RIDGEPOINTTOWER:306:233:696:435", |
||
38 | "STONECAIRNLAKE:310:256:587:190","NORTHSHIREVALLEY:256:256:381:147", |
||
39 | },["Mulgore"] = { "WINTERHOOFWATERWELL:170:128:458:369","THUNDERHORNWATERWELL:128:155:379:242", |
||
40 | "RAVAGEDCARAVAN:128:120:473:260","PALEMANEROCK:128:205:303:307","WINDFURYRIDGE:205:128:395:0", |
||
41 | "REDCLOUDMESA:470:243:270:425","THUNDERBLUFF:280:240:249:59","BAELDUNDIGSITE:210:180:255:214", |
||
42 | "WILDMANEWATERWELL:185:128:291:0","THEGOLDENPLAINS:215:240:428:80","REDROCKS:205:230:502:16", |
||
43 | "BLOODHOOFVILLAGE:256:200:367:303","THEROLLINGPLAINS:256:190:523:356", |
||
44 | "THEVENTURECOMINE:225:235:532:238", |
||
45 | },["Tirisfal"] = { "SCARLETWATCHPOST:175:247:689:104","SOLLIDENFARMSTEAD:256:156:239:250", |
||
46 | "GARRENSHAUNT:174:220:497:145","VENOMWEBVALE:237:214:757:205","NIGHTMAREVALE:243:199:363:349", |
||
47 | "AGAMANDMILLS:256:210:335:139","CRUSADEROUTPOST:173:128:694:289","DEATHKNELL:245:205:227:328", |
||
48 | "BALNIRFARMSTEAD:216:179:630:326","BRIGHTWATERLAKE:201:288:587:139","BULWARK:230:205:698:362", |
||
49 | "RUINSOFLORDAERON:315:235:463:361","COLDHEARTHMANOR:150:128:474:327","BRILL:128:158:537:299", |
||
50 | "MONASTARY:211:189:746:125","STILLWATERPOND:186:128:395:277", |
||
51 | },["Durotar"] = { "RAZORMANEGROUNDS:230:230:301:189","VALLEYOFTRIALS:215:215:355:320", |
||
52 | "SKULLROCK:128:110:464:33","DRYGULCHRAVINE:210:160:427:78","THUNDERRIDGE:190:200:327:60", |
||
53 | "ORGRIMMAR:445:160:244:0","SENJINVILLAGE:160:190:474:384","TIRAGARDEKEEP:190:180:462:286", |
||
54 | "ECHOISLES:200:240:549:427","RAZORHILL:220:230:432:170","KOLKARCRAG:160:120:413:476", |
||
55 | },["Westfall"] = { "WESTFALLLIGHTHOUSE:280:190:205:467","FURLBROWSPUMPKINFARM:210:215:387:11", |
||
56 | "JANGOLODEMINE:215:215:307:29","SALDEANSFARM:225:210:459:105","THEDUSTPLAINS:288:235:523:377", |
||
57 | "SENTINELHILL:195:240:442:241","DEMONTSPLACE:200:185:208:375","THEMOLSENFARM:225:205:328:148", |
||
58 | "THEDEADACRE:200:240:524:252","THEJANSENSTEAD:165:200:488:0","THEDAGGERHILLS:256:175:339:418", |
||
59 | "GOLDCOASTQUARRY:225:256:220:102","ALEXSTONFARMSTEAD:305:210:204:260", |
||
60 | "MOONBROOK:220:200:317:331", |
||
61 | },["Silverpine"] = { "THEDECREPITFERRY:180:185:457:144","FENRISISLE:250:215:593:74", |
||
62 | "THEDEADFIELD:175:165:402:65","MALDENSORCHARD:256:160:465:0","OLSENSFARTHING:165:185:382:252", |
||
63 | "DEEPELEMMINE:160:170:470:261","SHADOWFANGKEEP:220:160:364:359","BERENSPERIL:240:180:491:417", |
||
64 | "THESEPULCHER:210:160:352:168","PYREWOODVILLAGE:140:125:391:446","AMBERMILL:240:240:494:262", |
||
65 | "THESKITTERINGDARK:185:165:286:37","NORTHTIDESHOLLOW:180:128:323:128", |
||
66 | "THEGREYMANEWALL:210:215:379:447","THESHININGSTRAND:256:220:459:13", |
||
67 | },["LochModan"] = { "SILVERSTREAMMINE:235:270:229:11","MOGROSHSTRONGHOLD:315:235:542:48", |
||
68 | "STONESPLINTERVALLEY:255:285:215:348","IRONBANDSEXCAVATIONSITE:345:256:482:321", |
||
69 | "VALLEYOFKINGS:195:250:109:370","GRIZZLEPAWRIDGE:295:358:309:310","THELSAMAR:256:230:217:203", |
||
70 | "THELOCH:320:410:352:87","NORTHGATEPASS:230:300:125:12","STONEWROUGHTDAM:290:175:339:11", |
||
71 | "THEFARSTRIDERLODGE:370:295:546:199", |
||
72 | },["Darkshore"] = { "RUINSOFMATHYSTRA:195:215:510:0","TOWEROFALTHALAXX:170:195:468:85", |
||
73 | "GROVEOFTHEANCIENTS:200:170:305:412","BASHALARAN:180:195:365:181","AMETHARAN:190:205:324:306", |
||
74 | "THEMASTERSGLAIVE:175:158:329:510","REMTRAVELSEXCAVATION:175:183:229:485", |
||
75 | "AUBERDINE:150:215:318:162","CLIFFSPRINGRIVER:230:190:375:94", |
||
76 | },["Redridge"] = { "STONEWATCH:255:300:500:215","GALARDELLVALLEY:250:250:654:161", |
||
77 | "ALTHERSMILL:235:270:399:129","RENDERSVALLEY:465:255:484:361","LAKEEVERSTILL:535:275:133:240", |
||
78 | "REDRIDGECANYONS:365:245:121:72","STONEWATCHFALLS:320:210:595:320","LAKESHIRE:340:195:83:197", |
||
79 | "RENDERSCAMP:275:256:277:0","THREECORNERS:365:350:0:284","LAKERIDGEHIGHWAY:430:290:187:333", |
||
80 | },["Wetlands"] = { "ANGERFANGENCAMPMENT:225:185:347:218","DUNMODR:205:180:401:21", |
||
81 | "SUNDOWNMARSH:300:240:92:82","THELGANROCK:230:190:470:371","BLACKCHANNELMARSH:240:175:77:245", |
||
82 | "BLUEGILLMARSH:225:190:89:142","MOSSHIDEFEN:205:245:527:264","IRONBEARDSTOMB:200:185:349:115", |
||
83 | "THEGREENBELT:185:240:456:125","SALTSPRAYGLEN:200:240:237:41","MENETHILHARBOR:175:128:13:314", |
||
84 | "GRIMBATOL:350:360:611:230","RAPTORRIDGE:190:160:628:176","DIREFORGEHILL:256:250:507:115", |
||
85 | "WHELGARSEXCAVATIONSITE:195:185:247:205", |
||
86 | },["Hilsbrad"] = { "DARROWHILL:205:155:414:154","NETHANDERSTEAD:215:240:541:236", |
||
87 | "DURNHOLDEKEEP:384:365:605:75","SOUTHSHORE:235:270:418:201","HILLSBRADFIELDS:305:275:198:155", |
||
88 | "TARRENMILL:220:310:509:0","AZURELOADMINE:165:200:175:275","SOUTHPOINTTOWER:288:225:2:192", |
||
89 | "DUNGAROK:240:275:637:294","EASTERNSTRAND:230:320:524:339","WESTERNSTRAND:285:155:208:368", |
||
90 | "PURGATIONISLE:125:100:109:482", |
||
91 | },["Duskwood"] = { "THEYORGENFARMSTEAD:235:250:390:382","THEROTTINGORCHARD:250:230:539:369", |
||
92 | "VULGOLOGREMOUND:255:285:243:348","TWILIGHTGROVE:360:420:298:79","ADDLESSTEAD:275:250:55:342", |
||
93 | "MANORMISTMANTLE:200:175:653:120","THEDARKENEDBANK:910:210:89:31","RAVENHILL:195:145:102:302", |
||
94 | "THEHUSHEDBANK:160:330:19:132","DARKSHIRE:315:280:631:162","BRIGHTWOODGROVE:220:340:504:117", |
||
95 | "TRANQUILGARDENSCEMETARY:220:220:690:353","RAVENHILLCEMETARY:350:300:85:149", |
||
96 | },["Alterac"] = { "LORDAMEREINTERNMENTCAMP:330:265:44:403","DANDREDSFOLD:285:230:276:0", |
||
97 | "MISTYSHORE:220:280:196:131","CHILLWINDPOINT:350:370:626:253","GALLOWSCORNER:200:200:406:279", |
||
98 | "CORRAHNSDAGGER:195:288:399:380","CRUSHRIDGEHOLD:280:240:334:162","THEUPLANDS:235:200:462:77", |
||
99 | "GAVINSNAZE:160:175:225:478","GROWLESSCAVE:190:170:317:372","RUINSOFALTERAC:255:255:270:197", |
||
100 | "STRAHNBRAD:370:300:549:105","THEHEADLAND:165:197:314:471","SOFERASNAZE:255:320:462:307", |
||
101 | "DALARAN:300:300:26:262", |
||
102 | },["Barrens"] = { "THEFORGOTTENPOOLS:120:125:384:115","THESTAGNANTOASIS:155:128:481:211", |
||
103 | "THEMORSHANRAMPART:128:100:412:0","DREADMISTPEAK:128:105:419:63","THEDRYHILLS:200:145:317:29", |
||
104 | "BOULDERLODEMINE:120:110:555:0","THESLUDGEFEN:170:120:456:0","THECROSSROADS:155:155:431:118", |
||
105 | "NORTHWATCHFOLD:150:120:527:307","RAPTORGROUNDS:115:110:507:294","THORNHILL:140:128:498:119", |
||
106 | "THEMERCHANTCOAST:95:100:581:247","LUSHWATEROASIS:175:185:365:177","RATCHET:125:125:556:189", |
||
107 | "HONORSSTAND:128:128:306:130","BRAMBLESCAR:125:165:442:298","BLACKTHORNRIDGE:155:128:335:462", |
||
108 | "BAELMODAN:128:128:431:479","RAZORFENKRAUL:128:128:341:537","RAZORFENDOWNS:155:115:407:553", |
||
109 | "CAMPTAURAJO:145:125:365:350","GROLDOMFARM:125:115:492:63","FARWATCHPOST:100:165:564:52", |
||
110 | "AGAMAGOR:200:185:340:234","FIELDOFGIANTS:210:150:355:402", |
||
111 | },["Stranglethorn"] = { "NESINGWARYSEXPEDITION:140:110:269:26","RUINSOFJUBUWAL:110:110:306:301", |
||
112 | "ZIATAJAIRUINS:128:125:364:231","BOOTYBAY:145:128:203:433","NEKMANIWELLSPRING:90:115:211:359", |
||
113 | "RUINSOFABORAZ:95:95:350:335","CRYSTALVEINMINE:120:120:345:276","MIZJAHRUINS:105:110:311:131", |
||
114 | "WILDSHORE:165:190:229:422","BLOODSAILCOMPOUND:165:175:194:284","JAGUEROISLE:125:120:314:493", |
||
115 | "GROMGOLBASECAMP:110:105:260:132","MOSHOGGOGREMOUND:128:175:432:94","KALAIRUINS:95:95:299:88", |
||
116 | "RUINSOFZULMAMWE:170:125:394:212","MISTVALEVALLEY:125:125:280:368","THEARENA:200:185:235:189", |
||
117 | "ZUULDAIARUINS:115:115:156:42","BALIAMAHRUINS:110:140:371:129","LAKENAZFERITI:128:125:331:59", |
||
118 | "KURZENSCOMPOUND:155:150:388:0","RUINSOFZULKUNDA:125:140:196:3","ZULGURUB:245:220:483:8", |
||
119 | "THEVILEREEF:190:175:152:90","VENTURECOBASECAMP:105:125:387:64", |
||
120 | "BALALRUINS:90:80:241:92","REBELCAMP:170:90:284:0", |
||
121 | },["SwampOfSorrows"] = { "SPLINTERSPEARJUNCTION:275:240:129:236","THEHARBORAGE:235:205:171:145", |
||
122 | "FALLOWSANCTUARY:365:305:492:0","MISTYREEDSTRAND:256:668:746:0","POOLOFTEARS:300:275:565:218", |
||
123 | "THESHIFTINGMIRE:315:235:286:110","MISTYVALLEY:245:305:0:140","ITHARIUSSCAVE:240:245:0:262", |
||
124 | "STONARD:360:315:279:237","STAGALBOG:345:250:552:378","SORROWMURK:215:365:724:120", |
||
125 | },["Arathi"] = { "CIRCLEOFINNERBINDING:210:185:286:310","CIRCLEOFOUTERBINDING:170:155:419:293", |
||
126 | "NORTHFOLDMANOR:230:240:192:90","BOULDERGOR:245:245:232:145","STROMGARDEKEEP:240:230:108:287", |
||
127 | "FALDIRSCOVE:256:215:171:424","THANDOLSPAN:200:220:355:412","BOULDERFISTHALL:215:235:432:362", |
||
128 | "GOSHEKFARM:230:195:531:276","HAMMERFALL:205:250:655:120","WITHERBARKVILLAGE:215:210:559:333", |
||
129 | "DABYRIESFARMSTEAD:180:210:472:165","CIRCLEOFEASTBINDING:160:230:558:112", |
||
130 | "REFUGEPOINT:175:225:370:186","THORADINSWALL:190:240:87:138", |
||
131 | "CIRCLEOFWESTBINDING:190:210:138:54", |
||
132 | },["Badlands"] = { "CAMPCAGG:255:220:12:428","KARGATH:240:255:0:148","CAMPKOSH:220:220:551:48", |
||
133 | "LETHLORRAVINE:370:455:611:110","APOCRYPHANSREST:255:205:17:310","AGMONDSEND:265:270:345:389", |
||
134 | "CAMPBOFF:255:280:501:341","THEDUSTBOWL:270:275:159:199","HAMMERTOESDIGSITE:200:195:445:120", |
||
135 | "VALLEYOFFANGS:230:230:349:256","ANGORFORTRESS:195:200:325:148","MIRAGEFLATS:285:240:148:384", |
||
136 | "DUSTWINDGULCH:245:205:498:209","THEMAKERSTERRACE:245:205:389:7", |
||
137 | },["Hinterlands"] = { "JINTHAALOR:235:285:505:333","THEOVERLOOKCLIFFS:170:310:693:303", |
||
138 | "AERIEPEAK:255:205:13:245","PLAGUEMISTRAVINE:145:220:158:149","THEALTAROFZUL:200:165:373:365", |
||
139 | "HIRIWATHA:225:200:171:306","QUELDANILLODGE:185:195:237:185","VALORWINDLAKE:170:170:319:302", |
||
140 | "SHADRAALOR:195:185:240:387","AGOLWATHA:205:195:374:164","THECREEPINGRUIN:180:170:408:260", |
||
141 | "SERADANE:275:275:509:19","SKULKROCK:160:145:512:232","SHAOLWATHA:280:205:571:239", |
||
142 | },["UngoroCrater"] = { "GOLAKKAHOTSPRINGS:315:345:121:151","THESLITHERINGSCAR:345:285:367:380", |
||
143 | "FIREPLUMERIDGE:295:270:367:178","TERRORRUN:345:285:158:368","THEMARSHLANDS:310:355:560:240", |
||
144 | "IRONSTONEPLATEAU:285:285:582:67","LAKKARITARPITS:570:265:160:6", |
||
145 | },["Tanaris"] = { "THISTLESHRUBVALLEY:185:250:203:286","VALLEYOFTHEWATCHERS:150:160:291:434", |
||
146 | "LANDSENDBEACH:205:157:445:511","ABYSSALSANDS:215:180:363:194","ZALASHJISDEN:110:140:611:147", |
||
147 | "CAVERNSOFTIME:155:150:561:256","EASTMOONRUINS:160:150:395:346","GADGETZAN:175:165:421:91", |
||
148 | "BROKENPILLAR:110:180:473:234","SOUTHMOONRUINS:195:210:323:359","ZULFARRAK:210:175:254:0", |
||
149 | "THEGAPINGCHASM:220:210:449:372","SOUTHBREAKSHORE:215:175:499:293", |
||
150 | "DUNEMAULCOMPOUND:205:145:325:289","THENOXIOUSLAIR:180:200:252:199", |
||
151 | "WATERSPRINGFIELD:165:180:509:168","LOSTRIGGERCOVE:160:190:629:220", |
||
152 | "STEAMWHEEDLEPORT:155:150:592:75","NOONSHADERUINS:120:135:533:104", |
||
153 | "SANDSORROWWATCH:195:175:299:100", |
||
154 | },["Dustwallow"] = { "THEWYRMBOG:285:240:367:381","ALCAZISLAND:200:195:660:21", |
||
155 | "THERAMOREISLE:230:205:534:224","WITCHHILL:250:315:422:0","BRACKENWALLVILLAGE:280:270:230:0", |
||
156 | "BACKBAYWETLANDS:400:255:239:189","THEDENOFFLAME:255:250:257:313", |
||
157 | },["ThousandNeedles"] = { "THEGREATLIFT:210:180:205:70","DARKCLOUDPINNACLE:205:195:259:131", |
||
158 | "THESHIMMERINGFLATS:320:365:610:300","SPLITHOOFCRAG:210:195:391:192","CAMPETHOK:305:310:0:0", |
||
159 | "WINDBREAKCANYON:240:220:492:250","FREEWINDPOST:210:190:357:264","HIGHPERCH:190:190:31:155", |
||
160 | "THESCREECHINGCANYON:250:240:179:200", |
||
161 | },["SearingGorge"] = { "GRIMSILTDIGSITE:305:220:494:300", |
||
162 | "THESEAOFCINDERS:360:280:247:388","TANNERCAMP:305:230:545:407","DUSTFIREVALLEY:460:365:422:8", |
||
163 | "FIREWATCHRIDGE:405:430:85:30","THECAULDRON:425:325:250:170","BLACKCHARCAVE:275:235:77:366", |
||
164 | },["Ashenvale"] = { "THISTLEFURVILLAGE:255:195:203:158","THESHRINEOFAESSINA:220:195:104:259", |
||
165 | "THEZORAMSTRAND:245:245:19:28","LAKEFALATHIM:128:195:131:137","MAESTRASPOST:215:305:205:38", |
||
166 | "ASTRANAAR:205:185:272:251","IRISLAKE:200:205:392:218","THERUINSOFSTARDUST:155:150:260:373", |
||
167 | "FIRESCARSHRINE:165:175:189:324","MYSTRALLAKE:275:240:356:347","BOUGHSHADOW:146:200:856:151", |
||
168 | "THEHOWLINGVALE:210:185:463:141","FELFIREHILL:245:255:713:344","NIGHTRUN:225:255:597:258", |
||
169 | "WARSONGLUMBERCAMP:200:160:796:311","RAYNEWOODRETREAT:180:245:520:238", |
||
170 | "FALLENSKYLAKE:235:205:547:426","SATYRNAAR:285:185:694:225", |
||
171 | },["Desolace"] = { "SHADOWPREYVILLAGE:230:230:167:389","THUNDERAXEFORTRESS:190:220:447:102", |
||
172 | "ETHELRETHOR:205:250:311:61","GELKISVILLAGE:195:242:293:426","VALLEYOFSPEARS:245:285:212:215", |
||
173 | "RANAZJARISLE:100:100:241:6","MAGRAMVILLAGE:205:285:590:365","MANNOROCCOVEN:285:280:399:380", |
||
174 | "SARGERON:285:245:625:33","KOLKARVILLAGE:220:220:607:215","KORMEKSHUT:170:160:555:181", |
||
175 | "SHADOWBREAKRAVINE:205:195:690:444","KODOGRAVEYARD:275:250:387:244", |
||
176 | "NIJELSPOINT:200:250:554:0","TETHRISARAN:205:145:431:0", |
||
177 | },["BurningSteppes"] = { "DRACODAR:415:315:56:258","RUINSOFTHAURISSAN:270:285:513:99", |
||
178 | "DREADMAULROCK:220:225:707:168","MORGANSVIGIL:294:270:708:311","ALTAROFSTORMS:225:220:36:109", |
||
179 | "TERRORWINGPATH:280:355:722:46","BLACKROCKPASS:270:310:589:279","PILLAROFASH:320:270:377:285", |
||
180 | "BLACKROCKSTRONGHOLD:245:265:334:114","BLACKROCKMOUNTAIN:256:280:173:101", |
||
181 | },["BlastedLands"] = { "DREADMAULPOST:245:195:361:195","THETAINTEDSCAR:384:450:212:178", |
||
182 | "DREADMAULHOLD:195:180:361:15","GARRISONARMORY:170:200:472:9","ALTAROFSTORMS:185:155:310:133", |
||
183 | "SERPENTSCOIL:225:170:501:140","DARKPORTAL:265:220:453:259","NETHERGARDEKEEP:185:190:559:30", |
||
184 | "RISEOFTHEDEFILER:170:145:405:123", |
||
185 | },["Aszhara"] = { "SHADOWSONGSHRINE:225:180:35:422","TIMBERMAWHOLD:235:270:250:106", |
||
186 | "BAYOFSTORMS:270:300:479:201","THESHATTEREDSTRAND:160:210:404:194","JAGGEDREEF:570:170:366:0", |
||
187 | "BITTERREACHES:245:185:644:40","TOWEROFELDARA:120:155:818:107","FORLORNRIDGE:220:255:191:369", |
||
188 | "TEMPLEOFARKKORAN:190:200:681:153","LEGASHENCAMPMENT:235:140:478:44","URSOLAN:145:215:422:95", |
||
189 | "RUINSOFELDARATH:265:280:238:221","SOUTHRIDGEBEACH:370:220:389:353","VALORMOK:215:175:84:229", |
||
190 | "THALASSIANBASECAMP:240:155:499:119","RAVENCRESTMONUMENT:240:125:552:499", |
||
191 | "HALDARRENCAMPMENT:200:150:77:331","THERUINEDREACHES:395:128:396:540", |
||
192 | "LAKEMENNAR:315:200:296:429", |
||
193 | },["Felwood"] = { "RUINSOFCONSTELLAS:235:155:297:381","EMERALDSANCTUARY:185:160:405:429", |
||
194 | "FELPAWVILLAGE:240:145:483:0","TALONBRANCHGLADE:160:145:548:90","MORLOSARAN:145:159:496:509", |
||
195 | "JADEFIRERUN:195:170:330:29","SHATTERSCARVALE:235:200:307:123","JAEDENAR:245:128:271:331", |
||
196 | "BLOODVENOMFALLS:235:145:292:263","DEADWOODVILLAGE:175:135:408:533", |
||
197 | "JADEFIREGLEN:165:155:332:465","IRONTREEWOODS:215:215:420:54", |
||
198 | },["EasternPlaguelands"] = { "THENOXIOUSGLADE:225:215:722:166", |
||
199 | "QUELLITHIENLODGE:230:150:422:36","NORTHPASSTOWER:240:195:457:109","TERRORDALE:190:205:79:98", |
||
200 | "BLACKWOODLAKE:230:235:442:199","EASTWALLTOWER:180:160:592:241","DARROWSHIRE:210:179:309:489", |
||
201 | "CORINSCROSSING:165:160:537:367","THEMARRISSTEAD:200:205:156:360","NORTHDALE:190:205:620:128", |
||
202 | "PLAGUEWOOD:360:270:169:83","LAKEMERELDAR:250:175:537:463","THEINFECTISSCAR:195:275:620:291", |
||
203 | "PESTILENTSCAR:205:250:409:345","ZULMASHAR:205:165:614:30","CROWNGUARDTOWER:205:165:291:401", |
||
204 | "THONDRORILRIVER:220:360:7:231","LIGHTSHOPECHAPEL:175:245:716:299","TYRSHAND:245:170:717:471", |
||
205 | "STRATHOLME:240:200:194:9","THEFUNGALVALE:210:210:271:261","THEUNDERCROFT:185:150:172:477", |
||
206 | },["StonetalonMountains"] = { "BOULDERSLIDERAVINE:145:107:572:561", |
||
207 | "WEBWINDERPATH:288:355:457:282","MIRKFALLONLAKE:200:215:390:145","CAMPAPARAJE:190:97:718:571", |
||
208 | "SISHIRCANYON:125:125:475:433","STONETALONPEAK:270:205:247:0","GRIMTOTEMPOST:225:120:668:515", |
||
209 | "MALAKAJIN:125:86:663:582","WINDSHEARCRAG:320:275:553:197","THECHARREDVALE:230:355:210:234", |
||
210 | "SUNROCKRETREAT:150:150:389:320", |
||
211 | },["WesternPlaguelands"] = { "DARROWMERELAKE:370:270:504:343","RUINSOFANDORHOL:285:230:260:355", |
||
212 | "THEBULWARK:225:185:137:293","FELSTONEFIELD:160:125:300:311","THEWEEPINGCAVE:160:200:566:198", |
||
213 | "CAERDARROW:170:165:600:412","SORROWHILL:300:206:355:462","GAHRRONSWITHERING:180:205:520:250", |
||
214 | "HEARTHGLEN:340:288:307:16","DALSONSTEARS:220:150:381:265","THEWRITHINGHAUNT:170:190:451:323", |
||
215 | "NORTHRIDGELUMBERCAMP:220:180:382:164","THONDRORILRIVER:205:340:590:86", |
||
216 | },["Feralas"] = { "THEFORGOTTENCOAST:145:320:404:256","FRAYFEATHERHIGHLANDS:110:170:478:386", |
||
217 | "RUINSOFRAVENWIND:190:155:305:0","THETWINCOLOSSALS:285:245:319:75","DREAMBOUGH:150:125:454:0", |
||
218 | "GORDUNNIOUTPOST:140:165:690:141","ISLEOFDREAD:215:293:192:375","LOWERWILDS:225:180:751:198", |
||
219 | "FERALSCARVALE:115:115:486:329","RUINSOFISILDIEN:190:250:540:320","ONEIROS:110:110:493:70", |
||
220 | "DIREMAUL:230:195:454:201","SARDORISLE:180:180:208:234","CAMPMOJACHE:155:160:689:233", |
||
221 | "THEWRITHINGDEEP:240:220:618:298","GRIMTOTEMCOMPOUND:120:195:623:167", |
||
222 | },["Winterspring"] = { "WINTERFALLVILLAGE:145:125:617:158","ICETHISTLEHILLS:125:165:611:242", |
||
223 | "LAKEKELTHERIL:215:185:401:198","STARFALLVILLAGE:185:160:392:137","EVERLOOK:165:200:509:107", |
||
224 | "FROSTFIREHOTSPRINGS:240:140:222:172","FROSTWHISPERGORGE:200:160:523:376", |
||
225 | "THEHIDDENGROVE:175:185:555:27","DARKWHISPERGORGE:255:205:447:441", |
||
226 | "FROSTSABERROCK:250:180:368:7","OWLWINGTHICKET:165:140:593:340", |
||
227 | "TIMBERMAWPOST:230:120:229:243","MAZTHORIL:185:180:493:258", |
||
228 | },["Silithus"] = { "THESCARABWALL:288:256:116:413", |
||
229 | "THECRYSTALVALE:320:289:104:24","HIVEASHI:512:320:265:12","SOUTHWINDVILLAGE:384:384:500:65", |
||
230 | "TWILIGHTBASECAMP:320:256:344:197","HIVEZORA:384:512:97:144","HIVEREGAL:512:384:245:285", |
||
231 | },["DeadwindPass"] = { "THEVICE:270:270:426:299","KARAZHAN:300:245:269:337", |
||
232 | "DEADMANSCROSSING:380:365:249:76", |
||
233 | },["AlteracValley"] = { "DUNBALDAR:270:240:348:13","ICEBLOODGARRISON:300:300:335:172", |
||
234 | },["Moonglade"] = { "LAKEELUNEARA:555:510:244:89", }} |
||
235 | |||
236 | ------------------------------------------------------------------------------------------------ |
||
237 | |||
238 | local function oinfo_combine(prefix,tname,tw,th,ofx,ofy,mpx,mpy) |
||
239 | -- shorten strings by replacing redundant prefix paths with a marker token |
||
240 | local result = ":"..tw..":"..th..":"..ofx..":"..ofy |
||
241 | if (mpx~=0 or mpy~=0) then result = result..":"..mpx..":"..mpy end |
||
242 | if string.sub(tname, 0, string.len(prefix)) == prefix then |
||
243 | return string.sub(tname, string.len(prefix)+1)..result |
||
244 | end |
||
245 | return "|"..result |
||
246 | end |
||
247 | |||
248 | local function oinfo_uncombine(prefix,oinfo) |
||
249 | local pfxUnused,tname,tw,th,ofx,ofy,mpx,mpy; |
||
250 | _,_,pfxUnused,tname,tw,th,ofx,ofy = string.find(oinfo, |
||
251 | "^([|]?)([^:]+):([^:]+):([^:]+):([^:]+):([^:]+)") |
||
252 | if (not tname or not ofy) then return nil; end -- safety check |
||
253 | if (ofy) then |
||
254 | _,_,mpx,mpy = string.find(oinfo, |
||
255 | "^[|]?[^:]+:[^:]+:[^:]+:[^:]+:[^:]+:([^:]+):([^:]+)") |
||
256 | end |
||
257 | if (not mpy) then mpx=0; mpy=0 end |
||
258 | if (pfxUnused~="|") then tname = prefix..tname; end |
||
259 | return tname,tw+0,th+0,ofx+0,ofy+0,mpx+0,mpy+0 |
||
260 | end |
||
261 | |||
262 | local function oinfo_getname(prefix,oinfo) |
||
263 | local junk1,junk2,pfxUnused,tname = string.find(oinfo, "^([|]?)([^:]+):") |
||
264 | if (not tname) then return nil; end -- safety check |
||
265 | if (pfxUnused~="|") then tname = prefix..tname; end |
||
266 | return tname |
||
267 | end |
||
268 | |||
269 | ------------------------------------------------------------------------------------------------ |
||
270 | |||
271 | local function getMainTable(mapFileName) |
||
272 | local t = MozzMapOverlayInfo[mapFileName] |
||
273 | if not t then t = { }; MozzMapOverlayInfo[mapFileName] = t end |
||
274 | return t |
||
275 | end |
||
276 | |||
277 | ------------------------------------------------------------------------------------------------ |
||
278 | |||
279 | local function getErrataTable(mapFileName) |
||
280 | local t = MozzFullWorldMap.Errata[mapFileName] |
||
281 | if not t then t = { }; MozzFullWorldMap.Errata[mapFileName] = t end |
||
282 | return t |
||
283 | end |
||
284 | |||
285 | ------------------------------------------------------------------------------------------------ |
||
286 | |||
287 | -- This code replaces the short-circuited code from WorldMapFrame_Update. |
||
288 | local function worldMapFrame_UpdateOverlays() |
||
289 | local mapFileName, textureHeight = GetMapInfo(); |
||
290 | if (not mapFileName) then mapFileName = "World"; end |
||
291 | |||
292 | -- hack to keep strings short and maintainable. |
||
293 | local prefix = "Interface\\WorldMap\\"..mapFileName.."\\" |
||
294 | |||
295 | -- (1) create oinfos for discovered areas in this zone. |
||
296 | local i, tname, oinfo |
||
297 | local discovered = {} |
||
298 | local numOverlays = GetNumMapOverlays() |
||
299 | for i=1, numOverlays do |
||
300 | local tname,tw,th,ofx,ofy,mpx,mpy = GetMapOverlayInfo(i) |
||
301 | discovered[tname] = oinfo_combine(prefix,tname,tw,th,ofx,ofy,mpx,mpy) |
||
302 | end |
||
303 | |||
304 | -- (2) update any overlays for which our stored data is *incorrect* (should never happen!) |
||
305 | local zoneTable = getMainTable(mapFileName) |
||
306 | |||
307 | numOverlays = getn(zoneTable) |
||
308 | for i,oinfo in next,zoneTable do |
||
309 | local tname = oinfo_getname(prefix,oinfo) |
||
310 | if discovered[tname] then |
||
311 | if discovered[tname] == 1 then |
||
312 | if (MOZZ_DEBUG) then echo(mapFileName..": repeating "..tname.." ??") end |
||
313 | elseif discovered[tname] ~= oinfo then |
||
314 | if (MOZZ_DEBUG) then echo(mapFileName..": update "..discovered[tname]) end |
||
315 | zoneTable[i] = discovered[tname] |
||
316 | -- record in the errata table for next time! |
||
317 | table.insert(getErrataTable(mapFileName),discovered[tname]) |
||
318 | end |
||
319 | discovered[tname] = 1 |
||
320 | end |
||
321 | end |
||
322 | -- (3) add any overlays which are *missing* from our stored data (should never happen!) |
||
323 | for tname,oinfo in next,discovered do |
||
324 | if oinfo ~= 1 then |
||
325 | if (MOZZ_DEBUG) then echo(mapFileName..": adding "..oinfo) end |
||
326 | table.insert(zoneTable,oinfo) |
||
327 | -- record in the errata table for next time! |
||
328 | table.insert(getErrataTable(mapFileName),oinfo) |
||
329 | end |
||
330 | end |
||
331 | |||
332 | -- Modified version of original overlay stuff |
||
333 | local textureName, textureWidth, textureHeight, offsetX, offsetY, mapPointX, mapPointY; |
||
334 | local textureCount = 1; |
||
335 | local texture; |
||
336 | local texturePixelWidth, textureFileWidth, texturePixelHeight, textureFileHeight; |
||
337 | local numTexturesWide, numTexturesTall; |
||
338 | |||
339 | for i,oinfo in next,zoneTable do |
||
340 | textureName, textureWidth, textureHeight, offsetX, offsetY, mapPointX, mapPointY = |
||
341 | oinfo_uncombine(prefix,oinfo) |
||
342 | |||
343 | if MozzFullWorldMap.Enabled or discovered[textureName] then |
||
344 | |||
345 | -- HACK: override *known incorrect* data with hard-coded fixes. |
||
346 | -- Otherwise it looks quite ugly when you toggle the faint areas on and off. |
||
347 | -- I am assuming here that strings are interned and comparisons are fast...hmm. |
||
348 | if (textureName == "Interface\\WorldMap\\Tirisfal\\BRIGHTWATERLAKE") then |
||
349 | if (offsetX == 587) then offsetX = 584 end |
||
350 | end |
||
351 | if (textureName == "Interface\\WorldMap\\Silverpine\\BERENSPERIL") then |
||
352 | if (offsetY == 417) then offsetY = 415 end |
||
353 | end |
||
354 | |||
355 | numTexturesWide = ceil(textureWidth/256); |
||
356 | numTexturesTall = ceil(textureHeight/256); |
||
357 | for j=1, numTexturesTall do |
||
358 | if (j < numTexturesTall) then |
||
359 | texturePixelHeight = 256; textureFileHeight = 256; |
||
360 | else |
||
361 | texturePixelHeight = mod(textureHeight, 256); |
||
362 | if (texturePixelHeight == 0) then texturePixelHeight = 256; end |
||
363 | textureFileHeight = 16; |
||
364 | while(textureFileHeight < texturePixelHeight) do |
||
365 | textureFileHeight = textureFileHeight * 2; |
||
366 | end |
||
367 | end |
||
368 | for k=1, numTexturesWide do |
||
369 | if (textureCount > NUM_WORLDMAP_OVERLAYS) then |
||
370 | for j=NUM_WORLDMAP_OVERLAYS+1, textureCount do |
||
371 | WorldMapDetailFrame:CreateTexture("WorldMapOverlay"..j, "ARTWORK"); |
||
372 | end |
||
373 | NUM_WORLDMAP_OVERLAYS = textureCount; |
||
374 | end |
||
375 | texture = getglobal("WorldMapOverlay"..textureCount); |
||
376 | if (k < numTexturesWide) then |
||
377 | texturePixelWidth = 256; textureFileWidth = 256; |
||
378 | else |
||
379 | texturePixelWidth = mod(textureWidth, 256); |
||
380 | if (texturePixelWidth == 0) then texturePixelWidth = 256; end |
||
381 | textureFileWidth = 16; |
||
382 | while(textureFileWidth < texturePixelWidth) do |
||
383 | textureFileWidth = textureFileWidth * 2; |
||
384 | end |
||
385 | end |
||
386 | texture:SetWidth(texturePixelWidth); |
||
387 | texture:SetHeight(texturePixelHeight); |
||
388 | texture:SetTexCoord(0, texturePixelWidth/textureFileWidth, 0, |
||
389 | texturePixelHeight/textureFileHeight); |
||
390 | texture:ClearAllPoints(); |
||
391 | texture:SetPoint("TOPLEFT", "WorldMapDetailFrame", "TOPLEFT", |
||
392 | offsetX + (256 * (k-1)), -(offsetY + (256 * (j - 1)))); |
||
393 | texture:SetTexture(textureName..(((j - 1) * numTexturesWide) + k)); |
||
394 | |||
395 | if discovered[textureName] then |
||
396 | texture:SetVertexColor(1.0,1.0,1.0) |
||
397 | texture:SetAlpha(1.0) |
||
398 | else |
||
399 | texture:SetVertexColor(0.2,0.6,1.0) -- EMERALD |
||
400 | texture:SetAlpha(1.0) -- EMERALD |
||
401 | --texture:SetAlpha(0.35) |
||
402 | end |
||
403 | texture:Show(); |
||
404 | textureCount = textureCount + 1; |
||
405 | end |
||
406 | end |
||
407 | end |
||
408 | end |
||
409 | for i=textureCount, NUM_WORLDMAP_OVERLAYS do getglobal("WorldMapOverlay"..i):Hide(); end |
||
410 | end |
||
411 | |||
412 | ------------------------------------------------------------------------------------------------ |
||
413 | |||
414 | -- HACK to short-circuit the overlay handling code in WorldMapFrame_Update (for performance). |
||
415 | -- TODO: is there a risk of messing up other map-related AddOns with this? |
||
416 | |||
417 | local old_GetNumMapOverlays = GetNumMapOverlays; |
||
418 | local old_NUM_WORLDMAP_OVERLAYS = NUM_WORLDMAP_OVERLAYS; |
||
419 | function GetNumMapOverlays() |
||
420 | if (NUM_WORLDMAP_OVERLAYS == 0) then return 0 end; |
||
421 | return old_GetNumMapOverlays() |
||
422 | end |
||
423 | |||
424 | ------------------------------------------------------------------------------------------------ |
||
425 | |||
426 | local old_WorldMapFrame_Update = WorldMapFrame_Update; |
||
427 | function WorldMapFrame_Update() |
||
428 | NUM_WORLDMAP_OVERLAYS = 0 |
||
429 | old_WorldMapFrame_Update() |
||
430 | NUM_WORLDMAP_OVERLAYS = old_NUM_WORLDMAP_OVERLAYS |
||
431 | worldMapFrame_UpdateOverlays() |
||
432 | end |
||
433 | |||
434 | ------------------------------------------------------------------------------------------------ |
||
435 | |||
436 | function MozzFullWorldMapFrame_OnLoad() |
||
437 | this:RegisterEvent("VARIABLES_LOADED"); |
||
438 | end |
||
439 | |||
440 | function MozzFullWorldMapFrame_OnEvent() |
||
441 | if (event == "VARIABLES_LOADED") then |
||
442 | -- Integrate the contents of the errata table into the main dataset. |
||
443 | -- and while we're at it, remove anything we don't recognize from the errata table! |
||
444 | |||
445 | local mapFileName, errataTable, i, oinfo |
||
446 | for mapFileName,errataTable in next,MozzFullWorldMap.Errata do |
||
447 | -- hack to keep strings short and maintainable. |
||
448 | local prefix = "Interface\\WorldMap\\"..mapFileName.."\\" |
||
449 | |||
450 | -- build a temporary index of the mainTable, from textureName to index! |
||
451 | local mainIndex = {} |
||
452 | local mainTable = getMainTable(mapFileName) |
||
453 | for i,oinfo in next,mainTable do |
||
454 | local tname = oinfo_uncombine(prefix,oinfo) |
||
455 | if tname then mainIndex[tname] = i; end |
||
456 | end |
||
457 | |||
458 | -- build a temporary index of the errata too (removing redundant entries). |
||
459 | local errataIndex = {} |
||
460 | for i,oinfo in next,errataTable do |
||
461 | local tname = oinfo_uncombine(prefix,oinfo) |
||
462 | if not tname then |
||
463 | if (MOZZ_DEBUG) then echo(mapFileName..": borked: "..oinfo) end |
||
464 | errataTable[i] = nil |
||
465 | else |
||
466 | if errataIndex[tname] then |
||
467 | if (MOZZ_DEBUG) then |
||
468 | local old = errataTable[errataIndex[tname]] |
||
469 | echo(mapFileName..": redundant: "..old) |
||
470 | end |
||
471 | errataTable[errataIndex[tname]] = nil |
||
472 | end |
||
473 | errataIndex[tname] = i; |
||
474 | end |
||
475 | end |
||
476 | |||
477 | -- now integrate errata into mainTable (for this session only) |
||
478 | for i,oinfo in next,errataTable do |
||
479 | local tname = oinfo_uncombine(prefix,oinfo) |
||
480 | if mainIndex[tname] then |
||
481 | if mainTable[mainIndex[tname]] ~= oinfo then |
||
482 | if (MOZZ_DEBUG) then echo(mapFileName..": update "..oinfo) end |
||
483 | mainTable[mainIndex[tname]] = oinfo |
||
484 | else |
||
485 | if (MOZZ_DEBUG) then echo(mapFileName..": redundant: "..oinfo) end |
||
486 | errataTable[i] = nil |
||
487 | end |
||
488 | else |
||
489 | if (MOZZ_DEBUG) then echo(mapFileName..": add "..oinfo) end |
||
490 | table.insert(mainTable, oinfo) |
||
491 | end |
||
492 | end |
||
493 | end |
||
494 | end |
||
495 | end |
||
496 | |||
497 | ------------------------------------------------------------------------------------------------ |
||
498 | |||
499 | -- end of file |