diff --git a/android/Images/TileSets/Default/NaturalWonderOverlay.png b/android/Images/TileSets/Default/NaturalWonderOverlay.png new file mode 100644 index 0000000000..e13a110a60 Binary files /dev/null and b/android/Images/TileSets/Default/NaturalWonderOverlay.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Barringer Crater.png b/android/Images/TileSets/FantasyHex/Tiles/Barringer Crater.png new file mode 100644 index 0000000000..bac06caef6 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Barringer Crater.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Cerro de Potosi.png b/android/Images/TileSets/FantasyHex/Tiles/Cerro de Potosi.png new file mode 100644 index 0000000000..a63dc32308 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Cerro de Potosi.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/El Dorado.png b/android/Images/TileSets/FantasyHex/Tiles/El Dorado.png new file mode 100644 index 0000000000..01884e7901 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/El Dorado.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Fountain of Youth.png b/android/Images/TileSets/FantasyHex/Tiles/Fountain of Youth.png new file mode 100644 index 0000000000..5fd5d0eded Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Fountain of Youth.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Grand Mesa.png b/android/Images/TileSets/FantasyHex/Tiles/Grand Mesa.png new file mode 100644 index 0000000000..08f390f57b Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Grand Mesa.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Great Barrier Reef.png b/android/Images/TileSets/FantasyHex/Tiles/Great Barrier Reef.png new file mode 100644 index 0000000000..b01ed763bd Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Great Barrier Reef.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Krakatoa.png b/android/Images/TileSets/FantasyHex/Tiles/Krakatoa.png new file mode 100644 index 0000000000..ba41afafcc Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Krakatoa.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Mount Fuji.png b/android/Images/TileSets/FantasyHex/Tiles/Mount Fuji.png new file mode 100644 index 0000000000..8127f2005c Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Mount Fuji.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Old Faithful.png b/android/Images/TileSets/FantasyHex/Tiles/Old Faithful.png new file mode 100644 index 0000000000..56f8b24f28 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Old Faithful.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Rock of Gibraltar.png b/android/Images/TileSets/FantasyHex/Tiles/Rock of Gibraltar.png new file mode 100644 index 0000000000..4ffd21cf70 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Rock of Gibraltar.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 98ae7481a0..ebe0ed3801 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -384,175 +384,168 @@ BuildingIcons/National College index: -1 BuildingIcons/Neuschwanstein rotate: false - xy: 308, 442 + xy: 2, 430 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Notre Dame rotate: false - xy: 2, 430 + xy: 410, 418 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Nuclear Plant rotate: false - xy: 716, 410 + xy: 818, 410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Observatory rotate: false - xy: 1022, 410 + xy: 1634, 374 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Opera House rotate: false - xy: 1838, 374 + xy: 1940, 374 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Oxford University rotate: false - xy: 1532, 353 + xy: 1124, 352 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Palace rotate: false - xy: 1124, 352 + xy: 1226, 352 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Paper Maker rotate: false - xy: 1328, 352 + xy: 1430, 352 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Pentagon rotate: false - xy: 104, 340 + xy: 206, 340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Porcelain Tower rotate: false - xy: 1940, 272 + xy: 1532, 251 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Public School rotate: false - xy: 1226, 250 + xy: 1328, 250 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Research Lab rotate: false - xy: 920, 212 + xy: 716, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Booster rotate: false - xy: 1226, 148 + xy: 1328, 148 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Cockpit rotate: false - xy: 1328, 148 + xy: 1430, 148 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Engine rotate: false - xy: 1430, 148 + xy: 512, 140 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Stasis Chamber rotate: false - xy: 512, 140 + xy: 614, 140 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Satrap's Court rotate: false - xy: 308, 136 + xy: 2, 124 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Seaport rotate: false - xy: 920, 110 + xy: 716, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sistine Chapel rotate: false - xy: 1124, 46 + xy: 1226, 46 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Solar Plant rotate: false - xy: 1328, 46 + xy: 1430, 46 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Spaceship Factory rotate: false - xy: 512, 38 + xy: 614, 38 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stable rotate: false - xy: 308, 34 + xy: 2, 22 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stadium rotate: false - xy: 2, 22 + xy: 410, 10 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Statue of Liberty rotate: false - xy: 410, 10 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Stock Exchange - rotate: false - xy: 1022, 2 + xy: 920, 8 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -769,49 +762,35 @@ ImprovementIcons/Moai index: -1 ImprovementIcons/Oil well rotate: false - xy: 1736, 374 + xy: 1838, 374 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Pasture rotate: false - xy: 512, 344 + xy: 614, 344 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Plantation rotate: false - xy: 1634, 272 + xy: 1736, 272 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Quarry rotate: false - xy: 1430, 250 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ImprovementIcons/Railroad - rotate: false - xy: 104, 238 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TileSets/Default/Railroad - rotate: false - xy: 104, 238 + xy: 512, 242 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Road rotate: false - xy: 1634, 170 + xy: 1736, 170 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -916,42 +895,42 @@ NationIcons/Korea index: -1 NationIcons/Persia rotate: false - xy: 308, 340 + xy: 2, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Polynesia rotate: false - xy: 1838, 272 + xy: 1940, 272 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Rome rotate: false - xy: 1532, 149 + xy: 1124, 148 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Russia rotate: false - xy: 1124, 148 + xy: 1226, 148 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Siam rotate: false - xy: 1736, 68 + xy: 1838, 68 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Songhai rotate: false - xy: 1430, 46 + xy: 512, 38 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1021,35 +1000,35 @@ OtherIcons/MenuIcon index: -1 OtherIcons/Pentagon rotate: false - xy: 206, 340 + xy: 308, 340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pillage rotate: false - xy: 1022, 308 + xy: 1634, 272 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Puppet rotate: false - xy: 1328, 250 + xy: 1430, 250 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Shield rotate: false - xy: 1022, 104 + xy: 1634, 68 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Sleep rotate: false - xy: 1226, 46 + xy: 1328, 46 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1175,42 +1154,42 @@ ResourceIcons/Marble index: -1 ResourceIcons/Oil rotate: false - xy: 1634, 374 + xy: 1736, 374 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Pearls rotate: false - xy: 614, 344 + xy: 104, 340 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sheep rotate: false - xy: 818, 104 + xy: 1022, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silk rotate: false - xy: 1838, 68 + xy: 1940, 68 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silver rotate: false - xy: 1940, 68 + xy: 1532, 47 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Spices rotate: false - xy: 206, 34 + xy: 308, 34 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1287,7 +1266,7 @@ StatIcons/Production index: -1 StatIcons/Resistance rotate: false - xy: 716, 206 + xy: 818, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1301,7 +1280,7 @@ StatIcons/Science index: -1 StatIcons/Specialist rotate: false - xy: 104, 34 + xy: 206, 34 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1644,84 +1623,84 @@ TechIcons/Nanotechnology index: -1 TechIcons/Navigation rotate: false - xy: 206, 442 + xy: 308, 442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nuclear Fission rotate: false - xy: 410, 418 + xy: 920, 416 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Optics rotate: false - xy: 1940, 374 + xy: 1532, 353 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Particle Physics rotate: false - xy: 1430, 352 + xy: 512, 344 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pharmaceuticals rotate: false - xy: 410, 316 + xy: 920, 314 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Philosophy rotate: false - xy: 920, 314 + xy: 716, 308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Physics rotate: false - xy: 716, 308 + xy: 818, 308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Plastics rotate: false - xy: 1736, 272 + xy: 1838, 272 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pottery rotate: false - xy: 1532, 251 + xy: 1124, 250 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Printing Press rotate: false - xy: 1124, 250 + xy: 1226, 250 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radar rotate: false - xy: 512, 242 + xy: 614, 242 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radio rotate: false - xy: 614, 242 + xy: 104, 238 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1735,70 +1714,70 @@ TechIcons/Railroad index: -1 TechIcons/Refrigeration rotate: false - xy: 2, 226 + xy: 410, 214 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Replaceable Parts rotate: false - xy: 410, 214 + xy: 920, 212 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rifling rotate: false - xy: 1022, 206 + xy: 1634, 170 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Robotics rotate: false - xy: 1736, 170 + xy: 1838, 170 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rocketry rotate: false - xy: 1940, 170 + xy: 1532, 149 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Sailing rotate: false - xy: 614, 140 + xy: 104, 136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Satellites rotate: false - xy: 206, 136 + xy: 308, 136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Scientific Theory rotate: false - xy: 2, 124 + xy: 410, 112 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steam Power rotate: false - xy: 716, 2 + xy: 818, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steel rotate: false - xy: 818, 2 + xy: 1022, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1810,20 +1789,6 @@ TileSets/Default/CityOverlay orig: 100, 100 offset: 0, 0 index: -1 -TileSets/Default/CrosshatchHexagon - rotate: false - xy: 583, 1800 - size: 273, 236 - orig: 273, 236 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/CrosshatchHexagon - rotate: false - xy: 583, 1800 - size: 273, 236 - orig: 273, 236 - offset: 0, 0 - index: -1 TileSets/Default/FalloutOverlay rotate: false xy: 308, 1054 @@ -1880,13 +1845,48 @@ TileSets/Default/MountainOverlay orig: 100, 100 offset: 0, 0 index: -1 -TileSets/Default/OasisOverlay +TileSets/Default/NaturalWonderOverlay rotate: false - xy: 818, 410 + xy: 206, 442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 +TileSets/Default/OasisOverlay + rotate: false + xy: 1022, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TileSets/Default/Railroad + rotate: false + xy: 2, 226 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ImprovementIcons/Railroad + rotate: false + xy: 2, 226 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/CrosshatchHexagon + rotate: false + xy: 583, 1800 + size: 273, 236 + orig: 273, 236 + offset: 0, 0 + index: -1 +TileSets/Default/CrosshatchHexagon + rotate: false + xy: 583, 1800 + size: 273, 236 + orig: 273, 236 + offset: 0, 0 + index: -1 TileSets/FantasyHex/Railroad rotate: false xy: 308, 238 @@ -2302,91 +2302,91 @@ UnitIcons/Naresuan's Elephant index: -1 UnitIcons/Nuclear Missile rotate: false - xy: 920, 416 + xy: 716, 410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Panzer rotate: false - xy: 1226, 352 + xy: 1328, 352 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Persian Immortal rotate: false - xy: 2, 328 + xy: 410, 316 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Pikeman rotate: false - xy: 818, 308 + xy: 1022, 308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rifleman rotate: false - xy: 818, 206 + xy: 1022, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rocket Artillery rotate: false - xy: 1838, 170 + xy: 1940, 170 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Samurai rotate: false - xy: 104, 136 + xy: 206, 136 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Scout rotate: false - xy: 410, 112 + xy: 920, 110 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Settler rotate: false - xy: 716, 104 + xy: 818, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ship of the Line rotate: false - xy: 1634, 68 + xy: 1736, 68 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Sipahi rotate: false - xy: 1532, 47 + xy: 1124, 46 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Spearman rotate: false - xy: 614, 38 + xy: 104, 34 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Stealth Bomber rotate: false - xy: 920, 8 + xy: 716, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -2397,2081 +2397,2158 @@ size: 2048,512 format: RGBA8888 filter: MipMapLinearLinear,MipMapLinearLinear repeat: none -BuildingIcons/Stone Works - rotate: false - xy: 2, 308 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Stonehenge - rotate: false - xy: 104, 410 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Sydney Opera House - rotate: false - xy: 2, 2 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Taj Mahal - rotate: false - xy: 104, 206 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Temple - rotate: false - xy: 308, 410 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Terracotta Army - rotate: false - xy: 104, 104 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Great Library - rotate: false - xy: 104, 2 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Great Lighthouse - rotate: false - xy: 206, 206 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Louvre - rotate: false - xy: 308, 308 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Oracle - rotate: false - xy: 410, 410 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/The Pyramids - rotate: false - xy: 206, 2 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Theatre - rotate: false - xy: 410, 308 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/University - rotate: false - xy: 410, 2 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Walls - rotate: false - xy: 614, 307 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Walls of Babylon - rotate: false - xy: 716, 410 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Wat - rotate: false - xy: 716, 308 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Windmill - rotate: false - xy: 716, 206 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -BuildingIcons/Workshop - rotate: false - xy: 716, 2 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ImprovementIcons/Trading post - rotate: false - xy: 308, 104 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/The Ottomans - rotate: false - xy: 206, 104 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Aircraft - rotate: false - xy: 920, 256 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/BackArrow - rotate: false - xy: 1022, 395 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Stop - rotate: false - xy: 2, 206 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/TableBackground - rotate: false - xy: 1958, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/whiteDot - rotate: false - xy: 2021, 509 - size: 1, 1 - orig: 1, 1 - offset: 0, 0 - index: -1 -PolicyIcons/Aristocracy - rotate: false - xy: 818, 102 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Citizenship - rotate: false - xy: 972, 256 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Civil Society - rotate: false - xy: 1024, 291 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Collective Rule - rotate: false - xy: 1085, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Constitution - rotate: false - xy: 1137, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Democracy - rotate: false - xy: 1241, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Entrepreneurship - rotate: false - xy: 1345, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Fascism - rotate: false - xy: 1501, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Religion - rotate: false - xy: 1605, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Speech - rotate: false - xy: 1657, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Free Thought - rotate: false - xy: 1709, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Humanism - rotate: false - xy: 1865, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Landed Elite - rotate: false - xy: 1074, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Legalism - rotate: false - xy: 1126, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Mandate Of Heaven - rotate: false - xy: 1178, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Mercantilism - rotate: false - xy: 1230, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Meritocracy - rotate: false - xy: 1282, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Militarism - rotate: false - xy: 1282, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Military Caste - rotate: false - xy: 1334, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Military Tradition - rotate: false - xy: 1334, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Monarchy - rotate: false - xy: 1386, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Oligarchy - rotate: false - xy: 1438, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Organized Religion - rotate: false - xy: 1490, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Patronage - rotate: false - xy: 1490, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Police State - rotate: false - xy: 1542, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Populism - rotate: false - xy: 1542, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Professional Army - rotate: false - xy: 1594, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Protectionism - rotate: false - xy: 1594, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Reformation - rotate: false - xy: 1698, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Representation - rotate: false - xy: 1698, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Republic - rotate: false - xy: 1750, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Scientific Revolution - rotate: false - xy: 1750, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Secularism - rotate: false - xy: 1802, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Sovereignty - rotate: false - xy: 1906, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Theocracy - rotate: false - xy: 1076, 304 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Total War - rotate: false - xy: 1076, 252 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Trade Unions - rotate: false - xy: 1128, 304 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Universal Suffrage - rotate: false - xy: 1128, 252 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -PolicyIcons/Warrior Code - rotate: false - xy: 1180, 252 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -ResourceIcons/Stone +BuildingIcons/Stock Exchange rotate: false xy: 2, 410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -ResourceIcons/Sugar +BuildingIcons/Stone Works rotate: false - xy: 206, 410 + xy: 104, 410 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -ResourceIcons/Uranium +BuildingIcons/Stonehenge rotate: false - xy: 512, 206 + xy: 2, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -ResourceIcons/Whales +BuildingIcons/Sydney Opera House rotate: false - xy: 818, 410 + xy: 104, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -ResourceIcons/Wheat - rotate: false - xy: 614, 103 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ResourceIcons/Wine - rotate: false - xy: 818, 308 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -StatIcons/InterceptRange - rotate: false - xy: 1969, 460 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/Movement - rotate: false - xy: 1438, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/Range - rotate: false - xy: 1646, 408 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -StatIcons/RangedStrength - rotate: false - xy: 1646, 356 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -TechIcons/The Wheel - rotate: false - xy: 308, 206 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TechIcons/Theology - rotate: false - xy: 512, 410 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TechIcons/Trapping - rotate: false - xy: 308, 2 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TechIcons/Writing - rotate: false - xy: 818, 206 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TileSets/Default/road - rotate: false - xy: 1022, 499 - size: 61, 11 - orig: 61, 11 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/road - rotate: false - xy: 1022, 499 - size: 61, 11 - orig: 61, 11 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Academy - rotate: false - xy: 614, 12 - size: 32, 37 - orig: 32, 37 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Ancient ruins - rotate: false - xy: 666, 73 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Atoll - rotate: false - xy: 954, 226 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Barbarian encampment - rotate: false - xy: 1318, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Citadel - rotate: false - xy: 1420, 291 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/City - rotate: false - xy: 1454, 319 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+City - rotate: false - xy: 1454, 319 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+City - rotate: false - xy: 1454, 319 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/City ruins - rotate: false - xy: 1386, 266 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coast - rotate: false - xy: 1522, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coast+Oil well - rotate: false - xy: 1556, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Customs house - rotate: false - xy: 1658, 319 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert - rotate: false - xy: 1692, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+City - rotate: false - xy: 1726, 321 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Fallout - rotate: false - xy: 1760, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Farm - rotate: false - xy: 1794, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Flood plains - rotate: false - xy: 1828, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Flood plains+Farm - rotate: false - xy: 1862, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Flood plains+Trading post - rotate: false - xy: 1896, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Oasis - rotate: false - xy: 1930, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Desert+Trading post - rotate: false - xy: 1964, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Fishing Boats - rotate: false - xy: 1556, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Fort - rotate: false - xy: 1624, 291 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland - rotate: false - xy: 1488, 268 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Fallout - rotate: false - xy: 1522, 268 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Farm - rotate: false - xy: 1556, 266 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest - rotate: false - xy: 1590, 263 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Camp - rotate: false - xy: 1624, 258 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Forest+Lumber mill - rotate: false - xy: 1658, 258 - size: 32, 31 - orig: 32, 31 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Jungle - rotate: false - xy: 1692, 262 - size: 32, 34 - orig: 32, 34 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Jungle+Camp - rotate: false - xy: 1726, 285 - size: 32, 34 - orig: 32, 34 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Jungle+Trading post - rotate: false - xy: 1760, 290 - size: 32, 34 - orig: 32, 34 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Marsh - rotate: false - xy: 1794, 295 - size: 32, 29 - orig: 32, 29 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Grassland+Trading post - rotate: false - xy: 1828, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill - rotate: false - xy: 1794, 261 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Camp - rotate: false - xy: 1828, 262 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Customs house - rotate: false - xy: 1862, 262 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Fallout - rotate: false - xy: 1896, 262 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest - rotate: false - xy: 1930, 249 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Camp - rotate: false - xy: 1964, 249 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill - rotate: false - xy: 922, 179 - size: 32, 45 - orig: 32, 45 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Mine - rotate: false - xy: 922, 145 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Quarry - rotate: false - xy: 956, 192 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Hill+Terrace Farm - rotate: false - xy: 922, 111 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Lakes - rotate: false - xy: 990, 110 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Landmark - rotate: false - xy: 956, 42 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Manufactory - rotate: false - xy: 1024, 54 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Mine - rotate: false - xy: 1386, 236 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Moai - rotate: false - xy: 1454, 231 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Mountain - rotate: false - xy: 1522, 230 - size: 32, 36 - orig: 32, 36 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Ocean - rotate: false - xy: 1692, 232 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Oil well - rotate: false - xy: 1726, 225 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pasture - rotate: false - xy: 1828, 232 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Pasture2 - rotate: false - xy: 1862, 232 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains - rotate: false - xy: 1964, 219 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+City - rotate: false - xy: 1058, 202 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Fallout - rotate: false - xy: 1058, 172 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Farm - rotate: false - xy: 1058, 142 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest - rotate: false - xy: 1058, 107 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest+Camp - rotate: false - xy: 1058, 72 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill - rotate: false - xy: 1092, 217 - size: 32, 33 - orig: 32, 33 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Jungle - rotate: false - xy: 1092, 180 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post - rotate: false - xy: 1126, 215 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plains+Trading post - rotate: false - xy: 1092, 150 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Plantation - rotate: false - xy: 1160, 222 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Polder - rotate: false - xy: 1126, 185 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Quarry - rotate: false - xy: 1092, 120 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-Bottom - rotate: false - xy: 1160, 190 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-BottomLeft - rotate: false - xy: 1126, 153 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-BottomRight - rotate: false - xy: 1092, 88 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-Top - rotate: false - xy: 1160, 158 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-TopLeft - rotate: false - xy: 1194, 190 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-TopRight - rotate: false - xy: 1228, 220 - size: 32, 30 - orig: 32, 30 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra - rotate: false - xy: 1126, 63 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Camp - rotate: false - xy: 1160, 68 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+City - rotate: false - xy: 1194, 67 - size: 32, 35 - orig: 32, 35 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Fallout - rotate: false - xy: 1228, 72 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest - rotate: false - xy: 1092, 26 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest+Camp - rotate: false - xy: 1126, 29 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill - rotate: false - xy: 1160, 34 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Tundra+Trading post - rotate: false - xy: 1194, 37 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/TopBorder - rotate: false - xy: 1228, 102 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Anti-Aircraft Gun - rotate: false - xy: 818, 20 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Anti-Tank Gun - rotate: false - xy: 920, 226 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Archer - rotate: false - xy: 1284, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Artillery - rotate: false - xy: 852, 20 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Ballista - rotate: false - xy: 1284, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Battleship - rotate: false - xy: 886, 22 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Destroyer - rotate: false - xy: 886, 22 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Berserker - rotate: false - xy: 988, 226 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Bowman - rotate: false - xy: 1284, 266 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Brute - rotate: false - xy: 1318, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Camel Archer - rotate: false - xy: 1352, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cannon - rotate: false - xy: 1318, 266 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Caravel - rotate: false - xy: 1352, 298 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Catapult - rotate: false - xy: 1386, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cavalry - rotate: false - xy: 1352, 268 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Chariot Archer - rotate: false - xy: 1386, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Chu-Ko-Nu - rotate: false - xy: 1420, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/CivilianLandUnit - rotate: false - xy: 1488, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Companion Cavalry - rotate: false - xy: 1454, 291 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Conquistador - rotate: false - xy: 1488, 298 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cossack - rotate: false - xy: 1590, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Crossbowman - rotate: false - xy: 1624, 326 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Cruiser - rotate: false - xy: 1522, 298 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Foreign Legion - rotate: false - xy: 1590, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Frigate - rotate: false - xy: 1658, 291 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Galleass - rotate: false - xy: 1692, 298 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Galley - rotate: false - xy: 1420, 263 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Gatling Gun - rotate: false - xy: 1454, 261 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Machine Gun - rotate: false - xy: 1454, 261 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Artist - rotate: false - xy: 1862, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Engineer - rotate: false - xy: 1896, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Worker - rotate: false - xy: 1896, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great General - rotate: false - xy: 1930, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Merchant - rotate: false - xy: 1964, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Settler - rotate: false - xy: 1964, 296 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great Scientist - rotate: false - xy: 1726, 255 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Great War Infantry - rotate: false - xy: 1760, 260 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Infantry - rotate: false - xy: 1760, 260 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Hoplite - rotate: false - xy: 956, 162 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Horseman - rotate: false - xy: 922, 81 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Hwach'a - rotate: false - xy: 956, 132 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Ironclad - rotate: false - xy: 922, 53 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Jaguar - rotate: false - xy: 956, 102 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Janissary - rotate: false - xy: 956, 72 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Keshik - rotate: false - xy: 990, 198 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Khan - rotate: false - xy: 990, 170 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Knight - rotate: false - xy: 990, 140 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Lancer - rotate: false - xy: 990, 80 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/LandUnit - rotate: false - xy: 666, 43 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Warrior - rotate: false - xy: 666, 43 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Landship - rotate: false - xy: 990, 50 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Landsknecht - rotate: false - xy: 1024, 209 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Legion - rotate: false - xy: 1024, 179 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Longbowman - rotate: false - xy: 1024, 149 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Longswordsman - rotate: false - xy: 1024, 119 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Mandekalu Cavalry - rotate: false - xy: 1024, 91 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Maori Warrior - rotate: false - xy: 1284, 236 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Marine - rotate: false - xy: 1318, 236 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Mechanized Infantry - rotate: false - xy: 1352, 240 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Minuteman - rotate: false - xy: 1420, 233 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Mohawk Warrior - rotate: false - xy: 1488, 238 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Musketeer - rotate: false - xy: 1556, 236 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Musketman - rotate: false - xy: 1590, 233 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Naresuan's Elephant - rotate: false - xy: 1624, 230 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Norwegian Ski Infantry - rotate: false - xy: 1658, 228 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Panzer - rotate: false - xy: 1760, 232 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Paratrooper - rotate: false - xy: 1794, 231 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Persian Immortal - rotate: false - xy: 1896, 232 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Pikeman - rotate: false - xy: 1930, 219 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Rifleman - rotate: false - xy: 1194, 222 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Rocket Artillery - rotate: false - xy: 1126, 123 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Scout - rotate: false - xy: 1160, 128 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Ship of the Line - rotate: false - xy: 1194, 162 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Sipahi - rotate: false - xy: 1228, 192 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Slinger - rotate: false - xy: 1126, 93 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Spearman - rotate: false - xy: 1160, 98 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Submarine - rotate: false - xy: 1194, 134 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Swordsman - rotate: false - xy: 1228, 162 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Tank - rotate: false - xy: 1194, 104 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Tercio - rotate: false - xy: 1228, 132 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Trebuchet - rotate: false - xy: 1058, 42 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Trireme - rotate: false - xy: 1092, 60 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Turtle Ship - rotate: false - xy: 1228, 44 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/War Chariot - rotate: false - xy: 1024, 24 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/War Elephant - rotate: false - xy: 990, 22 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/WaterUnit - rotate: false - xy: 1058, 14 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Units/Work Boats - rotate: false - xy: 1488, 210 - size: 32, 26 - orig: 32, 26 - offset: 0, 0 - index: -1 -UnitIcons/Submarine - rotate: false - xy: 104, 308 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Swordsman - rotate: false - xy: 2, 104 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -UnitIcons/Tank +BuildingIcons/Taj Mahal rotate: false xy: 206, 308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Trebuchet +BuildingIcons/Temple rotate: false - xy: 410, 206 + xy: 104, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Triplane +BuildingIcons/Terracotta Army rotate: false - xy: 512, 308 + xy: 104, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Trireme +BuildingIcons/The Great Library rotate: false - xy: 614, 409 - size: 100, 101 - orig: 100, 101 - offset: 0, 0 - index: -1 -UnitIcons/Turtle Ship - rotate: false - xy: 410, 104 + xy: 206, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/War Chariot +BuildingIcons/The Great Lighthouse + rotate: false + xy: 308, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/The Louvre + rotate: false + xy: 410, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/The Oracle + rotate: false + xy: 206, 104 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/The Pyramids + rotate: false + xy: 308, 206 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Theatre + rotate: false + xy: 512, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/University + rotate: false + xy: 614, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Walls rotate: false xy: 512, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/War Elephant +BuildingIcons/Walls of Babylon rotate: false xy: 512, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Warrior +BuildingIcons/Wat rotate: false - xy: 614, 205 + xy: 614, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Work Boats +BuildingIcons/Windmill rotate: false - xy: 920, 410 + xy: 818, 308 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Worker +BuildingIcons/Workshop rotate: false - xy: 716, 104 + xy: 818, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitIcons/Zero +ImprovementIcons/Trading post rotate: false - xy: 920, 308 + xy: 308, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -UnitPromotionIcons/Accuracy +NationIcons/The Ottomans rotate: false - xy: 614, 51 + xy: 206, 2 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Aircraft + rotate: false + xy: 1492, 460 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Air Repair +OtherIcons/BackArrow rotate: false - xy: 818, 154 + xy: 1648, 460 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Ambush +OtherIcons/Stop rotate: false - xy: 1022, 447 + xy: 104, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/TableBackground + rotate: false + xy: 1594, 356 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Barrage +OtherIcons/whiteDot rotate: false - xy: 818, 50 + xy: 1890, 230 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +PolicyIcons/Aristocracy + rotate: false + xy: 1596, 460 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Blitz +PolicyIcons/Citizenship rotate: false - xy: 1022, 343 + xy: 1960, 460 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Boarding Party +PolicyIcons/Civil Society rotate: false - xy: 870, 154 + xy: 1022, 300 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Bombardment +PolicyIcons/Collective Rule rotate: false - xy: 870, 102 + xy: 1176, 402 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Charge +PolicyIcons/Constitution rotate: false - xy: 870, 50 + xy: 1228, 402 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Coastal Raider +PolicyIcons/Democracy rotate: false - xy: 1024, 239 + xy: 1332, 402 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Cover +PolicyIcons/Entrepreneurship rotate: false - xy: 1189, 460 + xy: 986, 248 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -PolicyIcons/Discipline +PolicyIcons/Fascism rotate: false - xy: 1189, 460 + xy: 1024, 196 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -StatIcons/Strength +PolicyIcons/Free Religion rotate: false - xy: 1189, 460 + xy: 1090, 248 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Drill +PolicyIcons/Free Speech rotate: false - xy: 1293, 460 + xy: 1076, 196 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Evasion +PolicyIcons/Free Thought rotate: false - xy: 1397, 460 + xy: 884, 144 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Extended Range +PolicyIcons/Humanism rotate: false - xy: 1449, 460 + xy: 884, 40 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Operational Range +PolicyIcons/Landed Elite rotate: false - xy: 1449, 460 + xy: 988, 92 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Formation +PolicyIcons/Legalism rotate: false - xy: 1553, 460 + xy: 1040, 144 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Haka War Dance +PolicyIcons/Mandate Of Heaven rotate: false - xy: 1761, 460 + xy: 1040, 92 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Heal Instantly +PolicyIcons/Mercantilism rotate: false - xy: 1813, 460 + xy: 1092, 92 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Indirect Fire +PolicyIcons/Meritocracy rotate: false - xy: 1917, 460 + xy: 1092, 40 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Interception +PolicyIcons/Militarism rotate: false - xy: 1074, 408 + xy: 1128, 196 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Logistics +PolicyIcons/Military Caste rotate: false - xy: 1126, 356 + xy: 1144, 144 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/March +PolicyIcons/Military Tradition rotate: false - xy: 1178, 356 + xy: 1144, 92 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Medic +PolicyIcons/Monarchy rotate: false - xy: 1230, 408 + xy: 1388, 408 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Mobility +PolicyIcons/Oligarchy rotate: false - xy: 1386, 408 + xy: 1492, 408 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Scouting +PolicyIcons/Organized Religion rotate: false - xy: 1802, 408 + xy: 1544, 408 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Sentry +PolicyIcons/Patronage rotate: false - xy: 1802, 408 + xy: 1596, 408 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Shock +PolicyIcons/Police State rotate: false - xy: 1854, 408 + xy: 1648, 408 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -UnitPromotionIcons/Siege +PolicyIcons/Populism + rotate: false + xy: 1700, 408 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Professional Army + rotate: false + xy: 1752, 408 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Protectionism + rotate: false + xy: 1804, 408 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Reformation + rotate: false + xy: 1960, 408 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Representation + rotate: false + xy: 1126, 350 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Republic + rotate: false + xy: 1178, 350 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Scientific Revolution + rotate: false + xy: 1230, 350 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Secularism + rotate: false + xy: 1334, 350 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Sovereignty + rotate: false + xy: 1542, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Theocracy + rotate: false + xy: 1698, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Total War + rotate: false + xy: 1750, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Trade Unions + rotate: false + xy: 1802, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Universal Suffrage rotate: false xy: 1854, 356 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 +PolicyIcons/Warrior Code + rotate: false + xy: 1958, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +ResourceIcons/Stone + rotate: false + xy: 2, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Sugar + rotate: false + xy: 2, 104 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Uranium + rotate: false + xy: 716, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Whales + rotate: false + xy: 614, 2 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Wheat + rotate: false + xy: 716, 206 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ResourceIcons/Wine + rotate: false + xy: 920, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +StatIcons/InterceptRange + rotate: false + xy: 988, 144 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/Movement + rotate: false + xy: 1440, 408 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/Range + rotate: false + xy: 1856, 408 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/RangedStrength + rotate: false + xy: 1908, 408 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +TechIcons/The Wheel + rotate: false + xy: 410, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Theology + rotate: false + xy: 308, 104 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Trapping + rotate: false + xy: 410, 206 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TechIcons/Writing + rotate: false + xy: 920, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Academy + rotate: false + xy: 476, 64 + size: 32, 37 + orig: 32, 37 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Ancient ruins + rotate: false + xy: 818, 2 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Atoll + rotate: false + xy: 1088, 380 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Barbarian encampment + rotate: false + xy: 1490, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Barringer Crater + rotate: false + xy: 410, 45 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Cerro de Potosi + rotate: false + xy: 818, 148 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Citadel + rotate: false + xy: 478, 29 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/City + rotate: false + xy: 886, 3 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+City + rotate: false + xy: 886, 3 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+City + rotate: false + xy: 886, 3 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/City ruins + rotate: false + xy: 920, 10 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast + rotate: false + xy: 988, 10 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast+Oil well + rotate: false + xy: 1022, 10 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Customs house + rotate: false + xy: 1694, 319 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert + rotate: false + xy: 1728, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+City + rotate: false + xy: 1762, 321 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Fallout + rotate: false + xy: 1796, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Farm + rotate: false + xy: 1830, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Flood plains + rotate: false + xy: 1864, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Flood plains+Farm + rotate: false + xy: 1898, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Flood plains+Trading post + rotate: false + xy: 1932, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Oasis + rotate: false + xy: 1966, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Desert+Trading post + rotate: false + xy: 1124, 10 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/El Dorado + rotate: false + xy: 920, 248 + size: 64, 58 + orig: 64, 58 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fishing Boats + rotate: false + xy: 1158, 10 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fort + rotate: false + xy: 1524, 291 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Fountain of Youth + rotate: false + xy: 1022, 352 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grand Mesa + rotate: false + xy: 1124, 454 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland + rotate: false + xy: 1694, 289 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Fallout + rotate: false + xy: 1728, 296 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Farm + rotate: false + xy: 1762, 291 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest + rotate: false + xy: 1796, 293 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Camp + rotate: false + xy: 1830, 293 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Forest+Lumber mill + rotate: false + xy: 1864, 293 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Jungle + rotate: false + xy: 1898, 290 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Jungle+Camp + rotate: false + xy: 1932, 290 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Jungle+Trading post + rotate: false + xy: 1966, 290 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Marsh + rotate: false + xy: 2012, 391 + size: 32, 29 + orig: 32, 29 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Grassland+Trading post + rotate: false + xy: 2010, 361 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Great Barrier Reef + rotate: false + xy: 818, 90 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill + rotate: false + xy: 1932, 256 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Camp + rotate: false + xy: 1966, 256 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Customs house + rotate: false + xy: 1142, 286 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Fallout + rotate: false + xy: 1176, 286 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest + rotate: false + xy: 1210, 273 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest+Camp + rotate: false + xy: 1244, 273 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill + rotate: false + xy: 1278, 273 + size: 32, 45 + orig: 32, 45 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Mine + rotate: false + xy: 1142, 252 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Quarry + rotate: false + xy: 1176, 252 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Hill+Terrace Farm + rotate: false + xy: 1312, 286 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Krakatoa + rotate: false + xy: 1190, 454 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Lakes + rotate: false + xy: 1448, 246 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Landmark + rotate: false + xy: 1482, 236 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Manufactory + rotate: false + xy: 1516, 194 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Mine + rotate: false + xy: 1558, 270 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Moai + rotate: false + xy: 1626, 268 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Mount Fuji + rotate: false + xy: 818, 32 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Mountain + rotate: false + xy: 1694, 251 + size: 32, 36 + orig: 32, 36 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Ocean + rotate: false + xy: 1584, 210 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Oil well + rotate: false + xy: 1584, 180 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Old Faithful + rotate: false + xy: 1256, 454 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pasture + rotate: false + xy: 1796, 233 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Pasture2 + rotate: false + xy: 1830, 233 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains + rotate: false + xy: 1932, 226 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+City + rotate: false + xy: 1966, 219 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Fallout + rotate: false + xy: 1618, 238 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Farm + rotate: false + xy: 1618, 208 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest + rotate: false + xy: 1618, 173 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest+Camp + rotate: false + xy: 1652, 231 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill + rotate: false + xy: 1652, 196 + size: 32, 33 + orig: 32, 33 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Jungle + rotate: false + xy: 1686, 214 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post + rotate: false + xy: 1652, 159 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plains+Trading post + rotate: false + xy: 1686, 184 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Plantation + rotate: false + xy: 1686, 154 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Polder + rotate: false + xy: 1720, 208 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Quarry + rotate: false + xy: 1720, 178 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-Bottom + rotate: false + xy: 1754, 199 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-BottomLeft + rotate: false + xy: 1754, 167 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-BottomRight + rotate: false + xy: 1754, 135 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-Top + rotate: false + xy: 1550, 150 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-TopLeft + rotate: false + xy: 1584, 148 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-TopRight + rotate: false + xy: 1618, 141 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Rock of Gibraltar + rotate: false + xy: 1322, 454 + size: 64, 56 + orig: 64, 56 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra + rotate: false + xy: 1788, 201 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Camp + rotate: false + xy: 1788, 171 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+City + rotate: false + xy: 1788, 134 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Fallout + rotate: false + xy: 1822, 203 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest + rotate: false + xy: 1822, 169 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest+Camp + rotate: false + xy: 1856, 199 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill + rotate: false + xy: 1822, 135 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Trading post + rotate: false + xy: 1856, 169 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/TopBorder + rotate: false + xy: 2000, 266 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Anti-Aircraft Gun + rotate: false + xy: 410, 2 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Anti-Tank Gun + rotate: false + xy: 852, 2 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Archer + rotate: false + xy: 444, 2 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Artillery + rotate: false + xy: 2012, 482 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Ballista + rotate: false + xy: 1126, 320 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Battleship + rotate: false + xy: 1088, 352 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Destroyer + rotate: false + xy: 1088, 352 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Berserker + rotate: false + xy: 2012, 452 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Bowman + rotate: false + xy: 1160, 320 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Brute + rotate: false + xy: 1524, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Camel Archer + rotate: false + xy: 2012, 422 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cannon + rotate: false + xy: 1194, 320 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Caravel + rotate: false + xy: 1558, 328 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Catapult + rotate: false + xy: 1228, 320 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cavalry + rotate: false + xy: 1262, 320 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Chariot Archer + rotate: false + xy: 1296, 320 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Chu-Ko-Nu + rotate: false + xy: 1330, 320 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/CivilianLandUnit + rotate: false + xy: 954, 10 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Companion Cavalry + rotate: false + xy: 1592, 328 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Conquistador + rotate: false + xy: 1056, 12 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cossack + rotate: false + xy: 1626, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Crossbowman + rotate: false + xy: 1660, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Cruiser + rotate: false + xy: 1090, 12 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Foreign Legion + rotate: false + xy: 1490, 296 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Frigate + rotate: false + xy: 1558, 300 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Galleass + rotate: false + xy: 1592, 300 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Galley + rotate: false + xy: 1626, 298 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Gatling Gun + rotate: false + xy: 1660, 296 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Machine Gun + rotate: false + xy: 1660, 296 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Artist + rotate: false + xy: 1728, 266 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Engineer + rotate: false + xy: 1762, 261 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Worker + rotate: false + xy: 1762, 261 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great General + rotate: false + xy: 1796, 263 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Merchant + rotate: false + xy: 1830, 263 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Settler + rotate: false + xy: 1830, 263 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great Scientist + rotate: false + xy: 1864, 263 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Great War Infantry + rotate: false + xy: 1898, 260 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Infantry + rotate: false + xy: 1898, 260 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Hoplite + rotate: false + xy: 1180, 222 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Horseman + rotate: false + xy: 1346, 290 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Hwach'a + rotate: false + xy: 1312, 256 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Ironclad + rotate: false + xy: 1346, 262 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Jaguar + rotate: false + xy: 1380, 274 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Janissary + rotate: false + xy: 1414, 274 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Keshik + rotate: false + xy: 1448, 276 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Khan + rotate: false + xy: 1380, 246 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Knight + rotate: false + xy: 1414, 244 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Lancer + rotate: false + xy: 1482, 266 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/LandUnit + rotate: false + xy: 1346, 232 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Warrior + rotate: false + xy: 1346, 232 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Landship + rotate: false + xy: 1516, 261 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Landsknecht + rotate: false + xy: 1516, 231 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Legion + rotate: false + xy: 1380, 216 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Longbowman + rotate: false + xy: 1414, 214 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Longswordsman + rotate: false + xy: 1448, 216 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Mandekalu Cavalry + rotate: false + xy: 1482, 208 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Maori Warrior + rotate: false + xy: 1448, 186 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Marine + rotate: false + xy: 1482, 178 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Mechanized Infantry + rotate: false + xy: 1516, 166 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Minuteman + rotate: false + xy: 1592, 270 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Mohawk Warrior + rotate: false + xy: 1660, 266 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Musketeer + rotate: false + xy: 1550, 240 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Musketman + rotate: false + xy: 1584, 240 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Naresuan's Elephant + rotate: false + xy: 1550, 212 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Norwegian Ski Infantry + rotate: false + xy: 1550, 182 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Panzer + rotate: false + xy: 1728, 238 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Paratrooper + rotate: false + xy: 1762, 231 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Persian Immortal + rotate: false + xy: 1864, 233 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Pikeman + rotate: false + xy: 1898, 230 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Rifleman + rotate: false + xy: 1720, 148 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Rocket Artillery + rotate: false + xy: 1652, 129 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Scout + rotate: false + xy: 1686, 124 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Ship of the Line + rotate: false + xy: 1720, 120 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Sipahi + rotate: false + xy: 1754, 107 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Slinger + rotate: false + xy: 1214, 243 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Spearman + rotate: false + xy: 1248, 243 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Submarine + rotate: false + xy: 1214, 215 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Swordsman + rotate: false + xy: 1248, 213 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Tank + rotate: false + xy: 2000, 326 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Tercio + rotate: false + xy: 2000, 296 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Trebuchet + rotate: false + xy: 2000, 236 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Trireme + rotate: false + xy: 2000, 208 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Turtle Ship + rotate: false + xy: 1856, 141 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/War Chariot + rotate: false + xy: 1788, 104 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/War Elephant + rotate: false + xy: 1822, 107 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/WaterUnit + rotate: false + xy: 1856, 113 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Units/Work Boats + rotate: false + xy: 1890, 202 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/road + rotate: false + xy: 410, 32 + size: 61, 11 + orig: 61, 11 + offset: 0, 0 + index: -1 +TileSets/Default/road + rotate: false + xy: 410, 32 + size: 61, 11 + orig: 61, 11 + offset: 0, 0 + index: -1 +UnitIcons/Submarine + rotate: false + xy: 206, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Swordsman + rotate: false + xy: 2, 2 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Tank + rotate: false + xy: 308, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Trebuchet + rotate: false + xy: 512, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Triplane + rotate: false + xy: 614, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Trireme + rotate: false + xy: 410, 103 + size: 100, 101 + orig: 100, 101 + offset: 0, 0 + index: -1 +UnitIcons/Turtle Ship + rotate: false + xy: 512, 206 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/War Chariot + rotate: false + xy: 614, 206 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/War Elephant + rotate: false + xy: 716, 308 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Warrior + rotate: false + xy: 818, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Work Boats + rotate: false + xy: 716, 104 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Worker + rotate: false + xy: 716, 2 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitIcons/Zero + rotate: false + xy: 1022, 410 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Accuracy + rotate: false + xy: 1388, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Air Repair + rotate: false + xy: 1440, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Ambush + rotate: false + xy: 1544, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Barrage + rotate: false + xy: 1700, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Blitz + rotate: false + xy: 1752, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Boarding Party + rotate: false + xy: 1804, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Bombardment + rotate: false + xy: 1856, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Charge + rotate: false + xy: 1908, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Coastal Raider + rotate: false + xy: 1124, 402 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Cover + rotate: false + xy: 1280, 402 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +PolicyIcons/Discipline + rotate: false + xy: 1280, 402 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +StatIcons/Strength + rotate: false + xy: 1280, 402 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Drill + rotate: false + xy: 920, 196 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Evasion + rotate: false + xy: 972, 196 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Extended Range + rotate: false + xy: 1038, 248 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Operational Range + rotate: false + xy: 1038, 248 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Formation + rotate: false + xy: 1074, 300 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Haka War Dance + rotate: false + xy: 884, 92 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Heal Instantly + rotate: false + xy: 936, 144 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Indirect Fire + rotate: false + xy: 936, 92 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Interception + rotate: false + xy: 936, 40 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Logistics + rotate: false + xy: 988, 40 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/March + rotate: false + xy: 1040, 40 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Medic + rotate: false + xy: 1092, 144 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Mobility + rotate: false + xy: 1144, 40 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Scouting + rotate: false + xy: 1282, 350 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Sentry + rotate: false + xy: 1282, 350 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Shock + rotate: false + xy: 1386, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitPromotionIcons/Siege + rotate: false + xy: 1438, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 UnitPromotionIcons/Sortie rotate: false - xy: 1906, 408 + xy: 1490, 356 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting rotate: false - xy: 1958, 356 + xy: 1646, 356 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting I (air) rotate: false - xy: 1958, 356 + xy: 1646, 356 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Volley rotate: false - xy: 1180, 304 + xy: 1906, 356 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Wolfpack rotate: false - xy: 1232, 304 + xy: 1386, 304 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Woodsman rotate: false - xy: 1232, 252 + xy: 1438, 304 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/game.png b/android/assets/game.png index 7c432cdfb4..7a6202724b 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/android/assets/game2.png b/android/assets/game2.png index 3ba7de8eb3..ac3efa4961 100644 Binary files a/android/assets/game2.png and b/android/assets/game2.png differ diff --git a/android/assets/jsons/Nations/Nations.json b/android/assets/jsons/Nations/Nations.json index 0ebcbb54a2..0e31207137 100644 --- a/android/assets/jsons/Nations/Nations.json +++ b/android/assets/jsons/Nations/Nations.json @@ -769,7 +769,7 @@ "Almarikh","Ulaanbaatar","Hovd","Darhan","Dalandzadgad","Mandalgovi","Choybalsan","Erdenet","Tsetserieg", "Baruun-Urt","Ereen","Batshireet","Choyr","Ulaangom","Tosontsengel","Atlay","Uliastay","Bayanhongor", "Har-Ayrag","Nalayh","Tes"] - }, + },*/ { /////NEEDS NATURAL WONDERS name:"Spanish", @@ -802,12 +802,13 @@ outerColor:[102,0,0], innerColor:[255,102,102], uniqueName:"Seven Cities of Gold" - unique:"Gold nous for discovering a Natural Wonder (bonus enhanced if first to discover it). Culture, Happiness and tile yelds from Natural Wonders doubled.", + unique:"100 Gold for discovering a Natural Wonder (bonus enhanced to 500 Gold if first to discover it). Culture, Happiness and tile yelds from Natural Wonders doubled.", cities:["Madrid","Barcelona","Seville","Cordoba","Toledo","Santiago","Salamanca","Murcia","Valencia","Zaragoza","Pamplona", "Vitoria","Santander","Oviedo","Jaen","Logroño","Valladolid","Palma","Teruel","Almeria","Leon","Zamora","Mida", "Lugo","Alicante","Càdiz","Eiche","Alcorcon","Burgos","Vigo","Badajoz","La Coruña","Guadalquivir","Bilbao", "San Sebastian","Granada","Mérida","Huelva","Ibiza","Las Palmas","Tenerife"] }, + /* { name:"Incan", leaderName:"Pachacuti", diff --git a/android/assets/jsons/Terrains.json b/android/assets/jsons/Terrains.json index 843f40c8e6..a25c0754e3 100644 --- a/android/assets/jsons/Terrains.json +++ b/android/assets/jsons/Terrains.json @@ -138,5 +138,105 @@ movementCost:1, defenceBonus: -0.1, occursOn:["Desert"] + }, + + // Natural Wonders + { + name: "Barringer Crater", + type: "NaturalWonder", + gold: 2, + science: 3, + occursOn: ["Desert","Tundra"], + impassable: true, + unbuildable: true, + weight: 10 + }, + { + name: "Grand Mesa", + type: "NaturalWonder", + production: 2, + gold: 3, + occursOn: ["Plains","Desert","Tundra"], + impassable: true, + unbuildable: true, + weight: 10 + }, + { + name: "Great Barrier Reef", + type: "NaturalWonder", + food: 2, + production: 1, + gold: 1, + science: 2, + occursOn: ["Coast"], + impassable: true, + unbuildable: true, + weight: 10 + }, + { + name: "Krakatoa", + type: "NaturalWonder", + science: 5, + occursOn: ["Ocean"], + impassable: true, + unbuildable: true, + weight: 10 + }, + { + name: "Mount Fuji", + type: "NaturalWonder", + gold: 1, + culture: 5, + occursOn: ["Grassland","Plains"], + impassable: true, + unbuildable: true, + weight: 10 + }, + { + name: "Old Faithful", + type: "NaturalWonder", + science: 2, + happiness: 3, + occursOn: ["Grassland","Plains","Tundra","Mountain"], + impassable: true, + unbuildable: true, + weight: 10 + }, + { + name: "Rock of Gibraltar", + type: "NaturalWonder", + food: 2, + gold: 5, + occursOn: ["Grassland"], + impassable: true, + unbuildable: true, + weight: 10 + }, + { + name: "Cerro de Potosi", + type: "NaturalWonder", + gold: 10, + occursOn: ["Plains","Mountain"], + impassable: true, + unbuildable: true, + weight: 5 + }, + { + name: "El Dorado", + type: "NaturalWonder", + culture: 5, + occursOn: ["Plains"], + impassable: true, + unbuildable: true, + weight: 2 + }, + { + name: "Fountain of Youth", + type: "NaturalWonder", + happiness: 10, + occursOn: ["Plains"], + impassable: true, + unbuildable: true, + weight: 1 } ] diff --git a/android/assets/jsons/UnitPromotions.json b/android/assets/jsons/UnitPromotions.json index 96a8760019..a56f1f8746 100644 --- a/android/assets/jsons/UnitPromotions.json +++ b/android/assets/jsons/UnitPromotions.json @@ -408,4 +408,9 @@ name:"Haka War Dance", // only for Maori Warrior and subsequent upgrades effect:"-10% combat strength for adjacent enemy units" } + { + name:"Rejuvenation", // only for Units that have been close to Natural Wonder Fountain of Youth + effect:"All healing effects doubled" + } + ] \ No newline at end of file diff --git a/android/assets/jsons/translationsByLanguage/Czech.properties b/android/assets/jsons/translationsByLanguage/Czech.properties index bfefc7f3da..20a159509a 100644 --- a/android/assets/jsons/translationsByLanguage/Czech.properties +++ b/android/assets/jsons/translationsByLanguage/Czech.properties @@ -1145,6 +1145,29 @@ Ocean = Oceán Flood plains = Údolní niva Impassible = Nepřístupné +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Dobytek @@ -1449,3 +1472,5 @@ Ambush I = Přepadení I Ambush II = Přepadení II Haka War Dance = Haka - valečný tanec -10% combat strength for adjacent enemy units = -10% bojové síly pro nepřátelské jednotky na sousedních políčkách + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Dutch.properties b/android/assets/jsons/translationsByLanguage/Dutch.properties index 162c9a2467..c1d363fa0a 100644 --- a/android/assets/jsons/translationsByLanguage/Dutch.properties +++ b/android/assets/jsons/translationsByLanguage/Dutch.properties @@ -1935,6 +1935,29 @@ Flood plains = Riviervlakte # Requires translation! Impassible = +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Rundvee @@ -2461,3 +2484,5 @@ Ambush II = Haka War Dance = # Requires translation! -10% combat strength for adjacent enemy units = + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/English.properties b/android/assets/jsons/translationsByLanguage/English.properties index 3a2bab4976..5321433b9c 100644 --- a/android/assets/jsons/translationsByLanguage/English.properties +++ b/android/assets/jsons/translationsByLanguage/English.properties @@ -2181,6 +2181,29 @@ Flood plains = # Requires translation! Impassible = +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources # Requires translation! @@ -2766,3 +2789,5 @@ Ambush II = Haka War Dance = # Requires translation! -10% combat strength for adjacent enemy units = + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/French.properties b/android/assets/jsons/translationsByLanguage/French.properties index c8fe2dfb04..141b35fe9b 100644 --- a/android/assets/jsons/translationsByLanguage/French.properties +++ b/android/assets/jsons/translationsByLanguage/French.properties @@ -1181,6 +1181,29 @@ Ocean = Océan Flood plains = Plaines inondables Impassible = Impraticable +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Bétail @@ -1490,3 +1513,5 @@ Ambush I = Embuscade I Ambush II = Embuscade II Haka War Dance = Haka - Danse de guerre -10% combat strength for adjacent enemy units = -10% de force de combats pour toutes les unités ennemies adjacentes + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/German.properties b/android/assets/jsons/translationsByLanguage/German.properties index 0dd1a341ba..503352bbb5 100644 --- a/android/assets/jsons/translationsByLanguage/German.properties +++ b/android/assets/jsons/translationsByLanguage/German.properties @@ -1130,6 +1130,29 @@ Ocean = Ozean Flood plains = Flussaue Impassible = Unpassierbar +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Rinder @@ -1431,3 +1454,5 @@ Ambush I = Lufthinterhalt I Ambush II = Lufthinterhalt II Haka War Dance = Haka Kriegstanz -10% combat strength for adjacent enemy units = -10% Kampfstärke für angrenzende feindliche Einheiten + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Italian.properties b/android/assets/jsons/translationsByLanguage/Italian.properties index 8a89c07007..b067ba56ef 100644 --- a/android/assets/jsons/translationsByLanguage/Italian.properties +++ b/android/assets/jsons/translationsByLanguage/Italian.properties @@ -1115,6 +1115,19 @@ Ocean = Oceano Flood plains = Pianure allagate Impassible = Inaccessibile +# Natural Wonders + +Barringer Crater = Cratere di Barringer +Grand Mesa = Grand Mesa +Great Barrier Reef = Grande barriera corallina +Krakatoa = Krakatoa +Mount Fuji = Monte Fuji +Old Faithful = Old Faithful +Rock of Gibraltar = Rocca di Gibilterra +Cerro de Potosi = Cerro Rico +El Dorado = El Dorado +Fountain of Youth = Fonte della giovinezza + # Resources Cattle = Bestiame @@ -1415,3 +1428,4 @@ Ambush I = Imboscata aerea I Ambush II = Imboscata aerea II Haka War Dance = Danza di guerra Haka -10% combat strength for adjacent enemy units = -10% Forza alle unità nemiche adiacenti a questa unità +Rejuvenation = Ringiovanimento diff --git a/android/assets/jsons/translationsByLanguage/Korean.properties b/android/assets/jsons/translationsByLanguage/Korean.properties index dfc01e4e30..69d1b024b1 100644 --- a/android/assets/jsons/translationsByLanguage/Korean.properties +++ b/android/assets/jsons/translationsByLanguage/Korean.properties @@ -1138,6 +1138,29 @@ Ocean = 대양 Flood plains = 범람원 Impassible = 지나갈 수 없음 +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = 소 @@ -1439,3 +1462,5 @@ Ambush I = 공중 매복 I Ambush II = 공중 매복 II Haka War Dance = 하카 전쟁 의식 -10% combat strength for adjacent enemy units = 이 유닛과 인접한 적 유닛의 전투력 -10% + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Malay.properties b/android/assets/jsons/translationsByLanguage/Malay.properties index 5e400bd8a0..0cd34915f8 100644 --- a/android/assets/jsons/translationsByLanguage/Malay.properties +++ b/android/assets/jsons/translationsByLanguage/Malay.properties @@ -1988,6 +1988,29 @@ Flood plains = # Requires translation! Impassible = +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources # Requires translation! @@ -2577,3 +2600,5 @@ Ambush II = Haka War Dance = # Requires translation! -10% combat strength for adjacent enemy units = + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Polish.properties b/android/assets/jsons/translationsByLanguage/Polish.properties index fe1136c0dc..9f0b3ad0e8 100644 --- a/android/assets/jsons/translationsByLanguage/Polish.properties +++ b/android/assets/jsons/translationsByLanguage/Polish.properties @@ -1525,6 +1525,29 @@ Flood plains = # Requires translation! Impassible = +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources # Requires translation! @@ -1883,3 +1906,5 @@ Ambush I = Zasadzka I (lotnictwo) Ambush II = Zasadzka II (lotnictwo) Haka War Dance = Haka - taniec wojenny -10% combat strength for adjacent enemy units = -10% walecznej siły dla jednostek przeciwnika leżących na przyległych polach + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Portuguese.properties b/android/assets/jsons/translationsByLanguage/Portuguese.properties index 0c39fb35d5..45f1688455 100644 --- a/android/assets/jsons/translationsByLanguage/Portuguese.properties +++ b/android/assets/jsons/translationsByLanguage/Portuguese.properties @@ -1387,6 +1387,29 @@ Ocean = Oceano Flood plains = Planícies alagadas Impassible = Inacessível +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Gado @@ -1689,3 +1712,5 @@ Ambush I = Emboscada Aérea I Ambush II = Emboscada Aérea II Haka War Dance = Dança de Guerra Haka -10% combat strength for adjacent enemy units = -10% de força de combate para cada unidade inimiga adjacente + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Romanian.properties b/android/assets/jsons/translationsByLanguage/Romanian.properties index 3029fb2a06..1043828521 100644 --- a/android/assets/jsons/translationsByLanguage/Romanian.properties +++ b/android/assets/jsons/translationsByLanguage/Romanian.properties @@ -1643,6 +1643,29 @@ Ocean = Ocean Flood plains = Câmpii inundate Impassible = Inaccesibil +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Vite @@ -2082,3 +2105,5 @@ Ambush II = Haka War Dance = # Requires translation! -10% combat strength for adjacent enemy units = + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Russian.properties b/android/assets/jsons/translationsByLanguage/Russian.properties index a7111b0165..10e969653b 100644 --- a/android/assets/jsons/translationsByLanguage/Russian.properties +++ b/android/assets/jsons/translationsByLanguage/Russian.properties @@ -1187,6 +1187,29 @@ Ocean = Океан Flood plains = Пойма Impassible = Непроходимый +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Скот @@ -1504,3 +1527,5 @@ Ambush II = Засада II Haka War Dance = # Requires translation! -10% combat strength for adjacent enemy units = + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties b/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties index 02d3eb28ac..4f7134d39d 100644 --- a/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties +++ b/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties @@ -1141,6 +1141,29 @@ Ocean = 海洋 Flood plains = 冲积平原 Impassible = 不能通行 +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = 牛群 @@ -1443,3 +1466,5 @@ Ambush I = 伏击I级 Ambush II = 伏击II级 Haka War Dance = 哈卡战舞 -10% combat strength for adjacent enemy units = 相邻的敌方单位-10%战斗力 + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Spanish.properties b/android/assets/jsons/translationsByLanguage/Spanish.properties index c337b7a7a9..429e231433 100644 --- a/android/assets/jsons/translationsByLanguage/Spanish.properties +++ b/android/assets/jsons/translationsByLanguage/Spanish.properties @@ -1642,6 +1642,29 @@ Ocean = Océano Flood plains = Terreno inundable Impassible = Inpasable +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Ganado @@ -2080,3 +2103,5 @@ Ambush II = Haka War Dance = # Requires translation! -10% combat strength for adjacent enemy units = + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties b/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties index 34b5cbfb5f..23e20c0486 100644 --- a/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties +++ b/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties @@ -1126,6 +1126,29 @@ Ocean = 海洋 Flood plains = 沖積平原 Impassible = 不能通行 +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = 牛群 @@ -1428,3 +1451,5 @@ Ambush I = 伏擊I級 Ambush II = 伏擊II級 Haka War Dance = 哈卡戰舞 -10% combat strength for adjacent enemy units = 相鄰的敵方單位-10%戰鬥力 + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/Ukrainian.properties b/android/assets/jsons/translationsByLanguage/Ukrainian.properties index ecf44d9502..4001ea21cf 100644 --- a/android/assets/jsons/translationsByLanguage/Ukrainian.properties +++ b/android/assets/jsons/translationsByLanguage/Ukrainian.properties @@ -1456,6 +1456,29 @@ Ocean = Океан Flood plains = Заплави Impassible = Непрохідні +# Natural Wonders + + # Requires translation! +Barringer Crater = + # Requires translation! +Grand Mesa = + # Requires translation! +Great Barrier Reef = + # Requires translation! +Krakatoa = + # Requires translation! +Mount Fuji = + # Requires translation! +Old Faithful = + # Requires translation! +Rock of Gibraltar = + # Requires translation! +Cerro de Potosi = + # Requires translation! +El Dorado = + # Requires translation! +Fountain of Youth = + # Resources Cattle = Худоба @@ -1757,3 +1780,5 @@ Ambush I = Повітряна засідка I Ambush II = Повітряна засідка II Haka War Dance = Бойовий танець Гака -10% combat strength for adjacent enemy units = Сусідні ворожі підрозділи отримують силу атаки -10% + # Requires translation! +Rejuvenation = diff --git a/android/assets/jsons/translationsByLanguage/template.properties b/android/assets/jsons/translationsByLanguage/template.properties index 53591f9be8..c74b4a64db 100644 --- a/android/assets/jsons/translationsByLanguage/template.properties +++ b/android/assets/jsons/translationsByLanguage/template.properties @@ -1114,6 +1114,19 @@ Ocean = Flood plains = Impassible = +# Natural Wonders + +Barringer Crater = +Grand Mesa = +Great Barrier Reef = +Krakatoa = +Mount Fuji = +Old Faithful = +Rock of Gibraltar = +Cerro de Potosi = +El Dorado = +Fountain of Youth = + # Resources Cattle = @@ -1414,3 +1427,4 @@ Ambush I = Ambush II = Haka War Dance = -10% combat strength for adjacent enemy units = +Rejuvenation = diff --git a/core/src/com/unciv/Constants.kt b/core/src/com/unciv/Constants.kt index 1374a700f3..9f2bf2e9d5 100644 --- a/core/src/com/unciv/Constants.kt +++ b/core/src/com/unciv/Constants.kt @@ -17,6 +17,18 @@ class Constants{ const val grassland = "Grassland" const val tundra = "Tundra" + const val marsh = "Marsh" + + const val BarringerCrater = "Barringer Crater" + const val GrandMesa = "Grand Mesa" + const val GreatBarrierReef = "Great Barrier Reef" + const val Krakatoa = "Krakatoa" + const val MountFuji = "Mount Fuji" + const val OldFaithful = "Old Faithful" + const val RockOfGibraltar = "Rock of Gibraltar" + const val CerroDePotosi = "Cerro de Potosi" + const val ElDorado = "El Dorado" + const val FountainOfYouth = "Fountain of Youth" const val barbarianEncampment = "Barbarian encampment" const val ancientRuins = "Ancient ruins" diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 698a502008..14555f15b9 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -209,7 +209,6 @@ class CityConstructions { civ.addNotification("[$currentConstruction] has been built in [${cityInfo.name}]", cityInfo.location, Color.BROWN) else civ.addNotification("[$currentConstruction] has been built in a faraway land",null,Color.BROWN) - } } else cityInfo.civInfo.addNotification("[$currentConstruction] has been built in [" + cityInfo.name + "]", cityInfo.location, Color.BROWN) diff --git a/core/src/com/unciv/logic/civilization/CivInfoStats.kt b/core/src/com/unciv/logic/civilization/CivInfoStats.kt index 67da7b9c42..f4000845a5 100644 --- a/core/src/com/unciv/logic/civilization/CivInfoStats.kt +++ b/core/src/com/unciv/logic/civilization/CivInfoStats.kt @@ -126,6 +126,12 @@ class CivInfoStats(val civInfo: CivilizationInfo){ civInfo.policies.getAdoptedPolicies().count { !it.endsWith("Complete") }.toFloat() } + var happinessPerNaturalWonder = 1f + if (civInfo.nation.unique == "100 Gold for discovering a Natural Wonder (bonus enhanced to 500 Gold if first to discover it). Culture, Happiness and tile yelds from Natural Wonders doubled.") + happinessPerNaturalWonder *= 2 + + statMap["Natural Wonders"] = happinessPerNaturalWonder * civInfo.naturalWonders.size + //From city-states for (otherCiv in civInfo.getKnownCivs()) { if (otherCiv.isCityState() && otherCiv.getCityStateType() == CityStateType.Mercantile diff --git a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt index f03c59b1aa..9c8deaa5ce 100644 --- a/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt +++ b/core/src/com/unciv/logic/civilization/CivInfoTransientUpdater.kt @@ -7,6 +7,7 @@ import com.unciv.logic.map.TileInfo import com.unciv.models.ruleset.tile.ResourceSupplyList import java.util.* import kotlin.collections.HashMap +import kotlin.collections.HashSet import kotlin.collections.set /** CivInfo class was getting too crowded */ @@ -52,18 +53,46 @@ class CivInfoTransientUpdater(val civInfo: CivilizationInfo){ val viewedCivs = HashSet() + val viewedNaturalWonders = HashSet() for(tile in civInfo.viewableTiles){ val tileOwner = tile.getOwner() if(tileOwner!=null) viewedCivs+=tileOwner for(unit in tile.getUnits()) viewedCivs+=unit.civInfo + if (tile.naturalWonder != null) viewedNaturalWonders += tile } if(!civInfo.isBarbarian()) { - for (otherCiv in viewedCivs.filterNot { it == civInfo || it.isBarbarian() }) + for (otherCiv in viewedCivs.filterNot { it == civInfo || it.isBarbarian() }) { if (!civInfo.diplomacy.containsKey(otherCiv.civName)) { civInfo.meetCivilization(otherCiv) civInfo.addNotification("We have encountered ["+otherCiv.civName+"]!", null, Color.GOLD) } + } + + for (tile in viewedNaturalWonders) { + if (!civInfo.naturalWonders.contains(tile.naturalWonder)) { + civInfo.discoveryNaturalWonder(tile.naturalWonder!!) + civInfo.addNotification("We have discovered [" + tile.naturalWonder + "]!", tile.position, Color.GOLD) + + var goldGained = 0 + val discoveredNaturalWonders = civInfo.gameInfo.civilizations.filter { it != civInfo }.flatMap { it.naturalWonders } + if (tile.naturalWonder == "El Dorado" && !discoveredNaturalWonders.contains(tile.naturalWonder!!)) { + goldGained += 500 + } + + if (civInfo.nation.unique == "100 Gold for discovering a Natural Wonder (bonus enhanced to 500 Gold if first to discover it). Culture, Happiness and tile yelds from Natural Wonders doubled.") { + if (!discoveredNaturalWonders.contains(tile.naturalWonder!!)) + goldGained += 500 + else + goldGained += 100 + } + + if (goldGained > 0) { + civInfo.gold += goldGained + civInfo.addNotification("We have received " + goldGained + " Gold for discovering [" + tile.naturalWonder + "]", null, Color.GOLD) + } + } + } } } diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 0ea168900b..e39e04fe7e 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -59,6 +59,7 @@ class CivilizationInfo { var notifications = ArrayList() val popupAlerts = ArrayList() var allyCivName = "" + var naturalWonders = ArrayList() //** for trades here, ourOffers is the current civ's offers, and theirOffers is what the requesting civ offers */ val tradeRequests = ArrayList() @@ -101,6 +102,7 @@ class CivilizationInfo { toReturn.citiesCreated = citiesCreated toReturn.popupAlerts.addAll(popupAlerts) toReturn.tradeRequests.addAll(tradeRequests) + toReturn.naturalWonders.addAll(naturalWonders) return toReturn } @@ -258,6 +260,11 @@ class CivilizationInfo { UncivGame.Current.settings.addCompletedTutorialTask("Meet another civilization") } + fun discoveryNaturalWonder(naturalWonderName: String) + { + naturalWonders.add(naturalWonderName) + } + override fun toString(): String {return civName} // for debug fun isDefeated()= cities.isEmpty() && (citiesCreated > 0 || !getCivUnits().any {it.name== Constants.settler}) diff --git a/core/src/com/unciv/logic/map/MapGenerator.kt b/core/src/com/unciv/logic/map/MapGenerator.kt index c34a06a272..8d15c82114 100644 --- a/core/src/com/unciv/logic/map/MapGenerator.kt +++ b/core/src/com/unciv/logic/map/MapGenerator.kt @@ -6,8 +6,10 @@ import com.unciv.logic.HexMath import com.unciv.models.Counter import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.tile.ResourceType +import com.unciv.models.ruleset.tile.Terrain import com.unciv.models.ruleset.tile.TerrainType import java.util.* +import kotlin.collections.ArrayList import kotlin.collections.HashMap import kotlin.math.* @@ -49,6 +51,9 @@ class MapGenerator { randomizeResources(map, mapRadius, ruleset) + if (!mapParameters.noNaturalWonders) + spawnNaturalWonders(map, mapRadius, ruleset) + return map } @@ -212,6 +217,312 @@ class MapGenerator { spreadResource(mapToReturn, distance, ResourceType.Bonus, ruleset) } + /* + https://gaming.stackexchange.com/questions/95095/do-natural-wonders-spawn-more-closely-to-city-states/96479 + https://www.reddit.com/r/civ/comments/1jae5j/information_on_the_occurrence_of_natural_wonders/ + */ + fun spawnNaturalWonders(mapToReturn: TileMap, mapRadius: Int, ruleset: Ruleset) { + // number of Natural Wonders scales linearly with mapRadius as #wonders = mapRadius * 0.13133208 - 0.56128831 + val numberToSpawn = round(mapRadius * 0.13133208f - 0.56128831f).toInt() + + val toBeSpawned = ArrayList() + val allNaturalWonders = ruleset.Terrains.values.filter { it.type == TerrainType.NaturalWonder }.toMutableList() + + while (allNaturalWonders.isNotEmpty() && toBeSpawned.size < numberToSpawn) { + val totalWeight = allNaturalWonders.map { it.weight }.sum().toFloat() + val x = Random().nextDouble() + var cum = 0f + for (wonder in allNaturalWonders) { + cum += wonder.weight/totalWeight + if (x <= cum) { + toBeSpawned.add(wonder) + allNaturalWonders.remove(wonder) + break + } + } + } + + println("Natural Wonders for this game: ${toBeSpawned.toString()}") + + for (wonder in toBeSpawned) { + when (wonder.name) { + Constants.BarringerCrater -> spawnBarringerCrater(mapToReturn, ruleset) + Constants.MountFuji -> spawnMountFuji(mapToReturn, ruleset) + Constants.GrandMesa -> spawnGrandMesa(mapToReturn, ruleset) + Constants.GreatBarrierReef -> spawnGreatBarrierReef(mapToReturn, ruleset) + Constants.Krakatoa -> spawnKrakatoa(mapToReturn, ruleset) + Constants.RockOfGibraltar -> spawnRockOfGibraltar(mapToReturn, ruleset) + Constants.OldFaithful -> spawnOldFaithful(mapToReturn, ruleset) + Constants.CerroDePotosi -> spawnCerroDePotosi(mapToReturn, ruleset) + Constants.ElDorado -> spawnElDorado(mapToReturn, ruleset) + Constants.FountainOfYouth -> spawnFountainOfYouth(mapToReturn, ruleset) + } + } + } + + /* + Must be in tundra or desert; cannot be adjacent to grassland; can be adjacent to a maximum + of 2 mountains and a maximum of 4 hills and mountains; avoids oceans; becomes mountain + */ + private fun spawnBarringerCrater(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.BarringerCrater]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.grassland } + && it.neighbors.count{ neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } <= 2 + && it.neighbors.count{ neighbor -> neighbor.getBaseTerrain().name == Constants.mountain || neighbor.getBaseTerrain().name == Constants.hill} <= 4 + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.mountain + location.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Mt. Fuji: Must be in grass or plains; cannot be adjacent to tundra, desert, marsh, or mountains; + can be adjacent to a maximum of 2 hills; becomes mountain + */ + private fun spawnMountFuji(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.MountFuji]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.tundra } + && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.desert } + && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } + && it.neighbors.none { neighbor -> neighbor.getLastTerrain().name == Constants.marsh } + && it.neighbors.count{ neighbor -> neighbor.getBaseTerrain().name == Constants.hill } <= 2 + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.mountain + location.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Grand Mesa: Must be in plains, desert, or tundra, and must be adjacent to at least 2 hills; + cannot be adjacent to grass; can be adjacent to a maximum of 2 mountains; avoids oceans; becomes mountain + */ + private fun spawnGrandMesa(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.GrandMesa]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.count{ neighbor -> neighbor.getBaseTerrain().name == Constants.hill } >= 2 + && it.neighbors.none { neighbor -> neighbor.getBaseTerrain().name == Constants.grassland } + && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } <= 2 + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.mountain + location.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Great Barrier Reef: Specifics currently unknown; + Assumption: at least 1 neighbour not water; no tundra; at least 1 neighbour coast; becomes coast + TODO: investigate Great Barrier Reef placement requirements + */ + private fun spawnGreatBarrierReef(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.GreatBarrierReef]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.none{ neighbor -> neighbor.getBaseTerrain().name != Constants.tundra} + && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name != Constants.ocean + && neighbor.getBaseTerrain().name != Constants.coast } + && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name == Constants.coast + && neighbor.resource == null && neighbor.improvement == null} + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.coast + location.terrainFeature = null + + val location2 = location.neighbors + .filter { it.getBaseTerrain().name == Constants.coast && it.resource == null && it.improvement == null } + .random() + + location2.naturalWonder = wonder.name + location2.baseTerrain = Constants.coast + location2.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Krakatoa: Must spawn in the ocean next to at least 1 shallow water tile; cannot be adjacent + to ice; changes tiles around it to shallow water; mountain + TODO: cannot be adjacent to ice + */ + private fun spawnKrakatoa(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.Krakatoa]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name == Constants.coast } + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.mountain + location.terrainFeature = null + + for (tile in location.neighbors) { + if (tile.baseTerrain == Constants.coast) continue + tile.baseTerrain = Constants.coast + tile.terrainFeature = null + tile.resource = null + tile.improvement = null + } + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Rock of Gibraltar: Specifics currently unknown + Assumption: spawn on grassland, at least 1 coast and 1 mountain adjacent; + turn neighbours into coast) + TODO: investigate Rock of Gibraltar placement requirements + */ + private fun spawnRockOfGibraltar(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.RockOfGibraltar]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name == Constants.coast } + && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } == 1 + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.mountain + location.terrainFeature = null + + for (tile in location.neighbors) { + if (tile.baseTerrain == Constants.coast) continue + if (tile.baseTerrain == Constants.mountain) continue + + tile.baseTerrain = Constants.coast + tile.terrainFeature = null + tile.resource = null + tile.improvement = null + } + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Old Faithful: Must be adjacent to at least 3 hills and mountains; cannot be adjacent to + more than 4 mountains, and cannot be adjacent to more than 3 desert or 3 tundra tiles; + avoids oceans; becomes mountain + */ + private fun spawnOldFaithful(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.OldFaithful]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain } <= 4 + && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.mountain || + neighbor.getBaseTerrain().name == Constants.hill} >= 3 + && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.desert } <= 3 + && it.neighbors.count { neighbor -> neighbor.getBaseTerrain().name == Constants.tundra } <= 3 + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.mountain + location.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Cerro de Potosi: Must be adjacent to at least 1 hill; avoids oceans; becomes mountain + */ + private fun spawnCerroDePotosi(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.CerroDePotosi]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.any { neighbor -> neighbor.getBaseTerrain().name == Constants.hill } + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.mountain + location.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + El Dorado: Must be next to at least 1 jungle tile; avoids oceans; becomes flatland plains + */ + private fun spawnElDorado(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.ElDorado]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) + && it.neighbors.any { neighbor -> neighbor.getLastTerrain().name == Constants.jungle } + } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.plains + location.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + + /* + Fountain of Youth: Avoids oceans; becomes flatland plains + */ + private fun spawnFountainOfYouth(mapToReturn: TileMap, ruleset: Ruleset) { + val wonder = ruleset.Terrains[Constants.FountainOfYouth]!! + val suitableLocations = mapToReturn.values.filter { it.resource == null && it.improvement == null + && wonder.occursOn!!.contains(it.getLastTerrain().name) } + + if (suitableLocations.isNotEmpty()) { + val location = suitableLocations.random() + location.naturalWonder = wonder.name + location.baseTerrain = Constants.plains + location.terrainFeature = null + } + else { + println("No suitable location for ${wonder.name}") + } + } + // Here, we need each specific resource to be spread over the map - it matters less if specific resources are near each other private fun spreadStrategicResources(mapToReturn: TileMap, distance: Int, ruleset: Ruleset) { val resourcesOfType = ruleset.TileResources.values.filter { it.resourceType == ResourceType.Strategic } diff --git a/core/src/com/unciv/logic/map/MapParameters.kt b/core/src/com/unciv/logic/map/MapParameters.kt index a15481b34b..9bd4368b81 100644 --- a/core/src/com/unciv/logic/map/MapParameters.kt +++ b/core/src/com/unciv/logic/map/MapParameters.kt @@ -5,4 +5,5 @@ class MapParameters { var type = MapType.pangaea var radius = 20 var noRuins = false + var noNaturalWonders = false } \ No newline at end of file diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index ebb92eb2d2..2fbdaa50e9 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -356,6 +356,8 @@ class MapUnit { val adjacentUnits = currentTile.getTilesInDistance(1).flatMap { it.getUnits() } if (adjacentUnits.isNotEmpty()) amountToHealBy += adjacentUnits.map { it.adjacentHealingBonus() }.max()!! + if (hasUnique("All healing effects doubled")) + amountToHealBy *= 2 healBy(amountToHealBy) } @@ -422,7 +424,16 @@ class MapUnit { if(tile.improvement==Constants.barbarianEncampment && !civInfo.isBarbarian()) clearEncampment(tile) + // addPromotion requires currentTile to be valid because it accesses ruleset through it currentTile = tile + + if(!hasUnique("All healing effects doubled") && type.isLandUnit() && type.isMilitary()) + { + val gainDoubleHealPromotion = tile.neighbors.filter{it.naturalWonder == "Fountain of Youth"}.any() + if (gainDoubleHealPromotion) + promotions.addPromotion("Rejuvenation", true) + } + updateVisibleTiles() } diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index 041519a2c1..69ed694470 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -29,6 +29,7 @@ open class TileInfo { var position: Vector2 = Vector2.Zero lateinit var baseTerrain: String var terrainFeature: String? = null + var naturalWonder: String? = null var resource: String? = null var improvement: String? = null var improvementInProgress: String? = null @@ -48,6 +49,7 @@ open class TileInfo { toReturn.position=position.cpy() toReturn.baseTerrain=baseTerrain toReturn.terrainFeature=terrainFeature + toReturn.naturalWonder=naturalWonder toReturn.resource=resource toReturn.improvement=improvement toReturn.improvementInProgress=improvementInProgress @@ -81,13 +83,18 @@ open class TileInfo { fun getCity(): CityInfo? = owningCity - fun getLastTerrain(): Terrain = if (terrainFeature == null) getBaseTerrain() else getTerrainFeature()!! + fun getLastTerrain(): Terrain = if (terrainFeature != null) getTerrainFeature()!! else if(naturalWonder != null) getNaturalWonder() else getBaseTerrain() fun getTileResource(): TileResource = if (resource == null) throw Exception("No resource exists for this tile!") else ruleset.TileResources[resource!!]!! + fun getNaturalWonder() : Terrain = + if (naturalWonder == null) throw Exception("No natural wonder exists for this tile!") + else ruleset.Terrains[naturalWonder!!]!! + fun isCityCenter(): Boolean = getCity()?.location == position + fun isNaturalWonder() : Boolean = naturalWonder != null fun getTileImprovement(): TileImprovement? = if (improvement == null) null else ruleset.TileImprovements[improvement!!] @@ -155,6 +162,16 @@ open class TileInfo { stats.production += 1 } + if (naturalWonder != null) { + val wonder = getNaturalWonder() + stats.add(wonder) + + // Spain doubles tile yield + if (city != null && city.civInfo.nation.unique == "100 Gold for discovering a Natural Wonder (bonus enhanced to 500 Gold if first to discover it). Culture, Happiness and tile yelds from Natural Wonders doubled.") { + stats.add(wonder) + } + } + if (hasViewableResource(observingCiv)) { val resource = getTileResource() stats.add(getTileResource()) // resource base @@ -220,8 +237,8 @@ open class TileInfo { if(improvement.uniqueTo!=null && improvement.uniqueTo!=civInfo.civName) return false if (improvement.techRequired != null && !civInfo.tech.isResearched(improvement.techRequired!!)) return false - val topTerrain = if (terrainFeature == null) getBaseTerrain() else getTerrainFeature() - if (improvement.terrainsCanBeBuiltOn.contains(topTerrain!!.name)) return true + val topTerrain = getLastTerrain() + if (improvement.terrainsCanBeBuiltOn.contains(topTerrain.name)) return true if (improvement.name == "Road" && this.roadStatus === RoadStatus.None) return true if (improvement.name == "Railroad" && this.roadStatus !== RoadStatus.Railroad) return true @@ -284,6 +301,7 @@ open class TileInfo { lineList += baseTerrain.tr() if (terrainFeature != null) lineList += terrainFeature!!.tr() if (hasViewableResource(tileMap.gameInfo.getCurrentPlayerCivilization())) lineList += resource!!.tr() + if (naturalWonder != null) lineList += naturalWonder!!.tr() if (roadStatus !== RoadStatus.None && !isCityCenter()) lineList += roadStatus.toString().tr() if (improvement != null) lineList += improvement!!.tr() if (improvementInProgress != null && isViewableToPlayer) diff --git a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt index e7f62cfe6c..7b7c4687ac 100644 --- a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt +++ b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt @@ -288,6 +288,7 @@ class UnitMovementAlgorithms(val unit:MapUnit) { if(tile.isOcean && unit.baseUnit.uniques.contains("Cannot enter ocean tiles until Astronomy") && !unit.civInfo.tech.isResearched("Astronomy")) return false + if (tile.naturalWonder != null) return false val tileOwner = tile.getOwner() if(tileOwner!=null && tileOwner.civName!=unit.owner) { diff --git a/core/src/com/unciv/models/ruleset/tile/NaturalWonder.kt b/core/src/com/unciv/models/ruleset/tile/NaturalWonder.kt new file mode 100644 index 0000000000..4bb99a8a89 --- /dev/null +++ b/core/src/com/unciv/models/ruleset/tile/NaturalWonder.kt @@ -0,0 +1,21 @@ +package com.unciv.models.ruleset.tile + +import com.unciv.models.ruleset.tr +import com.unciv.models.stats.NamedStats +import java.util.* + +class NaturalWonder : NamedStats() { + fun getDescription(): String { + val stringBuilder = StringBuilder() + stringBuilder.appendln(this.clone().toString()) + val terrainsCanBeBuiltOnString: ArrayList = arrayListOf() + for (i in terrainsCanBeFoundOn) { + terrainsCanBeBuiltOnString.add(i.tr()) + } + stringBuilder.appendln("Can be found on ".tr() + terrainsCanBeBuiltOnString.joinToString(", ")) + return stringBuilder.toString() + } + + var size: Int = 1 + var terrainsCanBeFoundOn: List = listOf() +} \ No newline at end of file diff --git a/core/src/com/unciv/models/ruleset/tile/Terrain.kt b/core/src/com/unciv/models/ruleset/tile/Terrain.kt index fa81f4a7b7..9e98430991 100644 --- a/core/src/com/unciv/models/ruleset/tile/Terrain.kt +++ b/core/src/com/unciv/models/ruleset/tile/Terrain.kt @@ -47,6 +47,11 @@ class Terrain : NamedStats() { */ val occursOn: Collection? = null + /* + * Natural Wonder weight: probability to be picked + */ + var weight = 10 + /** * RGB color of base terrain */ diff --git a/core/src/com/unciv/models/ruleset/tile/TerrainType.kt b/core/src/com/unciv/models/ruleset/tile/TerrainType.kt index 8ee3560d0d..8548a949d5 100644 --- a/core/src/com/unciv/models/ruleset/tile/TerrainType.kt +++ b/core/src/com/unciv/models/ruleset/tile/TerrainType.kt @@ -3,5 +3,6 @@ package com.unciv.models.ruleset.tile enum class TerrainType { Land, Water, - TerrainFeature + TerrainFeature, + NaturalWonder } diff --git a/core/src/com/unciv/models/ruleset/unit/UnitType.kt b/core/src/com/unciv/models/ruleset/unit/UnitType.kt index 34eb535441..e871369443 100644 --- a/core/src/com/unciv/models/ruleset/unit/UnitType.kt +++ b/core/src/com/unciv/models/ruleset/unit/UnitType.kt @@ -50,6 +50,11 @@ enum class UnitType{ || this == WaterCivilian } + fun isMilitary(): Boolean { + return this != Civilian + && this != WaterCivilian + } + fun isWaterUnit(): Boolean { return this==WaterSubmarine || this==WaterRanged diff --git a/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt b/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt index c98d48ee35..2db3cbe690 100644 --- a/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt +++ b/core/src/com/unciv/ui/newgamescreen/MapParametersTable.kt @@ -17,6 +17,7 @@ class MapParametersTable(val mapParameters: MapParameters): Table(){ addMapTypeSelectBox() addWorldSizeSelectBox() addNoRuinsCheckbox() + addNoNaturalWondersCheckbox() } private fun addMapTypeSelectBox() { @@ -68,4 +69,15 @@ class MapParametersTable(val mapParameters: MapParameters): Table(){ }) add(noRuinsCheckbox).colspan(2).row() } + + private fun addNoNaturalWondersCheckbox() { + val noNaturalWondersCheckbox = CheckBox("No Natural Wonders".tr(), CameraStageBaseScreen.skin) + noNaturalWondersCheckbox.isChecked = mapParameters.noNaturalWonders + noNaturalWondersCheckbox.addListener(object : ChangeListener() { + override fun changed(event: ChangeEvent?, actor: Actor?) { + mapParameters.noNaturalWonders = noNaturalWondersCheckbox.isChecked + } + }) + add(noNaturalWondersCheckbox).colspan(2).row() + } } \ No newline at end of file diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index c69c85f812..d86f607b0c 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -48,6 +48,7 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) protected var terrainFeatureOverlayImage: Image? = null protected var terrainFeature: String? = null protected var cityImage: Image? = null + protected var naturalWonderImage: Image? = null protected var pixelMilitaryUnitImageLocation = "" protected var pixelMilitaryUnitImage: Image? = null @@ -140,6 +141,13 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) if (ImageGetter.imageExists(tileSetStrings.cityTile)) return listOf(tileSetStrings.cityTile) } + if (tileInfo.isNaturalWonder()) + { + val naturalWonder = tileSetStrings.getTile(tileInfo.naturalWonder!!) + if (ImageGetter.imageExists(naturalWonder)) + return listOf(naturalWonder) + } + val shouldShowImprovement = tileInfo.improvement!=null && UncivGame.Current.settings.showPixelImprovements val baseTerrainTileLocation = tileSetStrings.getTile(tileInfo.baseTerrain) if (tileInfo.terrainFeature != null) { @@ -233,6 +241,7 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) icons.update(showResourcesAndImprovements, tileIsViewable, showMilitaryUnit) updateCityImage() + updateNaturalWonderImage() updateTileColor(tileIsViewable) updateRoadImages() @@ -281,6 +290,28 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) } } + private fun updateNaturalWonderImage() { + if (naturalWonderImage == null && tileInfo.isNaturalWonder()) { + val naturalWonderOverlay = tileSetStrings.naturalWonderOverlay + if (!ImageGetter.imageExists(naturalWonderOverlay)) // Assume no natural wonder overlay = dedicated tile image + return + + naturalWonderImage = ImageGetter.getImage(naturalWonderOverlay) + terrainFeatureLayerGroup.addActor(naturalWonderImage) + naturalWonderImage!!.run { + color.a = 0.25f + setSize(40f, 40f) + center(this@TileGroup) + } + } + + // Is this possible? + if (naturalWonderImage != null && !tileInfo.isNaturalWonder()) { + naturalWonderImage!!.remove() + naturalWonderImage = null + } + } + var previousTileOwner: CivilizationInfo? = null private fun updateBorderImages() { // This is longer than it could be, because of performance - diff --git a/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt b/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt index fdbbe6f0c2..3b90bef57e 100644 --- a/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt +++ b/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt @@ -11,6 +11,7 @@ class TileSetStrings { val crosshatchHexagon = tileSetLocation+"CrosshatchHexagon" val cityOverlay = tileSetLocation+"CityOverlay" val railroad = tileSetLocation+"Railroad" + val naturalWonderOverlay = tileSetLocation+"NaturalWonderOverlay" val tilesLocation = tileSetLocation+"Tiles/" val cityTile = tilesLocation+"City"