Fix Educated Elite (#5416)

* fix educated elite

* unique-ify prophet uniques
This commit is contained in:
SimonCeder 2021-10-06 21:49:02 +02:00 committed by GitHub
parent 44fd987160
commit 22ebe2b9af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 12 additions and 9 deletions

View File

@ -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)
)

View File

@ -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)

View File

@ -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() {

View File

@ -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 <for [mapUnitFilter] units>"), DeprecationLevel.WARNING)
MovementUnits("+[amount] Movement for all [mapUnitFilter] units", UniqueTarget.Global),

View File

@ -481,7 +481,7 @@ object UnitActions {
}
private fun addFoundReligionAction(unit: MapUnit, actionList: ArrayList<UnitAction>) {
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<UnitAction>) {
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()}]",