From 22ebe2b9af04f59c37abe87aaf9ce6cbe63de8c5 Mon Sep 17 00:00:00 2001 From: SimonCeder <63475501+SimonCeder@users.noreply.github.com> Date: Wed, 6 Oct 2021 21:49:02 +0200 Subject: [PATCH] Fix Educated Elite (#5416) * fix educated elite * unique-ify prophet uniques --- core/src/com/unciv/logic/automation/UnitAutomation.kt | 5 +++-- .../com/unciv/logic/civilization/CityStateFunctions.kt | 8 ++++---- core/src/com/unciv/logic/civilization/ReligionManager.kt | 2 +- core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 2 ++ core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt | 4 ++-- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/core/src/com/unciv/logic/automation/UnitAutomation.kt b/core/src/com/unciv/logic/automation/UnitAutomation.kt index 212b2e2b97..4645b903fa 100644 --- a/core/src/com/unciv/logic/automation/UnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/UnitAutomation.kt @@ -7,6 +7,7 @@ import com.unciv.logic.civilization.ReligionState import com.unciv.logic.civilization.diplomacy.DiplomaticStatus import com.unciv.logic.map.MapUnit import com.unciv.logic.map.TileInfo +import com.unciv.models.ruleset.unique.UniqueType import com.unciv.ui.worldscreen.unit.UnitActions object UnitAutomation { @@ -106,13 +107,13 @@ object UnitAutomation { if (unit.hasUniqueToBuildImprovements) return WorkerAutomation.automateWorkerAction(unit) - if (unit.hasUnique("May found a religion") + if (unit.hasUnique(UniqueType.MayFoundReligion) && unit.civInfo.religionManager.religionState < ReligionState.Religion && unit.civInfo.religionManager.mayFoundReligionAtAll(unit) ) return SpecificUnitAutomation.foundReligion(unit) - if (unit.hasUnique("May enhance a religion") + if (unit.hasUnique(UniqueType.MayEnhanceReligion) && unit.civInfo.religionManager.religionState < ReligionState.EnhancedReligion && unit.civInfo.religionManager.mayEnhanceReligionAtAll(unit) ) diff --git a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt index f681f6f83c..5284968cbf 100644 --- a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt +++ b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt @@ -73,14 +73,14 @@ class CityStateFunctions(val civInfo: CivilizationInfo) { /** Gain a random great person from the city state */ fun giveGreatPersonToPatron(receivingCiv: CivilizationInfo) { - var giftableUnits = civInfo.gameInfo.ruleSet.units.values.filter { it.isGreatPerson() } - if (!civInfo.gameInfo.isReligionEnabled()) giftableUnits = giftableUnits - .filterNot { it.uniques.contains("Hidden when religion is disabled")} + // Great Prophets can't be gotten from CS + val giftableUnits = civInfo.gameInfo.ruleSet.units.values.filter { it.isGreatPerson() + && !it.hasUnique(UniqueType.MayFoundReligion) } if (giftableUnits.isEmpty()) // For badly defined mods that don't have great people but do have the policy that makes city states grant them return val giftedUnit = giftableUnits.random() val cities = NextTurnAutomation.getClosestCities(receivingCiv, civInfo) - val placedUnit = receivingCiv.addUnit(giftedUnit.name, cities.city1) + val placedUnit = receivingCiv.placeUnitNearTile(cities.city1.location, giftedUnit.name) ?: return val locations = LocationAction(listOf(placedUnit.getTile().position, cities.city2.location)) receivingCiv.addNotification( "[${civInfo.civName}] gave us a [${giftedUnit.name}] as a gift!", locations, civInfo.civName, giftedUnit.name) diff --git a/core/src/com/unciv/logic/civilization/ReligionManager.kt b/core/src/com/unciv/logic/civilization/ReligionManager.kt index a0333ccc7e..7680d9b4b7 100644 --- a/core/src/com/unciv/logic/civilization/ReligionManager.kt +++ b/core/src/com/unciv/logic/civilization/ReligionManager.kt @@ -139,7 +139,7 @@ class ReligionManager { } fun getGreatProphetEquivalent(): String? { - return civInfo.gameInfo.ruleSet.units.values.firstOrNull { it.hasUnique("May found a religion") }?.name + return civInfo.gameInfo.ruleSet.units.values.firstOrNull { it.hasUnique(UniqueType.MayFoundReligion) }?.name } private fun generateProphet() { diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 27e82c8d2a..96f47d8a33 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -161,6 +161,8 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget) { Movement("[amount] Movement", UniqueTarget.Unit, UniqueTarget.Global), Sight("[amount] Sight", UniqueTarget.Unit, UniqueTarget.Global), SpreadReligionStrength("[amount]% Spread Religion Strength", UniqueTarget.Unit, UniqueTarget.Global), + MayFoundReligion("May found a religion", UniqueTarget.Unit), + MayEnhanceReligion("May enhance a religion", UniqueTarget.Unit), @Deprecated("As of 3.17.5", ReplaceWith("[amount] Movement "), DeprecationLevel.WARNING) MovementUnits("+[amount] Movement for all [mapUnitFilter] units", UniqueTarget.Global), diff --git a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt index 966a0e6c50..959f4eaf0e 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt @@ -481,7 +481,7 @@ object UnitActions { } private fun addFoundReligionAction(unit: MapUnit, actionList: ArrayList) { - if (!unit.hasUnique("May found a religion")) return + if (!unit.hasUnique(UniqueType.MayFoundReligion)) return if (!unit.civInfo.religionManager.mayFoundReligionAtAll(unit)) return actionList += UnitAction(UnitActionType.FoundReligion, action = getFoundReligionAction(unit).takeIf { unit.civInfo.religionManager.mayFoundReligionNow(unit) } @@ -497,7 +497,7 @@ object UnitActions { } private fun addEnhanceReligionAction(unit: MapUnit, actionList: ArrayList) { - if (!unit.hasUnique("May enhance a religion")) return + if (!unit.hasUnique(UniqueType.MayEnhanceReligion)) return if (!unit.civInfo.religionManager.mayEnhanceReligionAtAll(unit)) return actionList += UnitAction(UnitActionType.EnhanceReligion, title = "Enhance [${unit.civInfo.religionManager.religion!!.getReligionDisplayName()}]",