Probably resolved #9320 - AI 'found religion' crash

This commit is contained in:
Yair Morgenstern
2023-05-04 09:20:00 +03:00
parent 044b67d709
commit 817764ec38
3 changed files with 10 additions and 7 deletions

View File

@ -652,12 +652,16 @@ object NextTurnAutomation {
if (civInfo.religionManager.religionState != ReligionState.FoundingReligion) return
val availableReligionIcons = civInfo.gameInfo.ruleset.religions
.filterNot { civInfo.gameInfo.religions.values.map { religion -> religion.name }.contains(it) }
val favoredReligion = civInfo.nation.favoredReligion
val religionIcon =
if (civInfo.nation.favoredReligion in availableReligionIcons) civInfo.nation.favoredReligion
if (favoredReligion != null && favoredReligion in availableReligionIcons) favoredReligion
else availableReligionIcons.randomOrNull()
?: return // Wait what? How did we pass the checking when using a great prophet but not this?
civInfo.religionManager.foundReligion(religionIcon, religionIcon)
val chosenBeliefs = chooseBeliefs(civInfo, civInfo.religionManager.getBeliefsToChooseAtFounding()).toList()
civInfo.religionManager.chooseBeliefs(chosenBeliefs, religionIcon, religionIcon)
civInfo.religionManager.chooseBeliefs(chosenBeliefs)
}
private fun enhanceReligion(civInfo: Civilization) {

View File

@ -340,10 +340,8 @@ class ReligionManager : IsPartOfGameInfoSerialization {
fun getBeliefsToChooseAtFounding(): Counter<BeliefType> = getBeliefsToChooseAtProphetUse(false)
fun getBeliefsToChooseAtEnhancing(): Counter<BeliefType> = getBeliefsToChooseAtProphetUse(true)
fun chooseBeliefs(beliefs: List<Belief>, iconName: String? = null, religionName: String? = null, useFreeBeliefs: Boolean = false) {
fun chooseBeliefs(beliefs: List<Belief>, useFreeBeliefs: Boolean = false) {
when (religionState) {
ReligionState.FoundingReligion ->
foundReligion(iconName!!, religionName!!)
ReligionState.EnhancingReligion -> {
religionState = ReligionState.EnhancedReligion
for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponEnhancingReligion))
@ -381,7 +379,7 @@ class ReligionManager : IsPartOfGameInfoSerialization {
}
private fun foundReligion(displayName: String, name: String) {
internal fun foundReligion(displayName: String, name: String) {
val newReligion = Religion(name, civInfo.gameInfo, civInfo.civName)
newReligion.displayName = displayName
if (religion != null) {

View File

@ -75,7 +75,8 @@ class ReligiousBeliefsPickerScreen (
if (pickIconAndName) "Choose a Religion"
else "Enhance [${currentReligion.getReligionDisplayName()}]"
) {
chooseBeliefs(beliefsToChoose.map { it.belief!! }, displayName, religionName, usingFreeBeliefs())
civInfo.religionManager.foundReligion(displayName!!, religionName!!)
chooseBeliefs(beliefsToChoose.map { it.belief!! }, usingFreeBeliefs())
}
}