diff --git a/android/Images/TileSets/FantasyHex/Tiles/Hill+Farm.png b/android/Images/TileSets/FantasyHex/Tiles/Hill+Farm.png new file mode 100644 index 0000000000..d95ff87210 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Hill+Farm.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Snow+Farm.png b/android/Images/TileSets/FantasyHex/Tiles/Snow+Farm.png new file mode 100644 index 0000000000..8cc5329096 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Snow+Farm.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/Tundra+Farm.png b/android/Images/TileSets/FantasyHex/Tiles/Tundra+Farm.png new file mode 100644 index 0000000000..bdcc276a28 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/Tundra+Farm.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index e98d6e4b7e..53dcd7c565 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -468,7 +468,7 @@ BuildingIcons/Paper Maker index: -1 BuildingIcons/Pentagon rotate: false - xy: 1124, 84 + xy: 1226, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -972,7 +972,7 @@ OtherIcons/Fire index: -1 OtherIcons/Hexagon rotate: false - xy: 304, 1804 + xy: 583, 1804 size: 277, 240 orig: 277, 240 offset: 0, 0 @@ -1035,7 +1035,7 @@ OtherIcons/Options index: -1 OtherIcons/Pentagon rotate: false - xy: 1226, 84 + xy: 1124, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1663,20 +1663,6 @@ TileSets/Default/CityOverlay orig: 100, 100 offset: 0, 0 index: -1 -TileSets/Default/CrosshatchHexagon - rotate: false - xy: 862, 1808 - size: 273, 236 - orig: 273, 236 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/CrosshatchHexagon - rotate: false - xy: 862, 1808 - size: 273, 236 - orig: 273, 236 - offset: 0, 0 - index: -1 TileSets/Default/FalloutOverlay rotate: false xy: 1226, 900 @@ -1698,20 +1684,6 @@ TileSets/Default/ForestOverlay orig: 100, 100 offset: 0, 0 index: -1 -TileSets/Default/Hexagon - rotate: false - xy: 583, 1804 - size: 277, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Hexagon - rotate: false - xy: 583, 1804 - size: 277, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 TileSets/Default/HillOverlay rotate: false xy: 716, 682 @@ -1768,6 +1740,34 @@ TileSets/Default/OasisOverlay orig: 100, 100 offset: 0, 0 index: -1 +TileSets/FantasyHex/CrosshatchHexagon + rotate: false + xy: 862, 1808 + size: 273, 236 + orig: 273, 236 + offset: 0, 0 + index: -1 +TileSets/Default/CrosshatchHexagon + rotate: false + xy: 862, 1808 + size: 273, 236 + orig: 273, 236 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Hexagon + rotate: false + xy: 304, 1804 + size: 277, 240 + orig: 277, 240 + offset: 0, 0 + index: -1 +TileSets/Default/Hexagon + rotate: false + xy: 304, 1804 + size: 277, 240 + orig: 277, 240 + offset: 0, 0 + index: -1 UnitIcons/Anti-Aircraft Gun rotate: false xy: 1348, 1410 @@ -2544,20 +2544,6 @@ ImprovementIcons/Quarry orig: 100, 100 offset: 0, 0 index: -1 -ImprovementIcons/Railroad - rotate: false - xy: 308, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TileSets/Default/Railroad - rotate: false - xy: 308, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 ImprovementIcons/Road rotate: false xy: 308, 718 @@ -3237,60 +3223,18 @@ TechIcons/Writing orig: 100, 100 offset: 0, 0 index: -1 -TileSets/Default/Tiles/River-Bottom +TileSets/Default/Railroad rotate: false - xy: 1570, 636 - size: 32, 28 - orig: 32, 28 + xy: 308, 922 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/River-Bottom +ImprovementIcons/Railroad rotate: false - xy: 1570, 636 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/Default/Tiles/River-BottomLeft - rotate: false - xy: 1570, 606 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-BottomLeft - rotate: false - xy: 1570, 606 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/Default/Tiles/River-BottomRight - rotate: false - xy: 1604, 684 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/River-BottomRight - rotate: false - xy: 1604, 684 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/Default/road - rotate: false - xy: 1226, 705 - size: 61, 11 - orig: 61, 11 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/road - rotate: false - xy: 1226, 705 - size: 61, 11 - orig: 61, 11 + xy: 308, 922 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 TileSets/FantasyHex/Railroad @@ -3755,541 +3699,604 @@ TileSets/FantasyHex/Tiles/Hill+Fallout orig: 32, 32 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest +TileSets/FantasyHex/Tiles/Hill+Farm rotate: false xy: 1142, 171 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Camp +TileSets/FantasyHex/Tiles/Hill+Forest rotate: false xy: 1108, 167 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill +TileSets/FantasyHex/Tiles/Hill+Forest+Camp rotate: false xy: 1176, 163 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Forest+Trading post +TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill rotate: false xy: 1210, 163 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Marble+Quarry +TileSets/FantasyHex/Tiles/Hill+Forest+Trading post rotate: false xy: 1244, 159 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Mine +TileSets/FantasyHex/Tiles/Hill+Marble+Quarry rotate: false xy: 1142, 141 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Stone+Quarry +TileSets/FantasyHex/Tiles/Hill+Mine rotate: false xy: 1176, 133 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Hill+Terrace farm +TileSets/FantasyHex/Tiles/Hill+Stone+Quarry rotate: false xy: 1210, 133 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 +TileSets/FantasyHex/Tiles/Hill+Terrace farm + rotate: false + xy: 1244, 129 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 TileSets/FantasyHex/Tiles/Horses rotate: false - xy: 1824, 778 + xy: 1824, 748 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Incense rotate: false - xy: 1858, 778 + xy: 1824, 718 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Iron rotate: false - xy: 1824, 718 + xy: 1858, 748 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ivory rotate: false - xy: 1892, 778 + xy: 1824, 688 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Krakatoa rotate: false - xy: 1858, 688 + xy: 1892, 718 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Lakes rotate: false - xy: 1892, 720 + xy: 1926, 750 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Landmark rotate: false - xy: 1892, 682 + xy: 1926, 682 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Manufactory rotate: false - xy: 1960, 709 + xy: 1960, 679 size: 32, 39 orig: 32, 39 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Marble rotate: false - xy: 1960, 649 + xy: 1994, 780 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mine rotate: false - xy: 1994, 780 + xy: 1994, 692 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Moai rotate: false - xy: 1994, 719 + xy: 1994, 631 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mount Fuji rotate: false - xy: 1994, 657 + xy: 2002, 932 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mountain rotate: false - xy: 1994, 619 + xy: 2002, 894 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean rotate: false - xy: 1416, 470 + xy: 1858, 628 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Atoll rotate: false - xy: 1382, 466 + xy: 1892, 628 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Ice rotate: false - xy: 1416, 440 + xy: 1926, 622 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil rotate: false - xy: 1278, 259 + xy: 1960, 619 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil well rotate: false - xy: 1278, 229 + xy: 1994, 601 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Old Faithful rotate: false - xy: 1278, 195 + xy: 1278, 255 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture rotate: false - xy: 1278, 107 + xy: 1278, 167 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Cattle rotate: false - xy: 956, 177 + xy: 1278, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Horses rotate: false - xy: 990, 186 + xy: 956, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Sheep rotate: false - xy: 958, 143 + xy: 956, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture2 rotate: false - xy: 956, 211 + xy: 1278, 137 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pearls rotate: false - xy: 958, 113 + xy: 958, 143 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains rotate: false - xy: 958, 23 + xy: 958, 53 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+City rotate: false - xy: 992, 149 + xy: 958, 16 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Fallout rotate: false - xy: 992, 119 + xy: 990, 190 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Farm rotate: false - xy: 992, 89 + xy: 992, 160 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest rotate: false - xy: 992, 55 + xy: 992, 126 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp rotate: false - xy: 992, 21 + xy: 992, 92 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill rotate: false - xy: 1468, 692 + xy: 992, 58 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle rotate: false - xy: 1468, 658 + xy: 992, 24 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post rotate: false - xy: 1468, 624 + xy: 1416, 436 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation rotate: false - xy: 1468, 594 + xy: 1312, 470 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Bananas rotate: false - xy: 1468, 726 + xy: 1346, 465 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Cotton rotate: false - xy: 1502, 719 + xy: 1312, 440 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Dyes rotate: false - xy: 1536, 719 + xy: 1346, 435 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Incense rotate: false - xy: 1502, 689 + xy: 1380, 436 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Silk rotate: false - xy: 1502, 659 + xy: 1312, 410 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Spices rotate: false - xy: 1536, 689 + xy: 1346, 405 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Sugar rotate: false - xy: 1502, 629 + xy: 1380, 406 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Wine rotate: false - xy: 1536, 659 + xy: 1414, 406 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Polder rotate: false - xy: 1502, 599 + xy: 1312, 380 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry rotate: false - xy: 1536, 629 + xy: 1346, 375 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Marble rotate: false - xy: 1536, 599 + xy: 1380, 376 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Stone rotate: false - xy: 1570, 696 + xy: 1414, 376 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-Bottom + rotate: false + xy: 1346, 345 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/Default/Tiles/River-Bottom + rotate: false + xy: 1346, 345 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-BottomLeft + rotate: false + xy: 1380, 346 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/Default/Tiles/River-BottomLeft + rotate: false + xy: 1380, 346 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/River-BottomRight + rotate: false + xy: 1414, 346 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/Default/Tiles/River-BottomRight + rotate: false + xy: 1414, 346 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Rock of Gibraltar rotate: false - xy: 1604, 650 + xy: 1312, 316 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sheep rotate: false - xy: 1638, 654 + xy: 1414, 316 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silk rotate: false - xy: 1672, 656 + xy: 1312, 258 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silver rotate: false - xy: 1672, 626 + xy: 1346, 285 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow rotate: false - xy: 1672, 596 + xy: 1346, 255 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Snow+Farm + rotate: false + xy: 1380, 258 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Spices rotate: false - xy: 1604, 562 + xy: 1312, 198 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Stone rotate: false - xy: 1638, 566 + xy: 1346, 225 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sugar rotate: false - xy: 1706, 642 + xy: 1414, 256 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Trading post rotate: false - xy: 1740, 580 + xy: 1312, 138 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra rotate: false - xy: 1672, 538 + xy: 1414, 196 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+City rotate: false - xy: 1638, 529 + xy: 1312, 101 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Fallout rotate: false - xy: 1774, 628 + xy: 1346, 135 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Tundra+Farm + rotate: false + xy: 1380, 142 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest rotate: false - xy: 1774, 594 + xy: 1414, 162 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp rotate: false - xy: 1808, 624 + xy: 1346, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Deer rotate: false - xy: 1774, 560 + xy: 1380, 108 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Furs rotate: false - xy: 1842, 624 + xy: 1414, 128 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill rotate: false - xy: 1808, 590 + xy: 1414, 94 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Uranium rotate: false - xy: 1842, 594 + xy: 1414, 64 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Whales rotate: false - xy: 1774, 530 + xy: 1448, 320 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wheat rotate: false - xy: 1808, 532 + xy: 1448, 290 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wine rotate: false - xy: 1842, 534 + xy: 1448, 260 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/TopBorder rotate: false - xy: 1740, 610 + xy: 1414, 226 size: 32, 28 orig: 32, 28 offset: 0, 0 @@ -4569,347 +4576,361 @@ TileSets/FantasyHex/Units/Infantry index: -1 TileSets/FantasyHex/Units/Hoplite rotate: false - xy: 1244, 129 + xy: 924, 31 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Horseman rotate: false - xy: 924, 31 + xy: 1824, 778 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hwach'a rotate: false - xy: 1824, 748 + xy: 1858, 778 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ironclad rotate: false - xy: 1858, 750 + xy: 1892, 780 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Jaguar rotate: false - xy: 1824, 688 + xy: 1858, 718 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Janissary rotate: false - xy: 1858, 720 + xy: 1892, 750 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Keshik rotate: false - xy: 1892, 750 + xy: 1926, 780 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Khan rotate: false - xy: 1926, 780 + xy: 1824, 660 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Knight rotate: false - xy: 1824, 658 + xy: 1858, 688 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Lancer rotate: false - xy: 1926, 750 + xy: 1892, 688 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/LandUnit rotate: false - xy: 1858, 658 + xy: 1926, 720 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Warrior rotate: false - xy: 1858, 658 + xy: 1926, 720 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landship rotate: false - xy: 1926, 720 + xy: 1858, 658 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landsknecht rotate: false - xy: 1926, 690 + xy: 1892, 658 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Legion rotate: false - xy: 1892, 652 + xy: 1926, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longbowman rotate: false - xy: 1926, 660 + xy: 1960, 778 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longswordsman rotate: false - xy: 1960, 778 + xy: 1960, 748 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mandekalu Cavalry rotate: false - xy: 1960, 750 + xy: 1960, 720 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Maori Warrior rotate: false - xy: 1960, 679 + xy: 1960, 649 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Marine rotate: false - xy: 1926, 630 + xy: 1994, 750 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mechanized Infantry rotate: false - xy: 1960, 621 + xy: 1994, 722 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Minuteman rotate: false - xy: 1994, 750 + xy: 1994, 662 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mohawk Warrior rotate: false - xy: 1994, 689 + xy: 2002, 964 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketeer rotate: false - xy: 2002, 964 + xy: 1416, 470 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketman rotate: false - xy: 2002, 934 + xy: 1382, 466 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Naresuan's Elephant rotate: false - xy: 2002, 906 + xy: 922, 3 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Norwegian Ski Infantry rotate: false - xy: 2002, 876 + xy: 1824, 630 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Panzer rotate: false - xy: 1278, 167 + xy: 1278, 227 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Paratrooper rotate: false - xy: 1278, 137 + xy: 1278, 197 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Persian Immortal rotate: false - xy: 958, 83 + xy: 958, 113 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Pikeman rotate: false - xy: 958, 53 + xy: 958, 83 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rifleman rotate: false - xy: 1570, 666 + xy: 1312, 350 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rocket Artillery rotate: false - xy: 1638, 684 + xy: 1346, 315 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Scout rotate: false - xy: 1604, 620 + xy: 1380, 316 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ship of the Line rotate: false - xy: 1638, 626 + xy: 1312, 288 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Sipahi rotate: false - xy: 1604, 592 + xy: 1380, 288 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Slinger rotate: false - xy: 1638, 596 + xy: 1312, 228 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Spearman rotate: false - xy: 1570, 576 + xy: 1414, 286 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Submarine rotate: false - xy: 1672, 568 + xy: 1380, 230 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Swordsman rotate: false - xy: 1706, 612 + xy: 1312, 168 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tank rotate: false - xy: 1706, 582 + xy: 1346, 195 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tercio rotate: false - xy: 1740, 640 + xy: 1380, 200 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trebuchet rotate: false - xy: 1706, 552 + xy: 1346, 165 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trireme rotate: false - xy: 1740, 552 + xy: 1380, 172 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Turtle Ship rotate: false - xy: 1808, 562 + xy: 1380, 80 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Chariot rotate: false - xy: 1842, 564 + xy: 1448, 406 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Elephant rotate: false - xy: 1706, 524 + xy: 1448, 378 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/WaterUnit rotate: false - xy: 1740, 524 + xy: 1448, 350 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Work Boats rotate: false - xy: 1672, 510 + xy: 1448, 232 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 +TileSets/FantasyHex/road + rotate: false + xy: 1226, 705 + size: 61, 11 + orig: 61, 11 + offset: 0, 0 + index: -1 +TileSets/Default/road + rotate: false + xy: 1226, 705 + size: 61, 11 + orig: 61, 11 + offset: 0, 0 + index: -1 UnitIcons/Rifleman rotate: false xy: 104, 514 diff --git a/android/assets/game.png b/android/assets/game.png index 606dd5f8db..817ce57d21 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 f47ce93a75..f1c2ff3173 100644 Binary files a/android/assets/game2.png and b/android/assets/game2.png differ diff --git a/android/assets/jsons/Civ V - Vanilla/Terrains.json b/android/assets/jsons/Civ V - Vanilla/Terrains.json index 53d0a049b5..eefb0dd190 100644 --- a/android/assets/jsons/Civ V - Vanilla/Terrains.json +++ b/android/assets/jsons/Civ V - Vanilla/Terrains.json @@ -87,7 +87,8 @@ "unbuildable": true, "defenceBonus": 0.25, "occursOn": ["Tundra","Plains","Grassland","Hill"], - "rough": true + "rough": true, + "uniques": ["Provides a one-time Production bonus to the closest city when cut down"] }, { "name": "Jungle", diff --git a/android/assets/jsons/Civ V - Vanilla/TileImprovements.json b/android/assets/jsons/Civ V - Vanilla/TileImprovements.json index 464335d0c3..b2b06aa42c 100644 --- a/android/assets/jsons/Civ V - Vanilla/TileImprovements.json +++ b/android/assets/jsons/Civ V - Vanilla/TileImprovements.json @@ -6,8 +6,7 @@ "food": 1, "turnsToBuild": 7, "techRequired": "Agriculture", - "improvingTech": "Fertilizer", - "improvingTechStats": {"food": 1} + "uniques": ["Can also be built on tiles adjacent to fresh water", "[+1 Food] on [fresh water] tiles once [Civil Service] is discovered", "[+1 Food] on [non-fresh water] tiles once [Fertilizer] is discovered"], }, { "name": "Lumber mill", @@ -15,8 +14,7 @@ "production": 1, "turnsToBuild": 7, "techRequired": "Construction", - "improvingTech": "Steam Power", - "improvingTechStats": {"production": 1} + "uniques": ["[+1 Production] once [Scientific Theory] is discovered"] }, { "name": "Mine", @@ -24,8 +22,7 @@ "production": 1, "turnsToBuild": 7, "techRequired": "Mining", - "improvingTech": "Chemistry", - "improvingTechStats": {"production": 1} + "uniques": ["[+1 Production] once [Chemistry] is discovered"] }, { "name": "Trading post", @@ -33,8 +30,7 @@ "gold": 1, "turnsToBuild": 7, "techRequired": "Guilds", - "improvingTech": "Economics", - "improvingTechStats": {"gold": 1} + "uniques": ["[+1 Gold] once [Economics] is discovered"] }, // Resource-specific @@ -43,8 +39,7 @@ "resourceTerrainAllow": ["Forest"], "turnsToBuild": 7, "techRequired": "Trapping", - "improvingTech": "Economics", - "improvingTechStats": {"gold": 1} + "uniques": ["[+1 Gold] once [Economics] is discovered"] }, { "name": "Oil well", @@ -55,31 +50,27 @@ "name": "Pasture", "turnsToBuild": 8, "techRequired": "Animal Husbandry", - "improvingTech": "Fertilizer", - "improvingTechStats": {"food": 1} + "uniques": ["[+1 Food] once [Fertilizer] is discovered"] }, { "name": "Plantation", "turnsToBuild": 6, "gold": 1, "techRequired": "Calendar", - "improvingTech": "Fertilizer", - "improvingTechStats": {"food": 1} + "uniques": ["[+1 Food] once [Fertilizer] is discovered"] }, { "name": "Quarry", "turnsToBuild": 8, "techRequired": "Masonry", - "improvingTech": "Chemistry", - "improvingTechStats": {"production": 1} + "uniques": ["[+1 Production] once [Chemistry] is discovered"] }, { "name": "Fishing Boats", "terrainsCanBeBuiltOn": ["Coast"], "food": 1, "techRequired": "Sailing", - "improvingTech": "Compass", - "improvingTechStats": {"gold": 1} + "uniques": ["[+1 Gold] once [Compass] is discovered"] }, // Military improvement @@ -110,28 +101,28 @@ "name": "Remove Forest", "turnsToBuild": 4, "terrainsCanBeBuiltOn": ["Forest"], - "techRequired": "Mining" + "techRequired": "Mining", "uniques": ["Can be built outside your borders"] }, { "name": "Remove Jungle", "turnsToBuild": 7, "terrainsCanBeBuiltOn": ["Jungle"], - "techRequired": "Bronze Working" + "techRequired": "Bronze Working", "uniques": ["Can be built outside your borders"] }, { "name": "Remove Fallout", "turnsToBuild": 8, "terrainsCanBeBuiltOn": ["Fallout"], - "techRequired": "Atomic Theory" + "techRequired": "Atomic Theory", "uniques": ["Can be built outside your borders"] }, { "name": "Remove Marsh", "turnsToBuild": 6, "terrainsCanBeBuiltOn": ["Marsh"], - "techRequired": "Bronze Working" + "techRequired": "Bronze Working", "uniques": ["Can be built outside your borders"] }, @@ -148,34 +139,30 @@ }, { "name": "Cancel improvement order", + "uniques": ["Can be built outside your borders"] }, // Great Person improvements { "name": "Academy", "science": 8, - "uniques": ["Great Improvement"], - "improvingTech": "Scientific Theory", - "improvingTechStats": {"science": 2} + "uniques": ["Great Improvement", "[+2 Science] once [Scientific Theory] is discovered"] + // in Gods & Kings academy will also have "[+2 Science] once [Atomic Theory] is discovered" }, { "name": "Landmark", "culture": 6, - "uniques": ["Great Improvement"], + "uniques": ["Great Improvement"] }, { "name": "Manufactory", "production": 4, - "improvingTech": "Chemistry", - "uniques": ["Great Improvement"], - "improvingTechStats": {"production": 1} + "uniques": ["Great Improvement", "[+1 Production] once [Chemistry] is discovered"] }, { "name": "Customs house", "gold": 4, - "improvingTech": "Economics", - "uniques": ["Great Improvement"], - "improvingTechStats": {"gold": 1} + "uniques": ["Great Improvement", "[+1 Gold] once [Economics] is discovered"] }, { "name": "Citadel", @@ -190,8 +177,7 @@ "turnsToBuild": 4, "uniques": ["[+1 Culture] for each adjacent [Moai]", "Can only be built on Coastal tiles"], "techRequired": "Construction", - "improvingTech": "Flight", - "improvingTechStats": {"gold": 1} + "uniques": ["[+1 Gold] once [Flight] is discovered"] }, { "name": "Terrace farm", @@ -199,10 +185,8 @@ "terrainsCanBeBuiltOn": ["Hill"], "food": 1, "turnsToBuild": 7, - "uniques": ["[+1 Food] for each adjacent [Mountain]", "Cannot be built on bonus resource"], - "techRequired": "Construction", - "improvingTech": "Fertilizer", - "improvingTechStats": {"food":1} + "uniques": ["[+1 Food] for each adjacent [Mountain]", "Cannot be built on bonus resource", "[+1 Food] on [fresh water] tiles once [Civil Service] is discovered", "[+1 Food] on [non-fresh water] tiles once [Fertilizer] is discovered"], + "techRequired": "Construction" }, { "name": "Ancient ruins" }, diff --git a/android/assets/jsons/translations/template.properties b/android/assets/jsons/translations/template.properties index 9507c6e0c6..3b3e4a11ce 100644 --- a/android/assets/jsons/translations/template.properties +++ b/android/assets/jsons/translations/template.properties @@ -434,6 +434,7 @@ Our proposed trade request is no longer relevant! = [defender] withdrew from a [attacker] = [building] has provided [amount] Gold! = [civName] has stolen your territory! = +Clearing a [forest] has created [amount] Production for [cityName] = # World Screen UI @@ -599,6 +600,8 @@ vs [unitType] = Terrain = Tile = Missing resource = +[stats] on [tileType] tiles = + from improvements: = Hurry Research = @@ -630,6 +633,8 @@ Water = # For [stats] from [Water resource] tiles in this city Water resource = River = +fresh water = +non-fresh water = Wonders = Base values = diff --git a/core/src/com/unciv/logic/automation/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/WorkerAutomation.kt index 707036a161..13cda51033 100644 --- a/core/src/com/unciv/logic/automation/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/WorkerAutomation.kt @@ -208,7 +208,9 @@ class WorkerAutomation(val unit: MapUnit) { tile.terrainFeature == Constants.forest -> "Lumber mill" tile.baseTerrain == Constants.hill -> "Mine" tile.baseTerrain in listOf(Constants.grassland,Constants.desert,Constants.plains) -> "Farm" - tile.baseTerrain == Constants.tundra -> Constants.tradingPost + tile.baseTerrain in listOf(Constants.tundra, Constants.snow) + && tile.isAdjacentToFreshwater -> "Farm" + tile.baseTerrain in listOf(Constants.tundra, Constants.snow) -> Constants.tradingPost else -> null } if (improvementString == null) return null diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 8b9e8b7f9b..25063f7ac4 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -372,7 +372,7 @@ class MapUnit { private fun workOnImprovement() { val tile = getTile() tile.turnsToImprovement -= 1 - if (tile.turnsToImprovement != 0 && !civInfo.gameInfo.gameParameters.godMode) return + if (tile.turnsToImprovement != 0) return if (civInfo.isCurrentPlayer()) UncivGame.Current.settings.addCompletedTutorialTask("Construct an improvement") @@ -387,7 +387,12 @@ class MapUnit { } if (tile.improvementInProgress == "Remove Road" || tile.improvementInProgress == "Remove Railroad") tile.roadStatus = RoadStatus.None - else tile.terrainFeature = null + else { + if (tile.tileMap.gameInfo.ruleSet.terrains[tile.terrainFeature]!!.uniques + .contains("Provides a one-time Production bonus to the closest city when cut down")) + tryProvideProductionToClosestCity() + tile.terrainFeature = null + } } tile.improvementInProgress == "Road" -> tile.roadStatus = RoadStatus.Road tile.improvementInProgress == "Railroad" -> tile.roadStatus = RoadStatus.Railroad @@ -399,6 +404,21 @@ class MapUnit { tile.improvementInProgress = null } + private fun tryProvideProductionToClosestCity() + { + val tile = getTile() + val closestCity = civInfo.cities.minBy { it.getCenterTile().aerialDistanceTo(tile) } + if (closestCity == null) return + val distance = closestCity.getCenterTile().aerialDistanceTo(tile) + var productionPointsToAdd = if (distance == 1) 20 else 20 - (distance - 2) * 5 + if (tile.owningCity == null || tile.owningCity!!.civInfo != civInfo ) productionPointsToAdd = productionPointsToAdd * 2 / 3 + if (productionPointsToAdd > 0) { + closestCity.cityConstructions.addProductionPoints(productionPointsToAdd) + civInfo.addNotification("Clearing a [${tile.terrainFeature}] has created [$productionPointsToAdd] Production for [${closestCity.name}]", closestCity.location, Color.BROWN) + } + + } + private fun heal() { if (isEmbarked()) return // embarked units can't heal var amountToHealBy = rankTileForHealing(getTile()) diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index d1a4dd2b57..67749809bd 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -243,16 +243,24 @@ open class TileInfo { if (hasViewableResource(observingCiv) && getTileResource().improvement == improvement.name) stats.add(getTileResource().improvementStats!!.clone()) // resource-specific improvement + // As of 3.10.5 This is to be deprecated and converted to "[stats] once [tech] is discovered" - keeping it here to that mods with this can still work for now if (improvement.improvingTech != null && observingCiv.tech.isResearched(improvement.improvingTech!!)) stats.add(improvement.improvingTechStats!!) // eg Chemistry for mines + for (unique in improvement.uniqueObjects) if (unique.placeholderText == "[] once [] is discovered" + && observingCiv.tech.isResearched(unique.params[1])) stats.add(Stats.parse(unique.params[0])) if(city!=null) { val cityWideUniques = city.cityConstructions.builtBuildingUniqueMap.getUniques("[] from [] tiles in this city") val civWideUniques = city.civInfo.getMatchingUniques("[] from every []") - for (unique in cityWideUniques + civWideUniques) { + val improvementUniques = improvement.uniqueObjects.filter { it.placeholderText == "[] on [] tiles once [] is discovered" + && observingCiv.tech.isResearched(it.params[2]) } + for (unique in cityWideUniques + civWideUniques + improvementUniques) { if (improvement.name == unique.params[1] - || (unique.params[1] == "Great Improvement" && improvement.isGreatImprovement())) + || (unique.params[1] == "Great Improvement" && improvement.isGreatImprovement()) + || (unique.params[1] == "fresh water" && isAdjacentToFreshwater) + || (unique.params[1] == "non-fresh water" && !isAdjacentToFreshwater) + ) stats.add(Stats.parse(unique.params[0])) } } @@ -293,6 +301,8 @@ open class TileInfo { improvement.name == "Remove Railroad" && this.roadStatus == RoadStatus.Railroad -> true improvement.name == Constants.cancelImprovementOrder && this.improvementInProgress != null -> true topTerrain.unbuildable && (topTerrain.name !in improvement.resourceTerrainAllow) -> false + improvement.hasUnique("Can also be built on tiles adjacent to fresh water") + && isAdjacentToFreshwater -> true "Can only be built on Coastal tiles" in improvement.uniques && isCoastalTile() -> true else -> hasViewableResource(civInfo) && getTileResource().improvement == improvement.name } @@ -431,7 +441,7 @@ open class TileInfo { fun startWorkingOnImprovement(improvement: TileImprovement, civInfo: CivilizationInfo) { improvementInProgress = improvement.name - turnsToImprovement = improvement.getTurnsToBuild(civInfo) + turnsToImprovement = if (civInfo.gameInfo.gameParameters.godMode) 1 else improvement.getTurnsToBuild(civInfo) } fun stopWorkingOnImprovement() { diff --git a/core/src/com/unciv/models/ruleset/tech/Technology.kt b/core/src/com/unciv/models/ruleset/tech/Technology.kt index 98de11fa6d..b19285cde9 100644 --- a/core/src/com/unciv/models/ruleset/tech/Technology.kt +++ b/core/src/com/unciv/models/ruleset/tech/Technology.kt @@ -24,6 +24,19 @@ class Technology { val lineList = ArrayList() // more readable than StringBuilder, with same performance for our use-case for (unique in uniques) lineList += unique.tr() + val mapOfImprovedImprovements = HashMap>() + for (improvement in ruleset.tileImprovements.values) for ( unique in improvement.uniqueObjects + .filter { it.placeholderText in setOf("[] once [] is discovered", "[] on [] tiles once [] is discovered") + && it.params.last() == name }) { + val key = if (unique.params.size == 2 ) unique.params[0] else "[${unique.params[0]}] on [${unique.params[1]}] tiles" + if (!mapOfImprovedImprovements.containsKey(key)) mapOfImprovedImprovements[key] = ArrayList() + mapOfImprovedImprovements[key]!!.add(improvement.name) + } + for ( improvements in mapOfImprovedImprovements) { + val impimpString = improvements.key.tr() + " from improvements: ".tr() + improvements.value.joinToString(", ") { it.tr() } + lineList += impimpString + } + val improvedImprovements = ruleset.tileImprovements.values .filter { it.improvingTech == name }.groupBy { it.improvingTechStats.toString() } for (improvement in improvedImprovements) { diff --git a/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt b/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt index 317f396e4e..f9aac36b79 100644 --- a/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt +++ b/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt @@ -19,7 +19,9 @@ class TileImprovement : NamedStats() { var techRequired: String? = null + @Deprecated("Deprecated as of 3.10.5. Use [stats] once [tech] is discovered unique instead") var improvingTech: String? = null + @Deprecated("Deprecated as of 3.10.5. Use [stats] once [tech] is discovered unique instead") var improvingTechStats: Stats? = null var uniqueTo:String? = null var uniques = ArrayList() diff --git a/core/src/com/unciv/ui/mapeditor/TileEditorOptionsTable.kt b/core/src/com/unciv/ui/mapeditor/TileEditorOptionsTable.kt index 7fe20d2034..d4bfc46e46 100644 --- a/core/src/com/unciv/ui/mapeditor/TileEditorOptionsTable.kt +++ b/core/src/com/unciv/ui/mapeditor/TileEditorOptionsTable.kt @@ -539,6 +539,8 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera -> if (topTerrain.unbuildable && improvement.isGreatImprovement()) tileInfo.terrainFeature = null topTerrain.unbuildable -> tileInfo.improvement = null // forbid on unbuildable feature + improvement.hasUnique("Can also be built on tiles adjacent to fresh water") + && tileInfo.isAdjacentToFreshwater -> Unit // allow farms on tiles adjacent to fresh water "Can only be built on Coastal tiles" in improvement.uniques && tileInfo.isCoastalTile() -> Unit // allow Moai where appropriate else -> tileInfo.improvement = null diff --git a/core/src/com/unciv/ui/pickerscreens/TechButton.kt b/core/src/com/unciv/ui/pickerscreens/TechButton.kt index a58c1aa0c7..37cfe219a8 100644 --- a/core/src/com/unciv/ui/pickerscreens/TechButton.kt +++ b/core/src/com/unciv/ui/pickerscreens/TechButton.kt @@ -54,7 +54,8 @@ class TechButton(techName:String, private val techManager: TechManager, isWorldS techEnabledIcons.add(ImageGetter.getConstructionImage(building.name).surroundWithCircle(techIconSize)) for (improvement in gameBasics.tileImprovements.values - .filter { it.techRequired == techName || it.improvingTech == techName } + .filter { it.techRequired == techName || it.uniqueObjects.any { u -> u.params.contains(techName) } + || it.improvingTech == techName } .filter { it.uniqueTo==null || it.uniqueTo==civName }) { if (improvement.name.startsWith("Remove")) techEnabledIcons.add(ImageGetter.getImage("OtherIcons/Stop")).size(techIconSize)