diff --git a/android/Images/UnitIcons/Maori Warrior.png b/android/Images/UnitIcons/Maori Warrior.png new file mode 100644 index 0000000000..5a33c22860 Binary files /dev/null and b/android/Images/UnitIcons/Maori Warrior.png differ diff --git a/android/Images/UnitPromotionIcons/Haka War Dance.png b/android/Images/UnitPromotionIcons/Haka War Dance.png new file mode 100644 index 0000000000..fedb513d54 Binary files /dev/null and b/android/Images/UnitPromotionIcons/Haka War Dance.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index f6ccfcfd08..9287cf7487 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -1,3351 +1,3379 @@ game.png -size: 2457,1866 +size: 2481,1867 format: RGBA8888 filter: MipMapLinearLinear,MipMapLinearLinear repeat: none BuildingIcons/Alhambra rotate: false - xy: 2, 1510 + xy: 388, 1523 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Angkor Wat rotate: false - xy: 1242, 1432 + xy: 1140, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Apollo Program rotate: false - xy: 1650, 1432 + xy: 1548, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Aqueduct rotate: false - xy: 1752, 1432 + xy: 1650, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Armory rotate: false - xy: 206, 1420 + xy: 2262, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Bank rotate: false - xy: 2262, 1358 + xy: 815, 1383 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Barracks rotate: false - xy: 1328, 1330 + xy: 1223, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Bazaar rotate: false - xy: 1532, 1330 + xy: 1427, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Big Ben rotate: false - xy: 1634, 1330 + xy: 1529, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Broadcast Tower rotate: false - xy: 2042, 1330 + xy: 1937, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Burial Tomb rotate: false - xy: 206, 1318 + xy: 2243, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/CN Tower rotate: false - xy: 308, 1318 + xy: 2345, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Castle rotate: false - xy: 818, 1280 + xy: 104, 1305 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Chichen Itza rotate: false - xy: 1226, 1228 + xy: 1124, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Circus rotate: false - xy: 1634, 1228 + xy: 1532, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Circus Maximus rotate: false - xy: 1736, 1228 + xy: 1634, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Colosseum rotate: false - xy: 410, 1216 + xy: 614, 1221 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Colossus rotate: false - xy: 2, 1204 + xy: 206, 1217 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Courthouse rotate: false - xy: 1124, 1126 + xy: 1022, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Cristo Redentor rotate: false - xy: 1226, 1126 + xy: 1124, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Eiffel Tower rotate: false - xy: 2, 1102 + xy: 206, 1115 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Factory rotate: false - xy: 920, 1076 + xy: 512, 1091 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Forbidden Palace rotate: false - xy: 1634, 1024 + xy: 1532, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Forge rotate: false - xy: 1940, 1024 + xy: 1838, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Granary rotate: false - xy: 716, 988 + xy: 2, 1001 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Great Wall rotate: false - xy: 1124, 922 + xy: 1022, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hagia Sophia rotate: false - xy: 1736, 922 + xy: 1634, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanging Gardens rotate: false - xy: 1838, 922 + xy: 1736, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanse rotate: false - xy: 1940, 922 + xy: 1838, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Harbor rotate: false - xy: 2042, 922 + xy: 1940, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hermitage rotate: false - xy: 104, 910 + xy: 2144, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Himeji Castle rotate: false - xy: 308, 910 + xy: 2348, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hospital rotate: false - xy: 716, 886 + xy: 2, 899 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hubble Space Telescope rotate: false - xy: 818, 872 + xy: 104, 897 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hydro Plant rotate: false - xy: 2246, 854 + xy: 716, 879 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Ironworks rotate: false - xy: 1736, 820 + xy: 1634, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Kremlin rotate: false - xy: 2, 796 + xy: 206, 809 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Krepost rotate: false - xy: 512, 784 + xy: 308, 809 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Leaning Tower of Pisa rotate: false - xy: 1022, 718 + xy: 920, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Library rotate: false - xy: 1226, 718 + xy: 1124, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Lighthouse rotate: false - xy: 1328, 718 + xy: 1226, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Longhouse rotate: false - xy: 1532, 718 + xy: 1430, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Machu Picchu rotate: false - xy: 2042, 718 + xy: 1940, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Market rotate: false - xy: 206, 706 + xy: 2348, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Medical Lab rotate: false - xy: 716, 682 + xy: 104, 693 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Military Academy rotate: false - xy: 2348, 644 + xy: 920, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mint rotate: false - xy: 1328, 616 + xy: 1328, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monastery rotate: false - xy: 1838, 616 + xy: 1940, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monument rotate: false - xy: 1940, 616 + xy: 2042, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mughal Fort rotate: false - xy: 2144, 616 + xy: 2246, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Museum rotate: false - xy: 104, 604 + xy: 2348, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/National College rotate: false - xy: 2, 592 + xy: 410, 605 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Neuschwanstein rotate: false - xy: 614, 580 + xy: 104, 591 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Notre Dame rotate: false - xy: 716, 580 + xy: 512, 581 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Nuclear Plant rotate: false - xy: 920, 566 + xy: 818, 567 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Observatory rotate: false - xy: 2348, 542 + xy: 1022, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Opera House rotate: false - xy: 1226, 514 + xy: 1328, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Oxford University rotate: false - xy: 1430, 514 + xy: 1532, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Palace rotate: false - xy: 1532, 514 + xy: 1634, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Paper Maker rotate: false - xy: 1736, 514 + xy: 1838, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Pentagon rotate: false - xy: 2144, 514 + xy: 2246, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Porcelain Tower rotate: false - xy: 920, 464 + xy: 920, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Public School rotate: false - xy: 1022, 412 + xy: 1226, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Research Lab rotate: false - xy: 1940, 412 + xy: 2144, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Booster rotate: false - xy: 716, 376 + xy: 716, 369 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Cockpit rotate: false - xy: 818, 362 + xy: 818, 363 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Engine rotate: false - xy: 920, 362 + xy: 920, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Stasis Chamber rotate: false - xy: 2246, 344 + xy: 1022, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Satrap's Court rotate: false - xy: 1226, 310 + xy: 1430, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Seaport rotate: false - xy: 1532, 310 + xy: 1736, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sistine Chapel rotate: false - xy: 104, 298 + xy: 206, 300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Solar Plant rotate: false - xy: 410, 298 + xy: 410, 299 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Spaceship Factory rotate: false - xy: 2, 286 + xy: 2, 287 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stable rotate: false - xy: 818, 260 + xy: 818, 261 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stadium rotate: false - xy: 920, 260 + xy: 920, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Statue of Liberty rotate: false - xy: 2246, 242 + xy: 1022, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stock Exchange rotate: false - xy: 1226, 208 + xy: 1430, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stone Works rotate: false - xy: 1430, 208 + xy: 1634, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stonehenge rotate: false - xy: 1532, 208 + xy: 1736, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sydney Opera House rotate: false - xy: 2042, 208 + xy: 2246, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Taj Mahal rotate: false - xy: 2144, 208 + xy: 2348, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Temple rotate: false - xy: 104, 196 + xy: 206, 198 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Terracotta Army rotate: false - xy: 206, 196 + xy: 308, 197 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Library rotate: false - xy: 410, 196 + xy: 410, 197 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Lighthouse rotate: false - xy: 2, 184 + xy: 2, 185 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Louvre rotate: false - xy: 512, 172 + xy: 104, 183 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Oracle rotate: false - xy: 614, 172 + xy: 512, 173 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Pyramids rotate: false - xy: 818, 158 + xy: 818, 159 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Theatre rotate: false - xy: 2246, 140 + xy: 1022, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/University rotate: false - xy: 1634, 106 + xy: 1838, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls rotate: false - xy: 1838, 106 + xy: 2042, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls of Babylon rotate: false - xy: 1940, 106 + xy: 2144, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Windmill rotate: false - xy: 410, 94 + xy: 410, 95 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Workshop rotate: false - xy: 716, 70 + xy: 716, 63 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 FlagIcons/Dutch rotate: false - xy: 1038, 1534 + xy: 1038, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/English rotate: false - xy: 1168, 1534 + xy: 1168, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/French rotate: false - xy: 1298, 1534 + xy: 1298, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/German rotate: false - xy: 1428, 1534 + xy: 1428, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Italian rotate: false - xy: 1558, 1534 + xy: 1558, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Polish rotate: false - xy: 1688, 1534 + xy: 1688, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Portuguese rotate: false - xy: 1818, 1534 + xy: 1818, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Romanian rotate: false - xy: 1948, 1534 + xy: 1948, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Russian rotate: false - xy: 2078, 1534 + xy: 2078, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Simplified_Chinese rotate: false - xy: 2208, 1534 + xy: 2208, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Spanish rotate: false - xy: 583, 1498 + xy: 2338, 1535 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 FlagIcons/Thai rotate: false - xy: 713, 1498 + xy: 583, 1499 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 ImprovementIcons/Academy rotate: false - xy: 2338, 1562 + xy: 184, 1713 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Ancient ruins rotate: false - xy: 1140, 1432 + xy: 1038, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Barbarian encampment rotate: false - xy: 1226, 1330 + xy: 1121, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Camp rotate: false - xy: 512, 1294 + xy: 308, 1319 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/City ruins rotate: false - xy: 1838, 1228 + xy: 1736, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Customs house rotate: false - xy: 1634, 1126 + xy: 1532, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Farm rotate: false - xy: 2246, 1052 + xy: 716, 1077 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Fishing Boats rotate: false - xy: 1328, 1024 + xy: 1226, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Landmark rotate: false - xy: 818, 770 + xy: 104, 795 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Lumber mill rotate: false - xy: 1736, 718 + xy: 1634, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Manufactory rotate: false - xy: 2144, 718 + xy: 2042, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Mine rotate: false - xy: 1124, 616 + xy: 1124, 617 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ImprovementIcons/Moai + rotate: false + xy: 1532, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Oil well rotate: false - xy: 1124, 514 + xy: 1226, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Pasture rotate: false - xy: 1940, 514 + xy: 2042, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Plantation rotate: false - xy: 716, 478 + xy: 512, 479 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Quarry rotate: false - xy: 1226, 412 + xy: 1430, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Railroad rotate: false - xy: 1532, 412 + xy: 1736, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Railroad rotate: false - xy: 1532, 412 + xy: 1736, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/FantasyHex/Railroad rotate: false - xy: 1532, 412 + xy: 1736, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Road rotate: false - xy: 104, 400 + xy: 206, 402 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Trading post rotate: false - xy: 1022, 106 + xy: 1226, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/America rotate: false - xy: 1038, 1432 + xy: 104, 1509 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Arabia rotate: false - xy: 1854, 1432 + xy: 1752, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Babylon rotate: false - xy: 614, 1396 + xy: 410, 1421 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/China rotate: false - xy: 1328, 1228 + xy: 1226, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/CityState rotate: false - xy: 2144, 1228 + xy: 2042, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Egypt rotate: false - xy: 410, 1114 + xy: 614, 1119 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/England rotate: false - xy: 818, 1076 + xy: 104, 1101 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/France rotate: false - xy: 2042, 1024 + xy: 1940, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Germany rotate: false - xy: 512, 988 + xy: 308, 1013 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Greece rotate: false - xy: 1430, 922 + xy: 1328, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/India rotate: false - xy: 1124, 820 + xy: 1022, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Iroquois rotate: false - xy: 1838, 820 + xy: 1736, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Japan rotate: false - xy: 2144, 820 + xy: 2042, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Korea rotate: false - xy: 410, 808 + xy: 614, 813 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Persia rotate: false - xy: 104, 502 + xy: 614, 507 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NationIcons/Polynesia + rotate: false + xy: 818, 465 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Rome rotate: false - xy: 512, 376 + xy: 104, 387 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Russia rotate: false - xy: 614, 376 + xy: 512, 377 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/The Ottomans rotate: false - xy: 716, 172 + xy: 716, 165 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Aircraft rotate: false - xy: 204, 1645 + xy: 512, 1508 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 OtherIcons/BackArrow rotate: false - xy: 512, 1520 + xy: 1022, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 OtherIcons/Banner rotate: false - xy: 1124, 1330 + xy: 1019, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Circle rotate: false - xy: 858, 1484 + xy: 858, 1485 size: 178, 178 orig: 178, 178 offset: 0, 0 index: -1 OtherIcons/Crosshair rotate: false - xy: 1430, 1126 + xy: 1328, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/DisbandUnit rotate: false - xy: 1940, 1126 + xy: 1838, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Fire rotate: false - xy: 1124, 1024 + xy: 1022, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Hexagon rotate: false - xy: 304, 1624 + xy: 304, 1625 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 TileSets/Default/Hexagon rotate: false - xy: 304, 1624 + xy: 304, 1625 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 TileSets/FantasyHex/Hexagon rotate: false - xy: 304, 1624 + xy: 304, 1625 size: 277, 240 orig: 277, 240 offset: 0, 0 index: -1 OtherIcons/MenuIcon rotate: false - xy: 818, 668 + xy: 512, 683 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pentagon rotate: false - xy: 308, 503 + xy: 2348, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pillage rotate: false - xy: 614, 478 + xy: 104, 489 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Puppet rotate: false - xy: 1124, 412 + xy: 1328, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Shield rotate: false - xy: 1838, 310 + xy: 2042, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Sleep rotate: false - xy: 206, 298 + xy: 308, 299 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Stop rotate: false - xy: 1634, 208 + xy: 1838, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/civTableBackground rotate: false - xy: 2, 1814 + xy: 2, 1815 size: 300, 50 orig: 300, 50 offset: 0, 0 index: -1 OtherIcons/tileTableBackground rotate: false - xy: 2272, 1664 + xy: 2, 1613 size: 180, 200 orig: 180, 200 offset: 0, 0 index: -1 OtherIcons/whiteDot rotate: false - xy: 2454, 1863 + xy: 2474, 1864 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 PolicyIcons/Aristocracy rotate: false - xy: 104, 1560 + xy: 920, 1331 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Citizenship rotate: false - xy: 2402, 82 + xy: 1334, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Civil Society rotate: false - xy: 1022, 54 + xy: 1386, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Collective Rule rotate: false - xy: 1126, 54 + xy: 1490, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Constitution rotate: false - xy: 1178, 54 + xy: 1542, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Democracy rotate: false - xy: 1282, 54 + xy: 1788, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Entrepreneurship rotate: false - xy: 1532, 54 + xy: 1892, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Facism rotate: false - xy: 1636, 54 + xy: 1996, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Religion rotate: false - xy: 1740, 54 + xy: 2100, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Speech rotate: false - xy: 1792, 54 + xy: 2152, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Thought rotate: false - xy: 1844, 54 + xy: 2204, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Humanism rotate: false - xy: 1948, 54 + xy: 2360, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Landed Elite rotate: false - xy: 2156, 54 + xy: 614, 47 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Legalism rotate: false - xy: 1386, 53 + xy: 206, 44 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Mandate Of Heaven rotate: false - xy: 308, 43 + xy: 310, 43 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Mercantilism rotate: false - xy: 208, 42 + xy: 2, 31 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Meritocracy rotate: false - xy: 360, 42 + xy: 54, 29 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Militarism rotate: false - xy: 412, 42 + xy: 106, 29 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Military Caste rotate: false - xy: 2208, 36 + xy: 466, 19 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Military Tradition rotate: false - xy: 2, 30 + xy: 518, 19 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Monarchy rotate: false - xy: 2312, 30 + xy: 718, 11 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Oligarchy rotate: false - xy: 464, 18 + xy: 822, 5 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Organized Religion rotate: false - xy: 568, 18 + xy: 1074, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Patronage rotate: false - xy: 620, 18 + xy: 1126, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Police State rotate: false - xy: 672, 18 + xy: 1178, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Populism rotate: false - xy: 724, 18 + xy: 1230, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Professional Army rotate: false - xy: 776, 4 + xy: 1282, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Protectionism rotate: false - xy: 828, 4 + xy: 1334, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Reformation rotate: false - xy: 984, 2 + xy: 1490, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Representation rotate: false - xy: 1036, 2 + xy: 1542, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Republic rotate: false - xy: 1088, 2 + xy: 1698, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Scientific Revolution rotate: false - xy: 1140, 2 + xy: 1750, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Secularism rotate: false - xy: 1244, 2 + xy: 1854, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Sovereignty rotate: false - xy: 1594, 2 + xy: 2062, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Theocracy rotate: false - xy: 1698, 2 + xy: 2166, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Total War rotate: false - xy: 1750, 2 + xy: 2218, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Trade Unions rotate: false - xy: 1802, 2 + xy: 2270, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Universal Suffrage rotate: false - xy: 1854, 2 + xy: 2322, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Warrior Code rotate: false - xy: 1958, 2 + xy: 2426, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 ResourceIcons/Aluminum rotate: false - xy: 2338, 1460 + xy: 2, 1511 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Bananas rotate: false - xy: 920, 1382 + xy: 512, 1397 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Cattle rotate: false - xy: 2246, 1256 + xy: 716, 1281 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Coal rotate: false - xy: 308, 1216 + xy: 2348, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Cotton rotate: false - xy: 1022, 1126 + xy: 920, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Deer rotate: false - xy: 1736, 1126 + xy: 1634, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Dyes rotate: false - xy: 2042, 1126 + xy: 1940, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Fish rotate: false - xy: 1226, 1024 + xy: 1124, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Furs rotate: false - xy: 104, 1012 + xy: 2144, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Gems rotate: false - xy: 2, 1000 + xy: 206, 1013 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Gold rotate: false - xy: 614, 988 + xy: 410, 1013 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Horses rotate: false - xy: 614, 886 + xy: 410, 911 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Incense rotate: false - xy: 1022, 820 + xy: 920, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Iron rotate: false - xy: 1430, 820 + xy: 1328, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Ivory rotate: false - xy: 1940, 820 + xy: 1838, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Marble rotate: false - xy: 104, 706 + xy: 2246, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Oil rotate: false - xy: 1022, 514 + xy: 1124, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Pearls rotate: false - xy: 2042, 514 + xy: 2144, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sheep rotate: false - xy: 1736, 310 + xy: 1940, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silk rotate: false - xy: 2042, 310 + xy: 2246, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silver rotate: false - xy: 2144, 310 + xy: 2348, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Spices rotate: false - xy: 716, 274 + xy: 716, 267 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Stone rotate: false - xy: 1328, 208 + xy: 1532, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sugar rotate: false - xy: 1838, 208 + xy: 2042, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Uranium rotate: false - xy: 1736, 106 + xy: 1940, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Whales rotate: false - xy: 104, 94 + xy: 206, 96 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wheat rotate: false - xy: 206, 94 + xy: 308, 95 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wine rotate: false - xy: 2, 82 + xy: 2, 83 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Acquire rotate: false - xy: 306, 1522 + xy: 713, 1527 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/CityConnection rotate: false - xy: 1940, 1228 + xy: 1838, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/City_Center_(Civ6) rotate: false - xy: 104, 1216 + xy: 2144, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Culture rotate: false - xy: 858, 1664 + xy: 858, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Food rotate: false - xy: 1060, 1664 + xy: 1060, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Gold rotate: false - xy: 1262, 1664 + xy: 1262, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Happiness rotate: false - xy: 1464, 1664 + xy: 1464, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/InterceptRange rotate: false - xy: 2052, 54 + xy: 1594, 54 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Malcontent rotate: false - xy: 1666, 1664 + xy: 1666, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Movement rotate: false - xy: 2364, 30 + xy: 770, 5 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Population rotate: false - xy: 1868, 1664 + xy: 1868, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Production rotate: false - xy: 2070, 1664 + xy: 2070, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Range rotate: false - xy: 880, 4 + xy: 1386, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/RangedStrength rotate: false - xy: 932, 4 + xy: 1438, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Resistance rotate: false - xy: 2042, 412 + xy: 2246, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Science rotate: false - xy: 2, 1612 + xy: 2272, 1665 size: 200, 200 orig: 200, 200 offset: 0, 0 index: -1 StatIcons/Specialist rotate: false - xy: 614, 274 + xy: 512, 275 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Acoustics rotate: false - xy: 204, 1522 + xy: 184, 1611 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Agriculture rotate: false - xy: 408, 1522 + xy: 286, 1523 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Animal Husbandry rotate: false - xy: 1344, 1432 + xy: 1242, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archaeology rotate: false - xy: 1956, 1432 + xy: 1854, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Archery rotate: false - xy: 2160, 1432 + xy: 2058, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Architecture rotate: false - xy: 104, 1420 + xy: 2160, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Astronomy rotate: false - xy: 410, 1420 + xy: 713, 1425 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Atomic Theory rotate: false - xy: 2, 1408 + xy: 206, 1421 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ballistics rotate: false - xy: 818, 1382 + xy: 104, 1407 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Banking rotate: false - xy: 1022, 1330 + xy: 917, 1383 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Biology rotate: false - xy: 1736, 1330 + xy: 1631, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Bronze Working rotate: false - xy: 2144, 1330 + xy: 2039, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Calendar rotate: false - xy: 410, 1318 + xy: 614, 1323 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chemistry rotate: false - xy: 1124, 1228 + xy: 1022, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Chivalry rotate: false - xy: 1430, 1228 + xy: 1328, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Civil Service rotate: false - xy: 206, 1216 + xy: 2246, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combined Arms rotate: false - xy: 512, 1192 + xy: 308, 1217 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Combustion rotate: false - xy: 614, 1192 + xy: 410, 1217 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Compass rotate: false - xy: 818, 1178 + xy: 104, 1203 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Computers rotate: false - xy: 920, 1178 + xy: 512, 1193 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Construction rotate: false - xy: 2246, 1154 + xy: 716, 1179 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Currency rotate: false - xy: 1532, 1126 + xy: 1430, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Dynamite rotate: false - xy: 2144, 1126 + xy: 2042, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Ecology rotate: false - xy: 104, 1114 + xy: 2144, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Economics rotate: false - xy: 206, 1114 + xy: 2246, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Education rotate: false - xy: 308, 1114 + xy: 2348, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electricity rotate: false - xy: 512, 1090 + xy: 308, 1115 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Electronics rotate: false - xy: 614, 1090 + xy: 410, 1115 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Engineering rotate: false - xy: 716, 1090 + xy: 2, 1103 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Fertilizer rotate: false - xy: 2348, 1052 + xy: 818, 1077 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Flight rotate: false - xy: 1430, 1024 + xy: 1328, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Future Tech rotate: false - xy: 206, 1012 + xy: 2246, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Guilds rotate: false - xy: 1532, 922 + xy: 1430, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Gunpowder rotate: false - xy: 1634, 922 + xy: 1532, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Horseback Riding rotate: false - xy: 2, 898 + xy: 206, 911 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Industrialization rotate: false - xy: 1226, 820 + xy: 1124, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Iron Working rotate: false - xy: 1532, 820 + xy: 1430, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Lasers rotate: false - xy: 2348, 746 + xy: 818, 771 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Machinery rotate: false - xy: 1940, 718 + xy: 1838, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Masonry rotate: false - xy: 410, 706 + xy: 206, 707 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mass Media (retired) rotate: false - xy: 2, 694 + xy: 308, 707 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mathematics rotate: false - xy: 512, 682 + xy: 410, 707 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metal Casting rotate: false - xy: 920, 668 + xy: 716, 675 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Metallurgy rotate: false - xy: 2246, 650 + xy: 818, 669 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Military Science rotate: false - xy: 1022, 616 + xy: 1022, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mining rotate: false - xy: 1226, 616 + xy: 1226, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Mobile Tactics rotate: false - xy: 1532, 616 + xy: 1634, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nanotechnology rotate: false - xy: 410, 604 + xy: 308, 605 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Navigation rotate: false - xy: 512, 580 + xy: 2, 593 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nuclear Fission rotate: false - xy: 818, 566 + xy: 716, 573 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Optics rotate: false - xy: 1328, 514 + xy: 1430, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Particle Physics rotate: false - xy: 1838, 514 + xy: 1940, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pharmaceuticals rotate: false - xy: 206, 502 + xy: 206, 504 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Philosophy rotate: false - xy: 410, 502 + xy: 308, 503 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Physics rotate: false - xy: 2, 490 + xy: 410, 503 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Plastics rotate: false - xy: 818, 464 + xy: 716, 471 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pottery rotate: false - xy: 2246, 446 + xy: 1022, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Printing Press rotate: false - xy: 2348, 440 + xy: 1124, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radar rotate: false - xy: 1328, 412 + xy: 1532, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radio rotate: false - xy: 1430, 412 + xy: 1634, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Railroad rotate: false - xy: 1634, 412 + xy: 1838, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Refrigeration rotate: false - xy: 1736, 412 + xy: 1940, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Replaceable Parts rotate: false - xy: 1838, 412 + xy: 2042, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rifling rotate: false - xy: 308, 401 + xy: 614, 405 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Robotics rotate: false - xy: 206, 400 + xy: 308, 401 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rocketry rotate: false - xy: 2, 388 + xy: 2, 389 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Sailing rotate: false - xy: 2348, 338 + xy: 1124, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Satellites rotate: false - xy: 1124, 310 + xy: 1328, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Scientific Theory rotate: false - xy: 1328, 310 + xy: 1532, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steam Power rotate: false - xy: 1022, 208 + xy: 1226, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steel rotate: false - xy: 1124, 208 + xy: 1328, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/The Wheel rotate: false - xy: 920, 158 + xy: 920, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Theology rotate: false - xy: 2348, 134 + xy: 1124, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Trapping rotate: false - xy: 1124, 106 + xy: 1328, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Writing rotate: false - xy: 818, 56 + xy: 818, 57 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/CityOverlay rotate: false - xy: 2042, 1228 + xy: 1940, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/CrosshatchHexagon rotate: false - xy: 583, 1628 + xy: 583, 1629 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 TileSets/FantasyHex/CrosshatchHexagon rotate: false - xy: 583, 1628 + xy: 583, 1629 size: 273, 236 orig: 273, 236 offset: 0, 0 index: -1 TileSets/Default/Flood plainsOverlay rotate: false - xy: 1532, 1024 + xy: 1430, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/ForestOverlay rotate: false - xy: 1838, 1024 + xy: 1736, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/HillOverlay rotate: false - xy: 206, 910 + xy: 2246, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/JungleOverlay rotate: false - xy: 206, 808 + xy: 2246, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/LakesOverlay rotate: false - xy: 614, 784 + xy: 410, 809 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MarshOverlay rotate: false - xy: 308, 706 + xy: 614, 711 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/MountainOverlay rotate: false - xy: 2042, 616 + xy: 2144, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/OasisOverlay rotate: false - xy: 2246, 548 + xy: 920, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/road rotate: false - xy: 204, 1801 + xy: 490, 1612 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/road rotate: false - xy: 204, 1801 + xy: 490, 1612 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/City rotate: false - xy: 267, 1777 + xy: 815, 1592 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+City rotate: false - xy: 267, 1777 + xy: 815, 1592 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Hill+City rotate: false - xy: 267, 1777 + xy: 815, 1592 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Coast rotate: false - xy: 256, 1747 + xy: 542, 1582 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert rotate: false - xy: 256, 1717 + xy: 815, 1562 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert+City rotate: false - xy: 256, 1682 + xy: 815, 1527 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert+Flood plains rotate: false - xy: 256, 1652 + xy: 206, 1529 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Desert+Oasis rotate: false - xy: 156, 1582 + xy: 240, 1529 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland rotate: false - xy: 156, 1552 + xy: 815, 1497 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/TopRightBorder rotate: false - xy: 156, 1552 + xy: 815, 1497 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+Forest rotate: false - xy: 1416, 22 + xy: 226, 12 size: 31, 29 orig: 31, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+Jungle rotate: false - xy: 104, 1524 + xy: 666, 1463 size: 32, 34 orig: 32, 34 offset: 0, 0 index: -1 TileSets/FantasyHex/Grassland+Marsh rotate: false - xy: 2416, 1429 + xy: 666, 1432 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Hill rotate: false - xy: 2416, 1395 + xy: 2447, 1399 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Hill+Forest rotate: false - xy: 2364, 1361 + xy: 2447, 1352 size: 32, 45 orig: 32, 45 offset: 0, 0 index: -1 TileSets/FantasyHex/Lakes rotate: false - xy: 138, 1522 + xy: 716, 1395 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Mountain rotate: false - xy: 1490, 67 + xy: 750, 1387 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Ocean rotate: false - xy: 2398, 1365 + xy: 972, 1353 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains rotate: false - xy: 260, 64 + xy: 1698, 76 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains+City rotate: false - xy: 54, 45 + xy: 158, 44 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains+Forest rotate: false - xy: 2416, 47 + xy: 666, 64 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Plains+Jungle rotate: false - xy: 260, 27 + xy: 570, 34 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/TopBorder rotate: false - xy: 1348, 24 + xy: 874, 27 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tundra rotate: false - xy: 2114, 20 + xy: 604, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tundra+City rotate: false - xy: 2148, 17 + xy: 158, 7 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tundra+Forest rotate: false - xy: 1382, 19 + xy: 192, 10 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UnitIcons/Anti-Aircraft Gun rotate: false - xy: 1446, 1432 + xy: 1344, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Anti-Tank Gun rotate: false - xy: 1548, 1432 + xy: 1446, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Archer rotate: false - xy: 2058, 1432 + xy: 1956, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Artillery rotate: false - xy: 308, 1420 + xy: 2364, 1433 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/B17 rotate: false - xy: 512, 1396 + xy: 308, 1421 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ballista rotate: false - xy: 716, 1396 + xy: 2, 1409 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Battleship rotate: false - xy: 1430, 1330 + xy: 1325, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Bomber rotate: false - xy: 1838, 1330 + xy: 1733, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Bowman rotate: false - xy: 1940, 1330 + xy: 1835, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Brute rotate: false - xy: 104, 1318 + xy: 2141, 1331 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Camel Archer rotate: false - xy: 2, 1306 + xy: 206, 1319 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cannon rotate: false - xy: 614, 1294 + xy: 410, 1319 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Caravel rotate: false - xy: 716, 1294 + xy: 2, 1307 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Catapult rotate: false - xy: 920, 1280 + xy: 512, 1295 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cavalry rotate: false - xy: 2348, 1256 + xy: 818, 1281 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Chariot Archer rotate: false - xy: 1022, 1228 + xy: 920, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Chu-Ko-Nu rotate: false - xy: 1532, 1228 + xy: 1430, 1229 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Companion Cavalry rotate: false - xy: 716, 1192 + xy: 2, 1205 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Cossack rotate: false - xy: 2348, 1154 + xy: 818, 1179 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Crossbowman rotate: false - xy: 1328, 1126 + xy: 1226, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Destroyer rotate: false - xy: 1838, 1126 + xy: 1736, 1127 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Fighter rotate: false - xy: 1022, 1024 + xy: 920, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Foreign Legion rotate: false - xy: 1736, 1024 + xy: 1634, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Frigate rotate: false - xy: 2144, 1024 + xy: 2042, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Galleass rotate: false - xy: 308, 1012 + xy: 2348, 1025 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Gatling Gun rotate: false - xy: 410, 1012 + xy: 614, 1017 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Artist rotate: false - xy: 818, 974 + xy: 104, 999 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Engineer rotate: false - xy: 920, 974 + xy: 512, 989 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great General rotate: false - xy: 2246, 956 + xy: 716, 981 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 OtherIcons/Star rotate: false - xy: 2246, 956 + xy: 716, 981 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 UnitIcons/Great Merchant rotate: false - xy: 2348, 950 + xy: 818, 975 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Scientist rotate: false - xy: 1022, 922 + xy: 920, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Bomber rotate: false - xy: 1226, 922 + xy: 1124, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Infantry rotate: false - xy: 1328, 922 + xy: 1226, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Helicopter rotate: false - xy: 2144, 922 + xy: 2042, 923 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hoplite rotate: false - xy: 410, 910 + xy: 614, 915 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Horseman rotate: false - xy: 512, 886 + xy: 308, 911 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hwach'a rotate: false - xy: 920, 872 + xy: 512, 887 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Immortal rotate: false - xy: 2348, 848 + xy: 818, 873 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Infantry rotate: false - xy: 1328, 820 + xy: 1226, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ironclad rotate: false - xy: 1634, 820 + xy: 1532, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Janissary rotate: false - xy: 2042, 820 + xy: 1940, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Jet Fighter rotate: false - xy: 104, 808 + xy: 2144, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Knight rotate: false - xy: 308, 808 + xy: 2348, 821 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Lancer rotate: false - xy: 716, 784 + xy: 2, 797 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landship rotate: false - xy: 920, 770 + xy: 512, 785 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landsknecht rotate: false - xy: 2246, 752 + xy: 716, 777 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Legion rotate: false - xy: 1124, 718 + xy: 1022, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longbowman rotate: false - xy: 1430, 718 + xy: 1328, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longswordsman rotate: false - xy: 1634, 718 + xy: 1532, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Machine Gun rotate: false - xy: 1838, 718 + xy: 1736, 719 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Maori Warrior + rotate: false + xy: 2144, 719 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mechanized Infantry rotate: false - xy: 614, 682 + xy: 2, 695 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Minuteman rotate: false - xy: 1430, 616 + xy: 1430, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Modern Armor rotate: false - xy: 1634, 616 + xy: 1736, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mohawk Warrior rotate: false - xy: 1736, 616 + xy: 1838, 617 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketeer rotate: false - xy: 206, 604 + xy: 614, 609 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketman rotate: false - xy: 308, 605 + xy: 206, 606 size: 100, 99 orig: 100, 99 offset: 0, 0 index: -1 UnitIcons/Panzer rotate: false - xy: 1634, 514 + xy: 1736, 515 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Pikeman rotate: false - xy: 512, 478 + xy: 2, 491 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rifleman rotate: false - xy: 2144, 412 + xy: 2348, 413 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rocket Artillery rotate: false - xy: 410, 400 + xy: 410, 401 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Samurai rotate: false - xy: 1022, 310 + xy: 1226, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Scout rotate: false - xy: 1430, 310 + xy: 1634, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Settler rotate: false - xy: 1634, 310 + xy: 1838, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ship of the Line rotate: false - xy: 1940, 310 + xy: 2144, 311 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Sipahi rotate: false - xy: 308, 299 + xy: 614, 303 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Spearman rotate: false - xy: 512, 274 + xy: 104, 285 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Stealth Bomber rotate: false - xy: 2348, 236 + xy: 1124, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Submarine rotate: false - xy: 1736, 208 + xy: 1940, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Swordsman rotate: false - xy: 1940, 208 + xy: 2144, 209 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Tank rotate: false - xy: 308, 197 + xy: 614, 201 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trebuchet rotate: false - xy: 1226, 106 + xy: 1430, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Triplane rotate: false - xy: 1328, 106 + xy: 1532, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trireme rotate: false - xy: 1430, 105 + xy: 1634, 106 size: 100, 101 orig: 100, 101 offset: 0, 0 index: -1 UnitIcons/Turtle Ship rotate: false - xy: 1532, 106 + xy: 1736, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Chariot rotate: false - xy: 2042, 106 + xy: 2246, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Elephant rotate: false - xy: 2144, 106 + xy: 2348, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Warrior rotate: false - xy: 308, 95 + xy: 614, 99 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Work Boats rotate: false - xy: 512, 70 + xy: 104, 81 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Worker rotate: false - xy: 614, 70 + xy: 512, 71 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Zero rotate: false - xy: 920, 56 + xy: 920, 5 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitPromotionIcons/Accuracy rotate: false - xy: 204, 1749 + xy: 490, 1560 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Air Repair rotate: false - xy: 204, 1697 + xy: 206, 1559 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Ambush rotate: false - xy: 510, 1572 + xy: 614, 1447 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Barrage rotate: false - xy: 2262, 1482 + xy: 1074, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Blitz rotate: false - xy: 2364, 1408 + xy: 1126, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Boarding Party rotate: false - xy: 2246, 88 + xy: 1178, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Bombardment rotate: false - xy: 2298, 82 + xy: 1230, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Charge rotate: false - xy: 2350, 82 + xy: 1282, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Coastal Raider rotate: false - xy: 1074, 54 + xy: 1438, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Cover rotate: false - xy: 1230, 54 + xy: 1736, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Discipline rotate: false - xy: 1230, 54 + xy: 1736, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Strength rotate: false - xy: 1230, 54 + xy: 1736, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Drill rotate: false - xy: 1334, 54 + xy: 1840, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Evasion rotate: false - xy: 1584, 54 + xy: 1944, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Formation rotate: false - xy: 1688, 54 + xy: 2048, 55 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Haka War Dance + rotate: false + xy: 2256, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Heal Instantly rotate: false - xy: 1896, 54 + xy: 2308, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Indirect Fire rotate: false - xy: 2000, 54 + xy: 2412, 55 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Interception rotate: false - xy: 2104, 54 + xy: 1646, 54 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Logistics rotate: false - xy: 1438, 53 + xy: 258, 43 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/March rotate: false - xy: 104, 42 + xy: 362, 43 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Medic rotate: false - xy: 156, 42 + xy: 414, 43 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Mobility rotate: false - xy: 2260, 30 + xy: 666, 11 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Operational Range rotate: false - xy: 516, 18 + xy: 1022, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Range rotate: false - xy: 516, 18 + xy: 1022, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Scouting rotate: false - xy: 1192, 2 + xy: 1802, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sentry rotate: false - xy: 1192, 2 + xy: 1802, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Shock rotate: false - xy: 1296, 2 + xy: 1906, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Siege rotate: false - xy: 1490, 2 + xy: 1958, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sortie rotate: false - xy: 1542, 2 + xy: 2010, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting rotate: false - xy: 1646, 2 + xy: 2114, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting I (air) rotate: false - xy: 1646, 2 + xy: 2114, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Volley rotate: false - xy: 1906, 2 + xy: 2374, 3 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Wolfpack rotate: false - xy: 2010, 2 + xy: 1594, 2 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Woodsman rotate: false - xy: 2062, 2 + xy: 1646, 2 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/game.png b/android/assets/game.png index 4f6bf03ee5..ba19db27f0 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/android/assets/jsons/Nations/Nations.json b/android/assets/jsons/Nations/Nations.json index 532790f168..79d13cf75d 100644 --- a/android/assets/jsons/Nations/Nations.json +++ b/android/assets/jsons/Nations/Nations.json @@ -618,6 +618,43 @@ "Gaugamela","Harmozeia","Ekatompylos","Izata","Kampada","Kapisa","Karmana","Kounaxa","Kuganaka","Nautaka", "Paishiyauvada","Patigrbana","Phrada"] }, + { + name:"Polynesia", + leaderName:"Kamehameha I", + adjective:["Polynesia"], + startBias:["Coast"], + preferredVictoryType:"Cultural", + + startIntroPart1: "Greetings and blessings be upon you, Kamehameha the Great, chosen by the heavens to unite your scattered peoples. Oh mighty King, you were the first to bring the Big Island of Hawai'I under one solitary rule in 1791 AD. This was followed by the merging of all the remaining islands under your standard in 1810. As the first King of Hawai'I, you standardized the legal and taxation systems and instituted the Mamalahoe Kawanai, an edict protecting civilians in times of war. You ensured the continued unification and sovereignty of the islands by your strong laws and deeds, even after your death in 1819." + startIntroPart2: "Oh wise and exalted King, your people wish for a kingdom of their own once more and require a leader of unparalleled greatness! Will you answer their call and don the mantle of the Lion of the Pacific? Will you build a kingdom that stands the test of time?" + + declaringWar:"The ancient fire flashing across the sky is what proclaimed that this day would come, though I had foolishly hoped for a different outcome." + attacked:"It is obvious now that I misjudged you and your true intentions." + defeated:"The hard-shelled crab yields, and the lion lies down to sleep. Kanaloa comes for me now." + introduction:"Aloha! Greetings and blessings upon you, friend. I am Kamehameha, Great King of this strand of islands." + + neutralHello:"Welcome, friend!" + neutralLetsHearIt:["Proceed.","And?","What is it?"] + hateNo:["Certainly not.","We will have to decline."] + hateYes:["It is agreed, then.","Excellent!"] + + hateHello:"Oh, it's you." + hateLetsHearIt:["Proceed.","I'm listening","What is it?"] + hateNo:["Certainly not!","That's not acceptable!"] + hateYes:["Yes, I suppost I must.","Yes, so be it."] + + afterPeace:"Perhaps the stars were mistakenly placed... I will consult my Kahuna." + tradeRequest:"Come, let our people feast together!" + + outerColor:[210,51,0], + innerColor:[255,255,78], + uniqueName:"Wayfinding" + unique:"Can embark and move over Coasts and Oceans immediately. +1 Sight when embarked. +10% Combat Strength bonus if within 2 tiles of a Moai.", + cities:["Honolulu","Samoa","Tonga","Nuku Hiva","Raiatea","Aotearoa","Tahiti","Hilo","Te Wai Pounamu","Rapa Nui", + "Tuamotu","Rarotonga","Tuvalu","Tubuai","Mangareva","Oahu","Kiritimati","Ontong Java","Niue","Rekohu", + "Rakahanga","Bora Bora","Kailua","Uvea","Futuna","Rotuma","Tokelau","Lahaina","Bellona","Mungava","Tikopia", + "Emae","Kapingamarangi","Takuu","Nukuoro","Sikaiana","Anuta","Nuguria","Pileni","Nukumanu"] + }, /* @@ -771,43 +808,6 @@ "Huaras","Riobamba","Caxamalca","Sausa","Tambo Colorado","Huaca","Tumbes","Chan Chan","Sipan","Pachacamac", "Llactapata","Pisac","Kuelap","Pajaten","Chucuito","Choquequirao"] } - { - name:"Polynesia", - leaderName:"Kamehameha I", - adjective:["Polynesia"], - startBias:["Coast"], - preferredVictoryType:"Cultural", - - startIntroPart1: "Greetings and blessings be upon you, Kamehameha the Great, chosen by the heavens to unite your scattered peoples. Oh mighty King, you were the first to bring the Big Island of Hawai'I under one solitary rule in 1791 AD. This was followed by the merging of all the remaining islands under your standard in 1810. As the first King of Hawai'I, you standardized the legal and taxation systems and instituted the Mamalahoe Kawanai, an edict protecting civilians in times of war. You ensured the continued unification and sovereignty of the islands by your strong laws and deeds, even after your death in 1819." - startIntroPart2: "Oh wise and exalted King, your people wish for a kingdom of their own once more and require a leader of unparalleled greatness! Will you answer their call and don the mantle of the Lion of the Pacific? Will you build a kingdom that stands the test of time?" - - declaringWar:"The ancient fire flashing across the sky is what proclaimed that this day would come, though I had foolishly hoped for a different outcome." - attacked:"It is obvious now that I misjudged you and your true intentions." - defeated:"The hard-shelled crab yields, and the lion lies down to sleep. Kanaloa comes for me now." - introduction:"Aloha! Greetings and blessings upon you, friend. I am Kamehameha, Great King of this strand of islands." - - neutralHello:"Welcome, friend!" - neutralLetsHearIt:["Proceed.","And?","What is it?"] - hateNo:["Certainly not.","We will have to decline."] - hateYes:["It is agreed, then.","Excellent!"] - - hateHello:"Oh, it's you." - hateLetsHearIt:["Proceed.","I'm listening","What is it?"] - hateNo:["Certainly not!","That's not acceptable!"] - hateYes:["Yes, I suppost I must.","Yes, so be it."] - - afterPeace:"Perhaps the stars were mistakenly placed... I will consult my Kahuna." - tradeRequest:"Come, let our people feast together!" - - outerColor:[210,51,0], - innerColor:[255,255,78], - uniqueName:"Wayfinding" - unique:"Can embark and move over Costs and Oceans immediately. +1 Sight when embarked", - cities:["Honolulu","Samoa","Tonga","Nuku Hiva","Raiatea","Aotearoa","Tahiti","Hilo","Te Wai Pounamu","Rapa Nui", - "Tuamotu","Rarotonga","Tuvalu","Tubuai","Mangareva","Oahu","Kiritimati","Ontong Java","Niue","Rekohu", - "Rakahanga","Bora Bora","Kailua","Uvea","Futuna","Rotuma","Tokelau","Lahaina","Bellona","Mungava","Tikopia", - "Emae","Kapingamarangi","Takuu","Nukuoro","Sikaiana","Anuta","Nuguria","Pileni","Nukumanu"] - }, { name:"Songhai", leaderName:"Askia", diff --git a/android/assets/jsons/TileImprovements.json b/android/assets/jsons/TileImprovements.json index 66e96bec70..0d0b121424 100644 --- a/android/assets/jsons/TileImprovements.json +++ b/android/assets/jsons/TileImprovements.json @@ -155,7 +155,6 @@ techRequired:"Construction", improvingTech:"Flight", improvingTechStats:{gold:1} - //It can be colored in orange }, /* { diff --git a/android/assets/jsons/Translations/Techs.json b/android/assets/jsons/Translations/Techs.json index 7b3d767b90..ee15f6285c 100644 --- a/android/assets/jsons/Translations/Techs.json +++ b/android/assets/jsons/Translations/Techs.json @@ -1014,6 +1014,7 @@ } "'The introduction of so powerful an agent as steam to a carriage on wheels will make a great change in the situation of man.' - Thomas Jefferson":{//"Railroad" Technology quotes, it has been translated somewhere. + Italian: "'L'introduzione sui carri a ruote di un agente potente come il vapore apporterà un grande cambiamento alla condizione dell'uomo.' - Thomas Jefferson" Simplified_Chinese:"“引入蒸汽这样一个强大的助手来驱动车轮进行运输,将极大地改变人类的境地。”——托马斯·杰斐逊" } diff --git a/android/assets/jsons/UnitPromotions.json b/android/assets/jsons/UnitPromotions.json index c64b24fab6..8d38c47620 100644 --- a/android/assets/jsons/UnitPromotions.json +++ b/android/assets/jsons/UnitPromotions.json @@ -402,4 +402,10 @@ effect:"Bonus vs water units 15%", unitTypes:["WaterRanged"] } + + // Uniques + { + name:"Haka War Dance", // only for Maori Warrior and subsequent upgrades + effect:"-10% combat strength for adjacent enemy units" + } ] \ No newline at end of file diff --git a/android/assets/jsons/Units.json b/android/assets/jsons/Units.json index 5f5f0b507f..1446eab662 100644 --- a/android/assets/jsons/Units.json +++ b/android/assets/jsons/Units.json @@ -39,6 +39,20 @@ upgradesTo:"Swordsman", attackSound:"nonmetalhit" }, + { + name:"Maori Warrior", + unitType:"Melee", + uniqueTo:"Polynesia", + replaces:"Warrior", + movement:2, + strength:8, + cost: 40, + hurryCostModifier:20, + obsoleteTech:"Metal Casting", + promotions:["Haka War Dance"], + upgradesTo:"Swordsman", + attackSound:"nonmetalhit" + }, /* { name:"Jaguar", @@ -55,21 +69,6 @@ attackSound:"nonmetalhit" //Aztec unique unit, moves faster and fights better in Forest and Jungle. He also heals 25 if he kills an enemy. }, - { - name:"Maori Warrior", - unitType:"Melee", - uniqueTo:"Polynesia", - replaces:"Warrior", - movement:2, - strength:8, - cost: 40, - hurryCostModifier:20, - obsoleteTech:"Metal Casting", - uniques:["Haka War Dance"], - upgradesTo:"Swordsman", - attackSound:"nonmetalhit" - //Polynesian unique unit. All nearby enemy Units have -10% strenght - }, */ { name:"Brute", diff --git a/core/src/com/unciv/logic/GameInfo.kt b/core/src/com/unciv/logic/GameInfo.kt index f4861d638d..a23a05dd37 100644 --- a/core/src/com/unciv/logic/GameInfo.kt +++ b/core/src/com/unciv/logic/GameInfo.kt @@ -190,7 +190,7 @@ class GameInfo { if(currentPlayer=="") currentPlayer=civilizations.first { it.isPlayerCivilization() }.civName currentPlayerCiv=getCivilization(currentPlayer) - // this is separated into 2 loops because when we activate updateViewableTiles in civ.setTransients, + // this is separated into 2 loops because when we activate updateVisibleTiles in civ.setTransients, // we try to find new civs, and we check if civ is barbarian, which we can't know unless the gameInfo is already set. for (civInfo in civilizations) civInfo.gameInfo = this @@ -238,7 +238,7 @@ class GameInfo { for (civInfo in civilizations){ for(unit in civInfo.getCivUnits()) - unit.updateViewableTiles() // this needs to be done after all the units are assigned to their civs and all other transients are set + unit.updateVisibleTiles() // this needs to be done after all the units are assigned to their civs and all other transients are set // Since this depends on the cities of ALL civilizations, // we need to wait until we've set the transients of all the cities before we can run this. diff --git a/core/src/com/unciv/logic/GameStarter.kt b/core/src/com/unciv/logic/GameStarter.kt index 83898c6a97..222889357c 100644 --- a/core/src/com/unciv/logic/GameStarter.kt +++ b/core/src/com/unciv/logic/GameStarter.kt @@ -74,12 +74,12 @@ class GameStarter{ val startingLocation = startingLocations[civ]!! civ.placeUnitNearTile(startingLocation.position, Constants.settler) - civ.placeUnitNearTile(startingLocation.position, "Warrior") + civ.placeUnitNearTile(startingLocation.position, civ.getEquivalentUnit("Warrior").name) civ.placeUnitNearTile(startingLocation.position, "Scout") if (!civ.isPlayerCivilization() && civ.isMajorCiv()) { for (unit in gameInfo.getDifficulty().aiFreeUnits) { - civ.placeUnitNearTile(startingLocation.position, unit) + civ.placeUnitNearTile(startingLocation.position, civ.getEquivalentUnit(unit).name) } } } @@ -101,6 +101,17 @@ class GameStarter{ landTilesInBigEnoughGroup.addAll(tilesInGroup) } + val tilesWithStartingLocations = tileMap.values + .filter { it.improvement!=null && it.improvement!!.startsWith("StartingLocation ") } + + val civsOrderedByAvailableLocations = civs.sortedBy {civ -> + when { + tilesWithStartingLocations.any { it.improvement=="StartingLocation "+civ.civName } -> 1 // harshest requirements + civ.nation.startBias.isNotEmpty() -> 2 // less harsh + else -> 3 + } // no requirements + } + for(minimumDistanceBetweenStartingLocations in tileMap.tileMatrix.size/3 downTo 0){ val freeTiles = landTilesInBigEnoughGroup .filter { vectorIsAtLeastNTilesAwayFromEdge(it.position,minimumDistanceBetweenStartingLocations,tileMap)} @@ -108,17 +119,6 @@ class GameStarter{ val startingLocations = HashMap() - val tilesWithStartingLocations = tileMap.values - .filter { it.improvement!=null && it.improvement!!.startsWith("StartingLocation ") } - - val civsOrderedByAvailableLocations = civs.sortedBy {civ -> - when { - tilesWithStartingLocations.any { it.improvement=="StartingLocation "+civ.civName } -> 1 // harshest requirements - civ.nation.startBias.isNotEmpty() -> 2 // less harsh - else -> 3 - } // no requirements - } - for(civ in civsOrderedByAvailableLocations){ var startingLocation:TileInfo val presetStartingLocation = tilesWithStartingLocations.firstOrNull { it.improvement=="StartingLocation "+civ.civName } diff --git a/core/src/com/unciv/logic/automation/Automation.kt b/core/src/com/unciv/logic/automation/Automation.kt index 227a8b1e52..30851a6d17 100644 --- a/core/src/com/unciv/logic/automation/Automation.kt +++ b/core/src/com/unciv/logic/automation/Automation.kt @@ -23,24 +23,24 @@ class Automation { return rank } - fun rankTileForCityWork(tile:TileInfo, city: CityInfo): Float { + fun rankTileForCityWork(tile:TileInfo, city: CityInfo, foodWeight: Float = 1f): Float { val stats = tile.getTileStats(city, city.civInfo) - return rankStatsForCityWork(stats, city) + return rankStatsForCityWork(stats, city, foodWeight) } - private fun rankStatsForCityWork(stats: Stats, city: CityInfo): Float { + private fun rankStatsForCityWork(stats: Stats, city: CityInfo, foodWeight: Float = 1f): Float { var rank = 0f if(city.population.population < 5){ // "small city" - we care more about food and less about global problems like gold science and culture - rank += stats.food * 1.2f + rank += stats.food * 1.2f * foodWeight rank += stats.production rank += stats.science/2 rank += stats.culture/2 rank += stats.gold / 5 // it's barely worth anything at this points } else{ - if (stats.food <= 2 || city.civInfo.getHappiness() > 5) rank += (stats.food * 1.2f) //food get more value to keep city growing - else rank += (2.4f + (stats.food - 2) / 2) // 1.2 point for each food up to 2, from there on half a point + if (stats.food <= 2 || city.civInfo.getHappiness() > 5) rank += (stats.food * 1.2f * foodWeight) //food get more value to keep city growing + else rank += ((2.4f + (stats.food - 2) / 2) * foodWeight) // 1.2 point for each food up to 2, from there on half a point if (city.civInfo.gold < 0 && city.civInfo.statsForNextTurn.gold <= 0) rank += stats.gold // we have a global problem else rank += stats.gold / 3 // 3 gold is worse than 2 production diff --git a/core/src/com/unciv/logic/automation/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/WorkerAutomation.kt index 914ab30334..65a3cfc85f 100644 --- a/core/src/com/unciv/logic/automation/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/WorkerAutomation.kt @@ -2,6 +2,7 @@ package com.unciv.logic.automation import com.badlogic.gdx.graphics.Color import com.unciv.Constants +import com.unciv.UnCivGame import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.map.BFS import com.unciv.logic.map.MapUnit @@ -24,7 +25,7 @@ class WorkerAutomation(val unit: MapUnit) { val tileToWork = findTileToWork() if (getPriority(tileToWork, unit.civInfo) < 3) { // building roads is more important - if (tryConnectingCities()) return + if (tryConnectingCities(unit)) return } if (tileToWork != currentTile) { @@ -41,7 +42,7 @@ class WorkerAutomation(val unit: MapUnit) { } } if (currentTile.improvementInProgress != null) return // we're working! - if (tryConnectingCities()) return //nothing to do, try again to connect cities + if (tryConnectingCities(unit)) return //nothing to do, try again to connect cities val citiesToNumberOfUnimprovedTiles = HashMap() for (city in unit.civInfo.cities) { @@ -53,7 +54,7 @@ class WorkerAutomation(val unit: MapUnit) { .filter { citiesToNumberOfUnimprovedTiles[it.name]!! > 0 } .sortedByDescending { citiesToNumberOfUnimprovedTiles[it.name] } .firstOrNull { unit.movement.canReach(it.ccenterTile) } //goto most undeveloped city - if (mostUndevelopedCity != null) { + if (mostUndevelopedCity != null && mostUndevelopedCity != unit.currentTile.owningCity) { val reachedTile = unit.movement.headTowards(mostUndevelopedCity.ccenterTile) if (reachedTile != currentTile) unit.doPreTurnAction() // since we've moved, maybe we can do something here - automate return @@ -64,7 +65,10 @@ class WorkerAutomation(val unit: MapUnit) { - private fun tryConnectingCities():Boolean { // returns whether we actually did anything + private fun tryConnectingCities(unit: MapUnit):Boolean { // returns whether we actually did anything + //Player can choose not to auto-build roads & railroads. + if (unit.civInfo.isPlayerCivilization() && !UnCivGame.Current.settings.autoBuildingRoads) + return false val targetRoad = unit.civInfo.tech.getBestRoadAvailable() diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 1a27c6db0d..15ae97ee42 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -265,7 +265,7 @@ class Battle(val gameInfo:GameInfo) { capturedUnit.civInfo.removeUnit(capturedUnit) capturedUnit.assignOwner(attacker.getCivInfo()) - capturedUnit.updateViewableTiles() + capturedUnit.updateVisibleTiles() } private fun tryInterceptAirAttack(attacker:MapUnitCombatant, defender: ICombatant) { diff --git a/core/src/com/unciv/logic/battle/BattleDamage.kt b/core/src/com/unciv/logic/battle/BattleDamage.kt index 8edb04335f..f754a98dac 100644 --- a/core/src/com/unciv/logic/battle/BattleDamage.kt +++ b/core/src/com/unciv/logic/battle/BattleDamage.kt @@ -173,6 +173,16 @@ class BattleDamage{ if(!isFriendlyTerritory && unit.unit.hasUnique("+20% bonus outside friendly territory")) modifiers["Foreign Land"] = 0.2f + + if(unit.getCivInfo().nation.unique == "Can embark and move over Coasts and Oceans immediately. +1 Sight when embarked. +10% Combat Strength bonus if within 2 tiles of a Moai." + && tile.getTilesInDistance(2).any { it.improvement=="Moai" }) + modifiers["Moai"] = 0.1f + + if(tile.neighbors.flatMap { it.getUnits() } + .any { it.hasUnique("-10% combat strength for adjacent enemy units") && it.civInfo.isAtWarWith(unit.getCivInfo()) }) + modifiers["Haka War Dance"] = -0.1f + + if(unit.unit.hasUnique("+33% combat bonus in Forest/Jungle") && (tile.terrainFeature== Constants.forest || tile.terrainFeature==Constants.jungle)) modifiers[tile.terrainFeature!!]=0.33f diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 65d4e60ed2..61ac51f389 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -229,11 +229,18 @@ class CityInfo { } fun reassignWorkers() { - workedTiles = hashSetOf() - population.specialists.clear() - for (i in 0..population.population) - population.autoAssignPopulation() - cityStats.update() + var foodWeight = 1f + var foodPerTurn = 0f + while (foodWeight < 3 && foodPerTurn <= 0) { + workedTiles = hashSetOf() + population.specialists.clear() + for (i in 0..population.population) + population.autoAssignPopulation(foodWeight) + cityStats.update() + + foodPerTurn = cityStats.currentCityStats.food + foodWeight += 0.5f + } } fun endTurn() { diff --git a/core/src/com/unciv/logic/city/PopulationManager.kt b/core/src/com/unciv/logic/city/PopulationManager.kt index c204d4f48f..747fe3d64f 100644 --- a/core/src/com/unciv/logic/city/PopulationManager.kt +++ b/core/src/com/unciv/logic/city/PopulationManager.kt @@ -73,16 +73,16 @@ class PopulationManager { // todo - change tile choice according to city! // if small city, favor production above all, ignore gold! // if larger city, food should be worth less! - internal fun autoAssignPopulation() { + internal fun autoAssignPopulation(foodWeight: Float = 1f) { if(getFreePopulation()==0) return //evaluate tiles val bestTile: TileInfo? = cityInfo.getTiles() .filter { it.arialDistanceTo(cityInfo.getCenterTile()) <= 3 } .filterNot { cityInfo.workedTiles.contains(it.position) || cityInfo.location==it.position} - .maxBy { Automation().rankTileForCityWork(it,cityInfo) } + .maxBy { Automation().rankTileForCityWork(it,cityInfo, foodWeight) } val valueBestTile = if(bestTile==null) 0f - else Automation().rankTileForCityWork(bestTile, cityInfo) + else Automation().rankTileForCityWork(bestTile, cityInfo, foodWeight) //evaluate specialists val maxSpecialistsMap = getMaxSpecialists().toHashMap() diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 3ab5685d2e..a9dca90669 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -17,6 +17,7 @@ import com.unciv.logic.trade.TradeRequest import com.unciv.models.gamebasics.* import com.unciv.models.gamebasics.tech.TechEra import com.unciv.models.gamebasics.tile.ResourceSupplyList +import com.unciv.models.gamebasics.unit.BaseUnit import com.unciv.models.stats.Stats import java.util.* import kotlin.collections.ArrayList @@ -230,6 +231,13 @@ class CivilizationInfo { return baseBuilding } + fun getEquivalentUnit(baseUnitName:String):BaseUnit { + for (unit in GameBasics.Units.values) + if (unit.replaces == baseUnitName && unit.uniqueTo == civName) + return unit + return GameBasics.Units[baseUnitName]!! + } + fun meetCivilization(otherCiv: CivilizationInfo) { diplomacy[otherCiv.civName] = DiplomacyManager(this, otherCiv.civName) .apply { diplomaticStatus = DiplomaticStatus.Peace } @@ -278,7 +286,7 @@ class CivilizationInfo { //region state-changing functions /** This is separate because the REGULAR setTransients updates the viewable ties, - * and the updateViewableTiles tries to meet civs... + * and the updateVisibleTiles tries to meet civs... * And if they civs on't yet know who they are then they don;t know if they're barbarians =\ * */ fun setNationTransient(){ diff --git a/core/src/com/unciv/logic/civilization/TechManager.kt b/core/src/com/unciv/logic/civilization/TechManager.kt index c7c45c16ae..a8c18b955f 100644 --- a/core/src/com/unciv/logic/civilization/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/TechManager.kt @@ -6,7 +6,6 @@ import com.unciv.Constants import com.unciv.logic.map.RoadStatus import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.tech.Technology -import com.unciv.models.gamebasics.tr import com.unciv.models.gamebasics.unit.BaseUnit import com.unciv.ui.utils.withItem import java.util.* @@ -202,8 +201,14 @@ class TechManager { } fun updateTransientBooleans(){ - if(researchedTechUniques.contains("Enables embarkation for land units")) unitsCanEmbark=true - if(researchedTechUniques.contains("Enables embarked units to enter ocean tiles")) embarkedUnitsCanEnterOcean=true + if(researchedTechUniques.contains("Enables embarkation for land units") + || civInfo.nation.unique=="Can embark and move over Coasts and Oceans immediately. +1 Sight when embarked. +10% Combat Strength bonus if within 2 tiles of a Moai.") + unitsCanEmbark=true + + if(researchedTechUniques.contains("Enables embarked units to enter ocean tiles") + || civInfo.nation.unique=="Can embark and move over Coasts and Oceans immediately. +1 Sight when embarked. +10% Combat Strength bonus if within 2 tiles of a Moai.") + embarkedUnitsCanEnterOcean=true + if(researchedTechUniques.contains("Improves movement speed on roads")) movementSpeedOnRoadsImproved = true } diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index f4cef02488..9593f4a952 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -126,8 +126,7 @@ class MapUnit { return getUniques().contains(unique) } - // we need to map all the places that this could change: Unit changes locations, owners, gets promotion? - fun updateViewableTiles() { + fun updateVisibleTiles() { if(type.isAirUnit()){ if(hasUnique("6 tiles in every direction always visible")) viewableTiles = getTile().getTilesInDistance(6) // it's that simple @@ -142,6 +141,8 @@ class MapUnit { if (type.isWaterUnit() && !type.isCivilian() && civInfo.containsBuildingUnique("All military naval units receive +1 movement and +1 sight")) visibilityRange += 1 + if (isEmbarked() && civInfo.nation.unique == "Can embark and move over Coasts and Oceans immediately. +1 Sight when embarked. +10% Combat Strength bonus if within 2 tiles of a Moai.") + visibilityRange += 1 val tile = getTile() if (tile.baseTerrain == Constants.hill && type.isLandUnit()) visibilityRange += 1 @@ -409,7 +410,7 @@ class MapUnit { clearEncampment(tile) currentTile = tile - updateViewableTiles() + updateVisibleTiles() } fun putInTile(tile:TileInfo){ diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index d7dc8bcfe7..da11ae5f7d 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -187,6 +187,9 @@ open class TileInfo { stats.add(improvement) // again, for the double effect if (containsGreatImprovement() && city != null && city.civInfo.nation.unique == "+2 Science for all specialists and Great Person tile improvements") stats.science += 2 + + if(improvement.uniques.contains("+1 additional Culture for each adjacent Moai")) + stats.culture += neighbors.count{it.improvement=="Moai"} } if(city!=null && isWater && city.containsBuildingUnique("+1 gold from worked water tiles in city")) diff --git a/core/src/com/unciv/logic/map/UnitPromotions.kt b/core/src/com/unciv/logic/map/UnitPromotions.kt index 87e7c2adaf..4549de5127 100644 --- a/core/src/com/unciv/logic/map/UnitPromotions.kt +++ b/core/src/com/unciv/logic/map/UnitPromotions.kt @@ -27,9 +27,9 @@ class UnitPromotions{ unit.updateUniques() // Since some units get promotions upon construction, they will get the addPromotion from the unit.postBuildEvent - // upon creation, BEFORE they are assigned to a tile, so the updateViewableTiles() would crash. + // upon creation, BEFORE they are assigned to a tile, so the updateVisibleTiles() would crash. // So, if the addPromotion was triggered from there, simply don't update - unit.updateViewableTiles() // some promotions/uniques give the unit bonus sight + unit.updateVisibleTiles() // some promotions/uniques give the unit bonus sight } fun getAvailablePromotions(): List { diff --git a/core/src/com/unciv/models/gamebasics/unit/BaseUnit.kt b/core/src/com/unciv/models/gamebasics/unit/BaseUnit.kt index e68daa114a..40a3743ce2 100644 --- a/core/src/com/unciv/models/gamebasics/unit/BaseUnit.kt +++ b/core/src/com/unciv/models/gamebasics/unit/BaseUnit.kt @@ -162,10 +162,7 @@ class BaseUnit : INamed, IConstruction, ICivilopedia { } fun getDirectUpgradeUnit(civInfo: CivilizationInfo):BaseUnit{ - val uniqueUnitReplacesUpgrade: BaseUnit? = GameBasics.Units.values - .firstOrNull{it.uniqueTo==civInfo.civName && it.replaces == upgradesTo} - if(uniqueUnitReplacesUpgrade!=null) return uniqueUnitReplacesUpgrade - return GameBasics.Units[upgradesTo!!]!! + return civInfo.getEquivalentUnit(upgradesTo!!) } override fun toString(): String = name diff --git a/core/src/com/unciv/models/metadata/GameSettings.kt b/core/src/com/unciv/models/metadata/GameSettings.kt index 16cefafd5c..2111450218 100644 --- a/core/src/com/unciv/models/metadata/GameSettings.kt +++ b/core/src/com/unciv/models/metadata/GameSettings.kt @@ -17,6 +17,7 @@ class GameSettings { var tileSet:String = "FantasyHex" var showTutorials: Boolean = true var autoAssignCityProduction: Boolean = true + var autoBuildingRoads: Boolean = true var showMinimap: Boolean = true var userName:String="" diff --git a/core/src/com/unciv/ui/newgamescreen/NationTable.kt b/core/src/com/unciv/ui/newgamescreen/NationTable.kt index 75565b03e9..fe37524d12 100644 --- a/core/src/com/unciv/ui/newgamescreen/NationTable.kt +++ b/core/src/com/unciv/ui/newgamescreen/NationTable.kt @@ -10,8 +10,9 @@ import com.unciv.models.gamebasics.tr import com.unciv.ui.utils.* class NationTable(val nation: Nation, width:Float, onClick:()->Unit) - : Table(CameraStageBaseScreen.skin){ + : Table(CameraStageBaseScreen.skin) { private val innerTable = Table() + init { background = ImageGetter.getBackground(nation.getInnerColor()) innerTable.pad(10f) @@ -39,58 +40,76 @@ class NationTable(val nation: Nation, width:Float, onClick:()->Unit) textList += "" } - for (building in GameBasics.Buildings.values) - if (building.uniqueTo == nation.name) { - val originalBuilding = GameBasics.Buildings[building.replaces!!]!! - - textList += building.name.tr() + " - {replaces} " + originalBuilding.name.tr() - val originalBuildingStatMap = originalBuilding.toHashMap() - for (stat in building.toHashMap()) - if (stat.value != originalBuildingStatMap[stat.key]) - textList += " " + stat.key.toString().tr() + " " + stat.value.toInt() + " vs " + originalBuildingStatMap[stat.key]!!.toInt() - - for (unique in building.uniques.filter { it !in originalBuilding.uniques }) - textList += " " + unique.tr() - if (building.maintenance != originalBuilding.maintenance) - textList += " {Maintenance} " + building.maintenance + " vs " + originalBuilding.maintenance - if (building.cost != originalBuilding.cost) - textList += " {Cost} " + building.cost + " vs " + originalBuilding.cost - if (building.cityStrength != originalBuilding.cityStrength) - textList += " {City strength} " + building.cityStrength + " vs " + originalBuilding.cityStrength - if (building.cityHealth != originalBuilding.cityHealth) - textList += " {City health} " + building.cityHealth + " vs " + originalBuilding.cityHealth - textList += "" - } - - for (unit in GameBasics.Units.values) - if (unit.uniqueTo == nation.name) { - val originalUnit = GameBasics.Units[unit.replaces!!]!! - - textList += unit.name.tr() + " - {replaces} " + originalUnit.name.tr() - if (unit.cost != originalUnit.cost) - textList += " {Cost} " + unit.cost + " vs " + originalUnit.cost - if (unit.strength != originalUnit.strength) - textList += " {Strength} " + unit.strength + " vs " + originalUnit.strength - if (unit.rangedStrength != originalUnit.rangedStrength) - textList += " {Ranged strength} " + unit.rangedStrength + " vs " + originalUnit.rangedStrength - if (unit.range != originalUnit.range) - textList += " {Range} " + unit.range + " vs " + originalUnit.range - if (unit.movement != originalUnit.movement) - textList += " {Movement} " + unit.movement + " vs " + originalUnit.movement - if (originalUnit.requiredResource != null && unit.requiredResource == null) - textList += " " + "[${originalUnit.requiredResource}] not required".tr() - for (unique in unit.uniques.filterNot { it in originalUnit.uniques }) - textList += " " + Translations.translateBonusOrPenalty(unique) - for(unique in originalUnit.uniques.filterNot { it in unit.uniques }) - textList += " "+"Lost ability".tr()+"(vs "+originalUnit.name.tr()+"): "+Translations.translateBonusOrPenalty(unique) - for (promotion in unit.promotions.filter { it !in originalUnit.promotions }) - textList += " " + promotion.tr() + " (" + Translations.translateBonusOrPenalty(GameBasics.UnitPromotions[promotion]!!.effect) + ")" - - textList += "" - } - + addUniqueBuildingsText(nation, textList) + addUniqueUnitsText(nation, textList) + addUniqueImprovementsText(nation, textList) return textList.joinToString("\n").tr().trim().toLabel() } + private fun addUniqueBuildingsText(nation: Nation, textList: ArrayList) { + for (building in GameBasics.Buildings.values + .filter { it.uniqueTo == nation.name }) { + val originalBuilding = GameBasics.Buildings[building.replaces!!]!! + + textList += building.name.tr() + " - {replaces} " + originalBuilding.name.tr() + val originalBuildingStatMap = originalBuilding.toHashMap() + for (stat in building.toHashMap()) + if (stat.value != originalBuildingStatMap[stat.key]) + textList += " " + stat.key.toString().tr() + " " + stat.value.toInt() + " vs " + originalBuildingStatMap[stat.key]!!.toInt() + + for (unique in building.uniques.filter { it !in originalBuilding.uniques }) + textList += " " + unique.tr() + if (building.maintenance != originalBuilding.maintenance) + textList += " {Maintenance} " + building.maintenance + " vs " + originalBuilding.maintenance + if (building.cost != originalBuilding.cost) + textList += " {Cost} " + building.cost + " vs " + originalBuilding.cost + if (building.cityStrength != originalBuilding.cityStrength) + textList += " {City strength} " + building.cityStrength + " vs " + originalBuilding.cityStrength + if (building.cityHealth != originalBuilding.cityHealth) + textList += " {City health} " + building.cityHealth + " vs " + originalBuilding.cityHealth + textList += "" + } + } + + private fun addUniqueUnitsText(nation: Nation, textList: ArrayList) { + for (unit in GameBasics.Units.values + .filter { it.uniqueTo == nation.name }) { + val originalUnit = GameBasics.Units[unit.replaces!!]!! + + textList += unit.name.tr() + " - {replaces} " + originalUnit.name.tr() + if (unit.cost != originalUnit.cost) + textList += " {Cost} " + unit.cost + " vs " + originalUnit.cost + if (unit.strength != originalUnit.strength) + textList += " {Strength} " + unit.strength + " vs " + originalUnit.strength + if (unit.rangedStrength != originalUnit.rangedStrength) + textList += " {Ranged strength} " + unit.rangedStrength + " vs " + originalUnit.rangedStrength + if (unit.range != originalUnit.range) + textList += " {Range} " + unit.range + " vs " + originalUnit.range + if (unit.movement != originalUnit.movement) + textList += " {Movement} " + unit.movement + " vs " + originalUnit.movement + if (originalUnit.requiredResource != null && unit.requiredResource == null) + textList += " " + "[${originalUnit.requiredResource}] not required".tr() + for (unique in unit.uniques.filterNot { it in originalUnit.uniques }) + textList += " " + Translations.translateBonusOrPenalty(unique) + for (unique in originalUnit.uniques.filterNot { it in unit.uniques }) + textList += " " + "Lost ability".tr() + "(vs " + originalUnit.name.tr() + "): " + Translations.translateBonusOrPenalty(unique) + for (promotion in unit.promotions.filter { it !in originalUnit.promotions }) + textList += " " + promotion.tr() + " (" + Translations.translateBonusOrPenalty(GameBasics.UnitPromotions[promotion]!!.effect) + ")" + + textList += "" + } + } + + private fun addUniqueImprovementsText(nation: Nation, textList: ArrayList) { + for (improvement in GameBasics.TileImprovements.values + .filter { it.uniqueTo == nation.name }) { + + textList += improvement.name.tr() + textList += " "+improvement.clone().toString() + for(unique in improvement.uniques) + textList += " "+unique.tr() + } + } + } \ No newline at end of file diff --git a/core/src/com/unciv/ui/pickerscreens/TechButton.kt b/core/src/com/unciv/ui/pickerscreens/TechButton.kt index 598fadd0ba..cda6fa6591 100644 --- a/core/src/com/unciv/ui/pickerscreens/TechButton.kt +++ b/core/src/com/unciv/ui/pickerscreens/TechButton.kt @@ -43,8 +43,10 @@ class TechButton(techName:String, val techManager: TechManager, isWorldScreen: B val techEnabledIcons = Table() techEnabledIcons.defaults().pad(5f) + val civName = techManager.civInfo.civName + val techEnabledUnits = GameBasics.Units.values.filter { it.requiredTech == techName } - val ourUniqueUnits = techEnabledUnits.filter { it.uniqueTo == techManager.civInfo.civName } + val ourUniqueUnits = techEnabledUnits.filter { it.uniqueTo == civName } val replacedUnits = ourUniqueUnits.map { it.replaces!! } val ourEnabledUnits = techEnabledUnits.filter { it.uniqueTo == null && !replacedUnits.contains(it.name) } .union(ourUniqueUnits) @@ -53,15 +55,18 @@ class TechButton(techName:String, val techManager: TechManager, isWorldScreen: B techEnabledIcons.add(ImageGetter.getConstructionImage(unit.name).surroundWithCircle(30f)) val techEnabledBuildings = GameBasics.Buildings.values.filter { it.requiredTech == techName } - val ourUniqueBuildings = techEnabledBuildings.filter { it.uniqueTo == techManager.civInfo.civName } + val ourUniqueBuildings = techEnabledBuildings.filter { it.uniqueTo == civName } val replacedBuildings = ourUniqueBuildings.map { it.replaces!! } - val ourEnabledBuildings = techEnabledBuildings.filter { it.uniqueTo == null && !replacedBuildings.contains(it.name) } + val ourEnabledBuildings = techEnabledBuildings + .filter { it.uniqueTo == null && !replacedBuildings.contains(it.name) } .union(ourUniqueBuildings) for (building in ourEnabledBuildings) techEnabledIcons.add(ImageGetter.getConstructionImage(building.name).surroundWithCircle(30f)) - for (improvement in GameBasics.TileImprovements.values.filter { it.techRequired == techName || it.improvingTech == techName }) { + for (improvement in GameBasics.TileImprovements.values + .filter { it.techRequired == techName || it.improvingTech == techName } + .filter { it.uniqueTo==null || it.uniqueTo==civName }) { if (improvement.name.startsWith("Remove")) techEnabledIcons.add(ImageGetter.getImage("OtherIcons/Stop")).size(30f) else techEnabledIcons.add(ImageGetter.getImprovementIcon(improvement.name, 30f)) diff --git a/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt b/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt index 033e88bed5..8d2821f820 100644 --- a/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt +++ b/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt @@ -80,6 +80,12 @@ class WorldScreenOptionsTable(val worldScreen:WorldScreen) : PopupTable(worldScr update() } + innerTable.add("Auto-build roads".toLabel()) + innerTable.addButton(if(settings.autoBuildingRoads) "Yes".tr() else "No".tr()) { + settings.autoBuildingRoads= !settings.autoBuildingRoads + update() + } + innerTable.add("Show minimap".toLabel()) innerTable.addButton(if(settings.showMinimap) "Yes".tr() else "No".tr()) { settings.showMinimap= !settings.showMinimap diff --git a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt index 4ad8684d33..1497e81876 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt @@ -99,7 +99,7 @@ class UnitActions { newunit.promotions.addPromotion(promotion, true) newunit.updateUniques() - newunit.updateViewableTiles() + newunit.updateVisibleTiles() newunit.currentMovement = 0f worldScreen.shouldUpdate = true }.sound("upgrade")