diff --git a/android/Images.Construction/BuildingIcons/Grand Temple.png b/android/Images.Construction/BuildingIcons/Grand Temple.png new file mode 100644 index 0000000000..08b4a0db5e Binary files /dev/null and b/android/Images.Construction/BuildingIcons/Grand Temple.png differ diff --git a/android/Images.Construction/BuildingIcons/Great Mosque of Djenne.png b/android/Images.Construction/BuildingIcons/Great Mosque of Djenne.png new file mode 100644 index 0000000000..7c022d8582 Binary files /dev/null and b/android/Images.Construction/BuildingIcons/Great Mosque of Djenne.png differ diff --git a/android/Images.Construction/BuildingIcons/Mosque.png b/android/Images.Construction/BuildingIcons/Mosque.png index 53ca65c142..b47b3f7af8 100644 Binary files a/android/Images.Construction/BuildingIcons/Mosque.png and b/android/Images.Construction/BuildingIcons/Mosque.png differ diff --git a/android/assets/Atlases.json b/android/assets/Atlases.json index 8cf6e0eb27..786e736f1a 100644 --- a/android/assets/Atlases.json +++ b/android/assets/Atlases.json @@ -1 +1 @@ -[Tech,Flags,Skin,Construction] \ No newline at end of file +[Flags,Construction,Skin,Tech] \ No newline at end of file diff --git a/android/assets/Construction.atlas b/android/assets/Construction.atlas index dafe62e148..6171f4cc8e 100644 --- a/android/assets/Construction.atlas +++ b/android/assets/Construction.atlas @@ -235,604 +235,618 @@ BuildingIcons/Granary orig: 100, 100 offset: 0, 0 index: -1 +BuildingIcons/Grand Temple + rotate: false + xy: 112, 760 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +BuildingIcons/Great Mosque of Djenne + rotate: false + xy: 652, 1300 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 BuildingIcons/Great Wall rotate: false - xy: 760, 1408 + xy: 976, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hagia Sophia rotate: false - xy: 1192, 1840 + xy: 112, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanging Gardens rotate: false - xy: 112, 652 + xy: 328, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hanse rotate: false - xy: 220, 760 + xy: 436, 982 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Harbor rotate: false - xy: 328, 874 + xy: 544, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hermitage rotate: false - xy: 544, 1084 + xy: 760, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Heroic Epic rotate: false - xy: 652, 1192 + xy: 868, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Himeji Castle rotate: false - xy: 760, 1300 + xy: 976, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hospital rotate: false - xy: 1192, 1732 + xy: 4, 436 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hubble Space Telescope rotate: false - xy: 1300, 1840 + xy: 112, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Hydro Plant rotate: false - xy: 220, 652 + xy: 436, 874 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Ironworks rotate: false - xy: 652, 1084 + xy: 868, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Kremlin rotate: false - xy: 1408, 1840 + xy: 112, 436 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Krepost rotate: false - xy: 4, 328 + xy: 220, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Leaning Tower of Pisa rotate: false - xy: 436, 760 + xy: 652, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Library rotate: false - xy: 652, 976 + xy: 868, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Lighthouse rotate: false - xy: 760, 1084 + xy: 976, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Longhouse rotate: false - xy: 976, 1300 + xy: 1192, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Machu Picchu rotate: false - xy: 1300, 1624 + xy: 1516, 1840 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Manhattan Project rotate: false - xy: 1516, 1840 + xy: 112, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Market rotate: false - xy: 220, 436 + xy: 436, 658 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mausoleum of Halicarnassus rotate: false - xy: 328, 550 + xy: 544, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Medical Lab rotate: false - xy: 544, 760 + xy: 760, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Military Academy rotate: false - xy: 652, 868 + xy: 868, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Military Base rotate: false - xy: 760, 976 + xy: 976, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mint rotate: false - xy: 868, 1084 + xy: 1084, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monastery rotate: false - xy: 1624, 1840 + xy: 112, 220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monument rotate: false - xy: 4, 112 + xy: 220, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mosque rotate: false - xy: 112, 220 + xy: 328, 436 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mud Pyramid Mosque rotate: false - xy: 220, 328 + xy: 436, 550 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mughal Fort rotate: false - xy: 328, 442 + xy: 544, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Museum rotate: false - xy: 436, 544 + xy: 652, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/National College rotate: false - xy: 868, 976 + xy: 1084, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/National Epic rotate: false - xy: 976, 1084 + xy: 1192, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/National Treasury rotate: false - xy: 1084, 1192 + xy: 1300, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Neuschwanstein rotate: false - xy: 1192, 1300 + xy: 1408, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Notre Dame rotate: false - xy: 1408, 1516 + xy: 1624, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Nuclear Plant rotate: false - xy: 1624, 1732 + xy: 4, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Observatory rotate: false - xy: 4, 4 + xy: 220, 220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Opera House rotate: false - xy: 112, 112 + xy: 328, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Oxford University rotate: false - xy: 220, 220 + xy: 436, 442 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Pagoda rotate: false - xy: 328, 334 + xy: 544, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Palace rotate: false - xy: 436, 436 + xy: 652, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Paper Maker rotate: false - xy: 652, 653 + xy: 868, 869 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Pentagon rotate: false - xy: 868, 868 + xy: 1084, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Petra rotate: false - xy: 1084, 1084 + xy: 1300, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Porcelain Tower rotate: false - xy: 1300, 1300 + xy: 1516, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Public School rotate: false - xy: 1516, 1516 + xy: 1732, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Research Lab rotate: false - xy: 1624, 1624 + xy: 1840, 1840 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Booster rotate: false - xy: 112, 4 + xy: 328, 220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Cockpit rotate: false - xy: 220, 112 + xy: 436, 334 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Engine rotate: false - xy: 328, 226 + xy: 544, 436 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Stasis Chamber rotate: false - xy: 436, 328 + xy: 652, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Satrap's Court rotate: false - xy: 652, 545 + xy: 868, 761 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Seaport rotate: false - xy: 976, 868 + xy: 1192, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Shrine rotate: false - xy: 1300, 1192 + xy: 1516, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sistine Chapel rotate: false - xy: 1516, 1408 + xy: 1732, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Solar Plant rotate: false - xy: 1732, 1624 + xy: 220, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Spaceship Factory rotate: false - xy: 1840, 1732 + xy: 328, 112 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stable rotate: false - xy: 328, 118 + xy: 544, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stadium rotate: false - xy: 436, 220 + xy: 652, 436 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Statue of Liberty rotate: false - xy: 544, 328 + xy: 760, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Statue of Zeus rotate: false - xy: 652, 437 + xy: 868, 653 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stock Exchange rotate: false - xy: 868, 652 + xy: 1084, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stone Works rotate: false - xy: 976, 760 + xy: 1192, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stonehenge rotate: false - xy: 1084, 868 + xy: 1300, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sydney Opera House rotate: false - xy: 1408, 1192 + xy: 1624, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Taj Mahal rotate: false - xy: 1516, 1300 + xy: 1732, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Temple rotate: false - xy: 1732, 1516 + xy: 328, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Temple of Artemis rotate: false - xy: 1840, 1624 + xy: 436, 118 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Terracotta Army rotate: false - xy: 436, 112 + xy: 652, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Library rotate: false - xy: 544, 220 + xy: 760, 436 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Lighthouse rotate: false - xy: 652, 329 + xy: 868, 545 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Louvre rotate: false - xy: 760, 436 + xy: 976, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Oracle rotate: false - xy: 868, 544 + xy: 1084, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Pyramids rotate: false - xy: 976, 652 + xy: 1192, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Theatre rotate: false - xy: 1084, 760 + xy: 1300, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/United Nations rotate: false - xy: 1624, 1300 + xy: 1840, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/University rotate: false - xy: 1732, 1408 + xy: 436, 10 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Utopia Project rotate: false - xy: 1840, 1516 + xy: 544, 112 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls rotate: false - xy: 544, 112 + xy: 652, 220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls of Babylon rotate: false - xy: 652, 221 + xy: 760, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Wat rotate: false - xy: 1084, 652 + xy: 1192, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Water Mill rotate: false - xy: 1192, 760 + xy: 1300, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Windmill rotate: false - xy: 1300, 868 + xy: 1408, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Workshop rotate: false - xy: 1624, 1192 + xy: 1732, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1077,546 +1091,546 @@ UnitIcons/Giant Death Robot index: -1 UnitIcons/Great Artist rotate: false - xy: 112, 760 + xy: 220, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Engineer rotate: false - xy: 220, 868 + xy: 328, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great General rotate: false - xy: 328, 982 + xy: 436, 1090 size: 100, 94 orig: 100, 94 offset: 0, 0 index: -1 UnitIcons/Great Merchant rotate: false - xy: 436, 1084 + xy: 544, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Prophet rotate: false - xy: 544, 1192 + xy: 760, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great Scientist rotate: false - xy: 652, 1300 + xy: 868, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Bomber rotate: false - xy: 868, 1516 + xy: 1084, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Great War Infantry rotate: false - xy: 976, 1624 + xy: 1192, 1840 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Guided Missile rotate: false - xy: 1084, 1732 + xy: 4, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hakkapeliitta rotate: false - xy: 4, 544 + xy: 220, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Helicopter Gunship rotate: false - xy: 436, 976 + xy: 652, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hoplite rotate: false - xy: 868, 1408 + xy: 1084, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Horse Archer rotate: false - xy: 976, 1516 + xy: 1192, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Horseman rotate: false - xy: 1084, 1624 + xy: 1300, 1840 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hussar rotate: false - xy: 4, 436 + xy: 220, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Hwach'a rotate: false - xy: 112, 544 + xy: 328, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Infantry rotate: false - xy: 328, 766 + xy: 544, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Inquisitor rotate: false - xy: 436, 868 + xy: 652, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ironclad rotate: false - xy: 544, 976 + xy: 760, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Jaguar rotate: false - xy: 760, 1192 + xy: 976, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Janissary rotate: false - xy: 868, 1300 + xy: 1084, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Jet Fighter rotate: false - xy: 976, 1408 + xy: 1192, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Keshik rotate: false - xy: 1084, 1516 + xy: 1300, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Khan rotate: false - xy: 1192, 1624 + xy: 1408, 1840 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Knight rotate: false - xy: 1300, 1732 + xy: 4, 328 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Lancer rotate: false - xy: 112, 436 + xy: 328, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landship rotate: false - xy: 220, 544 + xy: 436, 766 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Landsknecht rotate: false - xy: 328, 658 + xy: 544, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Legion rotate: false - xy: 544, 868 + xy: 760, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longbowman rotate: false - xy: 868, 1192 + xy: 1084, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Longswordsman rotate: false - xy: 1084, 1408 + xy: 1300, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Machine Gun rotate: false - xy: 1192, 1516 + xy: 1408, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mandekalu Cavalry rotate: false - xy: 1408, 1732 + xy: 4, 220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Maori Warrior rotate: false - xy: 4, 220 + xy: 220, 436 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Marine rotate: false - xy: 112, 328 + xy: 328, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mechanized Infantry rotate: false - xy: 436, 652 + xy: 652, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Minuteman rotate: false - xy: 976, 1192 + xy: 1192, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Missile Cruiser rotate: false - xy: 1084, 1300 + xy: 1300, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Missionary rotate: false - xy: 1192, 1408 + xy: 1408, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mobile SAM rotate: false - xy: 1300, 1516 + xy: 1516, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Modern Armor rotate: false - xy: 1408, 1624 + xy: 1624, 1840 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Mohawk Warrior rotate: false - xy: 1516, 1732 + xy: 4, 112 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketeer rotate: false - xy: 544, 652 + xy: 760, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketman rotate: false - xy: 652, 761 + xy: 868, 977 size: 100, 99 orig: 100, 99 offset: 0, 0 index: -1 UnitIcons/Naresuan's Elephant rotate: false - xy: 760, 868 + xy: 976, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Norwegian Ski Infantry rotate: false - xy: 1300, 1408 + xy: 1516, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Nuclear Missile rotate: false - xy: 1516, 1624 + xy: 1732, 1840 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Nuclear Submarine rotate: false - xy: 1732, 1840 + xy: 112, 112 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Panzer rotate: false - xy: 544, 544 + xy: 760, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Paratrooper rotate: false - xy: 760, 760 + xy: 976, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Persian Immortal rotate: false - xy: 976, 976 + xy: 1192, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Pikeman rotate: false - xy: 1192, 1192 + xy: 1408, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Privateer rotate: false - xy: 1408, 1408 + xy: 1624, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rifleman rotate: false - xy: 1732, 1732 + xy: 112, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rocket Artillery rotate: false - xy: 1840, 1840 + xy: 220, 112 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Samurai rotate: false - xy: 544, 436 + xy: 760, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Scout rotate: false - xy: 760, 652 + xy: 976, 868 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Sea Beggar rotate: false - xy: 868, 760 + xy: 1084, 976 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Settler rotate: false - xy: 1084, 976 + xy: 1300, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ship of the Line rotate: false - xy: 1192, 1084 + xy: 1408, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Sipahi rotate: false - xy: 1408, 1300 + xy: 1624, 1516 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Slinger rotate: false - xy: 1624, 1516 + xy: 1840, 1732 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Spearman rotate: false - xy: 220, 4 + xy: 436, 226 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Stealth Bomber rotate: false - xy: 760, 544 + xy: 976, 760 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Submarine rotate: false - xy: 1192, 976 + xy: 1408, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Swordsman rotate: false - xy: 1300, 1084 + xy: 1516, 1300 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Tank rotate: false - xy: 1624, 1408 + xy: 1840, 1624 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Tercio rotate: false - xy: 328, 10 + xy: 544, 220 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trebuchet rotate: false - xy: 1192, 868 + xy: 1408, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Triplane rotate: false - xy: 1300, 976 + xy: 1516, 1192 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trireme rotate: false - xy: 1408, 1083 + xy: 1624, 1299 size: 100, 101 orig: 100, 101 offset: 0, 0 index: -1 UnitIcons/Turtle Ship rotate: false - xy: 1516, 1192 + xy: 1732, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Chariot rotate: false - xy: 760, 328 + xy: 868, 437 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Elephant rotate: false - xy: 868, 436 + xy: 976, 544 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Warrior rotate: false - xy: 976, 544 + xy: 1084, 652 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Work Boats rotate: false - xy: 1408, 975 + xy: 1516, 1084 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Worker rotate: false - xy: 1516, 1084 + xy: 1624, 1191 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Zero rotate: false - xy: 1732, 1300 + xy: 1840, 1408 size: 100, 100 orig: 100, 100 offset: 0, 0 diff --git a/android/assets/Construction.png b/android/assets/Construction.png index ad519f2b4f..1d9a2e0973 100644 Binary files a/android/assets/Construction.png and b/android/assets/Construction.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 8660a6de3d..d8cea59548 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -214,20 +214,6 @@ ImprovementIcons/Quarry orig: 100, 100 offset: 0, 0 index: -1 -ImprovementIcons/Railroad - rotate: false - xy: 220, 755 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TileSets/Default/Railroad - rotate: false - xy: 220, 755 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 ImprovementIcons/Road rotate: false xy: 220, 107 @@ -1705,6 +1691,20 @@ TileSets/Default/OasisOverlay orig: 100, 100 offset: 0, 0 index: -1 +TileSets/Default/Railroad + rotate: false + xy: 220, 755 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +ImprovementIcons/Railroad + rotate: false + xy: 220, 755 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 TileSets/Default/Road rotate: false xy: 4, 58 diff --git a/android/assets/jsons/Civ V - Vanilla/Buildings.json b/android/assets/jsons/Civ V - Vanilla/Buildings.json index 437d7ba2f5..4331933491 100644 --- a/android/assets/jsons/Civ V - Vanilla/Buildings.json +++ b/android/assets/jsons/Civ V - Vanilla/Buildings.json @@ -237,7 +237,7 @@ "maintenance": 4, "hurryCostModifier": 50, "uniques": ["Remove extra unhappiness from annexed cities", - "Can only be built in annexed cities"], + "Can only be built [in annexed cities]"], "requiredTech": "Mathematics" }, { @@ -454,6 +454,26 @@ "requiredTech": "Theology", "quote": "'For it soars to a height to match the sky, and as if surging up from among the other buildings it stands on high and looks down upon the remainder of the city, adorning it, because it is a part of it, but glorying in its own beauty' - Procopius, De Aedificis" }, + { + "name": "Great Mosque of Djenne", + "culture": 1, + "faith": 3, + "greatPersonPoints": {"Great Engineer": 1}, + "isWonder": true, + "uniques": ["Provides a free [Mosque] [in this city]", "Hidden when religion is disabled", + "[Missionary] units built [in this city] can [Spread Religion] [1] extra times", "[Great Prophet] units built [in this city] can [Spread Religion] [1] extra times"], + "requiredTech": "Theology", + "quote": "'With the magnificence of eternity before us, let time, with all its fluctuations, dwindle into its own littleness.' - Thomas Chalmers" + }, + { + "name": "Grand Temple", + "culture": 1, + "faith": 8, + "uniques": ["Requires a [Temple] in all cities", "Cost increases by [30] per owned city", + "[+100]% Natural religion spread [in this city]", "Hidden when religion is disabled", "Can only be built [in holy cities]"], + "requiredTech": "Theology", + "isNationalWonder": true + }, { "name": "Chichen Itza", "culture": 1, diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index ee5140787f..49bfaeffdb 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -596,13 +596,14 @@ class CityInfo { "in non-enemy foreign cities" -> viewingCiv != civInfo && !civInfo.isAtWarWith(viewingCiv) - "in foreign cities" -> - viewingCiv != civInfo + "in foreign cities" -> viewingCiv != civInfo + "in annexed cities" -> foundingCiv != civInfo.civName && !isPuppet + "in holy cities" -> religion.religionThisIsTheHolyCityOf != null + "in City-State cities" -> civInfo.isCityState() // This is only used in communication to the user indicating that only in cities with this // religion a unique is active. However, since religion uniques only come from the city itself, // this will always be true when checked. "in cities following this religion" -> true - "in City-State cities" -> civInfo.isCityState() else -> false } } diff --git a/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt b/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt index f516d60366..c0b8801249 100644 --- a/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt +++ b/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt @@ -33,10 +33,9 @@ class CityInfoConquestFunctions(val city: CityInfo){ private fun destroyBuildingsOnCapture() { city.apply { - // Remove all national wonders (must come after the palace relocation because that's a national wonder too!) for (building in cityConstructions.getBuiltBuildings()) { when { - building.hasUnique("Never destroyed when the city is captured") -> continue + building.hasUnique("Never destroyed when the city is captured") || building.isWonder -> continue building.hasUnique("Destroyed when the city is captured") -> cityConstructions.removeBuilding(building.name) else -> { diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 7397afb11c..283b5de2ab 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -7,7 +7,6 @@ import com.unciv.logic.GameInfo import com.unciv.logic.UncivShowableException import com.unciv.logic.automation.NextTurnAutomation import com.unciv.logic.automation.WorkerAutomation -import com.unciv.logic.battle.CityCombatant import com.unciv.logic.city.CityInfo import com.unciv.logic.civilization.RuinsManager.RuinsManager import com.unciv.logic.civilization.diplomacy.DiplomacyFlags @@ -40,8 +39,6 @@ import kotlin.math.max import kotlin.math.min import kotlin.math.pow import kotlin.math.roundToInt -import kotlin.system.measureNanoTime -import kotlin.system.measureTimeMillis class CivilizationInfo { @@ -812,6 +809,7 @@ class CivilizationInfo { placedUnit.religion = if (city != null) city.cityConstructions.cityInfo.religion.getMajorityReligionName() else religionManager.religion?.name + placedUnit.setupAbilityUses() } return placedUnit diff --git a/core/src/com/unciv/logic/civilization/ReligionManager.kt b/core/src/com/unciv/logic/civilization/ReligionManager.kt index 6fe00dfc1c..a278f47bc2 100644 --- a/core/src/com/unciv/logic/civilization/ReligionManager.kt +++ b/core/src/com/unciv/logic/civilization/ReligionManager.kt @@ -9,6 +9,7 @@ import com.unciv.ui.pickerscreens.BeliefContainer import kotlin.random.Random class ReligionManager { + @Transient lateinit var civInfo: CivilizationInfo @@ -32,9 +33,14 @@ class ReligionManager { var religionState = ReligionState.None private set + @Transient private var foundingCityId: String? = null // Only used for keeping track of the city a prophet was used when founding a religion + + @Transient + private var shouldChoosePantheonBelief: Boolean = false + fun clone(): ReligionManager { val clone = ReligionManager() clone.foundingCityId = foundingCityId @@ -134,7 +140,10 @@ class ReligionManager { fun mayFoundReligionAtAll(prophet: MapUnit): Boolean { if (religionState >= ReligionState.Religion) return false // Already created a major religion - if (prophet.abilityUsedCount.any { it.value != 0 }) return false // Already used its power for other things + + // Already used its power for other things + if (prophet.abilityUsesLeft.any { it.value != prophet.maxAbilityUses[it.key] }) return false + if (!civInfo.isMajorCiv()) return false // Only major civs may use religion val foundedReligionsCount = civInfo.gameInfo.civilizations.count { @@ -169,12 +178,13 @@ class ReligionManager { fun useProphetForFoundingReligion(prophet: MapUnit) { if (!mayFoundReligionNow(prophet)) return // How did you do this? + if (religionState == ReligionState.None) shouldChoosePantheonBelief = true religionState = ReligionState.FoundingReligion civInfo.religionManager.foundingCityId = prophet.getTile().getCity()!!.id } fun getBeliefsToChooseAtFounding(): BeliefContainer { - if (religionState == ReligionState.None) + if (shouldChoosePantheonBelief) return BeliefContainer(pantheonBeliefCount = 1, founderBeliefCount = 1, followerBeliefCount = 1) return BeliefContainer(founderBeliefCount = 1, followerBeliefCount = 1) } @@ -218,12 +228,14 @@ class ReligionManager { holyCity.religion.addPressure(name, holyCity.population.population * 500) foundingCityId = null + shouldChoosePantheonBelief = false } fun mayEnhanceReligionAtAll(prophet: MapUnit): Boolean { if (religion == null) return false // First found a pantheon if (religionState != ReligionState.Religion) return false // First found an actual religion - if (prophet.abilityUsedCount.any { it.value > 0 }) return false // Already used its ability for other things + // Already used its power for other things + if (prophet.abilityUsesLeft.any { it.value != prophet.maxAbilityUses[it.key] }) return false if (!civInfo.isMajorCiv()) return false // Only major civs if (civInfo.gameInfo.ruleSet.beliefs.values.none { diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 2056733f65..860560902a 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -5,6 +5,7 @@ import com.unciv.Constants import com.unciv.UncivGame import com.unciv.logic.automation.UnitAutomation import com.unciv.logic.automation.WorkerAutomation +import com.unciv.logic.city.CityInfo import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.civilization.LocationAction import com.unciv.logic.civilization.NotificationIcon @@ -123,7 +124,14 @@ class MapUnit { var due: Boolean = true var isTransported: Boolean = false - var abilityUsedCount: HashMap = hashMapOf() + // Deprecated since 3.16.11 + @Deprecated("Deprecated since 3.16.11", replaceWith = ReplaceWith("abilityUsesLeft")) + var abilityUsedCount: HashMap = hashMapOf() + // + + var abilityUsesLeft: HashMap = hashMapOf() + var maxAbilityUses: HashMap = hashMapOf() + var religion: String? = null var religiousStrengthLost = 0 @@ -141,7 +149,11 @@ class MapUnit { toReturn.attacksThisTurn = attacksThisTurn toReturn.promotions = promotions.clone() toReturn.isTransported = isTransported - toReturn.abilityUsedCount.putAll(abilityUsedCount) + // Deprecated since 3.16.11 + toReturn.abilityUsedCount.putAll(abilityUsedCount) + // + toReturn.abilityUsesLeft.putAll(abilityUsesLeft) + toReturn.maxAbilityUses.putAll(maxAbilityUses) toReturn.religion = religion toReturn.religiousStrengthLost = religiousStrengthLost return toReturn @@ -440,6 +452,20 @@ class MapUnit { // updateUniques() + + // abilityUsedCount deprecated since 3.16.11, this is replacement code + if (abilityUsedCount.isNotEmpty()) { + for (ability in abilityUsedCount) { + val maxUsesOfThisAbility = getMatchingUniques("Can [] [] times") + .filter { it.params[0] == ability.key } + .sumBy { it.params[1].toInt() } + abilityUsesLeft[ability.key] = maxUsesOfThisAbility - ability.value + maxAbilityUses[ability.key] = maxUsesOfThisAbility + } + abilityUsedCount.clear() + } + // + } fun useMovementPoints(amount: Float) { @@ -950,13 +976,31 @@ class MapUnit { fun canDoReligiousAction(action: String): Boolean { return getMatchingUniques("Can [] [] times").any { it.params[0] == action } } - - fun getMaxReligiousActionUses(action: String): Int { + + /** For the actual value, check the member variable `maxAbilityUses` + */ + fun getBaseMaxActionUses(action: String): Int { return getMatchingUniques("Can [] [] times") .filter { it.params[0] == action } .sumBy { it.params[1].toInt() } } + fun setupAbilityUses(buildCity: CityInfo? = null) { + for (action in religiousActionsUnitCanDo()) { + val baseAmount = getBaseMaxActionUses(action) + val additional = + if (buildCity == null) 0 + else buildCity.getMatchingUniques("[] units built [] can [] [] extra times") + .filter { matchesFilter(it.params[0]) && buildCity.matchesFilter(it.params[1]) && it.params[2] == action } + .sumBy { println("Addition ability found: ${it.params[1]}"); it.params[3].toInt() } + + maxAbilityUses[action] = baseAmount + additional + + abilityUsesLeft[action] = maxAbilityUses[action]!! + } + } + + fun getPressureAddedFromSpread(): Int { var pressureAdded = baseUnit.religiousStrength.toFloat() for (unique in civInfo.getMatchingUniques("[]% Spread Religion Strength for [] units")) @@ -967,9 +1011,9 @@ class MapUnit { } fun getActionString(action: String): String { - val maxActionUses = getMaxReligiousActionUses(action) - if (abilityUsedCount[action] == null) return "0/0" // Something went wrong - return "${maxActionUses - abilityUsedCount[action]!!}/${maxActionUses}" + val maxActionUses = maxAbilityUses[action] + if (abilityUsesLeft[action] == null) return "0/0" // Something went wrong + return "${abilityUsesLeft[action]!!}/${maxActionUses}" } fun actionsOnDeselect() { diff --git a/core/src/com/unciv/logic/map/TileMap.kt b/core/src/com/unciv/logic/map/TileMap.kt index 14b4a8561a..0511b68188 100644 --- a/core/src/com/unciv/logic/map/TileMap.kt +++ b/core/src/com/unciv/logic/map/TileMap.kt @@ -440,11 +440,6 @@ class TileMap { } } - // If this unit has special abilities that need to be kept track of, start doing so here - for (action in unit.religiousActionsUnitCanDo()) { - unit.abilityUsedCount[action] = 0 - } - // And update civ stats, since the new unit changes both unit upkeep and resource consumption civInfo.updateStatsForNextTurn() civInfo.updateDetailedCivResources() diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 6f18ff9b8e..48eab5276b 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -462,8 +462,11 @@ class Building : NamedStats(), INonPerpetualConstruction, ICivilopediaText { "Must have an owned [] within [] tiles" -> if (cityCenter.getTilesInDistance(unique.params[1].toInt()).none { it.matchesFilter(unique.params[0], civInfo) && it.getOwner() == construction.cityInfo.civInfo }) return unique.text - "Can only be built in annexed cities" -> if (construction.cityInfo.isPuppet - || construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv) return unique.text + // Deprecated since 3.16.11 + "Can only be built in annexed cities" -> if (construction.cityInfo.isPuppet + || construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv) return unique.text + // + "Can only be built []" -> if (!construction.cityInfo.matchesFilter(unique.params[0])) return unique.text "Obsolete with []" -> if (civInfo.tech.isResearched(unique.params[0])) return unique.text Constants.hiddenWithoutReligionUnique -> if (!civInfo.gameInfo.hasReligionEnabled()) return unique.text } diff --git a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt index 3e1e29f557..0610814cf1 100644 --- a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt +++ b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt @@ -325,8 +325,10 @@ class BaseUnit : INamed, INonPerpetualConstruction, ICivilopediaText { if (wasBought && !civInfo.gameInfo.gameParameters.godMode && !unit.hasUnique("Can move immediately once bought")) unit.currentMovement = 0f + // If this unit has special abilities that need to be kept track of, start doing so here if (unit.hasUnique("Religious Unit")) { unit.religion = cityConstructions.cityInfo.religion.getMajorityReligionName() + unit.setupAbilityUses(cityConstructions.cityInfo) } if (this.isCivilian()) return true // tiny optimization makes save files a few bytes smaller diff --git a/core/src/com/unciv/models/translations/TranslationFileWriter.kt b/core/src/com/unciv/models/translations/TranslationFileWriter.kt index d84db855fa..5e2bc8806c 100644 --- a/core/src/com/unciv/models/translations/TranslationFileWriter.kt +++ b/core/src/com/unciv/models/translations/TranslationFileWriter.kt @@ -226,6 +226,12 @@ object TranslationFileWriter { "in all cities connected to capital", "in all cities with a garrison", "in all cities in which the majority religion is a major religion", + "in all cities in which the majority religion is an enhanced religion", + "in non-enemy foreign cities", + "in foreign cities", + "in annexed cities", + "in holy cities", + "in City-State cities", "in cities following this religion", ) diff --git a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt index cbd3b5b04b..78c3e7212a 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt @@ -522,26 +522,25 @@ object UnitActions { if (unit.religion == null || unit.civInfo.gameInfo.religions[unit.religion]!!.isPantheon()) return val city = tile.getCity() ?: return for (action in actionsToAdd) { - if (!unit.abilityUsedCount.containsKey(action)) continue - val maxActionUses = unit.getMaxReligiousActionUses(action) - if (maxActionUses <= unit.abilityUsedCount[action]!!) continue + if (!unit.abilityUsesLeft.containsKey(action)) continue + if (unit.abilityUsesLeft[action]!! <= 0) continue when (action) { - Constants.spreadReligionAbilityCount -> addSpreadReligionActions(unit, actionList, city, maxActionUses) - Constants.removeHeresyAbilityCount -> addRemoveHeresyActions(unit, actionList, city, maxActionUses) + Constants.spreadReligionAbilityCount -> addSpreadReligionActions(unit, actionList, city) + Constants.removeHeresyAbilityCount -> addRemoveHeresyActions(unit, actionList, city) } } } - private fun useActionWithLimitedUses(unit: MapUnit, action: String, maximumUses: Int) { - unit.abilityUsedCount[action] = unit.abilityUsedCount[action]!! + 1 - if (unit.abilityUsedCount[action] == maximumUses) { + private fun useActionWithLimitedUses(unit: MapUnit, action: String) { + unit.abilityUsesLeft[action] = unit.abilityUsesLeft[action]!! - 1 + if (unit.abilityUsesLeft[action]!! <= 0) { if (unit.isGreatPerson()) addStatsPerGreatPersonUsage(unit) unit.destroy() } } - private fun addSpreadReligionActions(unit: MapUnit, actionList: ArrayList, city: CityInfo, maxSpreadUses: Int) { + private fun addSpreadReligionActions(unit: MapUnit, actionList: ArrayList, city: CityInfo) { val blockedByInquisitor = city.getCenterTile() .getTilesInDistance(1) @@ -559,12 +558,12 @@ object UnitActions { } city.religion.addPressure(unit.religion!!, unit.getPressureAddedFromSpread()) unit.currentMovement = 0f - useActionWithLimitedUses(unit, Constants.spreadReligionAbilityCount, maxSpreadUses) + useActionWithLimitedUses(unit, Constants.spreadReligionAbilityCount) }.takeIf { unit.currentMovement > 0 && !blockedByInquisitor } ) } - private fun addRemoveHeresyActions(unit: MapUnit, actionList: ArrayList, city: CityInfo, maxHerseyUses: Int) { + private fun addRemoveHeresyActions(unit: MapUnit, actionList: ArrayList, city: CityInfo) { if (city.civInfo != unit.civInfo) return // Only allow the action if the city actually has any foreign religion // This will almost be always due to pressure from cities close-by @@ -574,7 +573,7 @@ object UnitActions { action = { city.religion.removeAllPressuresExceptFor(unit.religion!!) unit.currentMovement = 0f - useActionWithLimitedUses(unit, Constants.removeHeresyAbilityCount, maxHerseyUses) + useActionWithLimitedUses(unit, Constants.removeHeresyAbilityCount) }.takeIf { unit.currentMovement > 0f } ) } @@ -582,7 +581,7 @@ object UnitActions { fun getImprovementConstructionActions(unit: MapUnit, tile: TileInfo): ArrayList { val finalActions = ArrayList() var uniquesToCheck = unit.getMatchingUniques("Can construct []") - if (unit.religiousActionsUnitCanDo().all { unit.abilityUsedCount[it] == 0 }) + if (unit.religiousActionsUnitCanDo().all { unit.abilityUsesLeft[it] == unit.maxAbilityUses[it] }) uniquesToCheck += unit.getMatchingUniques("Can construct [] if it hasn't used other actions yet") for (unique in uniquesToCheck) { diff --git a/docs/Credits.md b/docs/Credits.md index bea8bee1a4..c632129c6a 100644 --- a/docs/Credits.md +++ b/docs/Credits.md @@ -264,6 +264,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https: * [Shield and Swords](https://thenounproject.com/term/shield-and-swords/1477527/) By Alina Oleynik for Armory * [Machu Picchu](https://thenounproject.com/browse/?i=1678226/) By [Chanut is Industries](https://thenounproject.com/chanut-is) * [Garden](https://thenounproject.com/search/?q=garden&i=1478380) By Bharat +* [Mosque](https://thenounproject.com/search/?q=mosque&i=2458353) by yanti for Great Mosque of Djenne ### Renaissance Era @@ -332,7 +333,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https: * [Illuminati](https://thenounproject.com/term/illuminati/1617812) by emilegraphics for the Utopia Project * [Christian Church](https://thenounproject.com/term/christian-church/1174183/) by Andrejs Kirma for Monastery * [cathedral](https://thenounproject.com/search/?q=Cathedral&i=4136407) by Pixel Bazaar for Cathedral -* [Mosque](https://thenounproject.com/search/?q=mosque&i=4139519) by Ahmad Roaayala for Mosque +* [Mosque](https://thenounproject.com/search/?q=mosque&i=1744106) by yanti for Mosque * [Pagoda](https://thenounproject.com/search/?q=pagoda&i=446665) by Xinh Studio for Pagoda