diff --git a/android/Images/NotificationIcons/Construction.png b/android/Images/NotificationIcons/Construction.png new file mode 100644 index 0000000000..8e675a708c Binary files /dev/null and b/android/Images/NotificationIcons/Construction.png differ diff --git a/android/Images/NotificationIcons/Culture.png b/android/Images/NotificationIcons/Culture.png new file mode 100644 index 0000000000..f5ac2ebb25 Binary files /dev/null and b/android/Images/NotificationIcons/Culture.png differ diff --git a/android/Images/NotificationIcons/Growth.png b/android/Images/NotificationIcons/Growth.png new file mode 100644 index 0000000000..33f9dea931 Binary files /dev/null and b/android/Images/NotificationIcons/Growth.png differ diff --git a/android/Images/NotificationIcons/Science.png b/android/Images/NotificationIcons/Science.png new file mode 100644 index 0000000000..f7067033e9 Binary files /dev/null and b/android/Images/NotificationIcons/Science.png differ diff --git a/android/Images/NotificationIcons/Trade.png b/android/Images/NotificationIcons/Trade.png new file mode 100644 index 0000000000..52211234a7 Binary files /dev/null and b/android/Images/NotificationIcons/Trade.png differ diff --git a/android/Images/NotificationIcons/War.png b/android/Images/NotificationIcons/War.png new file mode 100644 index 0000000000..490aaa13a5 Binary files /dev/null and b/android/Images/NotificationIcons/War.png differ diff --git a/android/Images/OtherIcons/Scenario.png b/android/Images/OtherIcons/Scenario.png deleted file mode 100644 index 8ad37ccf5b..0000000000 Binary files a/android/Images/OtherIcons/Scenario.png and /dev/null differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 7111469796..395297a6c3 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -6,4200 +6,4235 @@ filter: MipMapLinearLinear, MipMapLinearLinear repeat: none EmojiIcons/Turn rotate: false - xy: 1940, 1279 + xy: 1432, 604 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/TurnOld rotate: false - xy: 1992, 1331 + xy: 1484, 656 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 ImprovementIcons/Academy rotate: false - xy: 1342, 1945 + xy: 1342, 1934 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Ancient ruins rotate: false - xy: 1648, 1945 + xy: 1648, 1934 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Barbarian encampment rotate: false - xy: 104, 65 + xy: 104, 54 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Camp rotate: false - xy: 204, 1053 + xy: 204, 1042 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Citadel rotate: false - xy: 483, 1707 + xy: 483, 1696 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/City ruins rotate: false - xy: 483, 1605 + xy: 483, 1594 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Customs house rotate: false - xy: 1299, 1741 + xy: 1299, 1730 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Farm rotate: false - xy: 306, 1199 + xy: 306, 1188 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Fishing Boats rotate: false - xy: 306, 791 + xy: 306, 780 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Fort rotate: false - xy: 1503, 1537 + xy: 1503, 1526 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Landmark rotate: false - xy: 408, 1095 + xy: 408, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Lumber mill rotate: false - xy: 408, 687 + xy: 408, 676 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Manufactory rotate: false - xy: 612, 1437 + xy: 612, 1426 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Mine rotate: false - xy: 612, 1131 + xy: 612, 1120 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Moai rotate: false - xy: 816, 1335 + xy: 816, 1324 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Oil well rotate: false - xy: 510, 723 + xy: 510, 712 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Pasture rotate: false - xy: 918, 1131 + xy: 918, 1120 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Plantation rotate: false - xy: 816, 825 + xy: 816, 814 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Quarry rotate: false - xy: 918, 723 + xy: 918, 712 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Railroad rotate: false - xy: 714, 621 + xy: 714, 610 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Railroad rotate: false - xy: 714, 621 + xy: 714, 610 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Road rotate: false - xy: 1122, 1051 + xy: 1122, 1040 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Terrace farm rotate: false - xy: 1734, 1333 + xy: 1632, 1220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Trading post rotate: false - xy: 1530, 1027 + xy: 1428, 914 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/America rotate: false - xy: 2, 269 + xy: 2, 258 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Arabia rotate: false - xy: 1750, 1945 + xy: 1750, 1934 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Aztecs rotate: false - xy: 1750, 1843 + xy: 1750, 1832 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Babylon rotate: false - xy: 1852, 1843 + xy: 1852, 1832 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/China rotate: false - xy: 204, 747 + xy: 204, 736 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/CityState rotate: false - xy: 687, 1743 + xy: 687, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Denmark rotate: false - xy: 1503, 1741 + xy: 1503, 1730 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Egypt rotate: false - xy: 1605, 1639 + xy: 1605, 1628 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/England rotate: false - xy: 306, 1403 + xy: 306, 1392 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/France rotate: false - xy: 1605, 1537 + xy: 1605, 1526 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Germany rotate: false - xy: 1911, 1741 + xy: 1911, 1730 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Greece rotate: false - xy: 1911, 1537 + xy: 1911, 1526 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Inca rotate: false - xy: 1197, 1459 + xy: 1197, 1448 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/India rotate: false - xy: 1401, 1435 + xy: 1401, 1424 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Iroquois rotate: false - xy: 1809, 1435 + xy: 1809, 1424 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Japan rotate: false - xy: 408, 1503 + xy: 408, 1492 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Korea rotate: false - xy: 408, 1299 + xy: 408, 1288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Mongolia rotate: false - xy: 612, 1029 + xy: 612, 1018 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Persia rotate: false - xy: 714, 825 + xy: 714, 814 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Polynesia rotate: false - xy: 1020, 1029 + xy: 1020, 1018 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Rome rotate: false - xy: 1122, 745 + xy: 1122, 734 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Russia rotate: false - xy: 1122, 643 + xy: 1122, 632 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Siam rotate: false - xy: 1224, 1027 + xy: 1428, 1322 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Songhai rotate: false - xy: 1224, 925 + xy: 1530, 1322 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Spain rotate: false - xy: 1326, 1027 + xy: 1224, 914 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/The Ottomans rotate: false - xy: 1224, 721 + xy: 1734, 1322 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/Aircraft +NotificationIcons/Construction rotate: false - xy: 1224, 669 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/BackArrow - rotate: false - xy: 1938, 1383 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Banner - rotate: false - xy: 104, 167 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Camera - rotate: false - xy: 204, 1155 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Circle - rotate: false - xy: 1162, 1867 - size: 178, 178 - orig: 178, 178 - offset: 0, 0 - index: -1 -OtherIcons/Close - rotate: false - xy: 789, 1743 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Crosshair - rotate: false - xy: 1197, 1765 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/DisbandUnit - rotate: false - xy: 1605, 1741 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Down - rotate: false - xy: 1684, 979 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Fire - rotate: false - xy: 306, 995 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Hexagon - rotate: false - xy: 2, 1805 - size: 277, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -OtherIcons/Load - rotate: false - xy: 408, 891 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Lock - rotate: false - xy: 408, 789 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/MapEditor - rotate: false - xy: 510, 1335 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/MenuIcon - rotate: false - xy: 612, 1233 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Mods - rotate: false - xy: 510, 927 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Multiplayer - rotate: false - xy: 816, 1233 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/New - rotate: false - xy: 714, 1029 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Options - rotate: false - xy: 714, 927 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Pentagon - rotate: false - xy: 612, 723 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Pillage - rotate: false - xy: 714, 723 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Puppet - rotate: false - xy: 1020, 927 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Quest - rotate: false - xy: 1020, 825 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Quickstart - rotate: false - xy: 1020, 723 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Resume - rotate: false - xy: 1122, 1255 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Scenario - rotate: false - xy: 1326, 1333 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Shield - rotate: false - xy: 1428, 1333 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Sleep - rotate: false - xy: 1530, 1333 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Star - rotate: false - xy: 1632, 1339 - size: 100, 94 - orig: 100, 94 - offset: 0, 0 - index: -1 -OtherIcons/Stop - rotate: false - xy: 1530, 1129 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/TableBackground - rotate: false - xy: 1380, 615 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Triangle - rotate: false - xy: 2, 575 - size: 178, 178 - orig: 178, 178 - offset: 0, 0 - index: -1 -OtherIcons/Up - rotate: false - xy: 1634, 823 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/buttonBackground - rotate: false - xy: 510, 1553 - size: 52, 50 - orig: 52, 50 - offset: 0, 0 - index: -1 -OtherIcons/whiteDot - rotate: false - xy: 310, 73 - size: 1, 1 - orig: 1, 1 - offset: 0, 0 - index: -1 -PolicyIcons/Aristocracy - rotate: false - xy: 1734, 1179 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Citizenship - rotate: false - xy: 1328, 669 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Civil Society - rotate: false - xy: 1632, 979 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Collective Rule - rotate: false - xy: 1632, 927 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Constitution - rotate: false - xy: 234, 593 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Democracy - rotate: false - xy: 1684, 1031 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Entrepreneurship - rotate: false - xy: 1786, 1179 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Fascism - rotate: false - xy: 1480, 771 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Religion - rotate: false - xy: 1634, 875 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Speech - rotate: false - xy: 1686, 875 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Thought - rotate: false - xy: 206, 541 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Humanism - rotate: false - xy: 206, 333 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Landed Elite - rotate: false - xy: 206, 125 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Legalism - rotate: false - xy: 206, 73 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Mandate Of Heaven - rotate: false - xy: 258, 489 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Mercantilism - rotate: false - xy: 258, 333 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Meritocracy - rotate: false - xy: 258, 281 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Militarism - rotate: false - xy: 258, 229 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Military Caste - rotate: false - xy: 258, 177 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Military Tradition - rotate: false - xy: 258, 125 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Monarchy - rotate: false - xy: 1224, 617 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Oligarchy - rotate: false - xy: 1990, 1383 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Organized Religion - rotate: false - xy: 1122, 591 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Patronage - rotate: false - xy: 65, 13 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Police State - rotate: false - xy: 117, 13 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Populism - rotate: false - xy: 169, 13 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Professional Army - rotate: false - xy: 221, 21 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Protectionism - rotate: false - xy: 273, 21 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Reformation - rotate: false - xy: 1736, 1023 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Representation - rotate: false - xy: 1788, 1127 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Republic - rotate: false - xy: 1788, 1075 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Scientific Revolution - rotate: false - xy: 1788, 1023 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Secularism - rotate: false - xy: 1738, 919 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Sovereignty - rotate: false - xy: 1380, 667 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Theocracy - rotate: false - xy: 1484, 667 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Total War - rotate: false - xy: 1484, 615 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Trade Unions - rotate: false - xy: 1940, 1331 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Universal Suffrage - rotate: false - xy: 1992, 1279 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Warrior Code - rotate: false - xy: 1738, 815 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -ResourceIcons/Aluminum - rotate: false - xy: 1546, 1945 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Bananas - rotate: false - xy: 104, 371 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Cattle - rotate: false - xy: 204, 951 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Coal - rotate: false - xy: 789, 1641 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Cotton - rotate: false - xy: 1095, 1641 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Deer - rotate: false - xy: 1401, 1741 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Dyes - rotate: false - xy: 1707, 1741 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Fish - rotate: false - xy: 306, 893 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Furs - rotate: false - xy: 1707, 1537 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Gems - rotate: false - xy: 306, 689 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Gold Ore - rotate: false - xy: 1911, 1639 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Horses - rotate: false - xy: 993, 1539 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Incense - rotate: false - xy: 1299, 1435 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Iron - rotate: false - xy: 1605, 1435 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Ivory - rotate: false - xy: 1911, 1435 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Marble - rotate: false - xy: 714, 1437 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Oil - rotate: false - xy: 1020, 1335 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Pearls - rotate: false - xy: 1020, 1233 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Sheep - rotate: false - xy: 1326, 1231 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Silk - rotate: false - xy: 1326, 1129 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Silver - rotate: false - xy: 1428, 1231 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Spices - rotate: false - xy: 1530, 1231 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Stone - rotate: false - xy: 1428, 1027 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Sugar - rotate: false - xy: 1632, 1237 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Uranium - rotate: false - xy: 1734, 1231 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Whales - rotate: false - xy: 1836, 1333 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Wheat - rotate: false - xy: 1326, 721 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Wine - rotate: false - xy: 1428, 823 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -StatIcons/Acquire - rotate: false - xy: 1444, 1945 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -StatIcons/CityConnection - rotate: false - xy: 585, 1743 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -StatIcons/Culture - rotate: false - xy: 2, 1361 - size: 200, 200 - orig: 200, 200 - offset: 0, 0 - index: -1 -StatIcons/Food - rotate: false - xy: 281, 1607 - size: 200, 200 - orig: 200, 200 - offset: 0, 0 - index: -1 -StatIcons/Gold - rotate: false - xy: 556, 1845 - size: 200, 200 - orig: 200, 200 - offset: 0, 0 - index: -1 -StatIcons/Happiness - rotate: false - xy: 2, 1159 - size: 200, 200 - orig: 200, 200 - offset: 0, 0 - index: -1 -StatIcons/InterceptRange - rotate: false - xy: 206, 229 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/Malcontent - rotate: false - xy: 758, 1845 - size: 200, 200 - orig: 200, 200 - offset: 0, 0 - index: -1 -StatIcons/Movement - rotate: false - xy: 1328, 617 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/Population - rotate: false - xy: 2, 957 + xy: 2, 1350 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Production rotate: false - xy: 960, 1845 + xy: 2, 1350 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 +NotificationIcons/Culture + rotate: false + xy: 281, 1596 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +StatIcons/Culture + rotate: false + xy: 281, 1596 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +NotificationIcons/Growth + rotate: false + xy: 758, 1834 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +StatIcons/Population + rotate: false + xy: 758, 1834 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +NotificationIcons/Science + rotate: false + xy: 2, 744 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +StatIcons/Science + rotate: false + xy: 2, 744 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +OtherIcons/Aircraft + rotate: false + xy: 1224, 658 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/BackArrow + rotate: false + xy: 1836, 1270 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Banner + rotate: false + xy: 104, 156 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Camera + rotate: false + xy: 204, 1144 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Circle + rotate: false + xy: 1162, 1856 + size: 178, 178 + orig: 178, 178 + offset: 0, 0 + index: -1 +OtherIcons/Close + rotate: false + xy: 789, 1732 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Crosshair + rotate: false + xy: 1197, 1754 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/DisbandUnit + rotate: false + xy: 1605, 1730 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Down + rotate: false + xy: 1582, 866 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Fire + rotate: false + xy: 306, 984 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Hexagon + rotate: false + xy: 2, 1794 + size: 277, 240 + orig: 277, 240 + offset: 0, 0 + index: -1 +OtherIcons/Load + rotate: false + xy: 408, 880 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Lock + rotate: false + xy: 408, 778 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/MapEditor + rotate: false + xy: 510, 1324 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/MenuIcon + rotate: false + xy: 612, 1222 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Mods + rotate: false + xy: 510, 916 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Multiplayer + rotate: false + xy: 816, 1222 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/New + rotate: false + xy: 714, 1018 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Options + rotate: false + xy: 714, 916 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Pentagon + rotate: false + xy: 612, 712 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Pillage + rotate: false + xy: 714, 712 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NotificationIcons/War + rotate: false + xy: 714, 712 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Puppet + rotate: false + xy: 1020, 916 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Quest + rotate: false + xy: 1020, 814 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Quickstart + rotate: false + xy: 1020, 712 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Resume + rotate: false + xy: 1122, 1244 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Shield + rotate: false + xy: 1326, 1220 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Sleep + rotate: false + xy: 1428, 1220 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Star + rotate: false + xy: 1530, 1226 + size: 100, 94 + orig: 100, 94 + offset: 0, 0 + index: -1 +OtherIcons/Stop + rotate: false + xy: 1428, 1016 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/TableBackground + rotate: false + xy: 1636, 702 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Triangle + rotate: false + xy: 2, 564 + size: 178, 178 + orig: 178, 178 + offset: 0, 0 + index: -1 +OtherIcons/Up + rotate: false + xy: 1536, 658 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/buttonBackground + rotate: false + xy: 510, 1542 + size: 52, 50 + orig: 52, 50 + offset: 0, 0 + index: -1 +OtherIcons/whiteDot + rotate: false + xy: 1758, 546 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +PolicyIcons/Aristocracy + rotate: false + xy: 1632, 1066 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Citizenship + rotate: false + xy: 1328, 658 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Civil Society + rotate: false + xy: 1530, 866 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Collective Rule + rotate: false + xy: 1530, 814 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Constitution + rotate: false + xy: 234, 582 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Democracy + rotate: false + xy: 1582, 918 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Entrepreneurship + rotate: false + xy: 1684, 1066 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Fascism + rotate: false + xy: 1428, 708 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Free Religion + rotate: false + xy: 1532, 762 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Free Speech + rotate: false + xy: 1532, 710 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Free Thought + rotate: false + xy: 1584, 762 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Humanism + rotate: false + xy: 206, 426 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Landed Elite + rotate: false + xy: 206, 218 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Legalism + rotate: false + xy: 206, 166 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Mandate Of Heaven + rotate: false + xy: 206, 62 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Mercantilism + rotate: false + xy: 258, 426 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Meritocracy + rotate: false + xy: 258, 374 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Militarism + rotate: false + xy: 258, 322 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Military Caste + rotate: false + xy: 258, 270 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Military Tradition + rotate: false + xy: 258, 218 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Monarchy + rotate: false + xy: 258, 114 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Oligarchy + rotate: false + xy: 1276, 606 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Organized Religion + rotate: false + xy: 1328, 606 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Patronage + rotate: false + xy: 1990, 1372 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Police State + rotate: false + xy: 1122, 580 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Populism + rotate: false + xy: 65, 2 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Professional Army + rotate: false + xy: 117, 2 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Protectionism + rotate: false + xy: 169, 2 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Reformation + rotate: false + xy: 1634, 1014 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Representation + rotate: false + xy: 1634, 910 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Republic + rotate: false + xy: 1634, 858 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Scientific Revolution + rotate: false + xy: 1686, 1014 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Secularism + rotate: false + xy: 1686, 910 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Sovereignty + rotate: false + xy: 1688, 806 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Theocracy + rotate: false + xy: 1380, 656 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Total War + rotate: false + xy: 1432, 656 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Trade Unions + rotate: false + xy: 1380, 604 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Universal Suffrage + rotate: false + xy: 1484, 604 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Warrior Code + rotate: false + xy: 1588, 650 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +ResourceIcons/Aluminum + rotate: false + xy: 1546, 1934 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Bananas + rotate: false + xy: 104, 360 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Cattle + rotate: false + xy: 204, 940 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Coal + rotate: false + xy: 789, 1630 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Cotton + rotate: false + xy: 1095, 1630 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Deer + rotate: false + xy: 1401, 1730 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Dyes + rotate: false + xy: 1707, 1730 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Fish + rotate: false + xy: 306, 882 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Furs + rotate: false + xy: 1707, 1526 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Gems + rotate: false + xy: 306, 678 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Gold Ore + rotate: false + xy: 1911, 1628 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Horses + rotate: false + xy: 993, 1528 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Incense + rotate: false + xy: 1299, 1424 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Iron + rotate: false + xy: 1605, 1424 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Ivory + rotate: false + xy: 1911, 1424 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Marble + rotate: false + xy: 714, 1426 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Oil + rotate: false + xy: 1020, 1324 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Pearls + rotate: false + xy: 1020, 1222 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Sheep + rotate: false + xy: 1224, 1118 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Silk + rotate: false + xy: 1224, 1016 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Silver + rotate: false + xy: 1326, 1118 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Spices + rotate: false + xy: 1428, 1118 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Stone + rotate: false + xy: 1326, 914 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Sugar + rotate: false + xy: 1530, 1124 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Uranium + rotate: false + xy: 1632, 1118 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Whales + rotate: false + xy: 1734, 1220 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Wheat + rotate: false + xy: 1836, 1322 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Wine + rotate: false + xy: 1326, 710 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +StatIcons/Acquire + rotate: false + xy: 1444, 1934 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NotificationIcons/Trade + rotate: false + xy: 1444, 1934 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +StatIcons/CityConnection + rotate: false + xy: 585, 1732 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +StatIcons/Food + rotate: false + xy: 556, 1834 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +StatIcons/Gold + rotate: false + xy: 2, 1148 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +StatIcons/Happiness + rotate: false + xy: 2, 946 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +StatIcons/InterceptRange + rotate: false + xy: 206, 322 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/Malcontent + rotate: false + xy: 960, 1834 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +StatIcons/Movement + rotate: false + xy: 1224, 606 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 StatIcons/Range rotate: false - xy: 1736, 1127 + xy: 221, 10 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/RangedStrength rotate: false - xy: 1736, 1075 + xy: 273, 10 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Resistance rotate: false - xy: 1122, 1357 + xy: 1122, 1346 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -StatIcons/Science - rotate: false - xy: 2, 755 - size: 200, 200 - orig: 200, 200 - offset: 0, 0 - index: -1 StatIcons/Specialist rotate: false - xy: 1428, 1129 + xy: 1326, 1016 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Strength rotate: false - xy: 1432, 667 + xy: 1688, 754 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 TechIcons/Acoustics rotate: false - xy: 2, 473 + xy: 2, 462 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Agriculture rotate: false - xy: 2, 371 + xy: 2, 360 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Animal Husbandry rotate: false - xy: 2, 167 + xy: 2, 156 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archaeology rotate: false - xy: 2, 65 + xy: 2, 54 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archery rotate: false - xy: 1852, 1945 + xy: 1852, 1934 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Architecture rotate: false - xy: 1342, 1843 + xy: 1342, 1832 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Astronomy rotate: false - xy: 1444, 1843 + xy: 1444, 1832 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Atomic Theory rotate: false - xy: 1648, 1843 + xy: 1648, 1832 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ballistics rotate: false - xy: 104, 473 + xy: 104, 462 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Banking rotate: false - xy: 104, 269 + xy: 104, 258 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Biology rotate: false - xy: 204, 1461 + xy: 204, 1450 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Bronze Working rotate: false - xy: 204, 1359 + xy: 204, 1348 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Calendar rotate: false - xy: 204, 1257 + xy: 204, 1246 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chemistry rotate: false - xy: 204, 849 + xy: 204, 838 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chivalry rotate: false - xy: 182, 645 + xy: 182, 634 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Civil Service rotate: false - xy: 687, 1641 + xy: 687, 1630 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combined Arms rotate: false - xy: 891, 1743 + xy: 891, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combustion rotate: false - xy: 891, 1641 + xy: 891, 1630 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Compass rotate: false - xy: 993, 1743 + xy: 993, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Computers rotate: false - xy: 993, 1641 + xy: 993, 1630 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Construction rotate: false - xy: 1095, 1743 + xy: 1095, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Currency rotate: false - xy: 1197, 1663 + xy: 1197, 1652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Dynamite rotate: false - xy: 1809, 1741 + xy: 1809, 1730 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ecology rotate: false - xy: 1299, 1639 + xy: 1299, 1628 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Economics rotate: false - xy: 1401, 1639 + xy: 1401, 1628 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Education rotate: false - xy: 1503, 1639 + xy: 1503, 1628 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electricity rotate: false - xy: 1707, 1639 + xy: 1707, 1628 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electronics rotate: false - xy: 1809, 1639 + xy: 1809, 1628 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Engineering rotate: false - xy: 306, 1505 + xy: 306, 1494 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Fertilizer rotate: false - xy: 306, 1097 + xy: 306, 1086 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Flight rotate: false - xy: 1197, 1561 + xy: 1197, 1550 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Future Tech rotate: false - xy: 1809, 1537 + xy: 1809, 1526 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Guilds rotate: false - xy: 585, 1539 + xy: 585, 1528 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Gunpowder rotate: false - xy: 687, 1539 + xy: 687, 1528 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Horseback Riding rotate: false - xy: 891, 1539 + xy: 891, 1528 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Industrialization rotate: false - xy: 1503, 1435 + xy: 1503, 1424 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Iron Working rotate: false - xy: 1707, 1435 + xy: 1707, 1424 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Lasers rotate: false - xy: 408, 993 + xy: 408, 982 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Machinery rotate: false - xy: 510, 1437 + xy: 510, 1426 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Masonry rotate: false - xy: 612, 1335 + xy: 612, 1324 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mass Media rotate: false - xy: 816, 1437 + xy: 816, 1426 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mathematics rotate: false - xy: 510, 1131 + xy: 510, 1120 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metal Casting rotate: false - xy: 714, 1335 + xy: 714, 1324 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metallurgy rotate: false - xy: 918, 1437 + xy: 918, 1426 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Military Science rotate: false - xy: 510, 1029 + xy: 510, 1018 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mining rotate: false - xy: 714, 1233 + xy: 714, 1222 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mobile Tactics rotate: false - xy: 1020, 1437 + xy: 1020, 1426 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nanotechnology rotate: false - xy: 918, 1335 + xy: 918, 1324 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Navigation rotate: false - xy: 612, 927 + xy: 612, 916 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nuclear Fission rotate: false - xy: 816, 1131 + xy: 816, 1120 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Optics rotate: false - xy: 612, 825 + xy: 612, 814 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Particle Physics rotate: false - xy: 816, 1029 + xy: 816, 1018 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pharmaceuticals rotate: false - xy: 816, 927 + xy: 816, 916 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Philosophy rotate: false - xy: 918, 1029 + xy: 918, 1018 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Physics rotate: false - xy: 1020, 1131 + xy: 1020, 1120 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Plastics rotate: false - xy: 918, 927 + xy: 918, 916 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pottery rotate: false - xy: 816, 723 + xy: 816, 712 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Printing Press rotate: false - xy: 918, 825 + xy: 918, 814 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radar rotate: false - xy: 510, 621 + xy: 510, 610 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radio rotate: false - xy: 612, 621 + xy: 612, 610 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Railroad rotate: false - xy: 816, 621 + xy: 816, 610 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Refrigeration rotate: false - xy: 918, 621 + xy: 918, 610 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Replaceable Parts rotate: false - xy: 1020, 621 + xy: 1020, 610 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rifling rotate: false - xy: 1122, 1153 + xy: 1122, 1142 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Robotics rotate: false - xy: 1122, 949 + xy: 1122, 938 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rocketry rotate: false - xy: 1122, 847 + xy: 1122, 836 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Sailing rotate: false - xy: 1224, 1333 + xy: 1224, 1322 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Satellites rotate: false - xy: 1224, 1231 + xy: 1224, 1220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Scientific Theory rotate: false - xy: 1224, 1129 + xy: 1326, 1322 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steam Power rotate: false - xy: 1224, 823 + xy: 1632, 1322 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steel rotate: false - xy: 1326, 925 + xy: 1224, 812 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/The Wheel rotate: false - xy: 1326, 823 + xy: 1224, 710 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Theology rotate: false - xy: 1428, 925 + xy: 1326, 812 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Trapping rotate: false - xy: 1632, 1135 + xy: 1530, 1022 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Writing rotate: false - xy: 1530, 925 + xy: 1428, 812 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/AtollOverlay rotate: false - xy: 1546, 1843 + xy: 1546, 1832 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/CityOverlay rotate: false - xy: 585, 1641 + xy: 585, 1630 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/CrosshatchHexagon rotate: false - xy: 281, 1809 + xy: 281, 1798 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 TileSets/FantasyHex/CrosshatchHexagon rotate: false - xy: 281, 1809 + xy: 281, 1798 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 TileSets/Default/FalloutOverlay rotate: false - xy: 306, 1301 + xy: 306, 1290 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Flood plainsOverlay rotate: false - xy: 1299, 1537 + xy: 1299, 1526 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/ForestOverlay rotate: false - xy: 1401, 1537 + xy: 1401, 1526 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Hexagon rotate: false - xy: 2, 1563 + xy: 2, 1552 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 TileSets/FantasyHex/Hexagon rotate: false - xy: 2, 1563 + xy: 2, 1552 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 TileSets/Default/HillOverlay rotate: false - xy: 789, 1539 + xy: 789, 1528 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/IceOverlay rotate: false - xy: 1095, 1539 + xy: 1095, 1528 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/JungleOverlay rotate: false - xy: 408, 1401 + xy: 408, 1390 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/LakesOverlay rotate: false - xy: 408, 1197 + xy: 408, 1186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MarshOverlay rotate: false - xy: 510, 1233 + xy: 510, 1222 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MountainOverlay rotate: false - xy: 714, 1131 + xy: 714, 1120 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/NaturalWonderOverlay rotate: false - xy: 510, 825 + xy: 510, 814 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/OasisOverlay rotate: false - xy: 918, 1233 + xy: 918, 1222 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-Bottom rotate: false - xy: 1304, 490 + xy: 344, 342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-Bottom rotate: false - xy: 1304, 490 + xy: 344, 342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-BottomLeft rotate: false - xy: 1338, 463 + xy: 344, 312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-BottomLeft rotate: false - xy: 1338, 463 + xy: 344, 312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-BottomRight rotate: false - xy: 1372, 461 + xy: 344, 282 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-BottomRight rotate: false - xy: 1372, 461 + xy: 344, 282 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/road rotate: false - xy: 1954, 2034 + xy: 1954, 2023 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/road rotate: false - xy: 1954, 2034 + xy: 1954, 2023 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/Railroad rotate: false - xy: 2, 52 + xy: 2, 41 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Academy rotate: false - xy: 1174, 605 + xy: 1734, 1130 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Aluminum rotate: false - xy: 2, 22 + xy: 1836, 1240 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ancient ruins rotate: false - xy: 1530, 843 + xy: 1938, 1342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ancient ruins2 rotate: false - xy: 1838, 1199 + xy: 1174, 602 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Atoll rotate: false - xy: 1208, 587 + xy: 1622, 620 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Bananas rotate: false - xy: 1310, 587 + xy: 2006, 1342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Barbarian encampment rotate: false - xy: 1344, 587 + xy: 1656, 620 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Barringer Crater rotate: false - xy: 1378, 585 + xy: 1690, 620 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Camp+Deer rotate: false - xy: 1924, 1219 + xy: 1738, 889 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Camp+Furs rotate: false - xy: 1958, 1219 + xy: 1738, 859 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Camp+Ivory rotate: false - xy: 1992, 1218 + xy: 1740, 829 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Cattle rotate: false - xy: 1412, 555 + xy: 1804, 1108 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Cerro de Potosi rotate: false - xy: 1480, 555 + xy: 1772, 1048 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Citadel rotate: false - xy: 1532, 776 + xy: 1772, 951 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City rotate: false - xy: 1566, 806 + xy: 1772, 914 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+City rotate: false - xy: 1566, 806 + xy: 1772, 914 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+City rotate: false - xy: 1566, 806 + xy: 1772, 914 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City ruins rotate: false - xy: 1600, 813 + xy: 1772, 884 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Ancient era rotate: false - xy: 1532, 742 + xy: 1806, 1044 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Classical era rotate: false - xy: 1566, 772 + xy: 1806, 1010 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Future era rotate: false - xy: 1600, 777 + xy: 1806, 974 size: 32, 34 orig: 32, 34 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Industrial era rotate: false - xy: 1634, 788 + xy: 1988, 1832 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Information era rotate: false - xy: 1668, 785 + xy: 1806, 936 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Medieval era rotate: false - xy: 1702, 789 + xy: 1806, 902 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Modern era rotate: false - xy: 1566, 736 + xy: 1744, 673 size: 32, 34 orig: 32, 34 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Renaissance era rotate: false - xy: 1600, 743 + xy: 1744, 639 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coal rotate: false - xy: 1668, 755 + xy: 1208, 576 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast rotate: false - xy: 1702, 759 + xy: 1242, 576 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast+Atoll rotate: false - xy: 1736, 785 + xy: 1276, 576 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast+Ice rotate: false - xy: 1770, 785 + xy: 1310, 576 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast+Oil well rotate: false - xy: 1804, 785 + xy: 1344, 576 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Cotton rotate: false - xy: 1702, 729 + xy: 1548, 576 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Customs house rotate: false - xy: 1770, 717 + xy: 1622, 583 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Deer rotate: false - xy: 1804, 725 + xy: 1656, 590 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert rotate: false - xy: 1600, 713 + xy: 1690, 590 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Ancient ruins rotate: false - xy: 1634, 698 + xy: 1940, 1312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+City rotate: false - xy: 1668, 690 + xy: 1940, 1277 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Fallout rotate: false - xy: 1702, 699 + xy: 1974, 1312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Farm rotate: false - xy: 1736, 694 + xy: 1974, 1282 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Flood plains rotate: false - xy: 1770, 687 + xy: 2008, 1312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Flood plains+Ancient ruins rotate: false - xy: 1804, 695 + xy: 2008, 1282 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Flood plains+Farm rotate: false - xy: 1702, 669 + xy: 1838, 1210 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Oasis rotate: false - xy: 1736, 664 + xy: 1838, 1180 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Dyes rotate: false - xy: 284, 659 + xy: 1906, 1210 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/El Dorado rotate: false - xy: 318, 658 + xy: 1906, 1179 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fish rotate: false - xy: 352, 659 + xy: 1838, 1150 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fishing Boats rotate: false - xy: 1840, 1169 + xy: 1872, 1150 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fishing Boats+Whales rotate: false - xy: 1840, 1139 + xy: 1906, 1149 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fort rotate: false - xy: 1840, 1074 + xy: 1838, 1085 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fountain of Youth rotate: false - xy: 1840, 1040 + xy: 1872, 1116 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Furs rotate: false - xy: 1840, 980 + xy: 1906, 1119 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Gems rotate: false - xy: 1842, 860 + xy: 1840, 995 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Gold Ore rotate: false - xy: 1842, 830 + xy: 1840, 965 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grand Mesa rotate: false - xy: 1842, 796 + xy: 1840, 931 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland rotate: false - xy: 1838, 766 + xy: 1840, 901 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Fallout rotate: false - xy: 1838, 736 + xy: 1840, 871 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Farm rotate: false - xy: 1838, 706 + xy: 1874, 1056 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest rotate: false - xy: 1838, 673 + xy: 1874, 1023 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Aluminum rotate: false - xy: 2006, 2001 + xy: 1874, 990 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp rotate: false - xy: 2006, 1968 + xy: 1874, 957 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Deer rotate: false - xy: 2006, 1935 + xy: 1874, 924 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Furs rotate: false - xy: 2006, 1902 + xy: 1874, 891 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Coal rotate: false - xy: 1804, 632 + xy: 1908, 1056 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Gold rotate: false - xy: 1838, 640 + xy: 1908, 1023 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Iron rotate: false - xy: 1838, 607 + xy: 1908, 990 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Lumber mill rotate: false - xy: 386, 654 + xy: 1908, 957 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Silver rotate: false - xy: 420, 654 + xy: 1908, 924 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Jungle rotate: false - xy: 454, 653 + xy: 1908, 890 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Jungle+Trading post rotate: false - xy: 352, 625 + xy: 1874, 857 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Marsh rotate: false - xy: 386, 623 + xy: 1908, 859 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Great Barrier Reef rotate: false - xy: 286, 593 + xy: 1758, 609 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill rotate: false - xy: 310, 230 + xy: 2006, 1933 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Fallout rotate: false - xy: 310, 196 + xy: 2006, 1899 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Farm rotate: false - xy: 310, 166 + xy: 2006, 1869 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest rotate: false - xy: 310, 136 + xy: 1940, 1247 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Camp rotate: false - xy: 310, 106 + xy: 1974, 1252 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill rotate: false - xy: 310, 76 + xy: 2008, 1252 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Trading post rotate: false - xy: 320, 593 + xy: 1940, 1217 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Marble+Quarry rotate: false - xy: 325, 46 + xy: 1974, 1222 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Mine rotate: false - xy: 325, 16 + xy: 1940, 1187 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Stone+Quarry rotate: false - xy: 344, 563 + xy: 1974, 1192 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Terrace farm rotate: false - xy: 344, 533 + xy: 2008, 1222 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Horses rotate: false - xy: 344, 413 + xy: 1940, 1127 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Incense rotate: false - xy: 344, 262 + xy: 2008, 1132 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Iron rotate: false - xy: 344, 202 + xy: 1942, 1067 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ivory rotate: false - xy: 344, 142 + xy: 1942, 1007 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Krakatoa rotate: false - xy: 378, 561 + xy: 1976, 1069 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Lakes rotate: false - xy: 378, 501 + xy: 1976, 1009 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Landmark rotate: false - xy: 378, 403 + xy: 1976, 911 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Manufactory rotate: false - xy: 378, 152 + xy: 2010, 881 size: 32, 39 orig: 32, 39 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Marble rotate: false - xy: 378, 92 + xy: 2010, 851 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mine rotate: false - xy: 488, 591 + xy: 1724, 546 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Moai rotate: false - xy: 590, 590 + xy: 1908, 828 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mount Fuji rotate: false - xy: 726, 589 + xy: 2013, 1800 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mountain rotate: false - xy: 760, 583 + xy: 2013, 1762 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean rotate: false - xy: 964, 591 + xy: 2013, 1582 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Atoll rotate: false - xy: 998, 591 + xy: 2013, 1552 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Ice rotate: false - xy: 1032, 591 + xy: 2013, 1522 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil rotate: false - xy: 1066, 591 + xy: 2013, 1492 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil well rotate: false - xy: 794, 561 + xy: 2013, 1462 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Old Faithful rotate: false - xy: 828, 557 + xy: 2013, 1428 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture rotate: false - xy: 930, 561 + xy: 1718, 486 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Cattle rotate: false - xy: 998, 557 + xy: 420, 642 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Horses rotate: false - xy: 1032, 557 + xy: 454, 642 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Sheep rotate: false - xy: 1066, 557 + xy: 1752, 512 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture2 rotate: false - xy: 964, 561 + xy: 386, 646 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pearls rotate: false - xy: 1134, 561 + xy: 352, 618 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains rotate: false - xy: 1270, 527 + xy: 286, 582 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+City rotate: false - xy: 1304, 520 + xy: 310, 545 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Fallout rotate: false - xy: 1338, 527 + xy: 310, 515 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Farm rotate: false - xy: 1372, 525 + xy: 310, 485 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest rotate: false - xy: 1406, 521 + xy: 310, 451 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp rotate: false - xy: 1440, 521 + xy: 310, 417 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill rotate: false - xy: 1474, 521 + xy: 310, 383 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle rotate: false - xy: 1508, 521 + xy: 310, 349 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle+Ancient ruins rotate: false - xy: 1338, 493 + xy: 310, 315 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post rotate: false - xy: 1372, 491 + xy: 310, 281 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation rotate: false - xy: 1406, 491 + xy: 310, 251 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Bananas rotate: false - xy: 1440, 491 + xy: 310, 221 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Cotton rotate: false - xy: 1474, 491 + xy: 310, 191 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Dyes rotate: false - xy: 1508, 491 + xy: 310, 161 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Incense rotate: false - xy: 862, 531 + xy: 310, 131 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Silk rotate: false - xy: 896, 531 + xy: 310, 101 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Spices rotate: false - xy: 930, 531 + xy: 310, 71 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Sugar rotate: false - xy: 964, 531 + xy: 320, 582 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Wine rotate: false - xy: 998, 527 + xy: 325, 41 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Polder rotate: false - xy: 1032, 527 + xy: 325, 11 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry rotate: false - xy: 1134, 531 + xy: 344, 492 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Marble rotate: false - xy: 1168, 515 + xy: 344, 462 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Stone rotate: false - xy: 1202, 497 + xy: 344, 432 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Rock of Gibraltar rotate: false - xy: 1406, 457 + xy: 344, 248 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sheep rotate: false - xy: 1168, 485 + xy: 354, 582 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silk rotate: false - xy: 1270, 467 + xy: 378, 491 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silver rotate: false - xy: 1304, 460 + xy: 378, 461 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow rotate: false - xy: 1406, 427 + xy: 378, 369 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow+Academy rotate: false - xy: 1440, 424 + xy: 378, 332 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow+Ancient ruins rotate: false - xy: 1474, 431 + xy: 378, 302 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow+Barbarian encampment rotate: false - xy: 1508, 430 + xy: 378, 271 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow+Citadel rotate: false - xy: 1474, 399 + xy: 378, 239 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow+Farm rotate: false - xy: 1508, 400 + xy: 378, 209 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Spices rotate: false - xy: 1542, 495 + xy: 378, 149 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Stone rotate: false - xy: 1542, 465 + xy: 378, 119 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sugar rotate: false - xy: 1542, 435 + xy: 388, 582 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Trading post rotate: false - xy: 624, 561 + xy: 412, 462 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra rotate: false - xy: 726, 559 + xy: 412, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Ancient ruins rotate: false - xy: 760, 553 + xy: 412, 342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Citadel rotate: false - xy: 286, 623 + xy: 412, 307 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+City rotate: false - xy: 794, 524 + xy: 412, 270 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Fallout rotate: false - xy: 828, 527 + xy: 412, 240 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Farm rotate: false - xy: 862, 501 + xy: 412, 210 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest rotate: false - xy: 896, 497 + xy: 412, 176 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp rotate: false - xy: 930, 497 + xy: 412, 142 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Deer rotate: false - xy: 964, 497 + xy: 456, 578 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Furs rotate: false - xy: 998, 493 + xy: 446, 544 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill rotate: false - xy: 1032, 493 + xy: 446, 510 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Uranium rotate: false - xy: 828, 497 + xy: 446, 450 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Whales rotate: false - xy: 998, 463 + xy: 446, 302 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wheat rotate: false - xy: 1032, 463 + xy: 446, 272 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wine rotate: false - xy: 1066, 467 + xy: 446, 242 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/TopBorder rotate: false - xy: 1542, 345 + xy: 412, 492 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/African Forest Elephant rotate: false - xy: 1954, 1847 + xy: 1954, 1836 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Anti-Aircraft Gun rotate: false - xy: 1890, 1251 + xy: 2, 11 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Anti-Tank Gun rotate: false - xy: 1564, 843 + xy: 1588, 620 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Archer rotate: false - xy: 1598, 843 + xy: 1768, 1138 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Artillery rotate: false - xy: 1890, 1221 + xy: 1870, 1240 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Atlatlist rotate: false - xy: 1174, 575 + xy: 1972, 1342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Axe Thrower rotate: false - xy: 1242, 587 + xy: 1802, 1138 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ballista rotate: false - xy: 1276, 587 + xy: 1904, 1240 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Battering Ram rotate: false - xy: 1412, 585 + xy: 1174, 572 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Battleship rotate: false - xy: 1446, 585 + xy: 1736, 1100 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Bazooka rotate: false - xy: 1480, 585 + xy: 1736, 1070 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Berber Cavalry rotate: false - xy: 1514, 585 + xy: 1738, 1040 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Berserker rotate: false - xy: 1988, 1848 + xy: 1738, 1010 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Bowman rotate: false - xy: 1924, 1249 + xy: 1738, 980 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Brute rotate: false - xy: 1958, 1249 + xy: 1738, 950 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Camel Archer rotate: false - xy: 1992, 1248 + xy: 1738, 919 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cannon rotate: false - xy: 1208, 557 + xy: 1740, 799 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Caravel rotate: false - xy: 1242, 557 + xy: 1740, 769 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Carolean rotate: false - xy: 1276, 557 + xy: 1740, 739 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Carrier rotate: false - xy: 1310, 557 + xy: 1740, 709 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cataphract rotate: false - xy: 1344, 557 + xy: 1770, 1108 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Catapult rotate: false - xy: 1378, 555 + xy: 1770, 1078 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cavalry rotate: false - xy: 1446, 555 + xy: 1804, 1078 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Chariot Archer rotate: false - xy: 1514, 555 + xy: 1772, 1018 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Chu-Ko-Nu rotate: false - xy: 1532, 813 + xy: 1772, 988 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/CivilianLandUnit rotate: false - xy: 1634, 758 + xy: 1806, 872 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Comanche Rider rotate: false - xy: 1736, 754 + xy: 1378, 573 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Companion Cavalry rotate: false - xy: 1770, 754 + xy: 1412, 573 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Composite Bowman rotate: false - xy: 1804, 755 + xy: 1446, 574 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Conquistador rotate: false - xy: 1634, 728 + xy: 1480, 574 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cossack rotate: false - xy: 1668, 725 + xy: 1514, 574 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Crossbowman rotate: false - xy: 1736, 724 + xy: 1588, 590 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cruiser rotate: false - xy: 1122, 1459 + xy: 1122, 1448 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Destroyer rotate: false - xy: 1770, 657 + xy: 1872, 1210 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Dromon rotate: false - xy: 1804, 665 + xy: 1872, 1180 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Foreign Legion rotate: false - xy: 1840, 1109 + xy: 1838, 1120 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Frigate rotate: false - xy: 1840, 1010 + xy: 1872, 1086 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Galleass rotate: false - xy: 1842, 950 + xy: 1906, 1089 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Galley rotate: false - xy: 1842, 920 + xy: 1840, 1055 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Gatling Gun rotate: false - xy: 1842, 890 + xy: 1840, 1025 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Admiral rotate: false - xy: 420, 621 + xy: 1724, 606 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Artist rotate: false - xy: 454, 623 + xy: 1724, 576 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Engineer rotate: false - xy: 310, 563 + xy: 1758, 579 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Galleass rotate: false - xy: 310, 533 + xy: 284, 648 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great General rotate: false - xy: 310, 500 + xy: 318, 645 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Merchant rotate: false - xy: 310, 470 + xy: 352, 648 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Musician rotate: false - xy: 310, 440 + xy: 1582, 560 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Prophet rotate: false - xy: 310, 410 + xy: 1548, 546 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Scientist rotate: false - xy: 310, 380 + xy: 1616, 553 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great War Infantry rotate: false - xy: 310, 350 + xy: 1582, 530 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Writer rotate: false - xy: 310, 320 + xy: 1616, 523 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hakkapeliitta rotate: false - xy: 310, 290 + xy: 2006, 1993 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Helicopter Gunship rotate: false - xy: 310, 260 + xy: 2006, 1963 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hoplite rotate: false - xy: 344, 503 + xy: 1940, 1157 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Horse Archer rotate: false - xy: 344, 473 + xy: 1974, 1162 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Horseman rotate: false - xy: 344, 443 + xy: 2008, 1192 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hussar rotate: false - xy: 344, 382 + xy: 1974, 1131 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hwach'a rotate: false - xy: 344, 352 + xy: 2008, 1162 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Immortal rotate: false - xy: 344, 322 + xy: 1940, 1097 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Impi rotate: false - xy: 344, 292 + xy: 1974, 1101 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Infantry rotate: false - xy: 344, 232 + xy: 2008, 1102 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ironclad rotate: false - xy: 344, 172 + xy: 1942, 1037 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Jaguar rotate: false - xy: 344, 112 + xy: 1942, 977 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Janissary rotate: false - xy: 344, 82 + xy: 1942, 947 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Keshik rotate: false - xy: 354, 593 + xy: 1942, 917 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Khan rotate: false - xy: 359, 49 + xy: 1942, 884 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Knight rotate: false - xy: 359, 19 + xy: 1942, 854 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Kris Swordsman rotate: false - xy: 378, 531 + xy: 1976, 1039 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Lancer rotate: false - xy: 378, 471 + xy: 1976, 979 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/LandUnit rotate: false - xy: 378, 441 + xy: 1976, 949 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landship rotate: false - xy: 378, 373 + xy: 1976, 881 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landsknecht rotate: false - xy: 378, 343 + xy: 2010, 1072 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Legion rotate: false - xy: 378, 313 + xy: 2010, 1042 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longbowman rotate: false - xy: 378, 283 + xy: 2010, 1012 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longswordsman rotate: false - xy: 378, 253 + xy: 2010, 982 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Machine Gun rotate: false - xy: 378, 223 + xy: 2010, 952 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mandekalu Cavalry rotate: false - xy: 378, 193 + xy: 2010, 922 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Maori Warrior rotate: false - xy: 378, 122 + xy: 1976, 851 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Marine rotate: false - xy: 393, 62 + xy: 1656, 560 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mechanized Infantry rotate: false - xy: 393, 32 + xy: 1690, 560 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mehal Sefari rotate: false - xy: 393, 2 + xy: 1650, 530 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Merchant Of Venice rotate: false - xy: 454, 593 + xy: 1684, 530 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Minuteman rotate: false - xy: 522, 591 + xy: 1758, 549 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Missile Cruiser rotate: false - xy: 556, 591 + xy: 1718, 516 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mobile SAM rotate: false - xy: 624, 591 + xy: 1942, 824 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Modern Armor rotate: false - xy: 658, 591 + xy: 1976, 821 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mohawk Warrior rotate: false - xy: 692, 591 + xy: 2010, 821 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketeer rotate: false - xy: 794, 591 + xy: 2013, 1732 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketman rotate: false - xy: 828, 591 + xy: 2013, 1702 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Naresuan's Elephant rotate: false - xy: 862, 591 + xy: 2013, 1672 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Nau rotate: false - xy: 896, 591 + xy: 2013, 1642 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Norwegian Ski Infantry rotate: false - xy: 930, 591 + xy: 2013, 1612 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Panzer rotate: false - xy: 862, 561 + xy: 1650, 500 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Paratrooper rotate: false - xy: 896, 561 + xy: 1684, 500 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Pathfinder rotate: false - xy: 1100, 561 + xy: 1752, 482 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Persian Immortal rotate: false - xy: 1168, 545 + xy: 386, 616 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Pictish Warrior rotate: false - xy: 1202, 527 + xy: 420, 612 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Pikeman rotate: false - xy: 1236, 527 + xy: 454, 612 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Pracinha rotate: false - xy: 1066, 527 + xy: 344, 552 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Privateer rotate: false - xy: 1100, 531 + xy: 344, 522 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Quinquereme rotate: false - xy: 1236, 497 + xy: 344, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rifleman rotate: false - xy: 1270, 497 + xy: 344, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rocket Artillery rotate: false - xy: 1440, 461 + xy: 344, 218 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Samurai rotate: false - xy: 1474, 461 + xy: 344, 188 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Scout rotate: false - xy: 1508, 461 + xy: 344, 158 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Sea Beggar rotate: false - xy: 1100, 501 + xy: 344, 128 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Settler rotate: false - xy: 1134, 500 + xy: 344, 97 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ship of the Line rotate: false - xy: 1202, 466 + xy: 378, 551 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Siege Tower rotate: false - xy: 1236, 467 + xy: 378, 521 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Sipahi rotate: false - xy: 1338, 431 + xy: 378, 429 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Slinger rotate: false - xy: 1372, 431 + xy: 378, 399 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Spearman rotate: false - xy: 1542, 525 + xy: 378, 179 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Submarine rotate: false - xy: 1156, 1459 + xy: 1156, 1448 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Swordsman rotate: false - xy: 1542, 405 + xy: 422, 582 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tank rotate: false - xy: 1542, 375 + xy: 412, 552 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tercio rotate: false - xy: 1508, 370 + xy: 412, 522 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trebuchet rotate: false - xy: 658, 561 + xy: 412, 432 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trireme rotate: false - xy: 692, 561 + xy: 412, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Turtle Ship rotate: false - xy: 1066, 497 + xy: 446, 480 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Chariot rotate: false - xy: 862, 471 + xy: 446, 420 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Elephant rotate: false - xy: 896, 467 + xy: 446, 390 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Warrior rotate: false - xy: 930, 467 + xy: 446, 360 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/WaterUnit rotate: false - xy: 964, 469 + xy: 446, 332 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Winged Hussar rotate: false - xy: 1100, 471 + xy: 446, 212 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Work Boats rotate: false - xy: 1134, 470 + xy: 446, 182 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Worker rotate: false - xy: 1168, 455 + xy: 446, 152 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 UnitPromotionIcons/Accuracy rotate: false - xy: 182, 593 + xy: 182, 582 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Air Repair rotate: false - xy: 1122, 1487 + xy: 1122, 1476 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Ambush rotate: false - xy: 1632, 1083 + xy: 1530, 970 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Armor Plating rotate: false - xy: 1836, 1281 + xy: 1734, 1168 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Barrage rotate: false - xy: 1428, 771 + xy: 1938, 1372 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Besiege rotate: false - xy: 1530, 873 + xy: 1428, 760 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Siege rotate: false - xy: 1530, 873 + xy: 1428, 760 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Blitz rotate: false - xy: 1954, 1982 + xy: 1954, 1971 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Boarding Party rotate: false - xy: 1276, 669 + xy: 1276, 658 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Bombardment rotate: false - xy: 1632, 1031 + xy: 1530, 918 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Charge rotate: false - xy: 1954, 1930 + xy: 1954, 1919 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Coastal Raider rotate: false - xy: 1954, 1878 + xy: 1954, 1867 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Cover rotate: false - xy: 1684, 1083 + xy: 1582, 970 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Discipline rotate: false - xy: 1684, 1083 + xy: 1582, 970 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Drill rotate: false - xy: 1684, 927 + xy: 1582, 814 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Evasion rotate: false - xy: 1888, 1281 + xy: 1786, 1168 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Extended Range rotate: false - xy: 1428, 719 + xy: 1888, 1270 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Operational Range rotate: false - xy: 1428, 719 + xy: 1888, 1270 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Flight Deck rotate: false - xy: 1480, 719 + xy: 1480, 760 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Formation rotate: false - xy: 1582, 873 + xy: 1480, 708 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Great Generals rotate: false - xy: 206, 489 + xy: 1584, 710 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Quick Study rotate: false - xy: 206, 489 + xy: 1584, 710 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Haka War Dance rotate: false - xy: 206, 437 + xy: 206, 530 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Heal Instantly rotate: false - xy: 206, 385 + xy: 206, 478 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Indirect Fire rotate: false - xy: 206, 281 + xy: 206, 374 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Interception rotate: false - xy: 206, 177 + xy: 206, 270 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Logistics rotate: false - xy: 258, 541 + xy: 206, 114 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/March rotate: false - xy: 258, 437 + xy: 258, 530 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Medic rotate: false - xy: 258, 385 + xy: 258, 478 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Mobility rotate: false - xy: 258, 73 + xy: 258, 166 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Morale rotate: false - xy: 1276, 617 + xy: 258, 62 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Rejuvenation rotate: false - xy: 1736, 971 + xy: 1634, 962 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Scouting rotate: false - xy: 1788, 971 + xy: 1686, 962 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sentry rotate: false - xy: 1788, 971 + xy: 1686, 962 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Shock rotate: false - xy: 1790, 919 + xy: 1686, 858 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Slinger Withdraw rotate: false - xy: 1738, 867 + xy: 1636, 806 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sortie rotate: false - xy: 1790, 867 + xy: 1636, 754 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting rotate: false - xy: 1432, 615 + xy: 1688, 702 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting I (air) rotate: false - xy: 1432, 615 + xy: 1688, 702 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Volley rotate: false - xy: 1686, 823 + xy: 1536, 606 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Wolfpack rotate: false - xy: 1790, 815 + xy: 1640, 650 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Woodsman rotate: false - xy: 1838, 1229 + xy: 1692, 650 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/game.png b/android/assets/game.png index 84798c4825..e7ba492a58 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 190cb1bee3..a678b40cc2 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -4,7 +4,6 @@ import java.util.* plugins { id("com.android.application") id("kotlin-android") - id("kotlin-android-extensions") } android { diff --git a/core/src/com/unciv/logic/GameInfo.kt b/core/src/com/unciv/logic/GameInfo.kt index daa902aa0f..4a2c241494 100644 --- a/core/src/com/unciv/logic/GameInfo.kt +++ b/core/src/com/unciv/logic/GameInfo.kt @@ -171,11 +171,11 @@ class GameInfo { if (tiles.size < 3) { for (tile in tiles) { val unitName = tile.militaryUnit!!.name - thisPlayer.addNotification("An enemy [$unitName] was spotted $inOrNear our territory", tile.position, Color.RED) + thisPlayer.addNotification("An enemy [$unitName] was spotted $inOrNear our territory", tile.position, NotificationType.War) } } else { val positions = tiles.map { it.position } - thisPlayer.addNotification("[${positions.size}] enemy units were spotted $inOrNear our territory", Color.RED, LocationAction(positions)) + thisPlayer.addNotification("[${positions.size}] enemy units were spotted $inOrNear our territory", NotificationType.War, LocationAction(positions)) } } diff --git a/core/src/com/unciv/logic/automation/ConstructionAutomation.kt b/core/src/com/unciv/logic/automation/ConstructionAutomation.kt index 328ee5d369..4336b6768a 100644 --- a/core/src/com/unciv/logic/automation/ConstructionAutomation.kt +++ b/core/src/com/unciv/logic/automation/ConstructionAutomation.kt @@ -6,6 +6,7 @@ import com.unciv.UncivGame import com.unciv.logic.city.CityConstructions import com.unciv.logic.city.PerpetualConstruction import com.unciv.logic.civilization.CityAction +import com.unciv.logic.civilization.NotificationType import com.unciv.logic.civilization.PlayerType import com.unciv.logic.map.BFS import com.unciv.models.ruleset.Building @@ -86,7 +87,7 @@ class ConstructionAutomation(val cityConstructions: CityConstructions){ // Nobody can plan 30 turns ahead, I don't care how cost-efficient you are. else theChosenOne = relativeCostEffectiveness.minBy { it.remainingWork }!!.choice - civInfo.addNotification("Work has started on [$theChosenOne]", Color.BROWN, CityAction(cityInfo.location)) + civInfo.addNotification("Work has started on [$theChosenOne]", NotificationType.Construction, CityAction(cityInfo.location)) cityConstructions.currentConstructionFromQueue = theChosenOne } diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 85f0ac7430..9c2dfb5d6e 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -6,6 +6,7 @@ import com.unciv.UncivGame import com.unciv.logic.city.CityInfo import com.unciv.logic.civilization.AlertType import com.unciv.logic.civilization.CivilizationInfo +import com.unciv.logic.civilization.NotificationType import com.unciv.logic.civilization.PopupAlert import com.unciv.logic.civilization.diplomacy.DiplomaticModifiers import com.unciv.logic.map.RoadStatus @@ -173,7 +174,7 @@ object Battle { else " [" + defender.getName() + "]" else " our [" + defender.getName() + "]" val notificationString = attackerString + whatHappenedString + defenderString - defender.getCivInfo().addNotification(notificationString, attackedTile.position, Color.RED) + defender.getCivInfo().addNotification(notificationString, attackedTile.position, NotificationType.War) } } @@ -288,7 +289,7 @@ object Battle { private fun conquerCity(city: CityInfo, attacker: ICombatant) { val attackerCiv = attacker.getCivInfo() - attackerCiv.addNotification("We have conquered the city of [${city.name}]!", city.location, Color.RED) + attackerCiv.addNotification("We have conquered the city of [${city.name}]!", city.location, NotificationType.War) city.getCenterTile().apply { if (militaryUnit != null) militaryUnit!!.destroy() @@ -334,7 +335,7 @@ object Battle { val capturedUnit = defender.unit capturedUnit.civInfo.addNotification("An enemy [" + attacker.getName() + "] has captured our [" + defender.getName() + "]", - defender.getTile().position, Color.RED) + defender.getTile().position, NotificationType.War) // Apparently in Civ V, captured settlers are converted to workers. if (capturedUnit.name == Constants.settler) { @@ -432,17 +433,17 @@ object Battle { if (attacker.isDefeated()) { attacker.getCivInfo() .addNotification("Our [$attackerName] was destroyed by an intercepting [$interceptorName]", - Color.RED) + NotificationType.War) defender.getCivInfo() .addNotification("Our [$interceptorName] intercepted and destroyed an enemy [$attackerName]", - interceptor.currentTile.position, Color.RED) + interceptor.currentTile.position, NotificationType.War) } else { attacker.getCivInfo() .addNotification("Our [$attackerName] was attacked by an intercepting [$interceptorName]", - Color.RED) + NotificationType.War) defender.getCivInfo() .addNotification("Our [$interceptorName] intercepted and attacked an enemy [$attackerName]", - interceptor.currentTile.position, Color.RED) + interceptor.currentTile.position, NotificationType.War) } return } @@ -497,8 +498,8 @@ object Battle { // and count 1 attack for attacker but leave it in place reduceAttackerMovementPointsAndAttacks(attacker, defender) val notificationString = "[" + defendBaseUnit.name + "] withdrew from a [" + attackBaseUnit.name + "]" - defender.getCivInfo().addNotification(notificationString, toTile.position, Color.GREEN) - attacker.getCivInfo().addNotification(notificationString, toTile.position, Color.RED) + defender.getCivInfo().addNotification(notificationString, toTile.position, NotificationType.War) + attacker.getCivInfo().addNotification(notificationString, toTile.position, NotificationType.War) return true } diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 7e98fe9319..08cb5633a0 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -3,6 +3,7 @@ package com.unciv.logic.city import com.badlogic.gdx.graphics.Color import com.unciv.logic.automation.ConstructionAutomation import com.unciv.logic.civilization.AlertType +import com.unciv.logic.civilization.NotificationType import com.unciv.logic.civilization.PopupAlert import com.unciv.models.ruleset.Building import com.unciv.models.ruleset.UniqueMap @@ -312,7 +313,7 @@ class CityConstructions { civ.addNotification("[${construction.name}] has been built in a faraway land", null, Color.BROWN) } } else - cityInfo.civInfo.addNotification("[${construction.name}] has been built in [" + cityInfo.name + "]", cityInfo.location, Color.BROWN) + cityInfo.civInfo.addNotification("[${construction.name}] has been built in [" + cityInfo.name + "]", cityInfo.location, NotificationType.Construction) } fun addBuilding(buildingName: String) { diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index f2e13b8383..298cdc2cc1 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -2,6 +2,7 @@ package com.unciv.logic.city import com.badlogic.gdx.graphics.Color import com.unciv.logic.automation.Automation +import com.unciv.logic.civilization.NotificationType import com.unciv.logic.map.TileInfo import com.unciv.ui.utils.withItem import com.unciv.ui.utils.withoutItem @@ -142,10 +143,8 @@ class CityExpansionManager { fun nextTurn(culture: Float) { cultureStored += culture.toInt() - if (cultureStored >= getCultureToNextTile()) { - if (addNewTileWithCulture()) - cityInfo.civInfo.addNotification("[" + cityInfo.name + "] has expanded its borders!", cityInfo.location, Color.PURPLE) - } + if (cultureStored >= getCultureToNextTile() && addNewTileWithCulture()) + cityInfo.civInfo.addNotification("[" + cityInfo.name + "] has expanded its borders!", cityInfo.location, NotificationType.Culture) } fun setTransients() { diff --git a/core/src/com/unciv/logic/city/PopulationManager.kt b/core/src/com/unciv/logic/city/PopulationManager.kt index c33d42b1bd..f15d5f1fe0 100644 --- a/core/src/com/unciv/logic/city/PopulationManager.kt +++ b/core/src/com/unciv/logic/city/PopulationManager.kt @@ -2,6 +2,7 @@ package com.unciv.logic.city import com.badlogic.gdx.graphics.Color import com.unciv.logic.automation.Automation +import com.unciv.logic.civilization.NotificationType import com.unciv.logic.map.TileInfo import com.unciv.models.Counter import com.unciv.ui.utils.withItem @@ -64,7 +65,7 @@ class PopulationManager { foodStored += (getFoodToNextPopulation() * percentOfFoodCarriedOver / 100f).toInt() population++ autoAssignPopulation() - cityInfo.civInfo.addNotification("[${cityInfo.name}] has grown!", cityInfo.location, Color.GREEN) + cityInfo.civInfo.addNotification("[${cityInfo.name}] has grown!", cityInfo.location, NotificationType.Growth) } } diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 42be1d6e6e..3740d35756 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -553,11 +553,22 @@ class CivilizationInfo { addNotification(text, color, LocationAction(locations)) } + fun addNotification(text: String, location: Vector2?, notificationType: NotificationType) { + val locations = if (location != null) listOf(location) else emptyList() + addNotification(text, notificationType, LocationAction(locations)) + } + + fun addNotification(text: String, color: Color, action: NotificationAction? = null) { if (playerType == PlayerType.AI) return // no point in lengthening the saved game info if no one will read it notifications.add(Notification(text, color, action)) } + fun addNotification(text: String, notificationType: NotificationType, action: NotificationAction? = null) { + if (playerType == PlayerType.AI) return // no point in lengthening the saved game info if no one will read it + notifications.add(Notification(text, notificationType, action)) + } + fun addUnit(unitName: String, city: CityInfo? = null) { if (cities.isEmpty()) return val cityToAddTo = city ?: cities.random() diff --git a/core/src/com/unciv/logic/civilization/Notification.kt b/core/src/com/unciv/logic/civilization/Notification.kt index f7d2ccd14b..3c8144a84e 100644 --- a/core/src/com/unciv/logic/civilization/Notification.kt +++ b/core/src/com/unciv/logic/civilization/Notification.kt @@ -7,16 +7,41 @@ import com.unciv.ui.pickerscreens.TechPickerScreen import com.unciv.ui.trade.DiplomacyScreen import com.unciv.ui.worldscreen.WorldScreen +enum class NotificationType { + Culture, + Construction, + Growth, + War, + Trade, + Science +} + /** * [action] is not realized as lambda, as it would be too easy to introduce references to objects * there that should not be serialized to the saved game. */ -open class Notification ( - // default parameters necessary for json deserialization - var text: String = "", - var color: Color = Color.BLACK, - var action: NotificationAction? = null -) +open class Notification() { + + var text: String="" + var color: Color?=null + var notificationType:NotificationType?=null + var action: NotificationAction? = null + + // default parameters necessary for json deserialization + constructor(text: String, color: Color, action: NotificationAction?) : this() { + this.text = text + this.color = color + this.action = action + } + + constructor(text: String, notificationType: NotificationType, action: NotificationAction? = null) : this() { + this.text = text + this.notificationType = notificationType + this.action = action + } + + +} /** defines what to do if the user clicks on a notification */ interface NotificationAction { diff --git a/core/src/com/unciv/logic/civilization/TechManager.kt b/core/src/com/unciv/logic/civilization/TechManager.kt index 3296357fc3..9c9f912bd9 100644 --- a/core/src/com/unciv/logic/civilization/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/TechManager.kt @@ -257,7 +257,7 @@ class TechManager { } } for (it in getRuleset().policyBranches.values.filter { it.era == currentEra }) { - civInfo.addNotification("[" + it.name + "] policy branch unlocked!", null, Color.PURPLE) + civInfo.addNotification("[" + it.name + "] policy branch unlocked!", NotificationType.Culture) } } diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt index 6c997d19ac..5a1421718f 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt @@ -62,52 +62,57 @@ enum class DiplomaticModifiers{ } class DiplomacyManager() { - + companion object { /** The value city-state influence can't go below */ const val MINIMUM_INFLUENCE = -60f } - - @Transient lateinit var civInfo: CivilizationInfo - // since this needs to be checked a lot during travel, putting it in a transient is a good performance booster - @Transient var hasOpenBorders=false - lateinit var otherCivName:String + @Transient + lateinit var civInfo: CivilizationInfo + + // since this needs to be checked a lot during travel, putting it in a transient is a good performance booster + @Transient + var hasOpenBorders = false + + lateinit var otherCivName: String var trades = ArrayList() var diplomaticStatus = DiplomaticStatus.War /** Contains various flags (declared war, promised to not settle, declined luxury trade) and the number of turns in which they will expire. * The JSON serialize/deserialize REFUSES to deserialize hashmap keys as Enums, so I'm forced to use strings instead =( * This is so sad Alexa play Despacito */ - private var flagsCountdown = HashMap() + private var flagsCountdown = HashMap() /** For AI. Positive is good relations, negative is bad. * Baseline is 1 point for each turn of peace - so declaring a war upends 40 years of peace, and e.g. capturing a city can be another 30 or 40. * As for why it's String and not DiplomaticModifier see FlagsCountdown comment */ - var diplomaticModifiers = HashMap() + var diplomaticModifiers = HashMap() /** For city-states. Influence is saved in the CITY STATE -> major civ Diplomacy, NOT in the major civ -> cty state diplomacy. * Won't go below [MINIMUM_INFLUENCE] */ var influence = 0f - set(value) { field = max(value, MINIMUM_INFLUENCE) } - get() = if(civInfo.isAtWarWith(otherCiv())) MINIMUM_INFLUENCE else field + set(value) { + field = max(value, MINIMUM_INFLUENCE) + } + get() = if (civInfo.isAtWarWith(otherCiv())) MINIMUM_INFLUENCE else field /** Total of each turn Science during Research Agreement */ var totalOfScienceDuringRA = 0 fun clone(): DiplomacyManager { val toReturn = DiplomacyManager() - toReturn.otherCivName=otherCivName - toReturn.diplomaticStatus=diplomaticStatus + toReturn.otherCivName = otherCivName + toReturn.diplomaticStatus = diplomaticStatus toReturn.trades.addAll(trades.map { it.clone() }) toReturn.influence = influence toReturn.flagsCountdown.putAll(flagsCountdown) toReturn.diplomaticModifiers.putAll(diplomaticModifiers) - toReturn.totalOfScienceDuringRA=totalOfScienceDuringRA + toReturn.totalOfScienceDuringRA = totalOfScienceDuringRA return toReturn } - constructor(civilizationInfo: CivilizationInfo, OtherCivName:String) : this() { + constructor(civilizationInfo: CivilizationInfo, OtherCivName: String) : this() { civInfo = civilizationInfo otherCivName = OtherCivName updateHasOpenBorders() @@ -118,26 +123,26 @@ class DiplomacyManager() { fun otherCivDiplomacy() = otherCiv().getDiplomacyManager(civInfo) fun turnsToPeaceTreaty(): Int { - for(trade in trades) - for(offer in trade.ourOffers) - if(offer.name == Constants.peaceTreaty && offer.duration > 0) return offer.duration + for (trade in trades) + for (offer in trade.ourOffers) + if (offer.name == Constants.peaceTreaty && offer.duration > 0) return offer.duration return 0 } fun opinionOfOtherCiv() = diplomaticModifiers.values.sum() fun relationshipLevel(): RelationshipLevel { - if(civInfo.isPlayerCivilization() && otherCiv().isPlayerCivilization()) + if (civInfo.isPlayerCivilization() && otherCiv().isPlayerCivilization()) return RelationshipLevel.Neutral // People make their own choices. - if(civInfo.isPlayerCivilization()) + if (civInfo.isPlayerCivilization()) return otherCiv().getDiplomacyManager(civInfo).relationshipLevel() - if(civInfo.isCityState()) { - if(influence <= -30 || civInfo.isAtWarWith(otherCiv())) return RelationshipLevel.Unforgivable - if(influence < 0) return RelationshipLevel.Enemy - if(influence >= 60 && civInfo.getAllyCiv() == otherCivName) return RelationshipLevel.Ally - if(influence >= 30) return RelationshipLevel.Friend + if (civInfo.isCityState()) { + if (influence <= -30 || civInfo.isAtWarWith(otherCiv())) return RelationshipLevel.Unforgivable + if (influence < 0) return RelationshipLevel.Enemy + if (influence >= 60 && civInfo.getAllyCiv() == otherCivName) return RelationshipLevel.Ally + if (influence >= 30) return RelationshipLevel.Friend return RelationshipLevel.Neutral } @@ -149,11 +154,11 @@ class DiplomacyManager() { opinion <= -80 -> RelationshipLevel.Unforgivable opinion <= -40 || civInfo.isAtWarWith(otherCiv()) -> RelationshipLevel.Enemy /* During wartime, the estimation in which you are held may be enemy OR unforgivable */ opinion <= -15 -> RelationshipLevel.Competitor - - opinion >= 80 -> RelationshipLevel.Ally - opinion >= 40 -> RelationshipLevel.Friend - opinion >= 15 -> RelationshipLevel.Favorable - else -> RelationshipLevel.Neutral + + opinion >= 80 -> RelationshipLevel.Ally + opinion >= 40 -> RelationshipLevel.Friend + opinion >= 15 -> RelationshipLevel.Favorable + else -> RelationshipLevel.Neutral } } @@ -176,7 +181,7 @@ class DiplomacyManager() { // To be run from City-State DiplomacyManager, which holds the influence. Resting point for every major civ can be different. fun getCityStateInfluenceRestingPoint(): Float { var restingPoint = 0f - for(unique in otherCiv().getMatchingUniques("Resting point for Influence with City-States is increased by []")) + for (unique in otherCiv().getMatchingUniques("Resting point for Influence with City-States is increased by []")) restingPoint += unique.params[0].toInt() return restingPoint } @@ -226,13 +231,14 @@ class DiplomacyManager() { return max(0f, increment) * max(0f, modifier) } - fun canDeclareWar() = turnsToPeaceTreaty()==0 && diplomaticStatus != DiplomaticStatus.War - //Used for nuke - fun canAttack() = turnsToPeaceTreaty()==0 + fun canDeclareWar() = turnsToPeaceTreaty() == 0 && diplomaticStatus != DiplomaticStatus.War - fun goldPerTurn():Int{ + //Used for nuke + fun canAttack() = turnsToPeaceTreaty() == 0 + + fun goldPerTurn(): Int { var goldPerTurnForUs = 0 - for(trade in trades) { + for (trade in trades) { for (offer in trade.ourOffers.filter { it.type == TradeType.Gold_Per_Turn }) goldPerTurnForUs -= offer.amount for (offer in trade.theirOffers.filter { it.type == TradeType.Gold_Per_Turn }) @@ -241,7 +247,7 @@ class DiplomacyManager() { return goldPerTurnForUs } - fun sciencefromResearchAgreement(){ + fun sciencefromResearchAgreement() { // https://forums.civfanatics.com/resources/research-agreements-bnw.25568/ val scienceFromResearchAgreement = min(totalOfScienceDuringRA, otherCivDiplomacy().totalOfScienceDuringRA) civInfo.tech.scienceFromResearchAgreements += scienceFromResearchAgreement @@ -253,8 +259,10 @@ class DiplomacyManager() { fun resourcesFromTrade(): ResourceSupplyList { val counter = ResourceSupplyList() val resourcesMap = civInfo.gameInfo.ruleSet.tileResources - val isResourceFilter: (TradeOffer) -> Boolean = { (it.type == TradeType.Strategic_Resource || it.type == TradeType.Luxury_Resource) - && civInfo.gameInfo.ruleSet.tileResources.containsKey(it.name) } + val isResourceFilter: (TradeOffer) -> Boolean = { + (it.type == TradeType.Strategic_Resource || it.type == TradeType.Luxury_Resource) + && civInfo.gameInfo.ruleSet.tileResources.containsKey(it.name) + } for (trade in trades) { for (offer in trade.ourOffers.filter(isResourceFilter)) counter.add(resourcesMap[offer.name]!!, -offer.amount, "Trade") @@ -299,8 +307,8 @@ class DiplomacyManager() { trades.remove(trade) val otherCivTrades = otherCiv().getDiplomacyManager(civInfo).trades otherCivTrades.removeAll { it.equals(trade.reverse()) } - civInfo.addNotification("One of our trades with [$otherCivName] has been cut short", null, Color.GOLD) - otherCiv().addNotification("One of our trades with [${civInfo.civName}] has been cut short", null, Color.GOLD) + civInfo.addNotification("One of our trades with [$otherCivName] has been cut short", NotificationType.Trade) + otherCiv().addNotification("One of our trades with [${civInfo.civName}] has been cut short", NotificationType.Trade) civInfo.updateDetailedCivResources() } } @@ -323,7 +331,7 @@ class DiplomacyManager() { } } - fun nextTurn(){ + fun nextTurn() { nextTurnTrades() removeUntenebleTrades() updateHasOpenBorders() @@ -355,7 +363,7 @@ class DiplomacyManager() { influence = min(restingPoint, influence + increment) } - if(!civInfo.isDefeated()) { // don't display city state relationship notifications when the city state is currently defeated + if (!civInfo.isDefeated()) { // don't display city state relationship notifications when the city state is currently defeated val civCapitalLocation = if (civInfo.cities.isNotEmpty()) civInfo.getCapital().location else null if (getTurnsToRelationshipChange() == 1) otherCiv().addNotification("Your relationship with [${civInfo.civName}] is about to degrade", civCapitalLocation, Color.GOLD) @@ -409,8 +417,8 @@ class DiplomacyManager() { trades.remove(trade) for (offer in trade.ourOffers.union(trade.theirOffers).filter { it.duration == 0 }) { // this was a timed trade if (offer in trade.theirOffers) - civInfo.addNotification("[${offer.name}] from [$otherCivName] has ended", null, Color.GOLD) - else civInfo.addNotification("[${offer.name}] to [$otherCivName] has ended", null, Color.GOLD) + civInfo.addNotification("[${offer.name}] from [$otherCivName] has ended", NotificationType.Trade) + else civInfo.addNotification("[${offer.name}] to [$otherCivName] has ended", NotificationType.Trade) civInfo.updateStatsForNextTurn() // if they were bringing us gold per turn civInfo.updateDetailedCivResources() // if they were giving us resources @@ -457,46 +465,46 @@ class DiplomacyManager() { } /** Everything that happens to both sides equally when war is delcared by one side on the other */ - private fun onWarDeclared(){ + private fun onWarDeclared() { diplomaticStatus = DiplomaticStatus.War // Cancel all trades. - for(trade in trades) - for(offer in trade.theirOffers.filter { it.duration>0 }) - civInfo.addNotification("["+offer.name+"] from [$otherCivName] has ended",null, Color.GOLD) + for (trade in trades) + for (offer in trade.theirOffers.filter { it.duration > 0 }) + civInfo.addNotification("[" + offer.name + "] from [$otherCivName] has ended", NotificationType.Trade) trades.clear() updateHasOpenBorders() - setFlag(DiplomacyFlags.DeclinedPeace,10)/// AI won't propose peace for 10 turns - setFlag(DiplomacyFlags.DeclaredWar,10) // AI won't agree to trade for 10 turns + setFlag(DiplomacyFlags.DeclinedPeace, 10)/// AI won't propose peace for 10 turns + setFlag(DiplomacyFlags.DeclaredWar, 10) // AI won't agree to trade for 10 turns removeFlag(DiplomacyFlags.BorderConflict) } - fun declareWar(){ + fun declareWar() { val otherCiv = otherCiv() val otherCivDiplomacy = otherCivDiplomacy() onWarDeclared() otherCivDiplomacy.onWarDeclared() - otherCiv.addNotification("[${civInfo.civName}] has declared war on us!",null, Color.RED) - otherCiv.popupAlerts.add(PopupAlert(AlertType.WarDeclaration,civInfo.civName)) + otherCiv.addNotification("[${civInfo.civName}] has declared war on us!", NotificationType.War) + otherCiv.popupAlerts.add(PopupAlert(AlertType.WarDeclaration, civInfo.civName)) getCommonKnownCivs().forEach { - it.addNotification("[${civInfo.civName}] has declared war on [${otherCiv().civName}]!", null, Color.RED) + it.addNotification("[${civInfo.civName}] has declared war on [${otherCiv().civName}]!", NotificationType.War) } - otherCivDiplomacy.setModifier(DiplomaticModifiers.DeclaredWarOnUs,-20f) - if(otherCiv.isCityState()) otherCivDiplomacy.influence -= 60 + otherCivDiplomacy.setModifier(DiplomaticModifiers.DeclaredWarOnUs, -20f) + if (otherCiv.isCityState()) otherCivDiplomacy.influence -= 60 - for(thirdCiv in civInfo.getKnownCivs()) { + for (thirdCiv in civInfo.getKnownCivs()) { if (thirdCiv.isAtWarWith(otherCiv)) { if (thirdCiv.isCityState()) thirdCiv.getDiplomacyManager(civInfo).influence += 10 else thirdCiv.getDiplomacyManager(civInfo).addModifier(DiplomaticModifiers.SharedEnemy, 5f) } else thirdCiv.getDiplomacyManager(civInfo).addModifier(DiplomaticModifiers.WarMongerer, -5f) } - if(hasFlag(DiplomacyFlags.DeclarationOfFriendship)) { + if (hasFlag(DiplomacyFlags.DeclarationOfFriendship)) { removeFlag(DiplomacyFlags.DeclarationOfFriendship) otherCivDiplomacy.removeModifier(DiplomaticModifiers.DeclarationOfFriendship) for (knownCiv in civInfo.getKnownCivs()) { @@ -507,7 +515,7 @@ class DiplomacyManager() { } } otherCivDiplomacy.removeFlag(DiplomacyFlags.DeclarationOfFriendship) - if(hasFlag(DiplomacyFlags.ResearchAgreement)) { + if (hasFlag(DiplomacyFlags.ResearchAgreement)) { removeFlag(DiplomacyFlags.ResearchAgreement) totalOfScienceDuringRA = 0 otherCivDiplomacy.totalOfScienceDuringRA = 0 @@ -567,24 +575,29 @@ class DiplomacyManager() { } } - fun hasFlag(flag:DiplomacyFlags) = flagsCountdown.containsKey(flag.name) - fun setFlag(flag: DiplomacyFlags, amount: Int){ flagsCountdown[flag.name]=amount} - fun getFlag(flag: DiplomacyFlags) = flagsCountdown[flag.name]!! - fun removeFlag(flag: DiplomacyFlags){ flagsCountdown.remove(flag.name)} - - fun addModifier(modifier: DiplomaticModifiers, amount:Float){ - val modifierString = modifier.name - if(!hasModifier(modifier)) setModifier(modifier,0f) - diplomaticModifiers[modifierString] = diplomaticModifiers[modifierString]!!+amount - if(diplomaticModifiers[modifierString]==0f) diplomaticModifiers.remove(modifierString) + fun hasFlag(flag: DiplomacyFlags) = flagsCountdown.containsKey(flag.name) + fun setFlag(flag: DiplomacyFlags, amount: Int) { + flagsCountdown[flag.name] = amount } - fun setModifier(modifier: DiplomaticModifiers, amount: Float){ + fun getFlag(flag: DiplomacyFlags) = flagsCountdown[flag.name]!! + fun removeFlag(flag: DiplomacyFlags) { + flagsCountdown.remove(flag.name) + } + + fun addModifier(modifier: DiplomaticModifiers, amount: Float) { + val modifierString = modifier.name + if (!hasModifier(modifier)) setModifier(modifier, 0f) + diplomaticModifiers[modifierString] = diplomaticModifiers[modifierString]!! + amount + if (diplomaticModifiers[modifierString] == 0f) diplomaticModifiers.remove(modifierString) + } + + fun setModifier(modifier: DiplomaticModifiers, amount: Float) { diplomaticModifiers[modifier.name] = amount } fun getModifier(modifier: DiplomaticModifiers): Float { - if(!hasModifier(modifier)) return 0f + if (!hasModifier(modifier)) return 0f return diplomaticModifiers[modifier.name]!! } @@ -592,18 +605,18 @@ class DiplomacyManager() { fun hasModifier(modifier: DiplomaticModifiers) = diplomaticModifiers.containsKey(modifier.name) /** @param amount always positive, so you don't need to think about it */ - fun revertToZero(modifier: DiplomaticModifiers, amount: Float){ - if(!hasModifier(modifier)) return + fun revertToZero(modifier: DiplomaticModifiers, amount: Float) { + if (!hasModifier(modifier)) return val currentAmount = getModifier(modifier) - if(currentAmount > 0) addModifier(modifier,-amount) - else addModifier(modifier,amount) + if (currentAmount > 0) addModifier(modifier, -amount) + else addModifier(modifier, amount) } - fun signDeclarationOfFriendship(){ - setModifier(DiplomaticModifiers.DeclarationOfFriendship,35f) - otherCivDiplomacy().setModifier(DiplomaticModifiers.DeclarationOfFriendship,35f) - setFlag(DiplomacyFlags.DeclarationOfFriendship,30) - otherCivDiplomacy().setFlag(DiplomacyFlags.DeclarationOfFriendship,30) + fun signDeclarationOfFriendship() { + setModifier(DiplomaticModifiers.DeclarationOfFriendship, 35f) + otherCivDiplomacy().setModifier(DiplomaticModifiers.DeclarationOfFriendship, 35f) + setFlag(DiplomacyFlags.DeclarationOfFriendship, 30) + otherCivDiplomacy().setFlag(DiplomacyFlags.DeclarationOfFriendship, 30) if (otherCiv().playerType == PlayerType.Human) otherCiv().addNotification("[${civInfo.civName}] and [${otherCiv().civName}] have signed the Declaration of Friendship!", null, Color.WHITE) @@ -613,10 +626,10 @@ class DiplomacyManager() { } } - fun setFriendshipBasedModifier(){ + fun setFriendshipBasedModifier() { removeModifier(DiplomaticModifiers.DeclaredFriendshipWithOurAllies) removeModifier(DiplomaticModifiers.DeclaredFriendshipWithOurEnemies) - for(thirdCiv in getCommonKnownCivs() + for (thirdCiv in getCommonKnownCivs() .filter { it.getDiplomacyManager(civInfo).hasFlag(DiplomacyFlags.DeclarationOfFriendship) }) { val otherCivRelationshipWithThirdCiv = otherCiv().getDiplomacyManager(thirdCiv).relationshipLevel() when (otherCivRelationshipWithThirdCiv) { @@ -628,11 +641,11 @@ class DiplomacyManager() { } } - fun denounce(){ - setModifier(DiplomaticModifiers.Denunciation,-35f) - otherCivDiplomacy().setModifier(DiplomaticModifiers.Denunciation,-35f) - setFlag(DiplomacyFlags.Denunceation,30) - otherCivDiplomacy().setFlag(DiplomacyFlags.Denunceation,30) + fun denounce() { + setModifier(DiplomaticModifiers.Denunciation, -35f) + otherCivDiplomacy().setModifier(DiplomaticModifiers.Denunciation, -35f) + setFlag(DiplomacyFlags.Denunceation, 30) + otherCivDiplomacy().setFlag(DiplomacyFlags.Denunceation, 30) otherCiv().addNotification("[${civInfo.civName}] has denounced us!", Color.RED) @@ -640,28 +653,28 @@ class DiplomacyManager() { getCommonKnownCivs().filter { it.isMajorCiv() }.forEach { thirdCiv -> thirdCiv.addNotification("[${civInfo.civName}] has denounced [${otherCiv().civName}]!", null, Color.RED) val thirdCivRelationshipWithOtherCiv = thirdCiv.getDiplomacyManager(otherCiv()).relationshipLevel() - when(thirdCivRelationshipWithOtherCiv){ - RelationshipLevel.Unforgivable -> addModifier(DiplomaticModifiers.DenouncedOurEnemies,15f) - RelationshipLevel.Enemy -> addModifier(DiplomaticModifiers.DenouncedOurEnemies,5f) - RelationshipLevel.Friend -> addModifier(DiplomaticModifiers.DenouncedOurAllies,-5f) - RelationshipLevel.Ally -> addModifier(DiplomaticModifiers.DenouncedOurAllies,-15f) + when (thirdCivRelationshipWithOtherCiv) { + RelationshipLevel.Unforgivable -> addModifier(DiplomaticModifiers.DenouncedOurEnemies, 15f) + RelationshipLevel.Enemy -> addModifier(DiplomaticModifiers.DenouncedOurEnemies, 5f) + RelationshipLevel.Friend -> addModifier(DiplomaticModifiers.DenouncedOurAllies, -5f) + RelationshipLevel.Ally -> addModifier(DiplomaticModifiers.DenouncedOurAllies, -15f) } } } - fun agreeNotToSettleNear(){ - otherCivDiplomacy().setFlag(DiplomacyFlags.AgreedToNotSettleNearUs,100) - addModifier(DiplomaticModifiers.UnacceptableDemands,-10f) + fun agreeNotToSettleNear() { + otherCivDiplomacy().setFlag(DiplomacyFlags.AgreedToNotSettleNearUs, 100) + addModifier(DiplomaticModifiers.UnacceptableDemands, -10f) otherCiv().addNotification("[${civInfo.civName}] agreed to stop settling cities near us!", Color.MAROON) } - fun refuseDemandNotToSettleNear(){ - addModifier(DiplomaticModifiers.UnacceptableDemands,-20f) - otherCivDiplomacy().setFlag(DiplomacyFlags.IgnoreThemSettlingNearUs,100) - otherCivDiplomacy().addModifier(DiplomaticModifiers.RefusedToNotSettleCitiesNearUs,-15f) + fun refuseDemandNotToSettleNear() { + addModifier(DiplomaticModifiers.UnacceptableDemands, -20f) + otherCivDiplomacy().setFlag(DiplomacyFlags.IgnoreThemSettlingNearUs, 100) + otherCivDiplomacy().addModifier(DiplomaticModifiers.RefusedToNotSettleCitiesNearUs, -15f) otherCiv().addNotification("[${civInfo.civName}] refused to stop settling cities near us!", Color.MAROON) } //endregion -} +} \ No newline at end of file diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 07f4d7278e..cbfc72c841 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -7,6 +7,7 @@ import com.unciv.UncivGame import com.unciv.logic.automation.UnitAutomation import com.unciv.logic.automation.WorkerAutomation import com.unciv.logic.civilization.CivilizationInfo +import com.unciv.logic.civilization.NotificationType import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.Unique import com.unciv.models.ruleset.unit.BaseUnit @@ -615,7 +616,7 @@ class MapUnit { val city = civInfo.cities.random(tileBasedRandom) city.population.population++ city.population.autoAssignPopulation() - civInfo.addNotification("We have found survivors in the ruins - population added to [" + city.name + "]", tile.position, Color.GREEN) + civInfo.addNotification("We have found survivors in the ruins - population added to [" + city.name + "]", tile.position, NotificationType.Growth) } val researchableAncientEraTechs = tile.tileMap.gameInfo.ruleSet.technologies.values .filter { @@ -627,7 +628,7 @@ class MapUnit { actions.add { val tech = researchableAncientEraTechs.random(tileBasedRandom).name civInfo.tech.addTechnology(tech) - civInfo.addNotification("We have discovered the lost technology of [$tech] in the ruins!", tile.position, Color.BLUE) + civInfo.addNotification("We have discovered the lost technology of [$tech] in the ruins!", tile.position, NotificationType.Science) } @@ -656,7 +657,7 @@ class MapUnit { actions.add { civInfo.policies.addCulture(20) - civInfo.addNotification("We have discovered cultural artifacts in the ruins! (+20 Culture)", tile.position, Color.GOLD) + civInfo.addNotification("We have discovered cultural artifacts in the ruins! (+20 Culture)", tile.position, NotificationType.Culture) } // Map of the surrounding area diff --git a/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt b/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt index 0b963b1dab..d13d6e1ae2 100644 --- a/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt +++ b/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt @@ -12,7 +12,7 @@ import kotlin.math.min class NotificationsScroll(internal val worldScreen: WorldScreen) : ScrollPane(null) { - var notificationsHash : Int = 0 + var notificationsHash: Int = 0 private var notificationsTable = Table() @@ -24,17 +24,19 @@ class NotificationsScroll(internal val worldScreen: WorldScreen) : ScrollPane(nu internal fun update(notifications: MutableList) { // no news? - keep our list as it is, especially don't reset scroll position - if(notificationsHash == notifications.hashCode()) + if (notificationsHash == notifications.hashCode()) return notificationsHash = notifications.hashCode() notificationsTable.clearChildren() for (notification in notifications.toList().reversed()) { // toList to avoid concurrency problems - val label = notification.text.toLabel(Color.BLACK,30) + val label = notification.text.toLabel(Color.BLACK, 30) val listItem = Table() - listItem.add(ImageGetter.getCircle() - .apply { color=notification.color }).size(20f).padRight(5f) + if (notification.notificationType != null) + listItem.add(ImageGetter.getImage("NotificationIcons/" + notification.notificationType!!.name)).size(20f).padRight(5f) + else listItem.add(ImageGetter.getCircle() + .apply { color = notification.color }).size(20f).padRight(5f) listItem.background = ImageGetter.getRoundedEdgeTableBackground().apply { setScale(0.5f) } listItem.add(label) @@ -52,7 +54,7 @@ class NotificationsScroll(internal val worldScreen: WorldScreen) : ScrollPane(nu } notificationsTable.pack() pack() - height = min(notificationsTable.height,worldScreen.stage.height * 2 / 3 - 15f) + height = min(notificationsTable.height, worldScreen.stage.height * 2 / 3 - 15f) } -} +} \ No newline at end of file