Added follower beliefs for buying religious buildings (#4793)

* Added follower beliefs for buying religious buildings

* Implemented recommended changes
This commit is contained in:
Xander Lenstra
2021-08-08 21:23:22 +02:00
committed by GitHub
parent eab42c0a93
commit 55d32e1bcb
13 changed files with 227 additions and 127 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -123,689 +123,710 @@ Castle
orig: 100, 100
offset: 0, 0
index: -1
Chichen Itza
Cathedral
rotate: false
xy: 220, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Circus
Chichen Itza
rotate: false
xy: 328, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Circus Maximus
Circus
rotate: false
xy: 436, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Colosseum
Circus Maximus
rotate: false
xy: 544, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Colossus
Colosseum
rotate: false
xy: 4, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Courthouse
Colossus
rotate: false
xy: 112, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Cristo Redentor
Courthouse
rotate: false
xy: 220, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Eiffel Tower
Cristo Redentor
rotate: false
xy: 328, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Factory
Eiffel Tower
rotate: false
xy: 436, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Floating Gardens
Factory
rotate: false
xy: 544, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Forbidden Palace
Floating Gardens
rotate: false
xy: 652, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Forge
Forbidden Palace
rotate: false
xy: 4, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Garden
Forge
rotate: false
xy: 112, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Granary
Garden
rotate: false
xy: 220, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Great Wall
Granary
rotate: false
xy: 328, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Hagia Sophia
Great Wall
rotate: false
xy: 436, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Hanging Gardens
Hagia Sophia
rotate: false
xy: 544, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Hanse
Hanging Gardens
rotate: false
xy: 652, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Harbor
Hanse
rotate: false
xy: 760, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Hermitage
Harbor
rotate: false
xy: 4, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Heroic Epic
Hermitage
rotate: false
xy: 112, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Himeji Castle
Heroic Epic
rotate: false
xy: 220, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Hospital
Himeji Castle
rotate: false
xy: 328, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Hubble Space Telescope
Hospital
rotate: false
xy: 436, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Hydro Plant
Hubble Space Telescope
rotate: false
xy: 544, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Ironworks
Hydro Plant
rotate: false
xy: 652, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Kremlin
Ironworks
rotate: false
xy: 760, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Krepost
Kremlin
rotate: false
xy: 868, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Leaning Tower of Pisa
Krepost
rotate: false
xy: 112, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Library
Leaning Tower of Pisa
rotate: false
xy: 220, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Lighthouse
Library
rotate: false
xy: 328, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Longhouse
Lighthouse
rotate: false
xy: 436, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Machu Picchu
Longhouse
rotate: false
xy: 544, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Manhattan Project
Machu Picchu
rotate: false
xy: 652, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Market
Manhattan Project
rotate: false
xy: 760, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Mausoleum of Halicarnassus
Market
rotate: false
xy: 868, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Medical Lab
Mausoleum of Halicarnassus
rotate: false
xy: 976, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Military Academy
Medical Lab
rotate: false
xy: 220, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Military Base
Military Academy
rotate: false
xy: 328, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Mint
Military Base
rotate: false
xy: 436, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Monastery
Mint
rotate: false
xy: 544, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Monument
Monastery
rotate: false
xy: 652, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Mud Pyramid Mosque
Monument
rotate: false
xy: 760, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Mughal Fort
Mosque
rotate: false
xy: 868, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Museum
Mud Pyramid Mosque
rotate: false
xy: 976, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
National College
Mughal Fort
rotate: false
xy: 1084, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
National Epic
Museum
rotate: false
xy: 328, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
National Treasury
National College
rotate: false
xy: 436, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Neuschwanstein
National Epic
rotate: false
xy: 544, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Notre Dame
National Treasury
rotate: false
xy: 652, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Nuclear Plant
Neuschwanstein
rotate: false
xy: 760, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Observatory
Notre Dame
rotate: false
xy: 868, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Opera House
Nuclear Plant
rotate: false
xy: 976, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Oxford University
Observatory
rotate: false
xy: 1084, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Palace
Opera House
rotate: false
xy: 1192, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Paper Maker
Oxford University
rotate: false
xy: 436, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Pentagon
Pagoda
rotate: false
xy: 544, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Petra
Palace
rotate: false
xy: 652, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Porcelain Tower
Paper Maker
rotate: false
xy: 760, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Public School
Pentagon
rotate: false
xy: 868, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Research Lab
Petra
rotate: false
xy: 976, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
SS Booster
Porcelain Tower
rotate: false
xy: 1084, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
SS Cockpit
Public School
rotate: false
xy: 1192, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
SS Engine
Research Lab
rotate: false
xy: 1300, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
SS Stasis Chamber
SS Booster
rotate: false
xy: 544, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Satrap's Court
SS Cockpit
rotate: false
xy: 652, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Seaport
SS Engine
rotate: false
xy: 760, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Shrine
SS Stasis Chamber
rotate: false
xy: 868, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Sistine Chapel
Satrap's Court
rotate: false
xy: 976, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Solar Plant
Seaport
rotate: false
xy: 1084, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Spaceship Factory
Shrine
rotate: false
xy: 1192, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Stable
Sistine Chapel
rotate: false
xy: 1300, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Stadium
Solar Plant
rotate: false
xy: 1408, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Statue of Liberty
Spaceship Factory
rotate: false
xy: 652, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Statue of Zeus
Stable
rotate: false
xy: 760, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Stock Exchange
Stadium
rotate: false
xy: 868, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Stone Works
Statue of Liberty
rotate: false
xy: 976, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Stonehenge
Statue of Zeus
rotate: false
xy: 1084, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Sydney Opera House
Stock Exchange
rotate: false
xy: 1192, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Taj Mahal
Stone Works
rotate: false
xy: 1300, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Temple
Stonehenge
rotate: false
xy: 1408, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Temple of Artemis
Sydney Opera House
rotate: false
xy: 1516, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Terracotta Army
Taj Mahal
rotate: false
xy: 760, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
The Great Library
Temple
rotate: false
xy: 868, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
The Great Lighthouse
Temple of Artemis
rotate: false
xy: 976, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
The Louvre
Terracotta Army
rotate: false
xy: 1084, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
The Oracle
The Great Library
rotate: false
xy: 1192, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
The Pyramids
The Great Lighthouse
rotate: false
xy: 1300, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Theatre
The Louvre
rotate: false
xy: 1408, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
United Nations
The Oracle
rotate: false
xy: 1516, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
University
The Pyramids
rotate: false
xy: 1624, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Utopia Project
Theatre
rotate: false
xy: 868, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Walls
United Nations
rotate: false
xy: 976, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Walls of Babylon
University
rotate: false
xy: 1084, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Wat
Utopia Project
rotate: false
xy: 1192, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Water Mill
Walls
rotate: false
xy: 1300, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Windmill
Walls of Babylon
rotate: false
xy: 1408, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Workshop
Wat
rotate: false
xy: 1516, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Water Mill
rotate: false
xy: 1624, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Windmill
rotate: false
xy: 1732, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Workshop
rotate: false
xy: 976, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 270 KiB

View File

@ -121,7 +121,11 @@
///////////////////////////////////////// Follower beliefs /////////////////////////////////////////
// Missing: asceticism (requires followers)
// Missing: cathedrals (requires purchasing with faith)
{
"name": "Cathedrals",
"type": "Follower",
"uniques": ["May buy [Cathedral] buildings for [200] [Faith] [in cities following this religion]"]
},
// Missing: choral music (requires followers)
{
"name": "Divine inspiration",
@ -140,9 +144,21 @@
},
// Missing: Holy Warriors (requires purchasing with faith)
// Missing: Liturgical drama (requires followers)
// Missing: Monasteries (requires purchasing with faith)
// Missing: Mosques (requires purchasing with faith)
// Missing: Pagodas (requires purchasing with faith)
{
"name": "Monasteries",
"type": "Follower",
"uniques": ["May buy [Monastery] buildings for [200] [Faith] [in cities following this religion]"]
},
{
"name": "Mosques",
"type": "Follower",
"uniques": ["May buy [Mosque] buildings for [200] [Faith] [in cities following this religion]"]
},
{
"name": "Pagodas",
"type": "Follower",
"uniques": ["May buy [Pagoda] buildings for [200] [Faith] [in cities following this religion]"]
},
{
"name": "Peace Gardens",
"type": "Follower",

View File

@ -442,14 +442,6 @@
"maintenance": 1,
"requiredTech": "Theology"
},
{
"name": "Monastery",
"maintenance": 0,
"requiredNearbyImprovedResources": ["Wine","Incense"],
"uniques": ["[+2 Culture] from [Wine] tiles [in this city]", "[+2 Culture] from [Incense] tiles [in this city]"],
"hurryCostModifier": 25,
"requiredTech": "Theology"
},
{
"name": "Hagia Sophia",
"culture": 1,
@ -1122,5 +1114,41 @@
"isNationalWonder": true,
"uniques": ["Hidden until [5] social policy branches have been completed", "Triggers a global alert upon build start",
"Triggers a Cultural Victory upon completion", "Hidden when [Cultural] Victory is disabled"]
}
},
// Religious buildings
{
"name": "Cathedral",
"cost": 0,
"faith": 1,
"culture": 3,
"happiness": 1,
"specialistSlots": {"Artist": 1},
"uniques": ["Unbuildable"]
},
{
"name": "Monastery",
"cost": 0,
"culture": 2,
"faith": 2,
"uniques": ["[+1 Culture, +1 Faith] from [Wine] tiles [in this city]",
"[+1 Culture, +1 Faith] from [Incense] tiles [in this city]","Unbuildable"]
},
{
"name": "Mosque",
"cost": 0,
"culture": 2,
"faith": 3,
"happiness": 1,
"uniques": ["Unbuildable"]
},
{
"name": "Pagoda",
"cost": 0,
"culture": 2,
"faith": 2,
"happiness": 2,
"uniques": ["Unbuildable"]
},
]

View File

@ -595,6 +595,10 @@ class CityInfo {
"in all cities in which the majority religion is a major religion" ->
religion.getMajorityReligion() != null
&& civInfo.gameInfo.religions[religion.getMajorityReligion()]!!.isMajorReligion()
// 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
else -> false
}
}

View File

@ -23,7 +23,7 @@ interface INonPerpetualConstruction : IConstruction, INamed, IHasUniques {
fun getStatBuyCost(cityInfo: CityInfo, stat: Stat): Int?
fun getRejectionReason(cityConstructions: CityConstructions): String
private fun getMatchingUniques(uniqueTemplate: String): Sequence<Unique> {
fun getMatchingUniques(uniqueTemplate: String): Sequence<Unique> {
return uniqueObjects.asSequence().filter { it.placeholderText == uniqueTemplate }
}
@ -58,7 +58,6 @@ interface INonPerpetualConstruction : IConstruction, INamed, IHasUniques {
return (30.0 * getProductionCost(civInfo)).pow(0.75) * (1 + hurryCostModifier / 100f)
}
// I can't make this function protected or private :(
fun getBaseBuyCost(cityInfo: CityInfo, stat: Stat): Int? {
if (stat == Stat.Gold) return getBaseGoldCost(cityInfo.civInfo).toInt()

View File

@ -202,9 +202,36 @@ class Building : NamedStats(), INonPerpetualConstruction, ICivilopediaText {
override fun canBePurchasedWithStat(cityInfo: CityInfo, stat: Stat, ignoreCityRequirements: Boolean): Boolean {
if (stat == Stat.Gold && isAnyWonder()) return false
// May buy [buildingFilter] buildings for [amount] [Stat] [cityFilter]
if (cityInfo.getMatchingUniques("May buy [] buildings for [] [] []")
.any { it.params[2] == stat.name && matchesFilter(it.params[0]) && cityInfo.matchesFilter(it.params[3]) }
) return true
return super.canBePurchasedWithStat(cityInfo, stat, ignoreCityRequirements)
}
override fun getBaseBuyCost(cityInfo: CityInfo, stat: Stat): Int? {
if (stat == Stat.Gold) return getBaseGoldCost(cityInfo.civInfo).toInt()
val lowestCostFromUnique =
(
// Can be purchased for [amount] [Stat] [cityFilter]
getMatchingUniques("Can be purchased for [] [] []")
.filter { it.params[1] == stat.name && cityInfo.matchesFilter(it.params[2]) }
.map { it.params[0].toInt() }
// May buy [buildingFilter] buildings for [amount] [Stat] [cityFilter]
+ cityInfo.getMatchingUniques("May buy [] buildings for [] [] []")
.filter { it.params[2] == stat.name && matchesFilter(it.params[0]) && cityInfo.matchesFilter(it.params[3])}
.map { it.params[1].toInt() }
).minOrNull()
if (lowestCostFromUnique != null) return lowestCostFromUnique
// Can be purchased with [Stat] [cityFilter]
if (getMatchingUniques("Can be purchased with [] []")
.any { it.params[0] == stat.name && cityInfo.matchesFilter(it.params[1])}
) return cityInfo.civInfo.gameInfo.ruleSet.eras[cityInfo.civInfo.getEra()]!!.baseUnitBuyCost
return null
}
override fun getCivilopediaTextHeader() = FormattedLine(name, header=2, icon=makeLink())
override fun makeLink() = if (isAnyWonder()) "Wonder/$name" else "Building/$name"
override fun hasCivilopediaTextLines() = true

View File

@ -237,9 +237,9 @@ class Ruleset {
* */
fun updateBuildingCosts() {
for (building in buildings.values) {
if (building.cost == 0) {
if (building.cost == 0 && !building.uniques.contains("Unbuildable")) {
val column = technologies[building.requiredTech]?.column
?: throw UncivShowableException("Building (${building.name}) must either have an explicit cost or reference an existing tech")
?: throw UncivShowableException("Building (${building.name}) is buildable and therefore must either have an explicit cost or reference an existing tech")
building.cost = if (building.isAnyWonder()) column.wonderCost else column.buildingCost
}
}
@ -311,8 +311,8 @@ class Ruleset {
}
for (building in buildings.values) {
if (building.requiredTech == null && building.cost == 0)
lines += "${building.name} must either have an explicit cost or reference an existing tech!"
if (building.requiredTech == null && building.cost == 0 && !building.uniques.contains("Unbuildable"))
lines += "${building.name} is buildable and therefore must either have an explicit cost or reference an existing tech!"
}
for (nation in nations.values) {

View File

@ -213,19 +213,20 @@ object TranslationFileWriter {
"water units",
"air units",
"military units",
"submarine units"
"submarine units",
// Note: this can't handle combinations of parameters (e.g. [{Military} {Water}])
)) }
val cityFilterMap = setOf(
"in this city",
"in all cities",
"in all coastal cities",
"in capital",
"in all non-occupied cities",
"in all cities with a world wonder",
"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 all coastal cities",
"in capital",
"in all non-occupied cities",
"in all cities with a world wonder",
"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 cities following this religion",
)
val startMillis = System.currentTimeMillis()

View File

@ -231,7 +231,6 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Wat Arun Ratchawararam Ratchawaramahawihan](https://thenounproject.com/term/wat-arun-ratchawararam-ratchawaramahawihan/320664/) By József Balázs-Hegedüs for Wat
* [College](https://thenounproject.com/term/college/1203703/) By Vectors Market for National College
* [Chichen Itza](https://thenounproject.com/term/chichen-itza/668065/) By Hea Poh Lin
* [Christian Church](https://thenounproject.com/term/christian-church/1174183/) By Andrejs Kirma for Monastery
* [Castle](https://thenounproject.com/search/?q=castle&i=390189) By Mint Shirt
* [Red Fort](https://thenounproject.com/arunabh.jain.0fficial/collection/famous-indian-monuments/?i=2092466), [Gateway of India](https://thenounproject.com/arunabh.jain.0fficial/collection/famous-indian-monuments/?i=2092468) By Arunabh Jain, IN for Mughal Fort
* [Angkor Wat](https://thenounproject.com/search/?q=angkor%20wat&i=2412873) By Phạm Thanh Lộc for Angkor Wat
@ -312,6 +311,11 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
### All Era's
* [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
* [Pagoda](https://thenounproject.com/search/?q=pagoda&i=446665) by Xinh Studio for Pagoda
## Social Policies