Area Coordinate List

From icesus
Jump to navigation Jump to search


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

  1. In Firefox, go to: https://naga.icesus.org/icesus/map_full/
  2. Open the inspector: ctrl+shift+i
  3. Find the div with class "map-full-wrapper"
  4. Hit applications and/or right click, find copy, expand, hit copy inner html
  5. Paste this in a file icesus_atlas.txt
  6. Get Python 3
  7. Paste the below script in the same directory as icesus_atlas.txt
  8. Do: python script.py > out.txt
  9. 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("|}")