diff --git a/android/Images/TileSets/Default/AtollOverlay.png b/android/Images/TileSets/Default/AtollOverlay.png new file mode 100644 index 00000000..c062e982 Binary files /dev/null and b/android/Images/TileSets/Default/AtollOverlay.png differ diff --git a/android/Images/TileSets/Default/Hexagon.png b/android/Images/TileSets/Default/Hexagon.png index 092bb878..73565b3e 100644 Binary files a/android/Images/TileSets/Default/Hexagon.png and b/android/Images/TileSets/Default/Hexagon.png differ diff --git a/android/Images/TileSets/Default/IceOverlay.png b/android/Images/TileSets/Default/IceOverlay.png new file mode 100644 index 00000000..d17766aa Binary files /dev/null and b/android/Images/TileSets/Default/IceOverlay.png differ diff --git a/android/Images/TileSets/FantasyHex/Hexagon.png b/android/Images/TileSets/FantasyHex/Hexagon.png index 092bb878..8601b647 100644 Binary files a/android/Images/TileSets/FantasyHex/Hexagon.png and b/android/Images/TileSets/FantasyHex/Hexagon.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Coast+Atoll.png b/android/Images/TileSets/FantasyHex/Tiles/Coast+Atoll.png new file mode 100644 index 00000000..ea6c68c4 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Coast+Atoll.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Coast+Ice.png b/android/Images/TileSets/FantasyHex/Tiles/Coast+Ice.png new file mode 100644 index 00000000..1f81ca44 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Coast+Ice.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Ocean+Atoll.png b/android/Images/TileSets/FantasyHex/Tiles/Ocean+Atoll.png new file mode 100644 index 00000000..a9964a04 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Ocean+Atoll.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Ocean+Ice.png b/android/Images/TileSets/FantasyHex/Tiles/Ocean+Ice.png new file mode 100644 index 00000000..f7968963 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Ocean+Ice.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Snow.png b/android/Images/TileSets/FantasyHex/Tiles/Snow.png new file mode 100644 index 00000000..b30b6d00 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Snow.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 0f5ab097..f38ef743 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -6,2387 +6,2310 @@ filter: MipMapLinearLinear,MipMapLinearLinear repeat: none BuildingIcons/Alhambra rotate: false - xy: 1058, 1532 + xy: 132, 1442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Angkor Wat rotate: false - xy: 1466, 1474 + xy: 540, 1442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Apollo Program rotate: false - xy: 1772, 1446 + xy: 1896, 1432 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Aqueduct rotate: false - xy: 1874, 1446 + xy: 2, 1430 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Armory rotate: false - xy: 206, 1434 + xy: 1422, 1410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Bank rotate: false - xy: 1616, 1372 + xy: 1728, 1330 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Barracks rotate: false - xy: 1922, 1344 + xy: 846, 1322 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Bazaar rotate: false - xy: 410, 1336 + xy: 1050, 1308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Big Ben rotate: false - xy: 512, 1336 + xy: 1152, 1308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Brandenburg Gate rotate: false - xy: 716, 1328 + xy: 716, 1294 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Broadcast Tower rotate: false - xy: 818, 1328 + xy: 104, 1238 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Burial Tomb rotate: false - xy: 1124, 1270 + xy: 410, 1238 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/CN Tower rotate: false - xy: 1226, 1270 + xy: 512, 1238 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Castle rotate: false - xy: 1838, 1242 + xy: 818, 1220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Chichen Itza rotate: false - xy: 104, 1230 + xy: 1430, 1206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Circus rotate: false - xy: 920, 1226 + xy: 308, 1136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Circus Maximus rotate: false - xy: 1022, 1226 + xy: 410, 1136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Colosseum rotate: false - xy: 1838, 1140 + xy: 818, 1118 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Colossus rotate: false - xy: 1940, 1140 + xy: 920, 1104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Courthouse rotate: false - xy: 1022, 1124 + xy: 410, 1034 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Cristo Redentor rotate: false - xy: 1124, 1066 + xy: 512, 1034 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Eiffel Tower rotate: false - xy: 104, 1026 + xy: 1430, 1002 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Factory rotate: false - xy: 1022, 1022 + xy: 410, 932 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Forbidden Palace rotate: false - xy: 1940, 936 + xy: 920, 900 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Forge rotate: false - xy: 512, 928 + xy: 1226, 900 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Granary rotate: false - xy: 1328, 862 + xy: 1532, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Great Wall rotate: false - xy: 1838, 834 + xy: 818, 812 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hagia Sophia rotate: false - xy: 104, 822 + xy: 1430, 798 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanging Gardens rotate: false - xy: 206, 822 + xy: 716, 784 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanse rotate: false - xy: 716, 818 + xy: 104, 728 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Harbor rotate: false - xy: 818, 818 + xy: 206, 728 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hermitage rotate: false - xy: 1022, 818 + xy: 410, 728 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Himeji Castle rotate: false - xy: 1226, 760 + xy: 614, 728 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hospital rotate: false - xy: 1634, 732 + xy: 1940, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hubble Space Telescope rotate: false - xy: 1736, 732 + xy: 2, 716 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hydro Plant rotate: false - xy: 1940, 732 + xy: 920, 696 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Ironworks rotate: false - xy: 818, 716 + xy: 308, 626 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Kremlin rotate: false - xy: 1838, 630 + xy: 920, 594 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Krepost rotate: false - xy: 1940, 630 + xy: 1022, 594 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Leaning Tower of Pisa rotate: false - xy: 716, 614 + xy: 206, 524 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Library rotate: false - xy: 920, 614 + xy: 410, 524 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Lighthouse rotate: false - xy: 1022, 614 + xy: 512, 524 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Longhouse rotate: false - xy: 1226, 556 + xy: 1838, 520 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Machu Picchu rotate: false - xy: 1634, 528 + xy: 2, 512 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Manhattan Project rotate: false - xy: 1838, 528 + xy: 920, 492 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Market rotate: false - xy: 512, 520 + xy: 1328, 492 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Medical Lab rotate: false - xy: 920, 512 + xy: 410, 422 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Military Academy rotate: false - xy: 1328, 454 + xy: 1532, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mint rotate: false - xy: 1634, 426 + xy: 2, 410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monastery rotate: false - xy: 512, 418 + xy: 1328, 390 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monument rotate: false - xy: 104, 414 + xy: 716, 376 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mud Pyramid Mosque rotate: false - xy: 716, 410 + xy: 206, 320 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mughal Fort rotate: false - xy: 818, 410 + xy: 308, 320 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Museum rotate: false - xy: 920, 410 + xy: 410, 320 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/National College rotate: false - xy: 1430, 352 + xy: 1634, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Neuschwanstein rotate: false - xy: 1634, 324 + xy: 2, 308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Notre Dame rotate: false - xy: 1736, 324 + xy: 818, 302 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Nuclear Plant rotate: false - xy: 308, 316 + xy: 1124, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Observatory rotate: false - xy: 512, 316 + xy: 1328, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Opera House rotate: false - xy: 206, 312 + xy: 614, 219 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Oxford University rotate: false - xy: 818, 308 + xy: 206, 218 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Palace rotate: false - xy: 920, 308 + xy: 308, 218 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Paper Maker rotate: false - xy: 1124, 251 + xy: 512, 218 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Pentagon rotate: false - xy: 1532, 250 + xy: 1736, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Porcelain Tower rotate: false - xy: 716, 206 + xy: 104, 116 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Public School rotate: false - xy: 1022, 206 + xy: 410, 116 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Research Lab rotate: false - xy: 1940, 120 + xy: 1022, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Booster rotate: false - xy: 1022, 104 + xy: 410, 14 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Cockpit rotate: false - xy: 1124, 47 + xy: 512, 14 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Engine rotate: false - xy: 1226, 46 + xy: 1838, 10 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Stasis Chamber rotate: false - xy: 1328, 46 + xy: 1532, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Satrap's Court rotate: false - xy: 1634, 18 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Seaport - rotate: false - xy: 1940, 18 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Sistine Chapel - rotate: false - xy: 920, 2 + xy: 2, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 FlagIcons/Czech rotate: false - xy: 1262, 1706 + xy: 204, 1674 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Dutch rotate: false - xy: 1392, 1706 + xy: 334, 1674 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/English rotate: false - xy: 1522, 1706 + xy: 464, 1674 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/French rotate: false - xy: 1652, 1706 + xy: 594, 1674 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/German rotate: false - xy: 583, 1670 + xy: 724, 1674 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Indonesian rotate: false - xy: 713, 1670 + xy: 2, 1662 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Italian rotate: false - xy: 204, 1666 + xy: 132, 1544 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Japanese rotate: false - xy: 334, 1666 + xy: 262, 1544 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Korean rotate: false - xy: 2, 1654 + xy: 392, 1544 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Malay rotate: false - xy: 1262, 1576 + xy: 522, 1544 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Polish rotate: false - xy: 1392, 1576 + xy: 652, 1544 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Portuguese rotate: false - xy: 1522, 1576 + xy: 1743, 1534 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Romanian rotate: false - xy: 1652, 1576 + xy: 1873, 1534 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Russian rotate: false - xy: 1782, 1548 + xy: 2, 1532 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Simplified_Chinese rotate: false - xy: 1912, 1548 + xy: 1042, 1512 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Spanish rotate: false - xy: 464, 1540 + xy: 1172, 1512 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Thai rotate: false - xy: 594, 1540 + xy: 1302, 1512 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Traditional_Chinese rotate: false - xy: 724, 1540 + xy: 1432, 1512 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Turkish rotate: false - xy: 132, 1536 + xy: 1562, 1512 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Ukrainian rotate: false - xy: 262, 1536 + xy: 782, 1498 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 ImprovementIcons/Academy rotate: false - xy: 464, 1694 + xy: 1945, 1944 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Ancient ruins rotate: false - xy: 1364, 1474 + xy: 438, 1442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Barbarian encampment rotate: false - xy: 1820, 1344 + xy: 2, 1328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Camp rotate: false - xy: 1532, 1270 + xy: 1662, 1228 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/City ruins rotate: false - xy: 1124, 1168 + xy: 512, 1136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Customs house rotate: false - xy: 1532, 1066 + xy: 1736, 1024 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Farm rotate: false - xy: 1226, 964 + xy: 614, 932 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Fishing Boats rotate: false - xy: 1634, 936 + xy: 1940, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Landmark rotate: false - xy: 512, 622 + xy: 1328, 594 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Lumber mill rotate: false - xy: 1430, 556 + xy: 1634, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Manufactory rotate: false - xy: 1940, 528 + xy: 1022, 492 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Mine rotate: false - xy: 1532, 454 + xy: 1736, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Moai rotate: false - xy: 1838, 426 + xy: 920, 390 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Oil well rotate: false - xy: 104, 312 + xy: 716, 274 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Pasture rotate: false - xy: 1328, 250 + xy: 1532, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Plantation rotate: false - xy: 614, 214 + xy: 1430, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Quarry rotate: false - xy: 1226, 148 + xy: 1838, 112 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Road rotate: false - xy: 614, 112 + xy: 1430, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/America rotate: false - xy: 1262, 1474 + xy: 336, 1442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Arabia rotate: false - xy: 392, 1438 + xy: 912, 1424 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Babylon rotate: false - xy: 1208, 1372 + xy: 410, 1340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/China rotate: false - xy: 206, 1230 + xy: 716, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/CityState rotate: false - xy: 1430, 1168 + xy: 1634, 1126 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Egypt rotate: false - xy: 614, 1030 + xy: 1328, 1002 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/England rotate: false - xy: 920, 1022 + xy: 308, 932 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/France rotate: false - xy: 614, 928 + xy: 1328, 900 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Germany rotate: false - xy: 1124, 862 + xy: 512, 830 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Greece rotate: false - xy: 410, 826 + xy: 1124, 798 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/India rotate: false - xy: 410, 724 + xy: 1226, 696 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Iroquois rotate: false - xy: 920, 716 + xy: 410, 626 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Japan rotate: false - xy: 1226, 658 + xy: 1838, 622 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Korea rotate: false - xy: 1736, 630 + xy: 818, 608 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Mongolia rotate: false - xy: 614, 418 + xy: 1430, 390 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Persia rotate: false - xy: 1634, 222 + xy: 2, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Polynesia rotate: false - xy: 206, 210 + xy: 614, 117 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Rome rotate: false - xy: 818, 104 + xy: 206, 14 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Russia rotate: false - xy: 920, 104 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Siam - rotate: false - xy: 104, 6 + xy: 308, 14 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Banner rotate: false - xy: 1718, 1344 + xy: 1932, 1330 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Circle rotate: false - xy: 1868, 1858 + xy: 1743, 1664 size: 178, 178 orig: 178, 178 offset: 0, 0 index: -1 OtherIcons/Close rotate: false - xy: 1634, 1140 + xy: 1940, 1126 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Crosshair rotate: false - xy: 1328, 1066 + xy: 1532, 1024 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/DisbandUnit rotate: false - xy: 1736, 1038 + xy: 2, 1022 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Fire rotate: false - xy: 1532, 964 + xy: 1736, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Hexagon rotate: false - xy: 304, 1796 - size: 277, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -TileSets/Default/Hexagon - rotate: false - xy: 304, 1796 - size: 277, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Hexagon - rotate: false - xy: 304, 1796 + xy: 304, 1804 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 OtherIcons/MenuIcon rotate: false - xy: 1022, 512 + xy: 512, 422 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pentagon rotate: false - xy: 2, 232 + xy: 1940, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pillage rotate: false - xy: 512, 214 + xy: 1328, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Puppet rotate: false - xy: 1124, 149 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Shield - rotate: false - xy: 512, 10 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Sleep - rotate: false - xy: 1022, 2 + xy: 512, 116 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Triangle rotate: false - xy: 1868, 1678 + xy: 862, 1628 size: 178, 178 orig: 178, 178 offset: 0, 0 index: -1 OtherIcons/civTableBackground rotate: false - xy: 2, 1986 + xy: 2, 1994 size: 300, 50 orig: 300, 50 offset: 0, 0 index: -1 ResourceIcons/Aluminum rotate: false - xy: 1160, 1532 + xy: 234, 1442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Bananas rotate: false - xy: 1514, 1372 + xy: 1626, 1330 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Cattle rotate: false - xy: 308, 1234 + xy: 1022, 1206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Coal rotate: false - xy: 1736, 1140 + xy: 2, 1124 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Cotton rotate: false - xy: 920, 1124 + xy: 308, 1034 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Deer rotate: false - xy: 2, 1042 + xy: 1838, 1024 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Dyes rotate: false - xy: 1838, 1038 + xy: 818, 1016 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Fish rotate: false - xy: 2, 940 + xy: 1838, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Furs rotate: false - xy: 206, 924 + xy: 716, 886 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Gems rotate: false - xy: 1022, 920 + xy: 410, 830 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Gold rotate: false - xy: 1226, 862 + xy: 614, 830 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Horses rotate: false - xy: 2, 742 + xy: 1736, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Incense rotate: false - xy: 308, 724 + xy: 1124, 696 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Iron rotate: false - xy: 104, 720 + xy: 716, 682 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Ivory rotate: false - xy: 1022, 716 + xy: 512, 626 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Marble rotate: false - xy: 410, 520 + xy: 1226, 492 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Oil rotate: false - xy: 614, 316 + xy: 1430, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Pearls rotate: false - xy: 1430, 250 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Sheep - rotate: false - xy: 410, 10 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Silk - rotate: false - xy: 206, 6 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Silver - rotate: false - xy: 716, 2 + xy: 1634, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Acquire rotate: false - xy: 854, 1532 + xy: 1923, 1740 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/CityConnection rotate: false - xy: 1226, 1168 + xy: 614, 1136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/City_Center_(Civ6) rotate: false - xy: 1532, 1168 + xy: 1736, 1126 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Culture rotate: false - xy: 858, 1836 + xy: 1137, 1844 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Food rotate: false - xy: 1060, 1836 + xy: 1339, 1844 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Gold rotate: false - xy: 1262, 1836 + xy: 1541, 1844 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Happiness rotate: false - xy: 1464, 1836 + xy: 1743, 1844 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Malcontent rotate: false - xy: 1666, 1836 + xy: 2, 1792 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Population rotate: false - xy: 2, 1784 + xy: 1137, 1642 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Production rotate: false - xy: 858, 1634 + xy: 1339, 1642 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Resistance rotate: false - xy: 308, 112 + xy: 1124, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Science rotate: false - xy: 1060, 1634 + xy: 1541, 1642 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 TechIcons/Acoustics rotate: false - xy: 2, 1552 + xy: 1945, 1842 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Agriculture rotate: false - xy: 956, 1532 + xy: 912, 1526 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Animal Husbandry rotate: false - xy: 1568, 1474 + xy: 642, 1442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archaeology rotate: false - xy: 494, 1438 + xy: 1014, 1410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archery rotate: false - xy: 698, 1438 + xy: 1218, 1410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Architecture rotate: false - xy: 104, 1434 + xy: 1320, 1410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Astronomy rotate: false - xy: 902, 1430 + xy: 744, 1396 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Atomic Theory rotate: false - xy: 1004, 1430 + xy: 206, 1340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ballistics rotate: false - xy: 1412, 1372 + xy: 614, 1340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Banking rotate: false - xy: 2, 1348 + xy: 1830, 1330 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Biology rotate: false - xy: 614, 1336 + xy: 1254, 1308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Bronze Working rotate: false - xy: 920, 1328 + xy: 206, 1238 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Calendar rotate: false - xy: 1328, 1270 + xy: 614, 1238 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chemistry rotate: false - xy: 614, 1234 + xy: 1328, 1206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chivalry rotate: false - xy: 716, 1226 + xy: 104, 1136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Civil Service rotate: false - xy: 2, 1144 + xy: 1838, 1126 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combined Arms rotate: false - xy: 308, 1132 + xy: 1022, 1104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combustion rotate: false - xy: 410, 1132 + xy: 1124, 1104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Compass rotate: false - xy: 614, 1132 + xy: 1328, 1104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Computers rotate: false - xy: 104, 1128 + xy: 1430, 1104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Construction rotate: false - xy: 716, 1124 + xy: 104, 1034 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Currency rotate: false - xy: 1430, 1066 + xy: 1634, 1024 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Dynamite rotate: false - xy: 1940, 1038 + xy: 920, 1002 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ecology rotate: false - xy: 308, 1030 + xy: 1022, 1002 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Economics rotate: false - xy: 410, 1030 + xy: 1124, 1002 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Education rotate: false - xy: 512, 1030 + xy: 1226, 1002 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electricity rotate: false - xy: 206, 1026 + xy: 716, 988 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electronics rotate: false - xy: 716, 1022 + xy: 104, 932 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Engineering rotate: false - xy: 818, 1022 + xy: 206, 932 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Fertilizer rotate: false - xy: 1328, 964 + xy: 1532, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Flight rotate: false - xy: 1736, 936 + xy: 2, 920 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Future Tech rotate: false - xy: 716, 920 + xy: 104, 830 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Guilds rotate: false - xy: 512, 826 + xy: 1226, 798 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Gunpowder rotate: false - xy: 614, 826 + xy: 1328, 798 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Horseback Riding rotate: false - xy: 1430, 760 + xy: 1532, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Industrialization rotate: false - xy: 512, 724 + xy: 1328, 696 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Iron Working rotate: false - xy: 206, 720 + xy: 104, 626 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Lasers rotate: false - xy: 206, 618 + xy: 104, 524 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Machinery rotate: false - xy: 2, 538 + xy: 1940, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Masonry rotate: false - xy: 104, 516 + xy: 716, 478 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mass Media (retired) rotate: false - xy: 206, 516 + xy: 104, 422 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mathematics rotate: false - xy: 716, 512 + xy: 206, 422 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metal Casting rotate: false - xy: 1124, 454 + xy: 614, 422 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metallurgy rotate: false - xy: 1226, 454 + xy: 1838, 418 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Military Science rotate: false - xy: 1430, 454 + xy: 1634, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mining rotate: false - xy: 2, 436 + xy: 1940, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mobile Tactics rotate: false - xy: 1940, 426 + xy: 1022, 390 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nanotechnology rotate: false - xy: 1226, 352 + xy: 1838, 316 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Navigation rotate: false - xy: 2, 334 + xy: 1940, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nuclear Fission rotate: false - xy: 1838, 324 + xy: 920, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Optics rotate: false - xy: 716, 308 + xy: 104, 218 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Particle Physics rotate: false - xy: 1226, 250 + xy: 1838, 214 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pharmaceuticals rotate: false - xy: 1838, 222 + xy: 920, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Philosophy rotate: false - xy: 1940, 222 + xy: 1022, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Physics rotate: false - xy: 308, 214 + xy: 1124, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Plastics rotate: false - xy: 104, 210 + xy: 716, 172 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pottery rotate: false - xy: 818, 206 + xy: 206, 116 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Printing Press rotate: false - xy: 920, 206 + xy: 308, 116 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radar rotate: false - xy: 1328, 148 + xy: 1532, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radio rotate: false - xy: 1430, 148 + xy: 1634, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Railroad rotate: false - xy: 1532, 148 + xy: 1736, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Refrigeration rotate: false - xy: 1736, 120 + xy: 818, 98 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Replaceable Parts rotate: false - xy: 1838, 120 + xy: 920, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rifling rotate: false - xy: 512, 112 + xy: 1328, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Robotics rotate: false - xy: 104, 108 + xy: 716, 70 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rocketry rotate: false - xy: 716, 104 + xy: 104, 14 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Sailing rotate: false - xy: 1430, 46 + xy: 1634, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Satellites rotate: false - xy: 2, 28 + xy: 1940, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -TechIcons/Scientific Theory +TileSets/Default/AtollOverlay rotate: false - xy: 1736, 18 + xy: 104, 1340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/CityOverlay rotate: false - xy: 1328, 1168 + xy: 1532, 1126 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/FalloutOverlay rotate: false - xy: 1124, 964 + xy: 512, 932 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Flood plainsOverlay rotate: false - xy: 1838, 936 + xy: 818, 914 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/ForestOverlay rotate: false - xy: 410, 928 + xy: 1124, 900 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/HillOverlay rotate: false - xy: 1124, 760 + xy: 512, 728 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TileSets/Default/IceOverlay + rotate: false + xy: 1022, 696 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/JungleOverlay rotate: false - xy: 1430, 658 + xy: 1634, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/LakesOverlay rotate: false - xy: 308, 622 + xy: 1124, 594 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MarshOverlay rotate: false - xy: 614, 520 + xy: 1430, 492 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MountainOverlay rotate: false - xy: 206, 414 + xy: 104, 320 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/NaturalWonderOverlay rotate: false - xy: 1532, 352 + xy: 1736, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/OasisOverlay rotate: false - xy: 410, 316 + xy: 1226, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Railroad rotate: false - xy: 1634, 120 + xy: 2, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Railroad rotate: false - xy: 1634, 120 + xy: 2, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/FantasyHex/CrosshatchHexagon rotate: false - xy: 583, 1800 + xy: 862, 1808 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 TileSets/Default/CrosshatchHexagon rotate: false - xy: 583, 1800 + xy: 862, 1808 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 +TileSets/FantasyHex/Hexagon + rotate: false + xy: 583, 1804 + size: 277, 240 + orig: 277, 240 + offset: 0, 0 + index: -1 +TileSets/Default/Hexagon + rotate: false + xy: 583, 1804 + size: 277, 240 + orig: 277, 240 + offset: 0, 0 + index: -1 TileSets/FantasyHex/Railroad rotate: false - xy: 2, 130 + xy: 1940, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Anti-Aircraft Gun rotate: false - xy: 1670, 1474 + xy: 1692, 1432 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Anti-Tank Gun rotate: false - xy: 2, 1450 + xy: 1794, 1432 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Archer rotate: false - xy: 596, 1438 + xy: 1116, 1410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Artillery rotate: false - xy: 800, 1430 + xy: 1524, 1410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/B17 rotate: false - xy: 1106, 1430 + xy: 308, 1340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ballista rotate: false - xy: 1310, 1372 + xy: 512, 1340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Battleship rotate: false - xy: 308, 1336 + xy: 948, 1308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Bomber rotate: false - xy: 104, 1332 + xy: 1356, 1308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Bowman rotate: false - xy: 206, 1332 + xy: 1458, 1308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Brute rotate: false - xy: 1022, 1328 + xy: 308, 1238 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Camel Archer rotate: false - xy: 1430, 1270 + xy: 1560, 1228 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cannon rotate: false - xy: 2, 1246 + xy: 1764, 1228 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Caravel rotate: false - xy: 1634, 1242 + xy: 1866, 1228 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Carrier rotate: false - xy: 1736, 1242 + xy: 2, 1226 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Catapult rotate: false - xy: 1940, 1242 + xy: 920, 1206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cavalry rotate: false - xy: 410, 1234 + xy: 1124, 1206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Chariot Archer rotate: false - xy: 512, 1234 + xy: 1226, 1206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Chu-Ko-Nu rotate: false - xy: 818, 1226 + xy: 206, 1136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Companion Cavalry rotate: false - xy: 512, 1132 + xy: 1226, 1104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Conquistador rotate: false - xy: 206, 1128 + xy: 716, 1090 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cossack rotate: false - xy: 818, 1124 + xy: 206, 1034 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Crossbowman rotate: false - xy: 1226, 1066 + xy: 614, 1034 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Destroyer rotate: false - xy: 1634, 1038 + xy: 1940, 1024 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Fighter rotate: false - xy: 1430, 964 + xy: 1634, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Foreign Legion rotate: false - xy: 308, 928 + xy: 1022, 900 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Frigate rotate: false - xy: 104, 924 + xy: 1430, 900 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Galleass rotate: false - xy: 818, 920 + xy: 206, 830 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Gatling Gun rotate: false - xy: 920, 920 + xy: 308, 830 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Artist rotate: false - xy: 1430, 862 + xy: 1634, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Engineer rotate: false - xy: 1532, 862 + xy: 1736, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great General rotate: false - xy: 2, 844 + xy: 1838, 826 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 OtherIcons/Star rotate: false - xy: 2, 844 + xy: 1838, 826 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 UnitIcons/Great Merchant rotate: false - xy: 1634, 834 + xy: 1940, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Scientist rotate: false - xy: 1736, 834 + xy: 2, 818 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Bomber rotate: false - xy: 1940, 834 + xy: 920, 798 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Infantry rotate: false - xy: 308, 826 + xy: 1022, 798 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Helicopter rotate: false - xy: 920, 818 + xy: 308, 728 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hoplite rotate: false - xy: 1328, 760 + xy: 1838, 724 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Horseman rotate: false - xy: 1532, 760 + xy: 1634, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hwach'a rotate: false - xy: 1838, 732 + xy: 818, 710 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Infantry rotate: false - xy: 614, 724 + xy: 1430, 696 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ironclad rotate: false - xy: 716, 716 + xy: 206, 626 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Janissary rotate: false - xy: 1124, 658 + xy: 614, 626 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Jet Fighter rotate: false - xy: 1328, 658 + xy: 1532, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Keshik rotate: false - xy: 1532, 658 + xy: 1736, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Khan rotate: false - xy: 2, 640 + xy: 1940, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Knight rotate: false - xy: 1634, 630 + xy: 2, 614 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Lancer rotate: false - xy: 410, 622 + xy: 1226, 594 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landship rotate: false - xy: 614, 622 + xy: 1430, 594 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landsknecht rotate: false - xy: 104, 618 + xy: 716, 580 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Legion rotate: false - xy: 818, 614 + xy: 308, 524 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longbowman rotate: false - xy: 1124, 556 + xy: 614, 524 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longswordsman rotate: false - xy: 1328, 556 + xy: 1532, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Machine Gun rotate: false - xy: 1532, 556 + xy: 1736, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mandekalu Cavalry rotate: false - xy: 1736, 528 + xy: 818, 506 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Maori Warrior rotate: false - xy: 308, 520 + xy: 1124, 492 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mechanized Infantry rotate: false - xy: 818, 512 + xy: 308, 422 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Minuteman rotate: false - xy: 1736, 426 + xy: 818, 404 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Modern Armor rotate: false - xy: 308, 418 + xy: 1124, 390 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mohawk Warrior rotate: false - xy: 410, 418 + xy: 1226, 390 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketeer rotate: false - xy: 1022, 410 + xy: 512, 320 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketman rotate: false - xy: 1124, 353 + xy: 614, 321 size: 100, 99 orig: 100, 99 offset: 0, 0 index: -1 UnitIcons/Naresuan's Elephant rotate: false - xy: 1328, 352 + xy: 1532, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Nuclear Missile rotate: false - xy: 1940, 324 + xy: 1022, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Panzer rotate: false - xy: 1022, 308 + xy: 410, 218 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Persian Immortal rotate: false - xy: 1736, 222 + xy: 818, 200 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Pikeman rotate: false - xy: 410, 214 + xy: 1226, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rifleman rotate: false - xy: 410, 112 + xy: 1226, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rocket Artillery rotate: false - xy: 206, 108 + xy: 614, 15 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Samurai rotate: false - xy: 1532, 46 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Scout - rotate: false - xy: 1838, 18 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Settler - rotate: false - xy: 308, 10 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Ship of the Line - rotate: false - xy: 614, 10 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Sipahi - rotate: false - xy: 818, 2 + xy: 1736, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -2397,2683 +2320,2809 @@ size: 2048,1024 format: RGBA8888 filter: MipMapLinearLinear,MipMapLinearLinear repeat: none -BuildingIcons/Solar Plant - rotate: false - xy: 2, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Spaceship Factory +BuildingIcons/Seaport rotate: false xy: 104, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -BuildingIcons/Stable - rotate: false - xy: 104, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Stadium - rotate: false - xy: 206, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Statue of Liberty - rotate: false - xy: 308, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Stock Exchange - rotate: false - xy: 308, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Stone Works - rotate: false - xy: 2, 412 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Stonehenge - rotate: false - xy: 104, 514 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Sydney Opera House - rotate: false - xy: 2, 310 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Taj Mahal - rotate: false - xy: 104, 412 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Temple - rotate: false - xy: 308, 616 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Terracotta Army - rotate: false - xy: 512, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Great Library - rotate: false - xy: 614, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Great Lighthouse - rotate: false - xy: 2, 208 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Louvre - rotate: false - xy: 104, 310 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Oracle - rotate: false - xy: 206, 412 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Pyramids - rotate: false - xy: 410, 616 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Theatre - rotate: false - xy: 614, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/University - rotate: false - xy: 614, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Walls - rotate: false - xy: 818, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Walls of Babylon - rotate: false - xy: 2, 4 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Wat - rotate: false - xy: 410, 411 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Windmill - rotate: false - xy: 716, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Workshop - rotate: false - xy: 206, 106 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ImprovementIcons/Trading post - rotate: false - xy: 2, 106 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Songhai - rotate: false - xy: 2, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Spain - rotate: false - xy: 2, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/The Ottomans - rotate: false - xy: 308, 514 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Aircraft - rotate: false - xy: 818, 768 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/BackArrow - rotate: false - xy: 206, 2 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Down - rotate: false - xy: 1438, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Stop - rotate: false - xy: 206, 616 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/TableBackground - rotate: false - xy: 1284, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Up - rotate: false - xy: 1596, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/whiteDot - rotate: false - xy: 575, 511 - size: 1, 1 - orig: 1, 1 - offset: 0, 0 - index: -1 -PolicyIcons/Aristocracy - rotate: false - xy: 1022, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Citizenship - rotate: false - xy: 1126, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Civil Society - rotate: false - xy: 512, 345 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Collective Rule - rotate: false - xy: 1230, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Constitution - rotate: false - xy: 1282, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Democracy - rotate: false - xy: 1386, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Entrepreneurship - rotate: false - xy: 1542, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Fascism - rotate: false - xy: 1698, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Religion - rotate: false - xy: 1854, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Speech - rotate: false - xy: 1906, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Thought - rotate: false - xy: 1958, 972 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Humanism - rotate: false - xy: 666, 512 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Landed Elite - rotate: false - xy: 258, 54 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Legalism - rotate: false - xy: 258, 2 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Mandate Of Heaven - rotate: false - xy: 462, 257 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Mercantilism - rotate: false - xy: 564, 449 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Meritocracy - rotate: false - xy: 564, 397 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Militarism - rotate: false - xy: 564, 345 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Military Caste - rotate: false - xy: 566, 293 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Military Tradition - rotate: false - xy: 566, 241 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Monarchy - rotate: false - xy: 616, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Oligarchy - rotate: false - xy: 668, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Organized Religion - rotate: false - xy: 668, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Patronage - rotate: false - xy: 668, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Police State - rotate: false - xy: 618, 304 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Populism - rotate: false - xy: 618, 252 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Professional Army - rotate: false - xy: 670, 304 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Protectionism - rotate: false - xy: 670, 252 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Reformation - rotate: false - xy: 412, 205 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Representation - rotate: false - xy: 820, 716 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Republic - rotate: false - xy: 820, 664 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Scientific Revolution - rotate: false - xy: 872, 716 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Secularism - rotate: false - xy: 1024, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Sovereignty - rotate: false - xy: 1232, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Theocracy - rotate: false - xy: 1388, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Total War - rotate: false - xy: 1440, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Trade Unions - rotate: false - xy: 1492, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Universal Suffrage - rotate: false - xy: 1544, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Warrior Code - rotate: false - xy: 1700, 920 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -ResourceIcons/Spices - rotate: false - xy: 2, 616 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Stone - rotate: false - xy: 410, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Sugar - rotate: false - xy: 410, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Uranium - rotate: false - xy: 716, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Whales - rotate: false - xy: 512, 514 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Wheat - rotate: false - xy: 614, 616 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Wine - rotate: false - xy: 818, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -StatIcons/InterceptRange - rotate: false - xy: 870, 768 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/Movement - rotate: false - xy: 616, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/Range - rotate: false - xy: 618, 200 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/RangedStrength - rotate: false - xy: 670, 200 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/Specialist - rotate: false - xy: 206, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TechIcons/Steam Power +BuildingIcons/Sistine Chapel rotate: false xy: 104, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -TechIcons/Steel +BuildingIcons/Solar Plant rotate: false - xy: 206, 718 + xy: 308, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -TechIcons/The Wheel +BuildingIcons/Spaceship Factory rotate: false - xy: 512, 718 + xy: 2, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -TechIcons/Theology - rotate: false - xy: 716, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TechIcons/Trapping - rotate: false - xy: 104, 208 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TechIcons/Writing - rotate: false - xy: 308, 208 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Academy - rotate: false - xy: 2010, 986 - size: 32, 36 - orig: 32, 36 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Aluminum - rotate: false - xy: 920, 840 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Ancient ruins - rotate: false - xy: 464, 227 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Atoll - rotate: false - xy: 954, 840 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Bananas - rotate: false - xy: 342, 126 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Barbarian encampment - rotate: false - xy: 750, 636 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Barringer Crater - rotate: false - xy: 1058, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Camp+Deer - rotate: false - xy: 1092, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Camp+Furs - rotate: false - xy: 1126, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Camp+Ivory - rotate: false - xy: 1160, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Cattle - rotate: false - xy: 1262, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Cerro de Potosi - rotate: false - xy: 1330, 886 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Citadel - rotate: false - xy: 1432, 883 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/City - rotate: false - xy: 1466, 883 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+City - rotate: false - xy: 1466, 883 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+City - rotate: false - xy: 1466, 883 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/City ruins - rotate: false - xy: 1500, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coal - rotate: false - xy: 1568, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coast - rotate: false - xy: 1602, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coast+Oil well - rotate: false - xy: 1636, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Cotton - rotate: false - xy: 1772, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Customs house - rotate: false - xy: 852, 627 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Deer - rotate: false - xy: 886, 634 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert - rotate: false - xy: 410, 123 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+City - rotate: false - xy: 1856, 907 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Fallout - rotate: false - xy: 1890, 914 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Farm - rotate: false - xy: 1924, 914 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Flood plains - rotate: false - xy: 1958, 912 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Flood plains+Farm - rotate: false - xy: 1024, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Flood plains+Trading post - rotate: false - xy: 1058, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Oasis - rotate: false - xy: 1092, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Trading post - rotate: false - xy: 1126, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Dyes - rotate: false - xy: 1194, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/El Dorado - rotate: false - xy: 1228, 861 - size: 32, 29 - orig: 32, 29 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Fish - rotate: false - xy: 1262, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Fishing Boats - rotate: false - xy: 1296, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Fishing Boats+Whales - rotate: false - xy: 1330, 856 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Fort - rotate: false - xy: 1398, 855 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Fountain of Youth - rotate: false - xy: 1432, 849 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Furs - rotate: false - xy: 1500, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Gems - rotate: false - xy: 1636, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Gold - rotate: false - xy: 1670, 862 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grand Mesa - rotate: false - xy: 1704, 858 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland - rotate: false - xy: 1738, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Fallout - rotate: false - xy: 1772, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Farm - rotate: false - xy: 1806, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest - rotate: false - xy: 1022, 827 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Aluminum - rotate: false - xy: 1056, 827 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Camp - rotate: false - xy: 1090, 827 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Deer - rotate: false - xy: 1124, 827 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Furs - rotate: false - xy: 498, 208 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Coal - rotate: false - xy: 498, 175 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Gold - rotate: false - xy: 532, 208 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Iron - rotate: false - xy: 532, 175 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Lumber mill - rotate: false - xy: 566, 208 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Silver - rotate: false - xy: 566, 175 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Jungle - rotate: false - xy: 1992, 936 - size: 32, 34 - orig: 32, 34 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Jungle+Camp - rotate: false - xy: 1992, 900 - size: 32, 34 - orig: 32, 34 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Jungle+Trading post - rotate: false - xy: 1840, 871 - size: 32, 34 - orig: 32, 34 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Marsh - rotate: false - xy: 444, 122 - size: 32, 29 - orig: 32, 29 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Trading post - rotate: false - xy: 1874, 877 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Great Barrier Reef - rotate: false - xy: 1942, 882 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill - rotate: false - xy: 1976, 836 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Fallout - rotate: false - xy: 2010, 866 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest - rotate: false - xy: 2010, 819 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Camp - rotate: false - xy: 718, 589 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Camp+Deer - rotate: false - xy: 718, 542 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Camp+Furs - rotate: false - xy: 752, 589 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill - rotate: false - xy: 752, 542 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Mine - rotate: false - xy: 786, 602 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Quarry - rotate: false - xy: 786, 568 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Terrace Farm - rotate: false - xy: 786, 534 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Horses - rotate: false - xy: 720, 482 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Incense - rotate: false - xy: 720, 422 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Iron - rotate: false - xy: 720, 392 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Ivory - rotate: false - xy: 754, 482 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Krakatoa - rotate: false - xy: 722, 297 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Lakes - rotate: false - xy: 722, 267 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Landmark - rotate: false - xy: 756, 328 - size: 32, 36 - orig: 32, 36 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Manufactory - rotate: false - xy: 310, 55 - size: 32, 39 - orig: 32, 39 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Marble - rotate: false - xy: 310, 25 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Mine - rotate: false - xy: 922, 810 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Moai - rotate: false - xy: 922, 779 - size: 32, 29 - orig: 32, 29 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Mount Fuji - rotate: false - xy: 924, 745 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Mountain - rotate: false - xy: 924, 707 - size: 32, 36 - orig: 32, 36 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Ocean - rotate: false - xy: 958, 662 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Oil - rotate: false - xy: 924, 647 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Oil well - rotate: false - xy: 958, 632 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Old Faithful - rotate: false - xy: 788, 500 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pasture - rotate: false - xy: 788, 412 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pasture+Cattle - rotate: false - xy: 790, 348 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pasture+Horses - rotate: false - xy: 790, 314 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pasture+Sheep - rotate: false - xy: 790, 280 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pasture2 - rotate: false - xy: 788, 382 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pearls - rotate: false - xy: 790, 250 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains - rotate: false - xy: 756, 178 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+City - rotate: false - xy: 722, 170 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Fallout - rotate: false - xy: 790, 160 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Farm - rotate: false - xy: 756, 148 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest - rotate: false - xy: 790, 125 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest+Camp - rotate: false - xy: 1364, 825 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Deer - rotate: false - xy: 1398, 820 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Furs - rotate: false - xy: 1432, 814 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill - rotate: false - xy: 1466, 820 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Jungle - rotate: false - xy: 1500, 823 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post - rotate: false - xy: 1534, 825 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Trading post - rotate: false - xy: 1568, 832 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation - rotate: false - xy: 1602, 830 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Bananas - rotate: false - xy: 1636, 830 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Cotton - rotate: false - xy: 1670, 832 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Dyes - rotate: false - xy: 1704, 828 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Incense - rotate: false - xy: 1738, 830 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Silk - rotate: false - xy: 1772, 830 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Spices - rotate: false - xy: 1806, 830 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Sugar - rotate: false - xy: 1840, 811 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation+Wine - rotate: false - xy: 1874, 817 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Polder - rotate: false - xy: 1908, 824 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Quarry - rotate: false - xy: 1942, 822 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Quarry+Marble - rotate: false - xy: 1976, 806 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Quarry+Stone - rotate: false - xy: 2010, 789 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-Bottom - rotate: false - xy: 886, 602 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-BottomLeft - rotate: false - xy: 920, 585 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-BottomRight - rotate: false - xy: 954, 600 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-Top - rotate: false - xy: 954, 568 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-TopLeft - rotate: false - xy: 1568, 800 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-TopRight - rotate: false - xy: 1602, 798 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Rock of Gibraltar - rotate: false - xy: 1636, 796 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Sheep - rotate: false - xy: 1500, 793 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Silk - rotate: false - xy: 1704, 798 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Silver - rotate: false - xy: 1738, 800 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Spices - rotate: false - xy: 1874, 787 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Stone - rotate: false - xy: 1908, 794 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Sugar - rotate: false - xy: 1976, 776 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra - rotate: false - xy: 1840, 751 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+City - rotate: false - xy: 1874, 750 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Fallout - rotate: false - xy: 1908, 764 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest - rotate: false - xy: 1942, 760 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest+Camp - rotate: false - xy: 1976, 742 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Deer - rotate: false - xy: 1908, 730 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Furs - rotate: false - xy: 1942, 726 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill - rotate: false - xy: 2010, 725 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Trading post - rotate: false - xy: 1976, 712 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Uranium - rotate: false - xy: 498, 145 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Whales - rotate: false - xy: 634, 170 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Wheat - rotate: false - xy: 668, 170 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Wine - rotate: false - xy: 600, 142 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/TopBorder - rotate: false - xy: 1738, 770 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Anti-Aircraft Gun - rotate: false - xy: 308, 126 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Anti-Tank Gun - rotate: false - xy: 716, 636 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Archer - rotate: false - xy: 1024, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Artillery - rotate: false - xy: 1856, 942 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Ballista - rotate: false - xy: 464, 197 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Battleship - rotate: false - xy: 1890, 944 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Berserker - rotate: false - xy: 988, 840 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Bowman - rotate: false - xy: 464, 167 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Brute - rotate: false - xy: 376, 126 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Camel Archer - rotate: false - xy: 784, 636 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cannon - rotate: false - xy: 1194, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Caravel - rotate: false - xy: 1924, 944 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Carrier - rotate: false - xy: 1228, 892 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Catapult - rotate: false - xy: 1958, 942 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cavalry - rotate: false - xy: 1296, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Chariot Archer - rotate: false - xy: 1364, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Chu-Ko-Nu - rotate: false - xy: 1398, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/CivilianLandUnit - rotate: false - xy: 1534, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Companion Cavalry - rotate: false - xy: 1670, 892 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Conquistador - rotate: false - xy: 1704, 892 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cossack - rotate: false - xy: 1738, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Crossbowman - rotate: false - xy: 1806, 890 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cruiser - rotate: false - xy: 818, 636 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Destroyer - rotate: false - xy: 1160, 862 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Foreign Legion - rotate: false - xy: 1364, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Frigate - rotate: false - xy: 1466, 855 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Galleass - rotate: false - xy: 1534, 862 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Galley - rotate: false - xy: 1568, 862 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Gatling Gun - rotate: false - xy: 1602, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Machine Gun - rotate: false - xy: 1602, 860 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Artist - rotate: false - xy: 1908, 884 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Engineer - rotate: false - xy: 1840, 841 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Worker - rotate: false - xy: 1840, 841 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great General - rotate: false - xy: 1874, 847 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Merchant - rotate: false - xy: 1908, 854 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Settler - rotate: false - xy: 1908, 854 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Scientist - rotate: false - xy: 1942, 852 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great War Infantry - rotate: false - xy: 1976, 870 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Infantry - rotate: false - xy: 1976, 870 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Hoplite - rotate: false - xy: 718, 512 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Horseman - rotate: false - xy: 752, 512 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Hwach'a - rotate: false - xy: 720, 452 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Ironclad - rotate: false - xy: 720, 364 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Jaguar - rotate: false - xy: 754, 452 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Janissary - rotate: false - xy: 754, 422 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Keshik - rotate: false - xy: 754, 394 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Khan - rotate: false - xy: 754, 366 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Knight - rotate: false - xy: 722, 334 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Lancer - rotate: false - xy: 722, 237 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/LandUnit - rotate: false - xy: 722, 207 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Warrior - rotate: false - xy: 722, 207 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Landship - rotate: false - xy: 756, 298 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Landsknecht - rotate: false - xy: 756, 268 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Legion - rotate: false - xy: 756, 238 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Longbowman - rotate: false - xy: 756, 208 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Longswordsman - rotate: false - xy: 310, 96 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Mandekalu Cavalry - rotate: false - xy: 344, 98 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Maori Warrior - rotate: false - xy: 344, 68 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Marine - rotate: false - xy: 344, 38 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Mechanized Infantry - rotate: false - xy: 344, 10 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Minuteman - rotate: false - xy: 956, 810 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Mohawk Warrior - rotate: false - xy: 956, 780 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Musketeer - rotate: false - xy: 924, 677 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Musketman - rotate: false - xy: 958, 750 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Naresuan's Elephant - rotate: false - xy: 958, 722 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Norwegian Ski Infantry - rotate: false - xy: 958, 692 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Panzer - rotate: false - xy: 788, 472 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Paratrooper - rotate: false - xy: 788, 442 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Persian Immortal - rotate: false - xy: 790, 220 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Pikeman - rotate: false - xy: 790, 190 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Rifleman - rotate: false - xy: 920, 617 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Rocket Artillery - rotate: false - xy: 1670, 802 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Scout - rotate: false - xy: 1534, 795 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Ship of the Line - rotate: false - xy: 1466, 792 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Sipahi - rotate: false - xy: 1772, 802 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Slinger - rotate: false - xy: 1806, 800 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Spearman - rotate: false - xy: 1840, 781 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Submarine - rotate: false - xy: 1942, 794 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Swordsman - rotate: false - xy: 2010, 759 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Tank - rotate: false - xy: 1670, 772 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Tercio - rotate: false - xy: 1704, 768 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Trebuchet - rotate: false - xy: 1772, 772 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Trireme - rotate: false - xy: 1806, 772 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Turtle Ship - rotate: false - xy: 2010, 697 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/War Chariot - rotate: false - xy: 532, 145 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/War Elephant - rotate: false - xy: 566, 147 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/WaterUnit - rotate: false - xy: 600, 172 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Work Boats - rotate: false - xy: 634, 142 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/road - rotate: false - xy: 512, 501 - size: 61, 11 - orig: 61, 11 - offset: 0, 0 - index: -1 -TileSets/Default/road - rotate: false - xy: 512, 501 - size: 61, 11 - orig: 61, 11 - offset: 0, 0 - index: -1 -UnitIcons/Spearman - rotate: false - xy: 104, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Stealth Bomber - rotate: false - xy: 2, 514 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Submarine - rotate: false - xy: 308, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Swordsman +BuildingIcons/Stable rotate: false xy: 512, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Tank +BuildingIcons/Stadium rotate: false - xy: 206, 514 + xy: 2, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Tercio +BuildingIcons/Statue of Liberty rotate: false - xy: 410, 718 + xy: 104, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Trebuchet +BuildingIcons/Stock Exchange rotate: false - xy: 206, 310 + xy: 512, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Triplane +BuildingIcons/Stone Works + rotate: false + xy: 2, 208 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Stonehenge + rotate: false + xy: 104, 310 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Sydney Opera House + rotate: false + xy: 614, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Taj Mahal + rotate: false + xy: 716, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Temple + rotate: false + xy: 104, 208 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Terracotta Army rotate: false xy: 308, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Trireme +BuildingIcons/The Great Library rotate: false - xy: 410, 513 - size: 100, 101 - orig: 100, 101 + xy: 410, 514 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Turtle Ship +BuildingIcons/The Great Lighthouse rotate: false xy: 512, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/War Chariot +BuildingIcons/The Louvre rotate: false - xy: 104, 106 + xy: 614, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/War Elephant +BuildingIcons/The Oracle + rotate: false + xy: 716, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/The Pyramids + rotate: false + xy: 2, 4 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Theatre rotate: false xy: 206, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Warrior - rotate: false - xy: 308, 310 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Work Boats - rotate: false - xy: 920, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Worker +BuildingIcons/University rotate: false xy: 104, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 +BuildingIcons/Walls + rotate: false + xy: 308, 208 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Walls of Babylon + rotate: false + xy: 410, 310 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Wat + rotate: false + xy: 818, 717 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Windmill + rotate: false + xy: 206, 4 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Workshop + rotate: false + xy: 614, 412 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ImprovementIcons/Trading post + rotate: false + xy: 410, 412 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NationIcons/Siam + rotate: false + xy: 104, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NationIcons/Songhai + rotate: false + xy: 410, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NationIcons/Spain + rotate: false + xy: 104, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NationIcons/The Ottomans + rotate: false + xy: 818, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Aircraft + rotate: false + xy: 308, 54 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/BackArrow + rotate: false + xy: 614, 360 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Down + rotate: false + xy: 1540, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Shield + rotate: false + xy: 206, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Sleep + rotate: false + xy: 206, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Stop + rotate: false + xy: 206, 412 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/TableBackground + rotate: false + xy: 1178, 868 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Up + rotate: false + xy: 1334, 868 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/whiteDot + rotate: false + xy: 983, 817 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +PolicyIcons/Aristocracy + rotate: false + xy: 410, 156 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Citizenship + rotate: false + xy: 1228, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Civil Society + rotate: false + xy: 920, 651 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Collective Rule + rotate: false + xy: 1332, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Constitution + rotate: false + xy: 1384, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Democracy + rotate: false + xy: 1488, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Entrepreneurship + rotate: false + xy: 1644, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Fascism + rotate: false + xy: 1800, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Free Religion + rotate: false + xy: 1956, 972 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Free Speech + rotate: false + xy: 1022, 818 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Free Thought + rotate: false + xy: 1074, 870 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Humanism + rotate: false + xy: 360, 2 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Landed Elite + rotate: false + xy: 768, 462 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Legalism + rotate: false + xy: 870, 563 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Mandate Of Heaven + rotate: false + xy: 922, 547 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Mercantilism + rotate: false + xy: 972, 651 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Meritocracy + rotate: false + xy: 974, 599 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Militarism + rotate: false + xy: 974, 547 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Military Caste + rotate: false + xy: 1024, 766 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Military Tradition + rotate: false + xy: 1024, 714 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Monarchy + rotate: false + xy: 1076, 766 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Oligarchy + rotate: false + xy: 1076, 662 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Organized Religion + rotate: false + xy: 1026, 610 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Patronage + rotate: false + xy: 1026, 558 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Police State + rotate: false + xy: 1078, 610 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Populism + rotate: false + xy: 1078, 558 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Professional Army + rotate: false + xy: 1026, 506 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Protectionism + rotate: false + xy: 1078, 506 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Reformation + rotate: false + xy: 412, 104 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Representation + rotate: false + xy: 464, 104 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Republic + rotate: false + xy: 464, 52 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Scientific Revolution + rotate: false + xy: 616, 308 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Secularism + rotate: false + xy: 668, 308 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Sovereignty + rotate: false + xy: 1178, 920 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Theocracy + rotate: false + xy: 1230, 868 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Total War + rotate: false + xy: 1282, 920 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Trade Unions + rotate: false + xy: 1282, 868 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Universal Suffrage + rotate: false + xy: 1334, 920 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Warrior Code + rotate: false + xy: 1386, 868 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +ResourceIcons/Sheep + rotate: false + xy: 104, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Silk + rotate: false + xy: 206, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Silver + rotate: false + xy: 308, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Spices + rotate: false + xy: 410, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Stone + rotate: false + xy: 614, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Sugar + rotate: false + xy: 410, 616 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Uranium + rotate: false + xy: 206, 106 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Whales + rotate: false + xy: 920, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Wheat + rotate: false + xy: 1022, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Wine + rotate: false + xy: 308, 106 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +StatIcons/InterceptRange + rotate: false + xy: 564, 258 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/Movement + rotate: false + xy: 1076, 714 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/Range + rotate: false + xy: 820, 511 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/RangedStrength + rotate: false + xy: 820, 459 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/Specialist + rotate: false + xy: 308, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Scientific Theory + rotate: false + xy: 2, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Steam Power + rotate: false + xy: 308, 616 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Steel + rotate: false + xy: 410, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/The Wheel + rotate: false + xy: 104, 106 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Theology + rotate: false + xy: 308, 310 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Trapping + rotate: false + xy: 512, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Writing + rotate: false + xy: 716, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Academy + rotate: false + xy: 2008, 986 + size: 32, 36 + orig: 32, 36 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Aluminum + rotate: false + xy: 872, 533 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Ancient ruins + rotate: false + xy: 716, 432 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Atoll + rotate: false + xy: 872, 503 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Bananas + rotate: false + xy: 446, 22 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Barbarian encampment + rotate: false + xy: 546, 228 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Barringer Crater + rotate: false + xy: 1160, 838 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Camp+Deer + rotate: false + xy: 580, 228 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Camp+Furs + rotate: false + xy: 1194, 838 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Camp+Ivory + rotate: false + xy: 1490, 884 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Cattle + rotate: false + xy: 1592, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Cerro de Potosi + rotate: false + xy: 1660, 938 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Citadel + rotate: false + xy: 1762, 935 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/City + rotate: false + xy: 1796, 935 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+City + rotate: false + xy: 1796, 935 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+City + rotate: false + xy: 1796, 935 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/City ruins + rotate: false + xy: 1830, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coal + rotate: false + xy: 1898, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast + rotate: false + xy: 1932, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast+Atoll + rotate: false + xy: 1966, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast+Ice + rotate: false + xy: 1524, 882 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast+Oil well + rotate: false + xy: 1558, 884 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Cotton + rotate: false + xy: 1592, 884 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Customs house + rotate: false + xy: 1660, 901 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Deer + rotate: false + xy: 1694, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert + rotate: false + xy: 1728, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+City + rotate: false + xy: 1330, 833 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Fallout + rotate: false + xy: 1364, 838 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Farm + rotate: false + xy: 1398, 838 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Flood plains + rotate: false + xy: 1432, 838 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Flood plains+Farm + rotate: false + xy: 614, 226 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Flood plains+Trading post + rotate: false + xy: 648, 226 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Oasis + rotate: false + xy: 682, 226 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Trading post + rotate: false + xy: 818, 429 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Dyes + rotate: false + xy: 1796, 905 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/El Dorado + rotate: false + xy: 1830, 911 + size: 32, 29 + orig: 32, 29 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fish + rotate: false + xy: 1864, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fishing Boats + rotate: false + xy: 1898, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fishing Boats+Whales + rotate: false + xy: 1932, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fort + rotate: false + xy: 1466, 833 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fountain of Youth + rotate: false + xy: 906, 513 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Furs + rotate: false + xy: 940, 517 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Gems + rotate: false + xy: 1660, 871 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Gold + rotate: false + xy: 1694, 882 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grand Mesa + rotate: false + xy: 1728, 878 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland + rotate: false + xy: 1762, 877 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Fallout + rotate: false + xy: 1796, 875 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Farm + rotate: false + xy: 1830, 881 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest + rotate: false + xy: 1864, 879 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Aluminum + rotate: false + xy: 1898, 879 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Camp + rotate: false + xy: 1932, 879 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Deer + rotate: false + xy: 1966, 879 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Furs + rotate: false + xy: 852, 426 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Coal + rotate: false + xy: 1694, 849 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Gold + rotate: false + xy: 1728, 845 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Iron + rotate: false + xy: 1762, 844 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Lumber mill + rotate: false + xy: 1796, 842 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Silver + rotate: false + xy: 1830, 848 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Jungle + rotate: false + xy: 1864, 843 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Jungle+Camp + rotate: false + xy: 1898, 843 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Jungle+Trading post + rotate: false + xy: 1932, 843 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Marsh + rotate: false + xy: 1966, 848 + size: 32, 29 + orig: 32, 29 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Trading post + rotate: false + xy: 2008, 956 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Great Barrier Reef + rotate: false + xy: 2000, 896 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill + rotate: false + xy: 940, 455 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Fallout + rotate: false + xy: 974, 455 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest + rotate: false + xy: 1008, 459 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest+Camp + rotate: false + xy: 1042, 459 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest+Camp+Deer + rotate: false + xy: 1076, 459 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest+Camp+Furs + rotate: false + xy: 1110, 459 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill + rotate: false + xy: 1128, 791 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Mine + rotate: false + xy: 1128, 757 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Quarry + rotate: false + xy: 1162, 804 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Terrace Farm + rotate: false + xy: 1128, 723 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Horses + rotate: false + xy: 1162, 744 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Incense + rotate: false + xy: 1162, 714 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Iron + rotate: false + xy: 1162, 684 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Ivory + rotate: false + xy: 1196, 780 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Krakatoa + rotate: false + xy: 1230, 745 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Lakes + rotate: false + xy: 1230, 715 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Landmark + rotate: false + xy: 1130, 565 + size: 32, 36 + orig: 32, 36 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Manufactory + rotate: false + xy: 1144, 466 + size: 32, 39 + orig: 32, 39 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Marble + rotate: false + xy: 1898, 813 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Mine + rotate: false + xy: 2000, 776 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Moai + rotate: false + xy: 514, 167 + size: 32, 29 + orig: 32, 29 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Mount Fuji + rotate: false + xy: 548, 164 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Mountain + rotate: false + xy: 718, 394 + size: 32, 36 + orig: 32, 36 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Ocean + rotate: false + xy: 720, 304 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Ocean+Atoll + rotate: false + xy: 720, 274 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Ocean+Ice + rotate: false + xy: 754, 344 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Oil + rotate: false + xy: 754, 314 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Oil well + rotate: false + xy: 754, 284 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Old Faithful + rotate: false + xy: 720, 240 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pasture + rotate: false + xy: 716, 210 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pasture+Cattle + rotate: false + xy: 886, 421 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pasture+Horses + rotate: false + xy: 920, 421 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pasture+Sheep + rotate: false + xy: 954, 421 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pasture2 + rotate: false + xy: 750, 196 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pearls + rotate: false + xy: 988, 425 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains + rotate: false + xy: 1090, 429 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+City + rotate: false + xy: 1124, 422 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Fallout + rotate: false + xy: 1158, 436 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Farm + rotate: false + xy: 1158, 406 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest + rotate: false + xy: 1364, 803 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest+Camp + rotate: false + xy: 1398, 803 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Deer + rotate: false + xy: 1432, 803 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Furs + rotate: false + xy: 1466, 798 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill + rotate: false + xy: 988, 390 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Jungle + rotate: false + xy: 1022, 392 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post + rotate: false + xy: 1056, 392 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Trading post + rotate: false + xy: 1090, 399 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation + rotate: false + xy: 1124, 392 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Bananas + rotate: false + xy: 1090, 369 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Cotton + rotate: false + xy: 1124, 362 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Dyes + rotate: false + xy: 1158, 376 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Incense + rotate: false + xy: 1158, 346 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Silk + rotate: false + xy: 1558, 854 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Spices + rotate: false + xy: 1592, 854 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Sugar + rotate: false + xy: 1626, 854 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation+Wine + rotate: false + xy: 1660, 841 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Polder + rotate: false + xy: 1694, 819 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Quarry + rotate: false + xy: 1728, 815 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Quarry+Marble + rotate: false + xy: 1762, 814 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Quarry+Stone + rotate: false + xy: 1796, 812 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-Bottom + rotate: false + xy: 1864, 781 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-BottomLeft + rotate: false + xy: 1898, 781 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-BottomRight + rotate: false + xy: 1932, 781 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-Top + rotate: false + xy: 1966, 758 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-TopLeft + rotate: false + xy: 2000, 744 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-TopRight + rotate: false + xy: 1022, 360 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Rock of Gibraltar + rotate: false + xy: 1056, 358 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Sheep + rotate: false + xy: 1158, 316 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Silk + rotate: false + xy: 818, 399 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Silver + rotate: false + xy: 852, 396 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Snow + rotate: false + xy: 954, 391 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Spices + rotate: false + xy: 852, 366 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Stone + rotate: false + xy: 886, 363 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Sugar + rotate: false + xy: 954, 361 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra + rotate: false + xy: 988, 330 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+City + rotate: false + xy: 1022, 323 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Fallout + rotate: false + xy: 1056, 328 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest + rotate: false + xy: 1090, 305 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest+Camp + rotate: false + xy: 1124, 298 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Deer + rotate: false + xy: 1056, 294 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Furs + rotate: false + xy: 1158, 282 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill + rotate: false + xy: 1090, 271 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Trading post + rotate: false + xy: 1124, 268 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Uranium + rotate: false + xy: 818, 309 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Whales + rotate: false + xy: 954, 303 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Wheat + rotate: false + xy: 988, 300 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Wine + rotate: false + xy: 1022, 293 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/TopBorder + rotate: false + xy: 886, 333 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Anti-Aircraft Gun + rotate: false + xy: 412, 22 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Anti-Tank Gun + rotate: false + xy: 512, 228 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Archer + rotate: false + xy: 1126, 838 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Artillery + rotate: false + xy: 1490, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Ballista + rotate: false + xy: 750, 432 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Battleship + rotate: false + xy: 1490, 914 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Berserker + rotate: false + xy: 1524, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Bowman + rotate: false + xy: 872, 473 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Brute + rotate: false + xy: 784, 432 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Camel Archer + rotate: false + xy: 480, 22 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cannon + rotate: false + xy: 1524, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Caravel + rotate: false + xy: 1558, 944 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Carrier + rotate: false + xy: 1228, 840 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Catapult + rotate: false + xy: 1558, 914 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cavalry + rotate: false + xy: 1626, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Chariot Archer + rotate: false + xy: 1694, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Chu-Ko-Nu + rotate: false + xy: 1728, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/CivilianLandUnit + rotate: false + xy: 1864, 942 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Companion Cavalry + rotate: false + xy: 1262, 840 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Conquistador + rotate: false + xy: 1592, 914 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cossack + rotate: false + xy: 1626, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Crossbowman + rotate: false + xy: 1296, 838 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cruiser + rotate: false + xy: 1626, 884 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Destroyer + rotate: false + xy: 1762, 907 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Foreign Legion + rotate: false + xy: 1966, 912 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Frigate + rotate: false + xy: 906, 485 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Galleass + rotate: false + xy: 940, 489 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Galley + rotate: false + xy: 974, 519 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Gatling Gun + rotate: false + xy: 974, 489 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Machine Gun + rotate: false + xy: 974, 489 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Artist + rotate: false + xy: 2000, 926 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Engineer + rotate: false + xy: 2000, 866 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Worker + rotate: false + xy: 2000, 866 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great General + rotate: false + xy: 2000, 836 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Merchant + rotate: false + xy: 1966, 818 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Settler + rotate: false + xy: 1966, 818 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Scientist + rotate: false + xy: 2000, 806 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great War Infantry + rotate: false + xy: 906, 455 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Infantry + rotate: false + xy: 906, 455 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Hoplite + rotate: false + xy: 1162, 774 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Horseman + rotate: false + xy: 1128, 693 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Hwach'a + rotate: false + xy: 1128, 663 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Ironclad + rotate: false + xy: 1196, 810 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Jaguar + rotate: false + xy: 1196, 750 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Janissary + rotate: false + xy: 1196, 720 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Keshik + rotate: false + xy: 1196, 692 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Khan + rotate: false + xy: 1230, 812 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Knight + rotate: false + xy: 1230, 782 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Lancer + rotate: false + xy: 1130, 633 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/LandUnit + rotate: false + xy: 1130, 603 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Warrior + rotate: false + xy: 1130, 603 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Landship + rotate: false + xy: 1130, 535 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Landsknecht + rotate: false + xy: 1230, 685 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Legion + rotate: false + xy: 1196, 662 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Longbowman + rotate: false + xy: 1230, 655 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Longswordsman + rotate: false + xy: 1830, 818 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Mandekalu Cavalry + rotate: false + xy: 1130, 507 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Maori Warrior + rotate: false + xy: 1864, 813 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Marine + rotate: false + xy: 1932, 813 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Mechanized Infantry + rotate: false + xy: 1966, 790 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Minuteman + rotate: false + xy: 514, 198 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Mohawk Warrior + rotate: false + xy: 548, 198 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Musketeer + rotate: false + xy: 752, 402 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Musketman + rotate: false + xy: 718, 364 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Naresuan's Elephant + rotate: false + xy: 752, 374 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Norwegian Ski Infantry + rotate: false + xy: 720, 334 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Panzer + rotate: false + xy: 754, 256 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Paratrooper + rotate: false + xy: 754, 226 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Persian Immortal + rotate: false + xy: 1022, 429 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Pikeman + rotate: false + xy: 1056, 429 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Rifleman + rotate: false + xy: 1830, 788 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Rocket Artillery + rotate: false + xy: 1090, 339 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Scout + rotate: false + xy: 1124, 332 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Ship of the Line + rotate: false + xy: 784, 198 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Sipahi + rotate: false + xy: 886, 393 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Slinger + rotate: false + xy: 920, 391 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Spearman + rotate: false + xy: 818, 369 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Submarine + rotate: false + xy: 920, 363 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Swordsman + rotate: false + xy: 988, 360 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Tank + rotate: false + xy: 818, 339 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Tercio + rotate: false + xy: 852, 336 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Trebuchet + rotate: false + xy: 920, 333 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Trireme + rotate: false + xy: 954, 333 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Turtle Ship + rotate: false + xy: 1158, 254 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/War Chariot + rotate: false + xy: 852, 306 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/War Elephant + rotate: false + xy: 886, 305 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/WaterUnit + rotate: false + xy: 920, 305 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Work Boats + rotate: false + xy: 788, 226 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/road + rotate: false + xy: 920, 807 + size: 61, 11 + orig: 61, 11 + offset: 0, 0 + index: -1 +TileSets/Default/road + rotate: false + xy: 920, 807 + size: 61, 11 + orig: 61, 11 + offset: 0, 0 + index: -1 +UnitIcons/Scout + rotate: false + xy: 2, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Settler + rotate: false + xy: 2, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Ship of the Line + rotate: false + xy: 2, 616 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Sipahi + rotate: false + xy: 2, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Spearman + rotate: false + xy: 206, 616 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Stealth Bomber + rotate: false + xy: 206, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Submarine + rotate: false + xy: 308, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Swordsman + rotate: false + xy: 512, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Tank + rotate: false + xy: 2, 106 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Tercio + rotate: false + xy: 206, 310 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Trebuchet + rotate: false + xy: 614, 616 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Triplane + rotate: false + xy: 716, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Trireme + rotate: false + xy: 818, 819 + size: 100, 101 + orig: 100, 101 + offset: 0, 0 + index: -1 +UnitIcons/Turtle Ship + rotate: false + xy: 920, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/War Chariot + rotate: false + xy: 512, 412 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/War Elephant + rotate: false + xy: 614, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Warrior + rotate: false + xy: 716, 616 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Work Boats + rotate: false + xy: 410, 208 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Worker + rotate: false + xy: 512, 310 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 UnitIcons/Zero rotate: false - xy: 410, 309 + xy: 818, 615 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitPromotionIcons/Accuracy rotate: false - xy: 614, 564 + xy: 1022, 870 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Air Repair rotate: false - xy: 716, 666 + xy: 1124, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Ambush rotate: false - xy: 920, 870 + xy: 308, 2 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Armor Plating rotate: false - xy: 206, 54 + xy: 512, 258 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Barrage rotate: false - xy: 308, 156 + xy: 716, 462 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Blitz rotate: false - xy: 410, 257 + xy: 818, 563 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Boarding Party rotate: false - xy: 512, 449 + xy: 920, 755 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Bombardment rotate: false - xy: 1074, 972 + xy: 1176, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Charge rotate: false - xy: 512, 397 + xy: 920, 703 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Coastal Raider rotate: false - xy: 1178, 972 + xy: 1280, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Cover rotate: false - xy: 1334, 972 + xy: 1436, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Discipline rotate: false - xy: 1334, 972 + xy: 1436, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Strength rotate: false - xy: 1334, 972 + xy: 1436, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Drill rotate: false - xy: 1490, 972 + xy: 1592, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Evasion rotate: false - xy: 1594, 972 + xy: 1696, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Extended Range rotate: false - xy: 1646, 972 + xy: 1748, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Operational Range rotate: false - xy: 1646, 972 + xy: 1748, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Flight Deck rotate: false - xy: 1750, 972 + xy: 1852, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Formation rotate: false - xy: 1802, 972 + xy: 1904, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Haka War Dance rotate: false - xy: 614, 512 + xy: 1074, 818 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Heal Instantly rotate: false - xy: 666, 564 + xy: 360, 54 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Indirect Fire rotate: false - xy: 768, 666 + xy: 462, 156 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Interception rotate: false - xy: 972, 870 + xy: 666, 360 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Logistics rotate: false - xy: 360, 156 + xy: 922, 599 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/March rotate: false - xy: 514, 293 + xy: 972, 755 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Medic rotate: false - xy: 514, 241 + xy: 972, 703 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Mobility rotate: false - xy: 616, 460 + xy: 1024, 662 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Rejuvenation rotate: false - xy: 412, 153 + xy: 412, 52 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Scouting rotate: false - xy: 872, 664 + xy: 616, 256 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sentry rotate: false - xy: 872, 664 + xy: 616, 256 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Shock rotate: false - xy: 1076, 920 + xy: 668, 256 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Siege rotate: false - xy: 1128, 920 + xy: 1126, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sortie rotate: false - xy: 1180, 920 + xy: 1126, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting rotate: false - xy: 1336, 920 + xy: 1230, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting I (air) rotate: false - xy: 1336, 920 + xy: 1230, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Volley rotate: false - xy: 1648, 920 + xy: 1386, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Wolfpack rotate: false - xy: 1752, 920 + xy: 1438, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Woodsman rotate: false - xy: 1804, 920 + xy: 1438, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/game.png b/android/assets/game.png index 586317b8..e360a238 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/android/assets/game2.png b/android/assets/game2.png index eb334725..32e917e7 100644 Binary files a/android/assets/game2.png and b/android/assets/game2.png differ diff --git a/android/assets/jsons/Terrains.json b/android/assets/jsons/Terrains.json index 4d2ea8fb..56666bbc 100644 --- a/android/assets/jsons/Terrains.json +++ b/android/assets/jsons/Terrains.json @@ -68,7 +68,6 @@ "impassable": true, "RGB": [89, 45, 0] }, - /* { "name": "Snow", "type": "Land", @@ -76,7 +75,6 @@ "defenceBonus": -0.1, "RGB": [153, 255, 255] }, - */ // Terrain features { @@ -139,6 +137,21 @@ "defenceBonus": -0.1, "occursOn": ["Desert"] }, + { + "name": "Ice", + "type": "TerrainFeature", + "impassable": true, + "overrideStats": true, + "occursOn": ["Ocean", "Coast"] + }, + { + "name": "Atoll", + "type": "TerrainFeature", + "movementCost": 1, + "food": 1, + "production": 1, + "occursOn": ["Coast"] + }, // Natural Wonders { diff --git a/android/assets/jsons/TileResources.json b/android/assets/jsons/TileResources.json index daf86fd8..0fdfb43a 100644 --- a/android/assets/jsons/TileResources.json +++ b/android/assets/jsons/TileResources.json @@ -48,7 +48,7 @@ { "name": "Stone", "resourceType": "Bonus", - "terrainsCanBeFoundOn": ["Plains","Desert"], + "terrainsCanBeFoundOn": ["Plains","Desert","Snow"], "production": 1, "improvement": "Quarry", "improvementStats": {"production": 1}, diff --git a/android/assets/jsons/translations/Italian.properties b/android/assets/jsons/translations/Italian.properties index 278fbf21..3bb48245 100644 --- a/android/assets/jsons/translations/Italian.properties +++ b/android/assets/jsons/translations/Italian.properties @@ -537,11 +537,11 @@ Hide advanced settings = Nascondi avanzate Map Height = Altezza mappa Temperature extremeness = Estremità temperatura Resource richness = Abbondanza risorse -Terrain Features richness = Abbondanza caratteristiche terrene +Vegetation richness = Abbondanza vegetazione +Rare features richness = Abbondanza caratteristiche terrene Max Coast extension = Estensione delle coste Biome areas extension = Estensioni biomi -Water percent = Percentuale d'acqua -Land percent = Percentuale terrestre +Water level = Livello dell'acqua Reset to default = Ripristina default HIGHLY EXPERIMENTAL - YOU HAVE BEEN WARNED! = IN FASE SPERIMENTALE - TI ABBIAMO AVVERTITO! @@ -1360,6 +1360,8 @@ Coast = Costa Ocean = Oceano Flood plains = Pianure allagate Impassible = Inaccessibile +Atoll = Atollo +Ice = Ghiaccio # Natural Wonders diff --git a/android/assets/jsons/translations/template.properties b/android/assets/jsons/translations/template.properties index 22d0ba9a..846c6b23 100644 --- a/android/assets/jsons/translations/template.properties +++ b/android/assets/jsons/translations/template.properties @@ -535,11 +535,11 @@ Hide advanced settings = Map Height = Temperature extremeness = Resource richness = -Terrain Features richness = +Vegetation richness = +Rare features richness = Max Coast extension = Biome areas extension = -Water percent = -Land percent = +Water level = Reset to default = HIGHLY EXPERIMENTAL - YOU HAVE BEEN WARNED! = @@ -1358,6 +1358,8 @@ Coast = Ocean = Flood plains = Impassible = +Atoll = +Ice = # Natural Wonders diff --git a/core/src/com/unciv/Constants.kt b/core/src/com/unciv/Constants.kt index 577f736f..a937a9d5 100644 --- a/core/src/com/unciv/Constants.kt +++ b/core/src/com/unciv/Constants.kt @@ -1,51 +1,55 @@ package com.unciv -class Constants{ - companion object { - const val worker = "Worker" - const val settler = "Settler" - const val greatGeneral = "Great General" +object Constants { + const val worker = "Worker" + const val settler = "Settler" + const val greatGeneral = "Great General" - const val ocean="Ocean" - const val mountain="Mountain" - const val forest = "Forest" - const val jungle = "Jungle" - const val hill = "Hill" - const val coast = "Coast" - const val plains = "Plains" - const val lakes = "Lakes" - const val desert = "Desert" - const val grassland = "Grassland" - const val tundra = "Tundra" + const val ocean = "Ocean" + const val coast = "Coast" + const val mountain = "Mountain" + const val hill = "Hill" + const val plains = "Plains" + const val lakes = "Lakes" + const val desert = "Desert" + const val grassland = "Grassland" + const val tundra = "Tundra" + const val snow = "Snow" - const val marsh = "Marsh" + const val forest = "Forest" + const val jungle = "Jungle" - const val barringerCrater = "Barringer Crater" - const val grandMesa = "Grand Mesa" - const val greatBarrierReef = "Great Barrier Reef" - const val krakatoa = "Krakatoa" - const val mountFuji = "Mount Fuji" - const val oldFaithful = "Old Faithful" - const val rockOfGibraltar = "Rock of Gibraltar" - const val cerroDePotosi = "Cerro de Potosi" - const val elDorado = "El Dorado" - const val fountainOfYouth = "Fountain of Youth" + const val marsh = "Marsh" + const val oasis = "Oasis" + const val atoll = "Atoll" + const val ice = "Ice" + val vegetation = arrayOf(forest, jungle) + val sea = arrayOf(ocean, coast) - const val barbarianEncampment = "Barbarian encampment" - const val ancientRuins = "Ancient ruins" + const val barringerCrater = "Barringer Crater" + const val grandMesa = "Grand Mesa" + const val greatBarrierReef = "Great Barrier Reef" + const val krakatoa = "Krakatoa" + const val mountFuji = "Mount Fuji" + const val oldFaithful = "Old Faithful" + const val rockOfGibraltar = "Rock of Gibraltar" + const val cerroDePotosi = "Cerro de Potosi" + const val elDorado = "El Dorado" + const val fountainOfYouth = "Fountain of Youth" - const val peaceTreaty = "Peace Treaty" - const val researchAgreement = "Research Agreement" - const val openBorders = "Open Borders" - const val random = "Random" - val greatImprovements = listOf("Academy", "Landmark", "Manufactory", "Customs house") + const val barbarianEncampment = "Barbarian encampment" + const val ancientRuins = "Ancient ruins" - val unitActionSetUp = "Set Up" - val unitActionSleep = "Sleep" - val unitActionSleepUntilHealed = "Sleep until healed" - val unitActionAutomation = "Automate" - val unitActionExplore = "Explore" - val futureTech = "Future Tech" + const val peaceTreaty = "Peace Treaty" + const val researchAgreement = "Research Agreement" + const val openBorders = "Open Borders" + const val random = "Random" + val greatImprovements = listOf("Academy", "Landmark", "Manufactory", "Customs house") - } + val unitActionSetUp = "Set Up" + val unitActionSleep = "Sleep" + val unitActionSleepUntilHealed = "Sleep until healed" + val unitActionAutomation = "Automate" + val unitActionExplore = "Explore" + val futureTech = "Future Tech" } \ No newline at end of file diff --git a/core/src/com/unciv/logic/map/MapGenerator.kt b/core/src/com/unciv/logic/map/MapGenerator.kt index e404185c..bcdf633c 100644 --- a/core/src/com/unciv/logic/map/MapGenerator.kt +++ b/core/src/com/unciv/logic/map/MapGenerator.kt @@ -34,13 +34,15 @@ class MapGenerator(val ruleset: Ruleset) { seedRNG(seed) generateLand(map) - divideIntoBiomes(map) + raiseMountainsAndHills(map) + applyHumidityAndTemperature(map) spawnLakesAndCoasts(map) - randomizeTiles(map) + spawnVegetation(map) + spawnRareFeatures(map) + spawnIce(map) spreadResources(map) spreadAncientRuins(map) spawnNaturalWonders(map) - return map } @@ -94,120 +96,6 @@ class MapGenerator(val ruleset: Ruleset) { } } - private fun randomizeTiles(tileMap: TileMap) { - - for (tile in tileMap.values) { - if (tile.getBaseTerrain().type == TerrainType.Land && RNG.nextDouble() < tileMap.mapParameters.mountainProbability) { - tile.baseTerrain = Constants.mountain - tile.setTransients() - } - addRandomTerrainFeature(tile, tileMap.mapParameters) - } - } - - private fun divideIntoBiomes(tileMap: TileMap) { - val averageTilesPerArea = tileMap.mapParameters.tilesPerBiomeArea - val waterPercent = tileMap.mapParameters.waterProbability - - val maxLatitude = tileMap.values.map { abs(HexMath.getLatitude(it.position)) }.max()!! - - val areas = ArrayList() - - val terrains = ruleset.terrains.values - .filter { it.type === TerrainType.Land && it.name != Constants.lakes && it.name != Constants.mountain } - - // So we know it's not chosen - for (tile in tileMap.values.filter { it.baseTerrain == Constants.grassland }) - tile.baseTerrain = "" - - while (tileMap.values.any { it.baseTerrain == "" }) // the world could be split into lots off tiny islands, and every island deserves land types - { - val emptyTiles = tileMap.values.filter { it.baseTerrain == "" }.toMutableList() - val numberOfSeeds = ceil(emptyTiles.size / averageTilesPerArea.toFloat()).toInt() - - - for (i in 0 until numberOfSeeds) { - var terrain = if (RNG.nextDouble() < waterPercent) Constants.ocean - else terrains.random(RNG).name - - val tile = emptyTiles.random(RNG) - - val desertBand = maxLatitude * 0.5 * tileMap.mapParameters.temperatureExtremeness - val tundraBand = maxLatitude * (1 - 0.5 * tileMap.mapParameters.temperatureExtremeness) - - if (abs(HexMath.getLatitude(tile.position)) < desertBand) { - - if (terrain in arrayOf(Constants.grassland, Constants.tundra)) - terrain = Constants.desert - - } else if (abs(HexMath.getLatitude(tile.position)) > tundraBand) { - - if (terrain in arrayOf(Constants.grassland, Constants.plains, Constants.desert, Constants.ocean)) - terrain = Constants.tundra - - } else { - if (terrain == Constants.tundra) terrain = Constants.plains - else if (terrain == Constants.desert) terrain = Constants.grassland - } - - val area = Area(terrain) - emptyTiles -= tile - area.addTile(tile) - areas += area - } - - expandAreas(areas) - expandAreas(areas) - } - - for (tile in tileMap.values) - tile.setTransients() - } - - private fun expandAreas(areas: ArrayList) { - val expandableAreas = ArrayList(areas) - - while (expandableAreas.isNotEmpty()) { - val areaToExpand = expandableAreas.random(RNG) - if (areaToExpand.tiles.size >= 20) { - expandableAreas -= areaToExpand - continue - } - - val availableExpansionTiles = areaToExpand.tiles - .flatMap { it.neighbors }.distinct() - .filter { it.baseTerrain == "" } - - if (availableExpansionTiles.isEmpty()) expandableAreas -= areaToExpand - else { - val expansionTile = availableExpansionTiles.random(RNG) - areaToExpand.addTile(expansionTile) - - val areasToJoin = areas.filter { - it.terrain == areaToExpand.terrain - && it != areaToExpand - && it.tiles.any { tile -> tile in expansionTile.neighbors } - } - for (area in areasToJoin) { - areaToExpand.tiles += area.tiles - areas.remove(area) - expandableAreas.remove(area) - } - } - } - } - - private fun addRandomTerrainFeature(tileInfo: TileInfo, mapParameters: MapParameters) { - if (tileInfo.getBaseTerrain().canHaveOverlay && RNG.nextDouble() < mapParameters.terrainFeatureRichness) { - val secondaryTerrains = ruleset.terrains.values - .filter { it.type === TerrainType.TerrainFeature && - it.occursOn != null && - it.occursOn.contains(tileInfo.baseTerrain) } - if (secondaryTerrains.any()) - tileInfo.terrainFeature = secondaryTerrains.random(RNG).name - } - } - private fun spreadAncientRuins(map: TileMap) { if(map.mapParameters.noRuins) return @@ -218,15 +106,15 @@ class MapGenerator(val ruleset: Ruleset) { tile.improvement = Constants.ancientRuins } - private fun spreadResources(mapToReturn: TileMap) { - val distance = mapToReturn.mapParameters.size.radius - for (tile in mapToReturn.values) + private fun spreadResources(tileMap: TileMap) { + val distance = tileMap.mapParameters.size.radius + for (tile in tileMap.values) if (tile.resource != null) tile.resource = null - spreadStrategicResources(mapToReturn, distance) - spreadResource(mapToReturn, distance, ResourceType.Luxury) - spreadResource(mapToReturn, distance, ResourceType.Bonus) + spreadStrategicResources(tileMap, distance) + spreadResources(tileMap, distance, ResourceType.Luxury) + spreadResources(tileMap, distance, ResourceType.Bonus) } //region natural-wonders @@ -264,16 +152,16 @@ class MapGenerator(val ruleset: Ruleset) { for (wonder in toBeSpawned) { when (wonder.name) { - Constants.barringerCrater -> spawnBarringerCrater(tileMap, ruleset) - Constants.mountFuji -> spawnMountFuji(tileMap, ruleset) - Constants.grandMesa -> spawnGrandMesa(tileMap, ruleset) - Constants.greatBarrierReef -> spawnGreatBarrierReef(tileMap, ruleset, mapRadius) - Constants.krakatoa -> spawnKrakatoa(tileMap, ruleset) - Constants.rockOfGibraltar -> spawnRockOfGibraltar(tileMap, ruleset) - Constants.oldFaithful -> spawnOldFaithful(tileMap, ruleset) - Constants.cerroDePotosi -> spawnCerroDePotosi(tileMap, ruleset) - Constants.elDorado -> spawnElDorado(tileMap, ruleset) - Constants.fountainOfYouth -> spawnFountainOfYouth(tileMap, ruleset) + Constants.barringerCrater -> spawnBarringerCrater(tileMap) + Constants.mountFuji -> spawnMountFuji(tileMap) + Constants.grandMesa -> spawnGrandMesa(tileMap) + Constants.greatBarrierReef -> spawnGreatBarrierReef(tileMap) + Constants.krakatoa -> spawnKrakatoa(tileMap) + Constants.rockOfGibraltar -> spawnRockOfGibraltar(tileMap) + Constants.oldFaithful -> spawnOldFaithful(tileMap) + Constants.cerroDePotosi -> spawnCerroDePotosi(tileMap) + Constants.elDorado -> spawnElDorado(tileMap) + Constants.fountainOfYouth -> spawnFountainOfYouth(tileMap) } } } @@ -296,9 +184,9 @@ class MapGenerator(val ruleset: Ruleset) { Must be in tundra or desert; cannot be adjacent to grassland; can be adjacent to a maximum of 2 mountains and a maximum of 4 hills and mountains; avoids oceans; becomes mountain */ - private fun spawnBarringerCrater(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnBarringerCrater(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.barringerCrater]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.grassland } && it.neighbors.count{ neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } <= 2 @@ -312,9 +200,9 @@ class MapGenerator(val ruleset: Ruleset) { Mt. Fuji: Must be in grass or plains; cannot be adjacent to tundra, desert, marsh, or mountains; can be adjacent to a maximum of 2 hills; becomes mountain */ - private fun spawnMountFuji(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnMountFuji(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.mountFuji]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.tundra } && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.desert } @@ -330,9 +218,9 @@ class MapGenerator(val ruleset: Ruleset) { Grand Mesa: Must be in plains, desert, or tundra, and must be adjacent to at least 2 hills; cannot be adjacent to grass; can be adjacent to a maximum of 2 mountains; avoids oceans; becomes mountain */ - private fun spawnGrandMesa(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnGrandMesa(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.grandMesa]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.count{ neighbor -> neighbor.getBaseTerrain().name == Constants.hill } >= 2 && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.grassland } @@ -345,15 +233,13 @@ class MapGenerator(val ruleset: Ruleset) { /* Great Barrier Reef: Specifics currently unknown; Assumption: at least 1 neighbour not water; no tundra; at least 1 neighbour coast; becomes coast - TODO: investigate Great Barrier Reef placement requirements */ - private fun spawnGreatBarrierReef(mapToReturn: TileMap, ruleset: Ruleset, mapRadius: Int) { + private fun spawnGreatBarrierReef(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.greatBarrierReef]!! - val maxLatitude = abs(HexMath.getLatitude(Vector2(mapRadius.toFloat(), mapRadius.toFloat()))) - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) - && abs(HexMath.getLatitude(it.position)) > maxLatitude * 0.1 - && abs(HexMath.getLatitude(it.position)) < maxLatitude * 0.7 + && abs(it.latitude) > tileMap.maxLatitude * 0.1 + && abs(it.latitude) < tileMap.maxLatitude * 0.7 && it.neighbors.all {neighbor -> neighbor.isWater} && it.neighbors.any {neighbor -> neighbor.resource == null && neighbor.improvement == null @@ -378,13 +264,13 @@ class MapGenerator(val ruleset: Ruleset) { /* Krakatoa: Must spawn in the ocean next to at least 1 shallow water tile; cannot be adjacent to ice; changes tiles around it to shallow water; mountain - TODO: cannot be adjacent to ice */ - private fun spawnKrakatoa(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnKrakatoa(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.krakatoa]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name == Constants.coast } + && it.neighbors.none { neighbor -> neighbor.getLastTerrain().name == Constants.ice} } val location = trySpawnOnSuitableLocation(suitableLocations, wonder) @@ -403,11 +289,10 @@ class MapGenerator(val ruleset: Ruleset) { Rock of Gibraltar: Specifics currently unknown Assumption: spawn on grassland, at least 1 coast and 1 mountain adjacent; turn neighbours into coast) - TODO: investigate Rock of Gibraltar placement requirements */ - private fun spawnRockOfGibraltar(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnRockOfGibraltar(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.rockOfGibraltar]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name == Constants.coast } && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } == 1 @@ -432,9 +317,9 @@ class MapGenerator(val ruleset: Ruleset) { more than 4 mountains, and cannot be adjacent to more than 3 desert or 3 tundra tiles; avoids oceans; becomes mountain */ - private fun spawnOldFaithful(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnOldFaithful(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.oldFaithful]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } <= 4 && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain || @@ -449,9 +334,9 @@ class MapGenerator(val ruleset: Ruleset) { /* Cerro de Potosi: Must be adjacent to at least 1 hill; avoids oceans; becomes mountain */ - private fun spawnCerroDePotosi(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnCerroDePotosi(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.cerroDePotosi]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name == Constants.hill } } @@ -462,9 +347,9 @@ class MapGenerator(val ruleset: Ruleset) { /* El Dorado: Must be next to at least 1 jungle tile; avoids oceans; becomes flatland plains */ - private fun spawnElDorado(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnElDorado(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.elDorado]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) && it.neighbors.any { neighbor -> neighbor.getLastTerrain().name == Constants.jungle } } @@ -475,9 +360,9 @@ class MapGenerator(val ruleset: Ruleset) { /* Fountain of Youth: Avoids oceans; becomes flatland plains */ - private fun spawnFountainOfYouth(mapToReturn: TileMap, ruleset: Ruleset) { + private fun spawnFountainOfYouth(tileMap: TileMap) { val wonder = ruleset.terrains[Constants.fountainOfYouth]!! - val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + val suitableLocations = tileMap.values.filter { it.resource == null && it.improvement == null && wonder.occursOn!!.contains(it.getLastTerrain().name) } trySpawnOnSuitableLocation(suitableLocations, wonder) @@ -485,30 +370,32 @@ class MapGenerator(val ruleset: Ruleset) { //endregion // Here, we need each specific resource to be spread over the map - it matters less if specific resources are near each other - private fun spreadStrategicResources(mapToReturn: TileMap, distance: Int) { - val resourcesOfType = ruleset.tileResources.values.filter { it.resourceType == ResourceType.Strategic } - val totalNumberOfResources = mapToReturn.values.count { it.isLand && !it.getBaseTerrain().impassable } * - mapToReturn.mapParameters.resourceRichness - val resourcesPerType = (totalNumberOfResources/resourcesOfType.size).toInt() - for (resource in resourcesOfType) { - val suitableTiles = mapToReturn.values + private fun spreadStrategicResources(tileMap: TileMap, distance: Int) { + val strategicResources = ruleset.tileResources.values.filter { it.resourceType == ResourceType.Strategic } + val totalNumberOfResources = tileMap.values.count { it.isLand && !it.getBaseTerrain().impassable } * + tileMap.mapParameters.resourceRichness + val resourcesPerType = (totalNumberOfResources/strategicResources.size).toInt() + for (resource in strategicResources) { + val suitableTiles = tileMap.values .filter { it.resource == null && resource.terrainsCanBeFoundOn.contains(it.getLastTerrain().name) } - val locations = chooseSpreadOutLocations(resourcesPerType, suitableTiles, distance) for (location in locations) location.resource = resource.name } } - // Here, we need there to be some luxury/bonus resource - it matters less what - private fun spreadResource(mapToReturn: TileMap, distance: Int, resourceType: ResourceType) { + /** + * Spreads resources of type [resourceType] picking locations at [distance] from each other. + * [MapParameters.resourceRichness] used to control how many resources to spawn. + */ + private fun spreadResources(tileMap: TileMap, distance: Int, resourceType: ResourceType) { val resourcesOfType = ruleset.tileResources.values.filter { it.resourceType == resourceType } - val suitableTiles = mapToReturn.values + val suitableTiles = tileMap.values .filter { it.resource == null && resourcesOfType.any { r -> r.terrainsCanBeFoundOn.contains(it.getLastTerrain().name) } } - val numberOfResources = mapToReturn.values.count { it.isLand && !it.getBaseTerrain().impassable } * - mapToReturn.mapParameters.resourceRichness + val numberOfResources = tileMap.values.count { it.isLand && !it.getBaseTerrain().impassable } * + tileMap.mapParameters.resourceRichness val locations = chooseSpreadOutLocations(numberOfResources.toInt(), suitableTiles, distance) val resourceToNumber = Counter() @@ -533,10 +420,10 @@ class MapGenerator(val ruleset: Ruleset) { // If possible, we want to equalize the base terrains upon which // the resources are found, so we save how many have been // found for each base terrain and try to get one from the lowerst - val baseTerrainsToChosenTiles = HashMap() + val baseTerrainsToChosenTiles = HashMap() for(tileInfo in availableTiles){ if(tileInfo.baseTerrain !in baseTerrainsToChosenTiles) - baseTerrainsToChosenTiles.put(tileInfo.baseTerrain,0) + baseTerrainsToChosenTiles[tileInfo.baseTerrain] = 0 } for (i in 1..numberOfResources) { @@ -556,6 +443,123 @@ class MapGenerator(val ruleset: Ruleset) { throw Exception("Couldn't choose suitable tiles for $numberOfResources resources!") } + /** + * [MapParameters.elevationExponent] favors high elevation + */ + private fun raiseMountainsAndHills(tileMap: TileMap) { + val elevationSeed = RNG.nextInt().toDouble() + tileMap.setTransients(ruleset) + for (tile in tileMap.values.filter { !it.isWater }) { + var elevation = getPerlinNoise(tile, elevationSeed, scale = 3.0) + elevation = abs(elevation).pow(1.0 - tileMap.mapParameters.elevationExponent.toDouble()) * elevation.sign + + if (elevation <= 0.5) tile.baseTerrain = Constants.plains + else if (elevation <= 0.7) tile.baseTerrain = Constants.hill + else if (elevation <= 1.0) tile.baseTerrain = Constants.mountain + } + } + + /** + * [MapParameters.tilesPerBiomeArea] to set biomes size + * [MapParameters.temperatureExtremeness] to favor very high and very low temperatures + */ + private fun applyHumidityAndTemperature(tileMap: TileMap) { + val humiditySeed = RNG.nextInt().toDouble() + val temperatureSeed = RNG.nextInt().toDouble() + + tileMap.setTransients(ruleset) + + val scale = tileMap.mapParameters.tilesPerBiomeArea.toDouble() + + for (tile in tileMap.values) { + if (tile.isWater || tile.baseTerrain in arrayOf(Constants.mountain, Constants.hill)) + continue + + val humidity = (getPerlinNoise(tile, humiditySeed, scale = scale, nOctaves = 1) + 1.0) / 2.0 + + val randomTemperature = getPerlinNoise(tile, temperatureSeed, scale = scale, nOctaves = 1) + val latitudeTemperature = 1.0 - 2.0 * abs(tile.latitude) / tileMap.maxLatitude + var temperature = ((5.0 * latitudeTemperature + randomTemperature) / 6.0) + temperature = abs(temperature).pow(1.0 - tileMap.mapParameters.temperatureExtremeness) * temperature.sign + + tile.baseTerrain = when { + temperature < -0.4 -> { + when { + humidity < 0.5 -> Constants.snow + else -> Constants.tundra + } + } + temperature < 0.8 -> { + when { + humidity < 0.5 -> Constants.plains + else -> Constants.grassland + } + } + temperature <= 1.0 -> { + when { + humidity < 0.7 -> Constants.desert + else -> Constants.plains + } + } + else -> { + println(temperature) + Constants.lakes + } + + } + } + } + + /** + * [MapParameters.vegetationOccurrance] is the threshold for vegetation spawn + */ + private fun spawnVegetation(tileMap: TileMap) { + val vegetationSeed = RNG.nextInt().toDouble() + val candidateTerrains = Constants.vegetation.flatMap{ ruleset.terrains[it]!!.occursOn!! } + for (tile in tileMap.values.asSequence().filter { it.baseTerrain in candidateTerrains && it.terrainFeature == null}) { + val vegetation = (getPerlinNoise(tile, vegetationSeed, scale = 3.0, nOctaves = 1) + 1.0) / 2.0 + + if (vegetation <= tileMap.mapParameters.vegetationRichness) + tile.terrainFeature = Constants.vegetation.filter { ruleset.terrains[it]!!.occursOn!!.contains(tile.baseTerrain) }.random(RNG) + } + } + /** + * [MapParameters.rareFeaturesProbability] is the probability of spawning a rare feature + */ + private fun spawnRareFeatures(tileMap: TileMap) { + val rareFeatures = ruleset.terrains.values.filter { + it.type == TerrainType.TerrainFeature && + it.name !in Constants.vegetation && + it.name != Constants.ice + } + for (tile in tileMap.values.asSequence().filter { it.terrainFeature == null }) { + if (RNG.nextDouble() <= tileMap.mapParameters.rareFeaturesRichness) { + val possibleFeatures = rareFeatures.filter { it.occursOn != null && it.occursOn.contains(tile.baseTerrain) } + if (possibleFeatures.any()) + tile.terrainFeature = possibleFeatures.random(RNG).name + } + } + } + + /** + * [MapParameters.temperatureExtremeness] as in [applyHumidityAndTemperature] + */ + private fun spawnIce(tileMap: TileMap) { + tileMap.setTransients(ruleset) + val temperatureSeed = RNG.nextInt().toDouble() + for (tile in tileMap.values) { + if (tile.baseTerrain !in Constants.sea || tile.terrainFeature != null) + continue + + val randomTemperature = getPerlinNoise(tile, temperatureSeed, scale = tileMap.mapParameters.tilesPerBiomeArea.toDouble(), nOctaves = 1) + val latitudeTemperature = 1.0 - 2.0 * abs(tile.latitude) / tileMap.maxLatitude + var temperature = ((latitudeTemperature + randomTemperature) / 2.0) + temperature = abs(temperature).pow(1.0 - tileMap.mapParameters.temperatureExtremeness) * temperature.sign + if (temperature < -0.8) + tile.terrainFeature = Constants.ice + } + } + companion object MapLandmassGenerator { var RNG = Random(42) @@ -564,9 +568,16 @@ class MapGenerator(val ruleset: Ruleset) { MapType.pangaea -> createPangea(tileMap) MapType.continents -> createTwoContinents(tileMap) MapType.perlin -> createPerlin(tileMap) + MapType.archipelago -> createArchipelago(tileMap) MapType.default -> generateLandCellularAutomata(tileMap) } } + private fun spawnLandOrWater(tile: TileInfo, elevation: Double, threshold: Double) { + when { + elevation < threshold -> tile.baseTerrain = Constants.ocean + else -> tile.baseTerrain = Constants.grassland + } + } private fun smooth(tileMap: TileMap) { for (tileInfo in tileMap.values) { @@ -585,11 +596,15 @@ class MapGenerator(val ruleset: Ruleset) { val elevationSeed = RNG.nextInt().toDouble() for (tile in tileMap.values) { var elevation = getPerlinNoise(tile, elevationSeed) + spawnLandOrWater(tile, elevation, tileMap.mapParameters.waterThreshold.toDouble()) + } + } - when { - elevation < 0 -> tile.baseTerrain = Constants.ocean - else -> tile.baseTerrain = Constants.grassland - } + private fun createArchipelago(tileMap: TileMap) { + val elevationSeed = RNG.nextInt().toDouble() + for (tile in tileMap.values) { + var elevation = getRidgedPerlinNoise(tile, elevationSeed) + spawnLandOrWater(tile, elevation, 0.25 + tileMap.mapParameters.waterThreshold.toDouble()) } } @@ -598,11 +613,7 @@ class MapGenerator(val ruleset: Ruleset) { for (tile in tileMap.values) { var elevation = getPerlinNoise(tile, elevationSeed) elevation = (elevation + getCircularNoise(tile, tileMap) ) / 2.0 - - when { - elevation < 0 -> tile.baseTerrain = Constants.ocean - else -> tile.baseTerrain = Constants.grassland - } + spawnLandOrWater(tile, elevation, tileMap.mapParameters.waterThreshold.toDouble()) } } @@ -611,11 +622,7 @@ class MapGenerator(val ruleset: Ruleset) { for (tile in tileMap.values) { var elevation = getPerlinNoise(tile, elevationSeed) elevation = (elevation + getTwoContinentsTransform(tile, tileMap)) / 2.0 - - when { - elevation < 0 -> tile.baseTerrain = Constants.ocean - else -> tile.baseTerrain = Constants.grassland - } + spawnLandOrWater(tile, elevation, tileMap.mapParameters.waterThreshold.toDouble()) } } @@ -628,10 +635,9 @@ class MapGenerator(val ruleset: Ruleset) { private fun getTwoContinentsTransform(tileInfo: TileInfo, tileMap: TileMap): Double { val randomScale = RNG.nextDouble() - val maxLongitude = abs(tileMap.values.map { abs(HexMath.getLongitude(it.position)) }.max()!!) - val longitudeFactor = abs(HexMath.getLongitude(tileInfo.position))/maxLongitude + val longitudeFactor = abs(tileInfo.longitude) / tileMap.maxLongitude - return min(0.0,-1.0 + (5.0 * longitudeFactor.pow(0.7f) + randomScale) / 3.0) + return min(0.2,-1.0 + (5.0 * longitudeFactor.pow(0.6f) + randomScale) / 3.0) } private fun percentualDistanceToCenter(tileInfo: TileInfo, tileMap: TileMap): Double { @@ -644,6 +650,14 @@ class MapGenerator(val ruleset: Ruleset) { } } + /** + * Generates a perlin noise channel combining multiple octaves + * + * [nOctaves] is the number of octaves + * [persistence] is the scaling factor of octave amplitudes + * [lacunarity] is the scaling factor of octave frequencies + * [scale] is the distance the noise is observed from + */ private fun getPerlinNoise(tile: TileInfo, seed: Double, nOctaves: Int = 6, persistence: Double = 0.5, @@ -653,6 +667,18 @@ class MapGenerator(val ruleset: Ruleset) { return Perlin.noise3d(worldCoords.x.toDouble(), worldCoords.y.toDouble(), seed, nOctaves, persistence, lacunarity, scale) } + /** + * Generates ridged perlin noise. As for parameters see [getPerlinNoise] + */ + private fun getRidgedPerlinNoise(tile: TileInfo, seed: Double, + nOctaves: Int = 10, + persistence: Double = 0.5, + lacunarity: Double = 2.0, + scale: Double = 15.0): Double { + val worldCoords = HexMath.hex2WorldCoords(tile.position) + return Perlin.ridgedNoise3d(worldCoords.x.toDouble(), worldCoords.y.toDouble(), seed, nOctaves, persistence, lacunarity, scale) + } + // region Cellular automata private fun generateLandCellularAutomata(tileMap: TileMap) { val mapRadius = tileMap.mapParameters.size.radius @@ -691,7 +717,6 @@ class MapGenerator(val ruleset: Ruleset) { private fun getInitialTerrainCellularAutomata(tileInfo: TileInfo, mapParameters: MapParameters): TerrainType { - val landProbability = mapParameters.landProbability val mapRadius = mapParameters.size.radius // default @@ -701,18 +726,9 @@ class MapGenerator(val ruleset: Ruleset) { if (HexMath.getDistance(Vector2.Zero, tileInfo.position) > 0.85f * mapRadius) { if (RNG.nextDouble() < 0.2) return TerrainType.Land else return TerrainType.Water } - if (RNG.nextDouble() < landProbability) return TerrainType.Land else return TerrainType.Water + if (RNG.nextDouble() < 0.55) return TerrainType.Land else return TerrainType.Water } // endregion } } - -class Area(var terrain: String) { - val tiles = ArrayList() - fun addTile(tileInfo: TileInfo) { - tiles += tileInfo - tileInfo.baseTerrain = terrain - } -} - diff --git a/core/src/com/unciv/logic/map/MapParameters.kt b/core/src/com/unciv/logic/map/MapParameters.kt index 5ad88f92..67dd36d2 100644 --- a/core/src/com/unciv/logic/map/MapParameters.kt +++ b/core/src/com/unciv/logic/map/MapParameters.kt @@ -17,6 +17,7 @@ object MapType { const val pangaea = "Pangaea" const val continents = "Continents" const val perlin = "Perlin" + const val archipelago = "Archipelago" // Cellular automata const val default = "Default" @@ -39,21 +40,21 @@ class MapParameters { var seed: Long = 0 var tilesPerBiomeArea = 6 var maxCoastExtension = 2 - var mountainProbability = 0.10f - var temperatureExtremeness = 0.30f - var terrainFeatureRichness = 0.30f - var resourceRichness = 0.10f - var waterProbability = 0.05f - var landProbability = 0.55f + var elevationExponent = 0.8f + var temperatureExtremeness = 0.6f + var vegetationRichness = 0.4f + var rareFeaturesRichness = 0.05f + var resourceRichness = 0.1f + var waterThreshold = 0f fun resetAdvancedSettings() { tilesPerBiomeArea = 6 maxCoastExtension = 2 - mountainProbability = 0.10f - temperatureExtremeness = 0.30f - terrainFeatureRichness = 0.30f - resourceRichness = 0.10f - waterProbability = 0.05f - landProbability = 0.55f + elevationExponent = 0.8f + temperatureExtremeness = 0.6f + vegetationRichness = 0.4f + rareFeaturesRichness = 0.05f + resourceRichness = 0.1f + waterThreshold = 0f } } \ No newline at end of file diff --git a/core/src/com/unciv/logic/map/Perlin.kt b/core/src/com/unciv/logic/map/Perlin.kt index 80d6c4e3..f004d3b7 100644 --- a/core/src/com/unciv/logic/map/Perlin.kt +++ b/core/src/com/unciv/logic/map/Perlin.kt @@ -1,6 +1,7 @@ package com.unciv.logic.map import kotlin.math.floor +import kotlin.math.abs // version 1.1.3 // From https://rosettacode.org/wiki/Perlin_noise#Kotlin @@ -54,6 +55,29 @@ object Perlin { return total/max } + fun ridgedNoise3d(x: Double, y: Double, z: Double, + nOctaves: Int = 3, + persistence: Double = 0.5, + lacunarity: Double = 2.0, + scale: Double = 10.0): Double { + var freq = 1.0 + var amp = 1.0 + var max = 0.0 + var total = 0.0 + for (i in 0 until nOctaves) { + var value = noise( + x * freq / scale, + y * freq / scale, + z * freq / scale) + value = abs(value) + total += amp * value + max += amp + freq *= lacunarity + amp *= persistence + } + return total/max + } + fun noise(x: Double, y: Double, z: Double): Double { // Find unit cube that contains point val xi = floor(x).toInt() and 255 diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index 89b5ee97..6b0278e5 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -4,6 +4,7 @@ import com.badlogic.gdx.math.Vector2 import com.unciv.Constants import com.unciv.UncivGame import com.unciv.UniqueAbility +import com.unciv.logic.HexMath import com.unciv.logic.city.CityInfo import com.unciv.logic.civilization.CivilizationInfo import com.unciv.models.ruleset.Ruleset @@ -42,6 +43,11 @@ open class TileInfo { var hasBottomRiver = false var hasBottomLeftRiver = false + val latitude: Float + get() = HexMath.getLatitude(position) + val longitude: Float + get() = HexMath.getLongitude(position) + fun clone(): TileInfo { val toReturn = TileInfo() if(militaryUnit!=null) toReturn.militaryUnit=militaryUnit!!.clone() diff --git a/core/src/com/unciv/logic/map/TileMap.kt b/core/src/com/unciv/logic/map/TileMap.kt index b97ff99f..0427f789 100644 --- a/core/src/com/unciv/logic/map/TileMap.kt +++ b/core/src/com/unciv/logic/map/TileMap.kt @@ -6,6 +6,7 @@ import com.unciv.logic.GameInfo import com.unciv.logic.HexMath import com.unciv.logic.civilization.CivilizationInfo import com.unciv.models.ruleset.Ruleset +import kotlin.math.abs class TileMap { @@ -13,25 +14,21 @@ class TileMap { @Transient var tileMatrix = ArrayList>() // this works several times faster than a hashmap, the performance difference is really astounding @Transient var leftX = 0 @Transient var bottomY = 0 + @delegate:Transient val maxLatitude: Float by lazy { if (values.isEmpty()) 0f else values.map { abs(it.latitude) }.max()!! } + @delegate:Transient val maxLongitude: Float by lazy { if (values.isEmpty()) 0f else values.map { abs(it.longitude) }.max()!! } + + var mapParameters = MapParameters() @Deprecated("as of 2.7.10") private var tiles = HashMap() - var mapParameters = MapParameters() private var tileList = ArrayList() - constructor() // for json parsing, we need to have a default constructor - - fun clone(): TileMap { - val toReturn = TileMap() - toReturn.tileList.addAll(tileList.map { it.clone() }) - toReturn.mapParameters = mapParameters - return toReturn - } - val values: Collection get() = tileList + /** for json parsing, we need to have a default constructor */ + constructor() /** generates an hexagonal map of given radius */ constructor(radius:Int, ruleset: Ruleset){ @@ -50,6 +47,12 @@ class TileMap { setTransients(ruleset) } + fun clone(): TileMap { + val toReturn = TileMap() + toReturn.tileList.addAll(tileList.map { it.clone() }) + toReturn.mapParameters = mapParameters + return toReturn + } operator fun contains(vector: Vector2): Boolean { return contains(vector.x.toInt(), vector.y.toInt()) diff --git a/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt b/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt index 5c5b6ddb..f5362385 100644 --- a/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt +++ b/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt @@ -22,6 +22,12 @@ class MapEditorMenuPopup(mapEditorScreen: MapEditorScreen): Popup(mapEditorScree mapNameEditor.addListener{ mapEditorScreen.mapName=mapNameEditor.text; true } add(mapNameEditor).row() + val newMapButton = TextButton("New map".tr(),skin) + newMapButton.onClick { + UncivGame.Current.setScreen(NewMapScreen()) + } + add(newMapButton).row() + val clearCurrentMapButton = TextButton("Clear current map".tr(),skin) clearCurrentMapButton.onClick { for(tileGroup in mapEditorScreen.mapHolder.tileGroups.values) diff --git a/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt b/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt index 15570ce2..294ad765 100644 --- a/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt +++ b/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt @@ -62,6 +62,7 @@ class MapParametersTable(val mapParameters: MapParameters, val isEmptyMapAllowed MapType.pangaea, MapType.continents, MapType.perlin, + MapType.archipelago, if (isEmptyMapAllowed) MapType.empty else null ) @@ -142,19 +143,19 @@ class MapParametersTable(val mapParameters: MapParameters, val isEmptyMapAllowed } - val averageHeightSlider = Slider(0f,1f,0.01f, false, skin).apply { + val elevationExponentSlider = Slider(0.5f,1f,0.01f, false, skin).apply { addListener(object : ChangeListener() { override fun changed(event: ChangeEvent?, actor: Actor?) { - mapParameters.mountainProbability = this@apply.value + mapParameters.elevationExponent = this@apply.value } }) } - averageHeightSlider.value = mapParameters.mountainProbability + elevationExponentSlider.value = mapParameters.elevationExponent advancedSettingsTable.add("Map Height".toLabel()).left() - advancedSettingsTable.add(averageHeightSlider).fillX().row() + advancedSettingsTable.add(elevationExponentSlider).fillX().row() - val tempExtremeSlider = Slider(0f,1f,0.01f, false, skin).apply { + val tempExtremeSlider = Slider(0.4f,0.8f,0.01f, false, skin).apply { addListener(object : ChangeListener() { override fun changed(event: ChangeEvent?, actor: Actor?) { mapParameters.temperatureExtremeness = this@apply.value @@ -166,7 +167,7 @@ class MapParametersTable(val mapParameters: MapParameters, val isEmptyMapAllowed advancedSettingsTable.add(tempExtremeSlider).fillX().row() - val resourceRichnessSlider = Slider(0f,0.2f,0.01f, false, skin).apply { + val resourceRichnessSlider = Slider(0f,0.5f,0.01f, false, skin).apply { addListener(object : ChangeListener() { override fun changed(event: ChangeEvent?, actor: Actor?) { mapParameters.resourceRichness = this@apply.value @@ -177,17 +178,27 @@ class MapParametersTable(val mapParameters: MapParameters, val isEmptyMapAllowed advancedSettingsTable.add("Resource richness".toLabel()).left() advancedSettingsTable.add(resourceRichnessSlider).fillX().row() - - val terrainFeatureRichnessSlider = Slider(0f,1f,0.01f, false, skin).apply { + val vegetationRichnessSlider = Slider(0f,1f,0.01f, false, skin).apply { addListener(object : ChangeListener() { override fun changed(event: ChangeEvent?, actor: Actor?) { - mapParameters.terrainFeatureRichness = this@apply.value + mapParameters.vegetationRichness = this@apply.value } }) } - terrainFeatureRichnessSlider.value = mapParameters.terrainFeatureRichness - advancedSettingsTable.add("Terrain Features richness".toLabel()).left() - advancedSettingsTable.add(terrainFeatureRichnessSlider).fillX().row() + vegetationRichnessSlider.value = mapParameters.vegetationRichness + advancedSettingsTable.add("Vegetation richness".toLabel()).left() + advancedSettingsTable.add(vegetationRichnessSlider).fillX().row() + + val rareFeaturesRichnessSlider = Slider(0f,0.5f,0.01f, false, skin).apply { + addListener(object : ChangeListener() { + override fun changed(event: ChangeEvent?, actor: Actor?) { + mapParameters.rareFeaturesRichness = this@apply.value + } + }) + } + rareFeaturesRichnessSlider.value = mapParameters.rareFeaturesRichness + advancedSettingsTable.add("Rare features richness".toLabel()).left() + advancedSettingsTable.add(rareFeaturesRichnessSlider).fillX().row() val maxCoastExtensionSlider = Slider(0f,5f,1f, false, skin).apply { @@ -202,7 +213,7 @@ class MapParametersTable(val mapParameters: MapParameters, val isEmptyMapAllowed advancedSettingsTable.add(maxCoastExtensionSlider).fillX().row() - val tilesPerBiomeAreaSlider = Slider(0f,15f,1f, false, skin).apply { + val tilesPerBiomeAreaSlider = Slider(1f,15f,1f, false, skin).apply { addListener(object : ChangeListener() { override fun changed(event: ChangeEvent?, actor: Actor?) { mapParameters.tilesPerBiomeArea = this@apply.value.toInt() @@ -214,40 +225,28 @@ class MapParametersTable(val mapParameters: MapParameters, val isEmptyMapAllowed advancedSettingsTable.add(tilesPerBiomeAreaSlider).fillX().row() - val waterPercentSlider = Slider(0f,1f,0.01f, false, skin).apply { + val waterThresholdSlider = Slider(-0.1f,0.1f,0.01f, false, skin).apply { addListener(object : ChangeListener() { override fun changed(event: ChangeEvent?, actor: Actor?) { - mapParameters.waterProbability = this@apply.value + mapParameters.waterThreshold = this@apply.value } }) } - waterPercentSlider.value = mapParameters.waterProbability - advancedSettingsTable.add("Water percent".toLabel()).left() - advancedSettingsTable.add(waterPercentSlider).fillX().row() - - - val landPercentSlider = Slider(0f,1f,0.01f, false, skin).apply { - addListener(object : ChangeListener() { - override fun changed(event: ChangeEvent?, actor: Actor?) { - mapParameters.landProbability = this@apply.value - } - }) - } - landPercentSlider.value = mapParameters.landProbability - advancedSettingsTable.add("Land percent".toLabel()).left() - advancedSettingsTable.add(landPercentSlider).fillX().row() + waterThresholdSlider.value = mapParameters.waterThreshold + advancedSettingsTable.add("Water level".toLabel()).left() + advancedSettingsTable.add(waterThresholdSlider).fillX().row() val resetToDefaultButton = TextButton("Reset to default".tr(), skin) resetToDefaultButton.onClick { mapParameters.resetAdvancedSettings() - averageHeightSlider.value = mapParameters.mountainProbability + elevationExponentSlider.value = mapParameters.elevationExponent tempExtremeSlider.value = mapParameters.temperatureExtremeness resourceRichnessSlider.value = mapParameters.resourceRichness - terrainFeatureRichnessSlider.value = mapParameters.terrainFeatureRichness + vegetationRichnessSlider.value = mapParameters.vegetationRichness + rareFeaturesRichnessSlider.value = mapParameters.rareFeaturesRichness maxCoastExtensionSlider.value = mapParameters.maxCoastExtension.toFloat() tilesPerBiomeAreaSlider.value = mapParameters.tilesPerBiomeArea.toFloat() - waterPercentSlider.value = mapParameters.waterProbability - landPercentSlider.value = mapParameters.landProbability + waterThresholdSlider.value = mapParameters.waterThreshold } advancedSettingsTable.add(resetToDefaultButton).colspan(2).row() } diff --git a/docs/Credits.md b/docs/Credits.md index 0ca5a9ed..6c0d3180 100644 --- a/docs/Credits.md +++ b/docs/Credits.md @@ -432,6 +432,8 @@ Unless otherwise specified, all the following are from [the Noun Project](https: * [Water](https://thenounproject.com/term/water/1762848/) By Kozan for Marsh * [Harvest](https://thenounproject.com/term/harvest/1022373/) By Made for Flood plains * [Puddle](https://thenounproject.com/search/?q=puddle&i=1138155) By Bakunetsu Kaito for Lakes +* [Island](https://thenounproject.com/search/?q=island&i=1546376) By Chanut is Industries for Atoll +* [Iceberg](https://thenounproject.com/search/?q=iceberg&i=44820) By Jaime Carrion for Ice ## Nations