diff --git a/android/Images/BuildingIcons/Courthouse.png b/android/Images/BuildingIcons/Courthouse.png new file mode 100644 index 0000000000..e40506e165 Binary files /dev/null and b/android/Images/BuildingIcons/Courthouse.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 8a7daacd50..dcbf00acba 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -1,3330 +1,3337 @@ game.png -size: 2481,1840 +size: 2481,1853 format: RGBA8888 filter: MipMapLinearLinear,MipMapLinearLinear repeat: none BuildingIcons/Alhambra rotate: false - xy: 1882, 1738 + xy: 1780, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Angkor Wat rotate: false - xy: 2290, 1738 + xy: 2188, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Apollo Program rotate: false - xy: 587, 1608 + xy: 485, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Aqueduct rotate: false - xy: 689, 1608 + xy: 587, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Armory rotate: false - xy: 1301, 1608 + xy: 1199, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Bank rotate: false - xy: 2219, 1636 + xy: 2117, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Barracks rotate: false - xy: 485, 1506 + xy: 383, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Bazaar rotate: false - xy: 689, 1506 + xy: 587, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Big Ben rotate: false - xy: 791, 1506 + xy: 689, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Broadcast Tower rotate: false - xy: 1199, 1506 + xy: 1097, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Burial Tomb rotate: false - xy: 1505, 1534 + xy: 1403, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/CN Tower rotate: false - xy: 1607, 1534 + xy: 1505, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Castle rotate: false - xy: 2219, 1534 + xy: 2117, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Chichen Itza rotate: false - xy: 685, 1404 + xy: 583, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Circus rotate: false - xy: 1093, 1404 + xy: 991, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Circus Maximus rotate: false - xy: 1195, 1404 + xy: 1093, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Colosseum rotate: false - xy: 1709, 1432 + xy: 1607, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Colossus rotate: false - xy: 1811, 1432 + xy: 1709, 1445 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Courthouse + rotate: false + xy: 1705, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Cristo Redentor rotate: false - xy: 1807, 1330 + xy: 1807, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Eiffel Tower rotate: false - xy: 610, 1302 + xy: 610, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Factory rotate: false - xy: 406, 894 + xy: 406, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Forbidden Palace rotate: false - xy: 814, 1200 + xy: 814, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Forge rotate: false - xy: 610, 894 + xy: 610, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Granary rotate: false - xy: 1120, 1302 + xy: 1120, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Great Wall rotate: false - xy: 1120, 1200 + xy: 1120, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hagia Sophia rotate: false - xy: 1222, 1200 + xy: 1222, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanging Gardens rotate: false - xy: 1324, 1302 + xy: 1324, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanse rotate: false - xy: 916, 792 + xy: 916, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Harbor rotate: false - xy: 1018, 894 + xy: 1018, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hermitage rotate: false - xy: 1222, 1098 + xy: 1222, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Himeji Castle rotate: false - xy: 1018, 792 + xy: 1018, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hospital rotate: false - xy: 1222, 894 + xy: 1222, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hubble Space Telescope rotate: false - xy: 1324, 996 + xy: 1324, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hydro Plant rotate: false - xy: 1324, 894 + xy: 1324, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Ironworks rotate: false - xy: 1528, 1024 + xy: 1528, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Kremlin rotate: false - xy: 1630, 922 + xy: 1630, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Krepost rotate: false - xy: 1732, 1024 + xy: 1732, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Leaning Tower of Pisa rotate: false - xy: 1936, 1126 + xy: 1936, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Library rotate: false - xy: 1732, 820 + xy: 1732, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Lighthouse rotate: false - xy: 1834, 922 + xy: 1834, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Longhouse rotate: false - xy: 2038, 1126 + xy: 2038, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Machu Picchu rotate: false - xy: 2140, 1126 + xy: 2140, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Market rotate: false - xy: 2038, 922 + xy: 2038, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Military Academy rotate: false - xy: 2344, 1228 + xy: 2344, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mint rotate: false - xy: 2344, 820 + xy: 2344, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monastery rotate: false - xy: 1834, 718 + xy: 1834, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monument rotate: false - xy: 1936, 718 + xy: 1936, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mughal Fort rotate: false - xy: 2140, 718 + xy: 2140, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Museum rotate: false - xy: 2242, 718 + xy: 2242, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/National College rotate: false - xy: 590, 690 + xy: 590, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Neuschwanstein rotate: false - xy: 794, 690 + xy: 794, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Notre Dame rotate: false - xy: 896, 690 + xy: 896, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Nuclear Plant rotate: false - xy: 1100, 690 + xy: 1100, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Observatory rotate: false - xy: 1304, 690 + xy: 1304, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Opera House rotate: false - xy: 794, 588 + xy: 794, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Oxford University rotate: false - xy: 998, 588 + xy: 998, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Palace rotate: false - xy: 1100, 588 + xy: 1100, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Paper Maker rotate: false - xy: 1304, 588 + xy: 1304, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Pentagon rotate: false - xy: 692, 486 + xy: 794, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Porcelain Tower rotate: false - xy: 792, 384 + xy: 792, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Public School rotate: false - xy: 1098, 384 + xy: 1098, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Research Lab rotate: false - xy: 1610, 514 + xy: 1610, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Booster rotate: false - xy: 2120, 514 + xy: 2120, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Cockpit rotate: false - xy: 2222, 616 + xy: 2222, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Engine rotate: false - xy: 2222, 514 + xy: 2222, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Stasis Chamber rotate: false - xy: 2324, 616 + xy: 2324, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Satrap's Court rotate: false - xy: 1610, 412 + xy: 1610, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Seaport rotate: false - xy: 1916, 412 + xy: 1916, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sistine Chapel rotate: false - xy: 1710, 310 + xy: 1710, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Solar Plant rotate: false - xy: 1914, 310 + xy: 1914, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Spaceship Factory rotate: false - xy: 2016, 310 + xy: 2016, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stable rotate: false - xy: 436, 208 + xy: 436, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stadium rotate: false - xy: 436, 106 + xy: 436, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Statue of Liberty rotate: false - xy: 436, 4 + xy: 436, 17 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stock Exchange rotate: false - xy: 640, 282 + xy: 640, 295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stone Works rotate: false - xy: 742, 282 + xy: 742, 295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stonehenge rotate: false - xy: 640, 78 + xy: 640, 91 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sydney Opera House rotate: false - xy: 946, 282 + xy: 946, 295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Taj Mahal rotate: false - xy: 844, 78 + xy: 844, 91 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Temple rotate: false - xy: 1048, 282 + xy: 1048, 295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Terracotta Army rotate: false - xy: 946, 78 + xy: 946, 91 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Library rotate: false - xy: 1048, 180 + xy: 1048, 193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Lighthouse rotate: false - xy: 1150, 282 + xy: 1150, 295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Louvre rotate: false - xy: 1048, 78 + xy: 1048, 91 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Oracle rotate: false - xy: 1150, 180 + xy: 1150, 193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Pyramids rotate: false - xy: 1150, 78 + xy: 1150, 91 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Theatre rotate: false - xy: 1252, 78 + xy: 1252, 91 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/University rotate: false - xy: 1660, 106 + xy: 1660, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls rotate: false - xy: 1762, 106 + xy: 1762, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls of Babylon rotate: false - xy: 1864, 208 + xy: 1864, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Windmill rotate: false - xy: 2170, 208 + xy: 2170, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Workshop rotate: false - xy: 2374, 208 + xy: 2374, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 FlagIcons/Dutch rotate: false - xy: 204, 190 + xy: 204, 203 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/English rotate: false - xy: 204, 60 + xy: 204, 73 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/French rotate: false - xy: 304, 1710 + xy: 304, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/German rotate: false - xy: 434, 1710 + xy: 434, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Italian rotate: false - xy: 564, 1710 + xy: 564, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Polish rotate: false - xy: 694, 1710 + xy: 694, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Portuguese rotate: false - xy: 824, 1710 + xy: 824, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Romanian rotate: false - xy: 954, 1710 + xy: 954, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Russian rotate: false - xy: 1084, 1710 + xy: 1084, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Simplified_Chinese rotate: false - xy: 1214, 1710 + xy: 1214, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Spanish rotate: false - xy: 1344, 1710 + xy: 1344, 1723 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 ImprovementIcons/Academy rotate: false - xy: 1474, 1738 + xy: 2, 7 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Ancient ruins rotate: false - xy: 2188, 1738 + xy: 2086, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Barbarian encampment rotate: false - xy: 383, 1506 + xy: 281, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Camp rotate: false - xy: 1913, 1534 + xy: 1811, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/City ruins rotate: false - xy: 1297, 1404 + xy: 1195, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Customs house rotate: false - xy: 2215, 1330 + xy: 2215, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Farm rotate: false - xy: 508, 996 + xy: 508, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Fishing Boats rotate: false - xy: 508, 894 + xy: 508, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Landmark rotate: false - xy: 1630, 820 + xy: 1630, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Lumber mill rotate: false - xy: 1834, 820 + xy: 1834, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Manufactory rotate: false - xy: 2242, 1228 + xy: 2242, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Mine rotate: false - xy: 2344, 1024 + xy: 2344, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Oil well rotate: false - xy: 692, 588 + xy: 692, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Plantation rotate: false - xy: 588, 384 + xy: 588, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Quarry rotate: false - xy: 1200, 384 + xy: 1200, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Railroad rotate: false - xy: 1406, 514 + xy: 1508, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Railroad rotate: false - xy: 1406, 514 + xy: 1508, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/FantasyHex/Railroad rotate: false - xy: 1406, 514 + xy: 1508, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Road rotate: false - xy: 1814, 514 + xy: 1814, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Trading post rotate: false - xy: 1354, 106 + xy: 1354, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/America rotate: false - xy: 2086, 1738 + xy: 1984, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Arabia rotate: false - xy: 791, 1608 + xy: 689, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Babylon rotate: false - xy: 1811, 1636 + xy: 1709, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/China rotate: false - xy: 787, 1404 + xy: 685, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/CityState rotate: false - xy: 334, 116 + xy: 334, 231 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Egypt rotate: false - xy: 508, 1200 + xy: 508, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/England rotate: false - xy: 712, 1302 + xy: 712, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/France rotate: false - xy: 712, 996 + xy: 712, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Germany rotate: false - xy: 916, 1098 + xy: 916, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Greece rotate: false - xy: 916, 894 + xy: 916, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/India rotate: false - xy: 1426, 1126 + xy: 1426, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Iroquois rotate: false - xy: 1630, 1126 + xy: 1630, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Japan rotate: false - xy: 1528, 922 + xy: 1528, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Korea rotate: false - xy: 1528, 820 + xy: 1528, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Persia rotate: false - xy: 896, 486 + xy: 896, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Rome rotate: false - xy: 2018, 514 + xy: 2018, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Russia rotate: false - xy: 2120, 616 + xy: 2120, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/The Ottomans rotate: false - xy: 1252, 282 + xy: 1252, 295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Aircraft rotate: false - xy: 406, 740 + xy: 406, 753 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 OtherIcons/BackArrow rotate: false - xy: 1456, 54 + xy: 1456, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 OtherIcons/Banner rotate: false - xy: 281, 1506 + xy: 2321, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Circle rotate: false - xy: 204, 320 + xy: 204, 333 size: 178, 178 orig: 178, 178 offset: 0, 0 index: -1 OtherIcons/Crosshair rotate: false - xy: 2011, 1330 + xy: 2011, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/DisbandUnit rotate: false - xy: 386, 498 + xy: 386, 511 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Fire rotate: false - xy: 814, 1302 + xy: 814, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Hexagon rotate: false - xy: 2, 1546 + xy: 2, 1559 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 TileSets/Default/Hexagon rotate: false - xy: 2, 1546 + xy: 2, 1559 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 TileSets/FantasyHex/Hexagon rotate: false - xy: 2, 1546 + xy: 2, 1559 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 OtherIcons/MenuIcon rotate: false - xy: 2140, 820 + xy: 2140, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pentagon rotate: false - xy: 794, 486 + xy: 692, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pillage rotate: false - xy: 486, 385 + xy: 486, 398 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Shield rotate: false - xy: 2222, 412 + xy: 2222, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Sleep rotate: false - xy: 1812, 310 + xy: 1812, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Stop rotate: false - xy: 742, 180 + xy: 742, 193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/civTableBackground rotate: false - xy: 2, 1788 + xy: 2, 1801 size: 300, 50 orig: 300, 50 offset: 0, 0 index: -1 OtherIcons/tileTableBackground rotate: false - xy: 204, 500 + xy: 204, 513 size: 180, 200 orig: 180, 200 offset: 0, 0 index: -1 OtherIcons/whiteDot rotate: false - xy: 2478, 1837 + xy: 2478, 1850 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 PolicyIcons/Aristocracy rotate: false - xy: 640, 26 + xy: 640, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Citizenship rotate: false - xy: 848, 26 + xy: 900, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Civil Society rotate: false - xy: 900, 26 + xy: 952, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Collective Rule rotate: false - xy: 1004, 26 + xy: 1056, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Constitution rotate: false - xy: 1056, 26 + xy: 1108, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Democracy rotate: false - xy: 1160, 26 + xy: 1212, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Entrepreneurship rotate: false - xy: 1264, 26 + xy: 1456, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Facism rotate: false - xy: 2426, 614 + xy: 2426, 627 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Religion rotate: false - xy: 2426, 510 + xy: 2426, 523 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Speech rotate: false - xy: 2426, 458 + xy: 2426, 471 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Thought rotate: false - xy: 2426, 406 + xy: 2426, 419 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Humanism rotate: false - xy: 65, 44 + xy: 2419, 1393 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Landed Elite rotate: false - xy: 1560, 53 + xy: 1560, 14 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Legalism rotate: false - xy: 1612, 53 + xy: 1612, 66 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Mandate Of Heaven rotate: false - xy: 1664, 2 + xy: 1664, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Mercantilism rotate: false - xy: 1768, 54 + xy: 1716, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Meritocracy rotate: false - xy: 1768, 2 + xy: 1768, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Militarism rotate: false - xy: 1820, 54 + xy: 1768, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Military Caste rotate: false - xy: 1820, 2 + xy: 1820, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Military Tradition rotate: false - xy: 1872, 54 + xy: 1820, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Monarchy rotate: false - xy: 1924, 54 + xy: 1872, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Oligarchy rotate: false - xy: 1976, 54 + xy: 1924, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Organized Religion rotate: false - xy: 2028, 54 + xy: 1976, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Patronage rotate: false - xy: 2028, 2 + xy: 2028, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Police State rotate: false - xy: 2080, 54 + xy: 2028, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Populism rotate: false - xy: 2080, 2 + xy: 2080, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Professional Army rotate: false - xy: 2132, 54 + xy: 2080, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Protectionism rotate: false - xy: 2132, 2 + xy: 2132, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Reformation rotate: false - xy: 2236, 54 + xy: 2184, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Representation rotate: false - xy: 2236, 2 + xy: 2236, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Republic rotate: false - xy: 2288, 54 + xy: 2236, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Scientific Revolution rotate: false - xy: 2288, 2 + xy: 2288, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Secularism rotate: false - xy: 2340, 2 + xy: 2340, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Sovereignty rotate: false - xy: 488, 333 + xy: 436, 346 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Theocracy rotate: false - xy: 169, 8 + xy: 540, 345 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Total War rotate: false - xy: 221, 8 + xy: 156, 21 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Trade Unions rotate: false - xy: 273, 8 + xy: 208, 21 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Universal Suffrage rotate: false - xy: 2423, 1736 + xy: 260, 21 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Warrior Code rotate: false - xy: 2423, 1632 + xy: 2423, 1697 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 ResourceIcons/Aluminum rotate: false - xy: 1984, 1738 + xy: 1882, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Bananas rotate: false - xy: 2117, 1636 + xy: 2015, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Cattle rotate: false - xy: 277, 1404 + xy: 2321, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Coal rotate: false - xy: 1607, 1432 + xy: 1505, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Cotton rotate: false - xy: 1705, 1330 + xy: 1603, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Deer rotate: false - xy: 2317, 1330 + xy: 2317, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Dyes rotate: false - xy: 384, 396 + xy: 384, 409 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Fish rotate: false - xy: 406, 792 + xy: 406, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Furs rotate: false - xy: 916, 1200 + xy: 916, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Gems rotate: false - xy: 814, 996 + xy: 814, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Gold rotate: false - xy: 1018, 1200 + xy: 1018, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Horses rotate: false - xy: 1120, 792 + xy: 1120, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Incense rotate: false - xy: 1426, 1228 + xy: 1426, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Iron rotate: false - xy: 1528, 1126 + xy: 1528, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Ivory rotate: false - xy: 1732, 1228 + xy: 1732, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Marble rotate: false - xy: 1936, 820 + xy: 1936, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Oil rotate: false - xy: 590, 588 + xy: 590, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Pearls rotate: false - xy: 590, 486 + xy: 590, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sheep rotate: false - xy: 2120, 412 + xy: 2120, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silk rotate: false - xy: 1404, 310 + xy: 1404, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silver rotate: false - xy: 1506, 310 + xy: 1506, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Spices rotate: false - xy: 2322, 310 + xy: 2322, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Stone rotate: false - xy: 640, 180 + xy: 640, 193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sugar rotate: false - xy: 742, 78 + xy: 742, 91 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Uranium rotate: false - xy: 1762, 208 + xy: 1762, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Whales rotate: false - xy: 2068, 208 + xy: 2068, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wheat rotate: false - xy: 2068, 106 + xy: 2068, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wine rotate: false - xy: 2170, 106 + xy: 2170, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Acquire rotate: false - xy: 1678, 1738 + xy: 1576, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/CityConnection rotate: false - xy: 1399, 1404 + xy: 1297, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/City_Center_(Civ6) rotate: false - xy: 334, 14 + xy: 334, 129 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Culture rotate: false - xy: 2, 1106 + xy: 2, 1119 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Food rotate: false - xy: 2, 904 + xy: 2, 917 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Gold rotate: false - xy: 2, 702 + xy: 2, 715 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Happiness rotate: false - xy: 2, 500 + xy: 2, 513 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/InterceptRange rotate: false - xy: 2419, 1380 + xy: 1560, 66 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Malcontent rotate: false - xy: 2, 96 + xy: 2, 109 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Movement rotate: false - xy: 1924, 2 + xy: 1924, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Population rotate: false - xy: 204, 1106 + xy: 204, 1119 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Production rotate: false - xy: 204, 904 + xy: 204, 917 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Range rotate: false - xy: 2184, 54 + xy: 2132, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/RangedStrength rotate: false - xy: 2184, 2 + xy: 2184, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Resistance rotate: false - xy: 1712, 616 + xy: 1712, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Science rotate: false - xy: 204, 702 + xy: 204, 715 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Specialist rotate: false - xy: 2220, 310 + xy: 2220, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Acoustics rotate: false - xy: 1576, 1738 + xy: 1474, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Agriculture rotate: false - xy: 1780, 1738 + xy: 1678, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Animal Husbandry rotate: false - xy: 281, 1608 + xy: 2290, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Pasture rotate: false - xy: 281, 1608 + xy: 2290, 1751 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archaeology rotate: false - xy: 893, 1608 + xy: 791, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archery rotate: false - xy: 1097, 1608 + xy: 995, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Architecture rotate: false - xy: 1199, 1608 + xy: 1097, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Astronomy rotate: false - xy: 1505, 1636 + xy: 1403, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Atomic Theory rotate: false - xy: 1607, 1636 + xy: 1505, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ballistics rotate: false - xy: 2015, 1636 + xy: 1913, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Banking rotate: false - xy: 2321, 1636 + xy: 2219, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Biology rotate: false - xy: 893, 1506 + xy: 791, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Bronze Working rotate: false - xy: 1301, 1506 + xy: 1199, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Calendar rotate: false - xy: 1709, 1534 + xy: 1607, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chemistry rotate: false - xy: 583, 1404 + xy: 481, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Medical Lab rotate: false - xy: 583, 1404 + xy: 481, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chivalry rotate: false - xy: 889, 1404 + xy: 787, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Civil Service rotate: false - xy: 1505, 1432 + xy: 334, 27 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combined Arms rotate: false - xy: 1913, 1432 + xy: 1811, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combustion rotate: false - xy: 2015, 1432 + xy: 1913, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Compass rotate: false - xy: 2219, 1432 + xy: 2117, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Computers rotate: false - xy: 2321, 1432 + xy: 2219, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Construction rotate: false - xy: 1501, 1330 + xy: 2321, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Currency rotate: false - xy: 2113, 1330 + xy: 2113, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Dynamite rotate: false - xy: 406, 1302 + xy: 406, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ecology rotate: false - xy: 406, 1200 + xy: 406, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Economics rotate: false - xy: 508, 1302 + xy: 508, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Education rotate: false - xy: 406, 1098 + xy: 406, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electricity rotate: false - xy: 406, 996 + xy: 406, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electronics rotate: false - xy: 508, 1098 + xy: 508, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Engineering rotate: false - xy: 610, 1200 + xy: 610, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Fertilizer rotate: false - xy: 610, 1098 + xy: 610, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Flight rotate: false - xy: 610, 996 + xy: 610, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Future Tech rotate: false - xy: 1018, 1302 + xy: 1018, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Guilds rotate: false - xy: 1018, 996 + xy: 1018, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Gunpowder rotate: false - xy: 1120, 1098 + xy: 1120, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Horseback Riding rotate: false - xy: 1222, 996 + xy: 1222, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Industrialization rotate: false - xy: 1528, 1228 + xy: 1528, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Iron Working rotate: false - xy: 1630, 1228 + xy: 1630, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Lasers rotate: false - xy: 2, 298 + xy: 2, 311 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 TechIcons/Machinery rotate: false - xy: 2038, 1024 + xy: 2038, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Masonry rotate: false - xy: 2242, 1126 + xy: 2242, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mass Media (retired) rotate: false - xy: 2038, 820 + xy: 2038, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mathematics rotate: false - xy: 2140, 922 + xy: 2140, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metal Casting rotate: false - xy: 2242, 922 + xy: 2242, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metallurgy rotate: false - xy: 2242, 820 + xy: 2242, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Military Science rotate: false - xy: 2344, 1126 + xy: 2344, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mining rotate: false - xy: 2344, 922 + xy: 2344, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mobile Tactics rotate: false - xy: 1528, 718 + xy: 1528, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nanotechnology rotate: false - xy: 488, 589 + xy: 488, 602 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Navigation rotate: false - xy: 692, 690 + xy: 692, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nuclear Fission rotate: false - xy: 998, 690 + xy: 998, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Optics rotate: false - xy: 896, 588 + xy: 896, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Particle Physics rotate: false - xy: 488, 487 + xy: 488, 500 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pharmaceuticals rotate: false - xy: 998, 486 + xy: 998, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Philosophy rotate: false - xy: 1100, 486 + xy: 1100, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Physics rotate: false - xy: 1202, 486 + xy: 1202, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Plastics rotate: false - xy: 690, 384 + xy: 690, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pottery rotate: false - xy: 894, 384 + xy: 894, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Printing Press rotate: false - xy: 996, 384 + xy: 996, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radar rotate: false - xy: 1302, 384 + xy: 1302, 397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radio rotate: false - xy: 1406, 616 + xy: 1406, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Railroad rotate: false - xy: 1508, 616 + xy: 1406, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Refrigeration rotate: false - xy: 1508, 514 + xy: 1508, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Replaceable Parts rotate: false - xy: 1610, 616 + xy: 1610, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rifling rotate: false - xy: 1814, 616 + xy: 1814, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Robotics rotate: false - xy: 1916, 616 + xy: 1916, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rocketry rotate: false - xy: 2018, 616 + xy: 2018, 629 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Sailing rotate: false - xy: 2324, 514 + xy: 2324, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Satellites rotate: false - xy: 1508, 412 + xy: 1508, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Scientific Theory rotate: false - xy: 1712, 412 + xy: 1712, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steam Power rotate: false - xy: 538, 106 + xy: 538, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steel rotate: false - xy: 538, 4 + xy: 538, 17 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/The Wheel rotate: false - xy: 1252, 180 + xy: 1252, 193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Theology rotate: false - xy: 1354, 208 + xy: 1354, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Trapping rotate: false - xy: 1456, 208 + xy: 1456, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Writing rotate: false - xy: 2374, 106 + xy: 2374, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/CityOverlay rotate: false - xy: 334, 218 + xy: 1399, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/CrosshatchHexagon rotate: false - xy: 2, 1308 + xy: 2, 1321 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 TileSets/FantasyHex/CrosshatchHexagon rotate: false - xy: 2, 1308 + xy: 2, 1321 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 TileSets/Default/Flood plainsOverlay rotate: false - xy: 712, 1098 + xy: 712, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/ForestOverlay rotate: false - xy: 508, 792 + xy: 508, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/HillOverlay rotate: false - xy: 1324, 1200 + xy: 1324, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/JungleOverlay rotate: false - xy: 1732, 1126 + xy: 1732, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/LakesOverlay rotate: false - xy: 1834, 1126 + xy: 1834, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MarshOverlay rotate: false - xy: 2140, 1024 + xy: 2140, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MountainOverlay rotate: false - xy: 2038, 718 + xy: 2038, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/OasisOverlay rotate: false - xy: 1202, 690 + xy: 1202, 703 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/road rotate: false - xy: 2, 83 + xy: 104, 96 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/road rotate: false - xy: 2, 83 + xy: 104, 96 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/City rotate: false - xy: 1354, 347 + xy: 1354, 360 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+City rotate: false - xy: 1354, 347 + xy: 1354, 360 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Hill+City rotate: false - xy: 1354, 347 + xy: 1354, 360 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Coast rotate: false - xy: 406, 710 + xy: 406, 723 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert rotate: false - xy: 1316, 48 + xy: 1316, 61 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert+City rotate: false - xy: 2424, 319 + xy: 2424, 332 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert+Flood plains rotate: false - xy: 2419, 1350 + xy: 2419, 1363 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert+Oasis rotate: false - xy: 1508, 23 + xy: 592, 367 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland rotate: false - xy: 592, 354 + xy: 104, 14 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/TopRightBorder rotate: false - xy: 592, 354 + xy: 104, 14 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+Forest rotate: false - xy: 88, 13 + xy: 776, 8 size: 31, 29 orig: 31, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+Jungle rotate: false - xy: 169, 60 + xy: 167, 73 size: 32, 34 orig: 32, 34 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+Marsh rotate: false - xy: 2444, 1809 + xy: 2444, 1822 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Hill rotate: false - xy: 2423, 1494 + xy: 2423, 1559 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Hill+Forest rotate: false - xy: 2423, 1447 + xy: 2423, 1512 size: 32, 45 orig: 32, 45 offset: 0, 0 index: -1 TileSets/FantasyHex/Lakes rotate: false - xy: 1354, 317 + xy: 1354, 330 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Mountain rotate: false - xy: 440, 702 + xy: 440, 715 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Ocean rotate: false - xy: 1542, 23 + xy: 2423, 1482 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains rotate: false - xy: 1576, 23 + xy: 2423, 1452 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains+City rotate: false - xy: 2444, 69 + xy: 2444, 82 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains+Forest rotate: false - xy: 2444, 34 + xy: 2444, 47 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains+Jungle rotate: false - xy: 1610, 16 + xy: 2444, 10 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/TopBorder rotate: false - xy: 2444, 4 + xy: 640, 9 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tundra rotate: false - xy: 1316, 14 + xy: 674, 5 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tundra+City rotate: false - xy: 592, 317 + xy: 708, 2 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tundra+Forest rotate: false - xy: 54, 10 + xy: 742, 5 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UnitIcons/Anti-Aircraft Gun rotate: false - xy: 383, 1608 + xy: 281, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Anti-Tank Gun rotate: false - xy: 485, 1608 + xy: 383, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Archer rotate: false - xy: 995, 1608 + xy: 893, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Artillery rotate: false - xy: 1403, 1608 + xy: 1301, 1621 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/B17 rotate: false - xy: 1709, 1636 + xy: 1607, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ballista rotate: false - xy: 1913, 1636 + xy: 1811, 1649 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Battleship rotate: false - xy: 587, 1506 + xy: 485, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Bomber rotate: false - xy: 995, 1506 + xy: 893, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Bowman rotate: false - xy: 1097, 1506 + xy: 995, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Brute rotate: false - xy: 1403, 1506 + xy: 1301, 1519 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Camel Archer rotate: false - xy: 1811, 1534 + xy: 1709, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cannon rotate: false - xy: 2015, 1534 + xy: 1913, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Caravel rotate: false - xy: 2117, 1534 + xy: 2015, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Catapult rotate: false - xy: 2321, 1534 + xy: 2219, 1547 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cavalry rotate: false - xy: 379, 1404 + xy: 277, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Chariot Archer rotate: false - xy: 481, 1404 + xy: 379, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Chu-Ko-Nu rotate: false - xy: 991, 1404 + xy: 889, 1417 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Companion Cavalry rotate: false - xy: 2117, 1432 + xy: 2015, 1445 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cossack rotate: false - xy: 1603, 1330 + xy: 1501, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Crossbowman rotate: false - xy: 1909, 1330 + xy: 1909, 1343 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Destroyer rotate: false - xy: 386, 600 + xy: 386, 613 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Fighter rotate: false - xy: 712, 1200 + xy: 712, 1213 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Foreign Legion rotate: false - xy: 916, 1302 + xy: 916, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Frigate rotate: false - xy: 814, 1098 + xy: 814, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Galleass rotate: false - xy: 610, 792 + xy: 610, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Gatling Gun rotate: false - xy: 712, 894 + xy: 712, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Artist rotate: false - xy: 712, 792 + xy: 712, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Engineer rotate: false - xy: 814, 894 + xy: 814, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great General rotate: false - xy: 277, 1308 + xy: 277, 1321 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 OtherIcons/Star rotate: false - xy: 277, 1308 + xy: 277, 1321 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 UnitIcons/Great Merchant rotate: false - xy: 916, 996 + xy: 916, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Scientist rotate: false - xy: 1018, 1098 + xy: 1018, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Bomber rotate: false - xy: 1222, 1302 + xy: 1222, 1315 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Infantry rotate: false - xy: 814, 792 + xy: 814, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Helicopter rotate: false - xy: 1120, 996 + xy: 1120, 1009 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hoplite rotate: false - xy: 1120, 894 + xy: 1120, 907 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Horseman rotate: false - xy: 1324, 1098 + xy: 1324, 1111 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hwach'a rotate: false - xy: 1222, 792 + xy: 1222, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Immortal rotate: false - xy: 1324, 792 + xy: 1324, 805 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Infantry rotate: false - xy: 1426, 1024 + xy: 1426, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ironclad rotate: false - xy: 1426, 922 + xy: 1426, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Janissary rotate: false - xy: 1426, 820 + xy: 1426, 833 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Jet Fighter rotate: false - xy: 1630, 1024 + xy: 1630, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Knight rotate: false - xy: 1834, 1228 + xy: 1834, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Lancer rotate: false - xy: 1936, 1228 + xy: 1936, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landship rotate: false - xy: 1732, 922 + xy: 1732, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landsknecht rotate: false - xy: 1834, 1024 + xy: 1834, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Legion rotate: false - xy: 2038, 1228 + xy: 2038, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longbowman rotate: false - xy: 1936, 1024 + xy: 1936, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longswordsman rotate: false - xy: 2140, 1228 + xy: 2140, 1241 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Machine Gun rotate: false - xy: 1936, 922 + xy: 1936, 935 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mechanized Infantry rotate: false - xy: 2242, 1024 + xy: 2242, 1037 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Minuteman rotate: false - xy: 1426, 718 + xy: 1426, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Modern Armor rotate: false - xy: 1630, 718 + xy: 1630, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mohawk Warrior rotate: false - xy: 1732, 718 + xy: 1732, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketeer rotate: false - xy: 2344, 718 + xy: 2344, 731 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketman rotate: false - xy: 488, 691 + xy: 488, 704 size: 100, 99 orig: 100, 99 offset: 0, 0 index: -1 UnitIcons/Panzer rotate: false - xy: 1202, 588 + xy: 1202, 601 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Pikeman rotate: false - xy: 1304, 486 + xy: 1304, 499 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rifleman rotate: false - xy: 1712, 514 + xy: 1712, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rocket Artillery rotate: false - xy: 1916, 514 + xy: 1916, 527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Samurai rotate: false - xy: 1406, 412 + xy: 1406, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Scout rotate: false - xy: 1814, 412 + xy: 1814, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Settler rotate: false - xy: 2018, 412 + xy: 2018, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ship of the Line rotate: false - xy: 2324, 412 + xy: 2324, 425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Sipahi rotate: false - xy: 1608, 310 + xy: 1608, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Spearman rotate: false - xy: 2118, 310 + xy: 2118, 323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Stealth Bomber rotate: false - xy: 538, 208 + xy: 538, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Submarine rotate: false - xy: 844, 282 + xy: 844, 295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Swordsman rotate: false - xy: 844, 180 + xy: 844, 193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Tank rotate: false - xy: 946, 180 + xy: 946, 193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trebuchet rotate: false - xy: 1456, 106 + xy: 1456, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Triplane rotate: false - xy: 1558, 208 + xy: 1558, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trireme rotate: false - xy: 1558, 105 + xy: 1558, 118 size: 100, 101 orig: 100, 101 offset: 0, 0 index: -1 UnitIcons/Turtle Ship rotate: false - xy: 1660, 208 + xy: 1660, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Chariot rotate: false - xy: 1864, 106 + xy: 1864, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Elephant rotate: false - xy: 1966, 208 + xy: 1966, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Warrior rotate: false - xy: 1966, 106 + xy: 1966, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Work Boats rotate: false - xy: 2272, 208 + xy: 2272, 221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Worker rotate: false - xy: 2272, 106 + xy: 2272, 119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Zero rotate: false - xy: 1354, 4 + xy: 1354, 17 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitPromotionIcons/Accuracy rotate: false - xy: 2392, 1788 + xy: 2392, 1801 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Air Repair rotate: false - xy: 1426, 1352 + xy: 1426, 1365 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Ambush rotate: false - xy: 384, 344 + xy: 384, 357 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Barrage rotate: false - xy: 1456, 2 + xy: 104, 44 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Blitz rotate: false - xy: 2, 31 + xy: 692, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Boarding Party rotate: false - xy: 692, 26 + xy: 744, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Bombardment rotate: false - xy: 744, 26 + xy: 796, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Charge rotate: false - xy: 796, 26 + xy: 848, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Coastal_Raider rotate: false - xy: 952, 26 + xy: 1004, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Cover rotate: false - xy: 1108, 26 + xy: 1160, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Discipline rotate: false - xy: 1108, 26 + xy: 1160, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Strength rotate: false - xy: 1108, 26 + xy: 1160, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Drill rotate: false - xy: 1212, 26 + xy: 1264, 39 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Evasion rotate: false - xy: 2426, 666 + xy: 2426, 679 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Formation rotate: false - xy: 2426, 562 + xy: 2426, 575 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Heal Instantly rotate: false - xy: 2424, 354 + xy: 2424, 367 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Indirect Fire rotate: false - xy: 117, 44 + xy: 1508, 66 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Interception rotate: false - xy: 1508, 53 + xy: 1508, 14 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Logistics rotate: false - xy: 1664, 54 + xy: 1612, 14 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/March rotate: false - xy: 1716, 54 + xy: 1664, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Medic rotate: false - xy: 1716, 2 + xy: 1716, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Mobility rotate: false - xy: 1872, 2 + xy: 1872, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Operational Range rotate: false - xy: 1976, 2 + xy: 1976, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Range rotate: false - xy: 1976, 2 + xy: 1976, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Scouting rotate: false - xy: 2340, 54 + xy: 2288, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sentry rotate: false - xy: 2340, 54 + xy: 2288, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Shock rotate: false - xy: 2392, 54 + xy: 2340, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Siege rotate: false - xy: 2392, 2 + xy: 2392, 67 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sortie rotate: false - xy: 436, 333 + xy: 2392, 15 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting rotate: false - xy: 540, 332 + xy: 488, 346 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting I (air) rotate: false - xy: 540, 332 + xy: 488, 346 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Volley rotate: false - xy: 2423, 1684 + xy: 2423, 1749 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Wolfpack rotate: false - xy: 2423, 1580 + xy: 2423, 1645 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Woodsman rotate: false - xy: 2423, 1528 + xy: 2423, 1593 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/game.png b/android/assets/game.png index 15556e1a8e..bfa73a8d9c 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/android/assets/jsons/Buildings.json b/android/assets/jsons/Buildings.json index 9ab69f2e0d..9a114a1e89 100644 --- a/android/assets/jsons/Buildings.json +++ b/android/assets/jsons/Buildings.json @@ -178,6 +178,14 @@ requiredTech:"Mathematics", quote:"'I think that if ever a mortal heard the word of God it would be in a garden at the cool of the day.' - F. Frankfort Moore" }, + { + name:"Courthouse", + maintenance:4, + hurryCostModifier:25, + uniques:["Remove extra unhappiness from annexed cities", + "Can only be built in annexed cities"], + requiredTech:"Mathematics" + }, { name:"Colosseum", maintenance:1, diff --git a/core/src/com/unciv/logic/automation/ConstructionAutomation.kt b/core/src/com/unciv/logic/automation/ConstructionAutomation.kt index 5f4d1f26ee..e39b84682f 100644 --- a/core/src/com/unciv/logic/automation/ConstructionAutomation.kt +++ b/core/src/com/unciv/logic/automation/ConstructionAutomation.kt @@ -185,7 +185,9 @@ class ConstructionAutomation(val cityConstructions: CityConstructions){ } private fun addHappinessBuildingChoice() { - val happinessBuilding = buildableNotWonders.filter { it.isStatRelated(Stat.Happiness) } + val happinessBuilding = buildableNotWonders + .filter { it.isStatRelated(Stat.Happiness) + || it.uniques.contains("Remove extra unhappiness from annexed cities") } .minBy { it.cost } if (happinessBuilding != null) { var modifier = 1f diff --git a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt index 28689e74be..c3b2c14e9f 100644 --- a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt @@ -429,10 +429,7 @@ class NextTurnAutomation{ private fun reassignWorkedTiles(civInfo: CivilizationInfo) { for (city in civInfo.cities) { - city.workedTiles = hashSetOf() - city.population.specialists.clear() - for (i in 0..city.population.population) - city.population.autoAssignPopulation() + city.reassignWorkers() city.cityConstructions.chooseNextConstruction() if (city.health < city.getMaxHealth()) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index b7a528f427..28be936167 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -100,8 +100,11 @@ class Battle(val gameInfo:GameInfo) { && defender is CityCombatant && attacker.isMelee()){ conquerCity(defender.city, attacker) - } + } else + postBattleActionsPart2(attacker, defender, attackedTile) + } + fun postBattleActionsPart2(attacker: ICombatant, defender: ICombatant, attackedTile:TileInfo) { // German unique - needs to be checked before we try to move to the enemy tile, since the encampment disappears after we move in if(defender.isDefeated() && defender.getCivInfo().isBarbarian() @@ -204,69 +207,16 @@ class Battle(val gameInfo:GameInfo) { } private fun conquerCity(city: CityInfo, attacker: ICombatant) { - val cityCiv = city.civInfo val attackerCiv = attacker.getCivInfo() - attackerCiv.addNotification("We have conquered the city of [${city.name}]!",city.location, Color.RED) - attackerCiv.popupAlerts.add(PopupAlert(AlertType.CityConquered,city.name)) + attackerCiv.addNotification("We have conquered the city of [${city.name}]!", city.location, Color.RED) + city.conquerer = attacker - city.getCenterTile().apply { - if(militaryUnit!=null) militaryUnit!!.destroy() - if(civilianUnit!=null) captureCivilianUnit(attacker,MapUnitCombatant(civilianUnit!!)) - for(airUnit in airUnits.toList()) airUnit.destroy() + if (attacker.getCivInfo().isPlayerCivilization()) { + attackerCiv.popupAlerts.add(PopupAlert(AlertType.CityConquered, city.name)) + } else { + city.AnnexCity() } - - if (!attackerCiv.isMajorCiv()){ - city.destroyCity() - } - else { - val currentPopulation = city.population.population - - val percentageOfCivPopulationInThatCity = currentPopulation*100f / cityCiv.cities.sumBy { it.population.population } - val aggroGenerated = 10f+percentageOfCivPopulationInThatCity.roundToInt() - cityCiv.getDiplomacyManager(attacker.getCivInfo()) - .addModifier(DiplomaticModifiers.CapturedOurCities, -aggroGenerated) - - for(thirdPartyCiv in attackerCiv.getKnownCivs().filter { it.isMajorCiv() }){ - val aggroGeneratedForOtherCivs = (aggroGenerated/10).roundToInt().toFloat() - if(thirdPartyCiv.isAtWarWith(cityCiv)) // You annoyed our enemy? - thirdPartyCiv.getDiplomacyManager(attackerCiv) - .addModifier(DiplomaticModifiers.SharedEnemy, aggroGeneratedForOtherCivs) // Cool, keep at at! =D - else thirdPartyCiv.getDiplomacyManager(attackerCiv) - .addModifier(DiplomaticModifiers.WarMongerer, -aggroGeneratedForOtherCivs) // Uncool bro. - } - - if(currentPopulation>1) city.population.population -= 1 + currentPopulation/4 // so from 2-4 population, remove 1, from 5-8, remove 2, etc. - city.population.unassignExtraPopulation() - - city.health = city.getMaxHealth() / 2 // I think that cities recover to half health when conquered? - - if(!attacker.getCivInfo().policies.isAdopted("Police State")) { - city.expansion.cultureStored = 0 - city.expansion.reset() - } - - city.moveToCiv(attacker.getCivInfo()) - city.resistanceCounter = city.population.population - city.workedTiles = hashSetOf() //reassign 1st working tile - city.population.specialists.clear() - for (i in 0..city.population.population) - city.population.autoAssignPopulation() - city.cityStats.update() - } - - if(city.cityConstructions.isBuilt("Palace")){ - city.cityConstructions.removeBuilding("Palace") - if(cityCiv.isDefeated()) { - cityCiv.destroy() - attacker.getCivInfo().popupAlerts.add(PopupAlert(AlertType.Defeated,cityCiv.civName)) - } - else if(cityCiv.cities.isNotEmpty()){ - cityCiv.cities.first().cityConstructions.addBuilding("Palace") // relocate palace - } - } - - (attacker as MapUnitCombatant).unit.movement.moveToTile(city.getCenterTile()) } fun getMapCombatantOfTile(tile:TileInfo): ICombatant? { diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 7e7f8c6a54..a149e3435d 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -3,8 +3,13 @@ package com.unciv.logic.city import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.math.Vector2 import com.unciv.Constants +import com.unciv.UnCivGame +import com.unciv.logic.battle.* +import com.unciv.logic.civilization.AlertType import com.unciv.logic.civilization.CivilizationInfo +import com.unciv.logic.civilization.PopupAlert import com.unciv.logic.civilization.diplomacy.DiplomacyFlags +import com.unciv.logic.civilization.diplomacy.DiplomaticModifiers import com.unciv.logic.map.RoadStatus import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileMap @@ -13,7 +18,9 @@ import com.unciv.models.gamebasics.tile.ResourceSupplyList import com.unciv.models.gamebasics.tile.ResourceType import com.unciv.models.stats.Stats import com.unciv.ui.utils.withoutItem +import kotlin.math.max import kotlin.math.min +import kotlin.math.roundToInt class CityInfo { @Transient lateinit var civInfo: CivilizationInfo @@ -38,6 +45,8 @@ class CityInfo { var isBeingRazed = false var attackedThisTurn = false var hasSoldBuildingThisTurn = false + var conquerer : ICombatant? = null + var isPuppet = false constructor() // for json parsing, we need to have a default constructor constructor(civInfo: CivilizationInfo, cityLocation: Vector2) { // new city! @@ -99,6 +108,9 @@ class CityInfo { toReturn.isBeingRazed=isBeingRazed toReturn.attackedThisTurn = attackedThisTurn toReturn.resistanceCounter = resistanceCounter + toReturn.foundingCiv = foundingCiv + toReturn.conquerer = conquerer + toReturn.isPuppet = isPuppet return toReturn } @@ -210,6 +222,17 @@ class CityInfo { tryUpdateRoadStatus() attackedThisTurn = false if (resistanceCounter > 0) resistanceCounter-- + + if (isPuppet) { + reassignWorkers() + } + } + + fun reassignWorkers() { + workedTiles = hashSetOf() + population.specialists.clear() + for (i in 0..population.population) + population.autoAssignPopulation() } fun endTurn() { @@ -254,6 +277,136 @@ class CityInfo { getCenterTile().improvement="City ruins" } + fun AnnexCity() { + if (conquerer == null) return + val attackerCiv = conquerer!!.getCivInfo() + val defenderCiv = civInfo + + getCenterTile().apply { + if(militaryUnit!=null) militaryUnit!!.destroy() + if(civilianUnit!=null) Battle(civInfo.gameInfo).captureCivilianUnit(conquerer!!, MapUnitCombatant(civilianUnit!!)) + for(airUnit in airUnits.toList()) airUnit.destroy() + } + + if (!attackerCiv.isMajorCiv()){ + destroyCity() + } + else { + val currentPopulation = population.population + + val percentageOfCivPopulationInThatCity = currentPopulation*100f / civInfo.cities.sumBy { it.population.population } + val aggroGenerated = 10f+percentageOfCivPopulationInThatCity.roundToInt() + civInfo.getDiplomacyManager(attackerCiv) + .addModifier(DiplomaticModifiers.CapturedOurCities, -aggroGenerated) + + for(thirdPartyCiv in attackerCiv.getKnownCivs().filter { it.isMajorCiv() }){ + val aggroGeneratedForOtherCivs = (aggroGenerated/10).roundToInt().toFloat() + if(thirdPartyCiv.isAtWarWith(civInfo)) // You annoyed our enemy? + thirdPartyCiv.getDiplomacyManager(attackerCiv) + .addModifier(DiplomaticModifiers.SharedEnemy, aggroGeneratedForOtherCivs) // Cool, keep at at! =D + else thirdPartyCiv.getDiplomacyManager(attackerCiv) + .addModifier(DiplomaticModifiers.WarMongerer, -aggroGeneratedForOtherCivs) // Uncool bro. + } + + if(currentPopulation>1) population.population -= 1 + currentPopulation/4 // so from 2-4 population, remove 1, from 5-8, remove 2, etc. + population.unassignExtraPopulation() + + health = getMaxHealth() / 2 // I think that cities recover to half health when conquered? + + if(!attackerCiv.policies.isAdopted("Police State")) { + expansion.cultureStored = 0 + expansion.reset() + } + + moveToCiv(attackerCiv) + resistanceCounter = population.population + workedTiles = hashSetOf() //reassign 1st working tile + population.specialists.clear() + for (i in 0..population.population) + population.autoAssignPopulation() + cityStats.update() + } + + if(cityConstructions.isBuilt("Palace")){ + cityConstructions.removeBuilding("Palace") + if(defenderCiv.isDefeated()) { + defenderCiv.destroy() + attackerCiv.popupAlerts.add(PopupAlert(AlertType.Defeated,defenderCiv.civName)) + } + else if(defenderCiv.cities.isNotEmpty()){ + defenderCiv.cities.first().cityConstructions.addBuilding("Palace") // relocate palace + } + } + + Battle(civInfo.gameInfo).postBattleActionsPart2(conquerer as MapUnitCombatant, CityCombatant(this), ccenterTile) + conquerer = null + UnCivGame.Current.worldScreen.shouldUpdate=true + } + + fun RazeCity() { + AnnexCity() + isBeingRazed = true + } + + fun PuppetCity() { + AnnexCity() + isPuppet = true + resistanceCounter = 0 + } + + fun LiberateCity() { + if (foundingCiv == "") { + AnnexCity() + return + } + + val attackerCiv = conquerer!!.getCivInfo() + val defenderCiv = civInfo + val foundingCiv = civInfo.gameInfo.civilizations.first { it.civName == foundingCiv } + + getCenterTile().apply { + if(militaryUnit!=null) militaryUnit!!.destroy() + if(civilianUnit!=null) civilianUnit!!.destroy() + for(airUnit in airUnits.toList()) airUnit.destroy() + } + + val currentPopulation = population.population + + val percentageOfCivPopulationInThatCity = currentPopulation*100f / (foundingCiv.cities.sumBy { it.population.population } + currentPopulation) + val aggroGenerated = 10f+percentageOfCivPopulationInThatCity.roundToInt() + foundingCiv.getDiplomacyManager(attackerCiv) + .addModifier(DiplomaticModifiers.CapturedOurCities, aggroGenerated) + + for(thirdPartyCiv in attackerCiv.getKnownCivs().filter { it.isMajorCiv() }){ + val aggroGeneratedForOtherCivs = (aggroGenerated/10).roundToInt().toFloat() + thirdPartyCiv.getDiplomacyManager(attackerCiv) + .addModifier(DiplomaticModifiers.WarMongerer, aggroGeneratedForOtherCivs) // Cool, keep at at! =D + } + + population.unassignExtraPopulation() + health = getMaxHealth() // I think that cities recover to half health when conquered? + + moveToCiv(foundingCiv) + workedTiles = hashSetOf() //reassign 1st working tile + population.specialists.clear() + for (i in 0..population.population) + population.autoAssignPopulation() + cityStats.update() + + if(foundingCiv.cities.size == 1) { + cityConstructions.addBuilding("Palace") + } + + Battle(civInfo.gameInfo).postBattleActionsPart2(conquerer as MapUnitCombatant, CityCombatant(this), ccenterTile) + conquerer = null + UnCivGame.Current.worldScreen.shouldUpdate=true + } + + fun hasExtraAnnexUnhappiness() : Boolean { + if (civInfo.civName == foundingCiv || foundingCiv == "" || isPuppet) return false + return !containsBuildingUnique("Remove extra unhappiness from annexed cities") + } + fun moveToCiv(newCivInfo: CivilizationInfo){ civInfo.cities = civInfo.cities.toMutableList().apply { remove(this@CityInfo) } newCivInfo.cities = newCivInfo.cities.toMutableList().apply { add(this@CityInfo) } diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 5f30626942..1e9542b6ed 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -165,6 +165,14 @@ class CityStats { return stats } + private fun getStatPercentBonusesFromPuppetCity(): Stats { + val stats = Stats() + if (cityInfo.isPuppet) { + stats.science -= 25f + stats.culture -= 25f + } + return stats + } fun getGrowthBonusFromPolicies(): Float { var bonus = 0f @@ -186,6 +194,7 @@ class CityStats { unhappinessModifier *= civInfo.gameInfo.getDifficulty().aiUnhappinessModifier var unhappinessFromCity = -3f + if (cityInfo.hasExtraAnnexUnhappiness()) unhappinessFromCity -= 2f //annexed city if (civInfo.nation.unique == "Unhappiness from number of Cities doubled, Unhappiness from number of Citizens halved.") unhappinessFromCity *= 2f//doubled for the Indian @@ -194,6 +203,11 @@ class CityStats { var unhappinessFromCitizens = cityInfo.population.population.toFloat() if (civInfo.policies.isAdopted("Democracy")) unhappinessFromCitizens -= cityInfo.population.getNumberOfSpecialists() * 0.5f + + if (cityInfo.isPuppet) + unhappinessFromCitizens *= 1.5f + else if (cityInfo.hasExtraAnnexUnhappiness()) + unhappinessFromCitizens *= 2f if (civInfo.containsBuildingUnique("Unhappiness from population decreased by 10%")) unhappinessFromCitizens *= 0.9f if (civInfo.policies.isAdopted("Meritocracy")) @@ -373,6 +387,7 @@ class CityStats { newStatPercentBonusList["Computers"]=getStatPercentBonusesFromComputers() newStatPercentBonusList["Difficulty"]=getStatPercentBonusesFromDifficulty() newStatPercentBonusList["National ability"]=getStatPercentBonusesFromNationUnique() + newStatPercentBonusList["Puppet City"]=getStatPercentBonusesFromPuppetCity() if(UnCivGame.Current.superchargedForDebug) { val stats = Stats() diff --git a/core/src/com/unciv/models/gamebasics/Building.kt b/core/src/com/unciv/models/gamebasics/Building.kt index 8b0f2b5add..c922963fa2 100644 --- a/core/src/com/unciv/models/gamebasics/Building.kt +++ b/core/src/com/unciv/models/gamebasics/Building.kt @@ -240,6 +240,11 @@ class Building : NamedStats(), IConstruction{ && !construction.cityInfo.getCenterTile().neighbors.any { it.baseTerrain==Constants.coast }) return "Can only be built in coastal cities" + if("Can only be built in annexed cities" in uniques + && (construction.cityInfo.isPuppet || construction.cityInfo.foundingCiv == "" + || construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv)) + return "Can only be built in annexed cities" + val civInfo = construction.cityInfo.civInfo if (uniqueTo!=null && uniqueTo!=civInfo.civName) return "Unique to $uniqueTo" if (GameBasics.Buildings.values.any { it.uniqueTo==civInfo.civName && it.replaces==name }) return "Our unique building replaces this" diff --git a/core/src/com/unciv/ui/cityscreen/CityInfoTable.kt b/core/src/com/unciv/ui/cityscreen/CityInfoTable.kt index 229b894242..75db4c478f 100644 --- a/core/src/com/unciv/ui/cityscreen/CityInfoTable.kt +++ b/core/src/com/unciv/ui/cityscreen/CityInfoTable.kt @@ -176,7 +176,10 @@ class CityInfoTable(private val cityScreen: CityScreen) : Table(CameraStageBaseS if(specificStatValue==0f) continue statValuesTable.add(entry.key.toLabel()) val decimal = DecimalFormat("0.#").format(specificStatValue) - statValuesTable.add("+$decimal%".toLabel()).row() + if (specificStatValue > 0) + statValuesTable.add("+$decimal%".toLabel()).row() + else + statValuesTable.add("$decimal%".toLabel()).row() } if(stat==Stat.Food){ statValuesTable.add("Food eaten".toLabel()) @@ -223,7 +226,7 @@ class CityInfoTable(private val cityScreen: CityScreen) : Table(CameraStageBaseS // these two are conflictingly named compared to above... val assignedSpecialists = currentSpecialists[stat]!!.toInt() val maxSpecialists = statToMaximumSpecialist.value.toInt() - if (assignedSpecialists > 0) { + if (assignedSpecialists > 0 && !cityInfo.isPuppet) { val unassignButton = TextButton("-", skin) unassignButton.label.setFontSize(24) unassignButton.onClick { @@ -241,7 +244,7 @@ class CityInfoTable(private val cityScreen: CityScreen) : Table(CameraStageBaseS specialistIconTable.add(icon).size(30f) } specialistPickerTable.add(specialistIconTable) - if (assignedSpecialists < maxSpecialists) { + if (assignedSpecialists < maxSpecialists && !cityInfo.isPuppet) { val assignButton = TextButton("+", skin) assignButton.label.setFontSize(24) assignButton.onClick { diff --git a/core/src/com/unciv/ui/cityscreen/CityScreen.kt b/core/src/com/unciv/ui/cityscreen/CityScreen.kt index c60ab71d89..99de1b8526 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreen.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreen.kt @@ -79,7 +79,7 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() { cityPickerTable.centerX(stage) constructionsTable.update() - updateRazeCityButton() + updateAnnexAndRazeCityButton() tileTable.update(selectedTile) tileTable.setPosition(stage.width-5, 5f,Align.bottomRight) updateTileGroups() @@ -161,10 +161,21 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() { return table.addBorder(2f, beige) } - private fun updateRazeCityButton() { + private fun updateAnnexAndRazeCityButton() { razeCityButtonHolder.clear() - if(!city.isBeingRazed) { + if(city.isPuppet) { + val annexCityButton = TextButton("Annex city".tr(), skin) + annexCityButton.labelCell.pad(10f) + annexCityButton.onClick { + city.isPuppet=false + city.isBeingRazed=false + city.resistanceCounter = city.population.population + update() + } + razeCityButtonHolder.add(annexCityButton).colspan(cityPickerTable.columns) + } + else if(!city.isBeingRazed) { val razeCityButton = TextButton("Raze city".tr(), skin) razeCityButton.labelCell.pad(10f) razeCityButton.onClick { city.isBeingRazed=true; update() } @@ -197,14 +208,16 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() { val tileInfo = tileGroup.tileInfo tileGroup.onClick { - selectedTile = tileInfo - if (tileGroup.isWorkable && UnCivGame.Current.worldScreen.isPlayersTurn) { - if (!tileInfo.isWorked() && city.population.getFreePopulation() > 0) - city.workedTiles.add(tileInfo.position) - else if (tileInfo.isWorked()) city.workedTiles.remove(tileInfo.position) - city.cityStats.update() + if (!city.isPuppet) { + selectedTile = tileInfo + if (tileGroup.isWorkable && UnCivGame.Current.worldScreen.isPlayersTurn) { + if (!tileInfo.isWorked() && city.population.getFreePopulation() > 0) + city.workedTiles.add(tileInfo.position) + else if (tileInfo.isWorked()) city.workedTiles.remove(tileInfo.position) + city.cityStats.update() + } + update() } - update() } tileGroups.add(tileGroup) diff --git a/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt b/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt index 69b415937d..f440a45e2a 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt @@ -53,7 +53,7 @@ class CityScreenTileTable(val city: CityInfo): Table(){ city.expansion.buyTile(selectedTile) UnCivGame.Current.screen = CityScreen(city) } - if(goldCostOfTile>city.civInfo.gold || !UnCivGame.Current.worldScreen.isPlayersTurn) + if(goldCostOfTile>city.civInfo.gold || city.isPuppet || !UnCivGame.Current.worldScreen.isPlayersTurn) buyTileButton.disable() innerTable.add(buyTileButton) diff --git a/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt b/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt index d7415a39d0..7a1c3f2f1d 100644 --- a/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt +++ b/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt @@ -50,11 +50,13 @@ class ConstructionsTable(val cityScreen: CityScreen) : Table(CameraStageBaseScre if(rejectionReason=="" && UnCivGame.Current.worldScreen.isPlayersTurn) { // no rejection reason means we can build it! pickProductionButton.onClick { - lastConstruction = cityScreen.city.cityConstructions.currentConstruction - cityScreen.city.cityConstructions.currentConstruction = construction - cityScreen.city.cityConstructions.currentConstructionIsUserSet=true - cityScreen.city.cityStats.update() - cityScreen.update() + if (!cityScreen.city.isPuppet) { + lastConstruction = cityScreen.city.cityConstructions.currentConstruction + cityScreen.city.cityConstructions.currentConstruction = construction + cityScreen.city.cityConstructions.currentConstructionIsUserSet = true + cityScreen.city.cityStats.update() + cityScreen.update() + } } } @@ -147,7 +149,7 @@ class ConstructionsTable(val cityScreen: CityScreen) : Table(CameraStageBaseScre row() val purchaseConstructionButton: TextButton - if (construction.canBePurchased()) { + if (construction.canBePurchased() && !city.isPuppet) { val constructionGoldCost = construction.getGoldCost(city.civInfo) purchaseConstructionButton = TextButton("Buy for [$constructionGoldCost] gold".tr(), CameraStageBaseScreen.skin) purchaseConstructionButton.onClick("coin") { diff --git a/core/src/com/unciv/ui/worldscreen/AlertPopup.kt b/core/src/com/unciv/ui/worldscreen/AlertPopup.kt index 954ca2c918..109af08898 100644 --- a/core/src/com/unciv/ui/worldscreen/AlertPopup.kt +++ b/core/src/com/unciv/ui/worldscreen/AlertPopup.kt @@ -59,11 +59,26 @@ class AlertPopup(val worldScreen: WorldScreen, val popupAlert: PopupAlert): Popu } } AlertType.CityConquered -> { + val city = worldScreen.gameInfo.civilizations.flatMap { it->it.cities }.first { it.name == popupAlert.value} addGoodSizedLabel("What would you like to do with the city?").row() - add(getCloseButton("Annex")).row() + if (city.foundingCiv != "" + && city.civInfo.civName != city.foundingCiv + && city.conquerer!!.getCivInfo().civName != city.foundingCiv) { + add(TextButton("Liberate".tr(), skin).onClick { + city.LiberateCity() + close() + }).row() + } + add(TextButton("Annex".tr(), skin).onClick { + city.AnnexCity() + close() + }).row() + add(TextButton("Puppet City".tr(), skin).onClick { + city.PuppetCity() + close() + }).row() add(TextButton("Raze".tr(), skin).onClick { - worldScreen.viewingCiv.cities.first { it.name==popupAlert.value }.isBeingRazed=true - worldScreen.shouldUpdate=true + city.RazeCity() close() }) } diff --git a/docs/Credits.md b/docs/Credits.md index 2cd4a2b2ff..1dd728a6d8 100644 --- a/docs/Credits.md +++ b/docs/Credits.md @@ -41,6 +41,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https: * [Roman Helmet](https://thenounproject.com/search/?q=legion&i=440134) By parkjisun for Legion * [Horse](https://thenounproject.com/search/?q=Horse&i=1373793) By AFY Studio for Horseman * [Horse Head](https://thenounproject.com/search/?q=Cavalry&i=374037) By Juan Pablo Bravo for Companion Cavalry +* [Judge](https://thenounproject.com/search/?q=judge&i=1076388) By Krisztián Mátyás for Courthouse ### Medieval Era