Fix Great Scientist science calculation (#10763)

* Linting

* Simplify adding science of last 8 turns
This commit is contained in:
SeventhM
2023-12-17 12:02:33 -08:00
committed by GitHub
parent 7bc3f22733
commit 7ff38b2687

View File

@ -198,16 +198,8 @@ class TechManager : IsPartOfGameInfoSerialization {
return (scienceOfLast8Turns.sum() * civInfo.gameInfo.speed.scienceCostModifier).toInt()
}
private fun addCurrentScienceToScienceOfLast8Turns() {
// The Science the Great Scientist generates does not include Science from Policies, Trade routes and City-States.
var allCitiesScience = 0f
civInfo.cities.forEach {
val totalBaseScience = it.cityStats.baseStatTree.totalStats.science
val totalBonusPercents = it.cityStats.statPercentBonusTree.children.asSequence()
.filter { it2 -> it2.key != "Policies" }.map { it2 -> it2.value.totalStats.science }.sum()
allCitiesScience += totalBaseScience * totalBonusPercents.toPercent()
}
scienceOfLast8Turns[civInfo.gameInfo.turns % 8] = allCitiesScience.toInt()
private fun addCurrentScienceToScienceOfLast8Turns(science: Int) {
scienceOfLast8Turns[civInfo.gameInfo.turns % 8] = science
}
private fun limitOverflowScience(overflowScience: Int): Int {
@ -228,7 +220,7 @@ class TechManager : IsPartOfGameInfoSerialization {
}
fun endTurn(scienceForNewTurn: Int) {
addCurrentScienceToScienceOfLast8Turns()
addCurrentScienceToScienceOfLast8Turns(scienceForNewTurn)
if (currentTechnologyName() == null) return
var finalScienceToAdd = scienceForNewTurn