Area Coordinate List
Introduction
This is an area coordinates list which was extracted from the online atlas using Python. It may be missing some areas, but should be mostly complete.
The primary use is for blind players. The below table can be sorted by hitting enter on the column headers. Most usefully, it's possible to sort by distance from Vaerlon.
It would be possible to add other cities to the table in future without much trouble.
The bottom of this page contains the script and procedure for duplicating this work. In the long run we'll probably want to manually maintain this list, but the script was good enough to get 200+ areas so it works as an interim solution until someone takes this on properly. Unfortunately, the automated approach is probably the only way to get distances in here easily, but that's just the Pythagorean theorem, so not hard to do by hand.
The easiest way to add an area manually is probably to append it to the list in the script as we do with Vaerlon, then re-run it.
The Table
Name | X | Y | Distance From Vaerlon |
---|---|---|---|
A large meadow | 471 | 690 | 67 |
Abandoned Tunnel | 590 | 651 | 87 |
Acid mages | 464 | 855 | 226 |
Arid hills | 1094 | 701 | 593 |
Army Outpost | 830 | 634 | 325 |
Astug's Hut | 770 | 669 | 267 |
Attack mages | 458 | 859 | 231 |
Avian Village | 605 | 572 | 116 |
Beach Shrine | 1029 | 787 | 546 |
Bear shapeshifters | 498 | 413 | 219 |
Bird shapeshifters | 482 | 444 | 189 |
Black Tower | 1072 | 480 | 587 |
Broken Oak Inn | 577 | 443 | 202 |
Brownie Tree | 588 | 508 | 149 |
Calm Valley | 539 | 581 | 61 |
Castle of Passage | 959 | 879 | 516 |
Caverns of Slime | 612 | 598 | 112 |
Cenobium | 1038 | 601 | 533 |
Centaur Forest | 542 | 587 | 58 |
Chromatic Forest | 536 | 743 | 115 |
Chronomancer Guild | 1165 | 870 | 701 |
Cinder Scale Village | 529 | 562 | 74 |
Clash of the Hives | 936 | 479 | 457 |
Cold mages | 453 | 852 | 226 |
Coral reef | 916 | 721 | 420 |
Coven of the Derelict | 536 | 556 | 82 |
Cradle | 1175 | 306 | 745 |
Creepy swamp | 729 | 558 | 235 |
Deep Ravine | 410 | 520 | 146 |
Dense conifer forest | 543 | 730 | 105 |
Desecrated Forest | 498 | 676 | 44 |
Deserted Cottage | 571 | 683 | 83 |
Diamond Mines | 486 | 650 | 26 |
Disturbing Mansion | 868 | 668 | 364 |
Drudric's Hut | 524 | 633 | 19 |
Dwarven Village | 838 | 679 | 336 |
Earth Temple | 858 | 707 | 360 |
Eastern tunnel to Cenedoiss | 873 | 679 | 370 |
Elven city of Kloernien | 941 | 669 | 437 |
Elyr's Farm | 494 | 639 | 13 |
Fire Temple | 846 | 445 | 388 |
Fire magesProvince of Grassgraze | 478 | 857 | 226 |
Forest Shrine | 640 | 657 | 137 |
Forest of Namgeb | 481 | 574 | 62 |
Fortress of Rodok Mor | 1007 | 434 | 539 |
Frozen ValProvince of Barrens | 449 | 788 | 165 |
Fungus shapeshifters | 410 | 425 | 227 |
Gate Shrine | 618 | 783 | 188 |
Glacier | 436 | 350 | 290 |
Gnoll Camp | 665 | 423 | 263 |
Gnomish TradinNefankaz | 502 | 635 | 4 |
Goblin Cave | 536 | 411 | 223 |
Goblin Village | 481 | 696 | 68 |
Gypsy Camp | 632 | 409 | 256 |
Infecti Psionicists Guild | 806 | 618 | 301 |
Isolated Village | 553 | 380 | 256 |
Kobold Camp | 549 | 787 | 161 |
Krurik's orc village | 549 | 648 | 46 |
Ledge outside a cave | 527 | 583 | 53 |
Leprechaun Village | 630 | 824 | 229 |
Lightning mages | 462 | 849 | 221 |
Magical Portal | 717 | 564 | 222 |
Mandray Forest | 689 | 465 | 248 |
Marshy Forest | 881 | 578 | 379 |
Massive Cavern | 745 | 565 | 249 |
Misty mountains | 858 | 688 | 357 |
Monastery | 928 | 773 | 445 |
Monk monastery | 995 | 385 | 548 |
Mountain Shrine | 895 | 692 | 394 |
Murky caverns | 925 | 628 | 420 |
Murnek's Farmhouse | 666 | 677 | 167 |
Nymph Village | 760 | 426 | 327 |
Old Graemor | 1104 | 485 | 616 |
Petrified Forest | 1098 | 474 | 613 |
Pleasant Valley | 533 | 613 | 33 |
Preran's Fish Shop | 567 | 675 | 75 |
Province of Arcana | 836 | 880 | 413 |
Province of Auren's Land | 765 | 348 | 385 |
Province of Autumn Vale | 1081 | 596 | 577 |
Province of Basin | 459 | 703 | 84 |
Province of Black Forest | 844 | 781 | 370 |
Province of Bleak | 986 | 789 | 505 |
Province of Bloom | 786 | 778 | 316 |
Province of Bounty | 686 | 529 | 208 |
Province of Brightbark | 1056 | 719 | 557 |
Province of Broken Land | 564 | 880 | 254 |
Province of Cairn | 1129 | 637 | 624 |
Province of Calmgrove | 1171 | 485 | 682 |
Province of Capercaillie Hills | 647 | 712 | 162 |
Province of Clayburn | 567 | 628 | 62 |
Province of Cliffward | 856 | 568 | 356 |
Province of Cloudville | 744 | 582 | 244 |
Province of Clover | 495 | 634 | 10 |
Province of Cold Barrens | 1103 | 330 | 669 |
Province of Crags | 429 | 855 | 235 |
Province of Crimson | 507 | 422 | 210 |
Province of Crowscar | 1097 | 683 | 594 |
Province of Dalebank | 994 | 874 | 545 |
Province of Darklands | 447 | 529 | 118 |
Province of Darkmoon | 998 | 733 | 503 |
Province of Dawn Acres | 1019 | 642 | 514 |
Province of Deepdark | 990 | 413 | 532 |
Province of Deeppoint | 1047 | 493 | 559 |
Province of Driftwood | 542 | 532 | 106 |
Province of Dryrest | 1169 | 786 | 681 |
Province of Duskpass | 1028 | 529 | 533 |
Province of Eagle's Pass | 1123 | 465 | 640 |
Province of Eastbound | 943 | 450 | 474 |
Province of Eastice | 1024 | 330 | 600 |
Province of Ember Valley | 1040 | 925 | 609 |
Province of Eskara | 557 | 330 | 306 |
Province of Everwhite | 1147 | 880 | 688 |
Province of Fairbury | 455 | 611 | 54 |
Province of Farhorn | 892 | 743 | 402 |
Province of Farslope | 546 | 856 | 227 |
Province of Farspire | 873 | 510 | 387 |
Province of Fay Meadows | 526 | 561 | 74 |
Province of Feud | 549 | 446 | 191 |
Province of Flamecall | 816 | 494 | 340 |
Province of Freeacre | 636 | 572 | 144 |
Province of Frontier | 747 | 447 | 304 |
Province of Frozen Waste | 947 | 332 | 534 |
Province of Gate of Ice | 578 | 378 | 264 |
Province of Gateway | 1156 | 375 | 699 |
Province of Glimmering Gates | 820 | 750 | 336 |
Province of Glowing Land | 640 | 851 | 257 |
Province of Great Glacier | 1163 | 327 | 725 |
Province of Greengrass | 804 | 548 | 310 |
Province of Grimrock | 489 | 816 | 184 |
Province of Halla | 1083 | 885 | 630 |
Province of Hammerhearth | 1121 | 407 | 655 |
Province of Harvest | 643 | 448 | 230 |
Province of Haven | 899 | 863 | 456 |
Province of Hawkpass | 873 | 814 | 410 |
Province of Hazel Plains | 916 | 670 | 412 |
Province of Heart of Ice | 487 | 362 | 270 |
Province of Heartlands | 581 | 662 | 81 |
Province of Highmere | 988 | 600 | 484 |
Province of Hightide | 598 | 875 | 260 |
Province of Hollows | 456 | 437 | 201 |
Province of Huntress | 930 | 751 | 441 |
Province of Icefront | 957 | 394 | 510 |
Province of Icepass | 1091 | 865 | 630 |
Province of Juniper Wilds | 461 | 483 | 155 |
Province of Kilbourne | 1077 | 622 | 572 |
Province of Kitron | 512 | 321 | 311 |
Province of Knightsword | 560 | 698 | 85 |
Province of Kuura | 595 | 338 | 307 |
Province of Lakestorm | 426 | 632 | 79 |
Province of Land of Mire | 435 | 404 | 238 |
Province of Landing | 646 | 764 | 193 |
Province of Lands of Lore | 667 | 425 | 262 |
Province of Landslide | 1045 | 872 | 590 |
Province of Lightwick | 883 | 710 | 385 |
Province of Longmarch | 451 | 748 | 127 |
Province of Longtide | 548 | 829 | 201 |
Province of Lost Glen | 1094 | 774 | 605 |
Province of Malicia | 534 | 507 | 128 |
Province of Marauding Lands | 862 | 464 | 394 |
Province of Midland | 711 | 832 | 287 |
Province of Midnight | 839 | 315 | 460 |
Province of Midori | 797 | 384 | 383 |
Province of Mistpoint | 547 | 586 | 62 |
Province of Moonbay | 515 | 804 | 172 |
Province of Mossbreak | 711 | 490 | 250 |
Province of Muralla | 1069 | 520 | 575 |
Province of Neverwallow | 1095 | 810 | 616 |
Province of Newspell | 932 | 709 | 433 |
Province of Nightdrift | 980 | 501 | 492 |
Province of Nighthold | 526 | 753 | 122 |
Province of Nightsun | 567 | 419 | 221 |
Province of Nokko | 1110 | 370 | 659 |
Province of Northern Plains | 890 | 409 | 444 |
Province of Oldward | 628 | 513 | 171 |
Province of Passage | 961 | 874 | 516 |
Province of Pineshire | 1160 | 523 | 664 |
Province of Pinewaves | 813 | 856 | 380 |
Province of Plain of Swirls | 468 | 886 | 256 |
Province of Reach | 420 | 882 | 264 |
Province of Red Wind | 850 | 633 | 345 |
Province of Redcliff | 935 | 498 | 450 |
Province of Reedshore | 773 | 878 | 363 |
Province of Rise | 594 | 796 | 186 |
Province of Rusty Forest | 936 | 614 | 431 |
Province of Rytiranta | 1078 | 563 | 577 |
Province of Serpent's Tongue | 941 | 785 | 462 |
Province of Shadowshear | 758 | 631 | 253 |
Province of Sleetsafe | 802 | 690 | 302 |
Province of Smitten Lands | 666 | 779 | 218 |
Province of Smokehold | 583 | 737 | 130 |
Province of Snowcrest | 664 | 392 | 287 |
Province of Snowfell | 673 | 334 | 342 |
Province of Snowrise | 502 | 501 | 131 |
Province of Southpeaks | 1132 | 856 | 665 |
Province of Southshine | 1138 | 958 | 712 |
Province of Stag Meadows | 1132 | 731 | 634 |
Province of Stormshield | 462 | 648 | 45 |
Province of Stride | 1038 | 450 | 563 |
Province of Stronghold | 966 | 565 | 465 |
Province of Summercoast | 446 | 576 | 81 |
Province of Tethers | 890 | 382 | 459 |
Province of Thornfell | 650 | 671 | 150 |
Province of Tradefair | 780 | 725 | 290 |
Province of Vale of Ice | 800 | 427 | 359 |
Province of Vast | 739 | 395 | 333 |
Province of Vekkak | 445 | 316 | 321 |
Province of Wailing Land | 649 | 882 | 288 |
Province of Wayabout | 1040 | 389 | 587 |
Province of Wayward | 716 | 876 | 322 |
Province of Western Ice | 527 | 391 | 242 |
Province of Westpoint | 735 | 783 | 275 |
Province of Westshore | 525 | 882 | 250 |
Province of White Plains | 578 | 400 | 243 |
Province of Winterdark | 456 | 361 | 275 |
Province of Winterfort | 1152 | 578 | 649 |
Province of Wolfpath | 703 | 698 | 208 |
Province of World's End | 888 | 344 | 479 |
Ranger Guild | 472 | 665 | 46 |
Rebel Camp | 529 | 644 | 26 |
Refugee Camp | 898 | 750 | 410 |
Riverside Shrine | 1032 | 618 | 527 |
Roadside Shrine | 575 | 551 | 107 |
Sacred Grove | 990 | 544 | 492 |
Seita Aglakti | 837 | 361 | 428 |
Seita Kitka | 1044 | 576 | 541 |
Seita Nilak | 634 | 462 | 213 |
Seita Saghani | 933 | 385 | 494 |
Serpent shapeshifters | 628 | 487 | 190 |
Shanty Town | 460 | 608 | 51 |
Shapeshifter guild | 564 | 462 | 179 |
Shrine of Basin | 490 | 724 | 93 |
Shrine of Little River | 707 | 743 | 230 |
Shrine of South Cape | 925 | 833 | 465 |
Small Hilltown | 557 | 545 | 101 |
Snow Troll Camp | 453 | 377 | 260 |
Solacia | 686 | 648 | 181 |
Sorcerer Guild | 882 | 809 | 416 |
Southern Thief Hideout | 560 | 660 | 61 |
Spider shapeshifters | 523 | 468 | 164 |
Sraak's Inn | 925 | 436 | 463 |
Stag of Erwat wayhouse | 592 | 674 | 96 |
Stone Cairn | 798 | 610 | 293 |
Stone Circle | 770 | 483 | 304 |
Stormfury Pass | 1000 | 448 | 528 |
Strange Forest | 676 | 689 | 180 |
Survivalist Guild | 525 | 614 | 26 |
Swamp Shrine | 701 | 586 | 201 |
Tavern of Winter | 1004 | 300 | 599 |
Temple oGale's Farm House | 514 | 620 | 15 |
Temple of the Dead | 485 | 628 | 20 |
Temporary Hut | 1054 | 591 | 550 |
The Caverns of ice | 1189 | 454 | 706 |
The Society of Dazhora | 1073 | 532 | 576 |
Thief Hideout | 623 | 421 | 241 |
Tower of Pegasus | 943 | 437 | 479 |
Tree shapeshifters | 620 | 442 | 222 |
Underground smuggler fort | 971 | 717 | 473 |
Vaerlon | 505 | 632 | 0 |
Vekkak Hunting Grounds | 465 | 332 | 302 |
Village of Adroal | 568 | 493 | 152 |
Village of Mold Men | 940 | 662 | 436 |
Village of Shadowville | 740 | 533 | 255 |
Waelhart | 721 | 494 | 256 |
Western tunnel to Cenedoiss | 863 | 672 | 360 |
Windmill | 483 | 740 | 110 |
Wolf shapeshifters | 502 | 498 | 134 |
Woods Province of Shamrock | 643 | 624 | 138 |
The Procedure
- In Firefox, go to: https://naga.icesus.org/icesus/map_full/
- Open the inspector: ctrl+shift+i
- Find the div with class "map-full-wrapper"
- Hit applications and/or right click, find copy, expand, hit copy inner html
- Paste this in a file icesus_atlas.txt
- Get Python 3
- Paste the below script in the same directory as icesus_atlas.txt
- Do: python script.py > out.txt
- out.txt contains markup for the above table.
The Script
import re import math from collections import namedtuple f = open("icesus_atlas.txt") txt = f.read() def try_pat(pattern): return re.finditer(pattern, txt) matches = try_pat(r"\?[^\w\(]*([\w\s'.]*)\((\d+)[^\(\)]*?,[^\(\)]*?(\d+)\)") Area = namedtuple("Area", ["name", "x", "y"]) areas = [] for m in matches: n, x, y = m.group(1, 2, 3) # Try to clean up the name: get rid of all repeated upper case letters at # the beginning, and any lower case letter followed by an upper case letter. cleaned1 = re.match("[A-Z]*([A-Z][^A-Z].*)", n) cleaned2 = re.match("[a-z]*([A-Z][^A-Z].*)", n) if cleaned1 is not None and len(cleaned1.group(1)): n = cleaned1.group(1) if cleaned2 is not None and len(cleaned2.group(1)): n = cleaned2.group(1) areas.append(Area(name=n, x=x, y=y)) # This script mostly extracts all the areas, but it misses Vaerlon because # it's not marked with ? on the map. In general this can't be perfect, but # Vaerlon is important enough that we want to add it manually. vaerlon = Area(name="Vaerlon", x="505", y="632") areas.append(vaerlon) print('{| class="wikitable sortable"') print("|-") print("! Name") print("! X") print("! Y") print("! Distance From Vaerlon") vaer_x, vaer_y = (505, 632) areas.sort(key=lambda a: a.name) for a in areas: vaer_dist = int(math.sqrt((int(a.x) - vaer_x) ** 2 + (int(a.y) - vaer_y) ** 2)) print("|-") print("|{} || {} || {} || {}".format(a.name, a.x, a.y, vaer_dist)) print("|}")