mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-13 01:08:25 +07:00
Fix Great Scientist science calculation (#10763)
* Linting * Simplify adding science of last 8 turns
This commit is contained in:
@ -198,16 +198,8 @@ class TechManager : IsPartOfGameInfoSerialization {
|
|||||||
return (scienceOfLast8Turns.sum() * civInfo.gameInfo.speed.scienceCostModifier).toInt()
|
return (scienceOfLast8Turns.sum() * civInfo.gameInfo.speed.scienceCostModifier).toInt()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addCurrentScienceToScienceOfLast8Turns() {
|
private fun addCurrentScienceToScienceOfLast8Turns(science: Int) {
|
||||||
// The Science the Great Scientist generates does not include Science from Policies, Trade routes and City-States.
|
scienceOfLast8Turns[civInfo.gameInfo.turns % 8] = science
|
||||||
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 limitOverflowScience(overflowScience: Int): Int {
|
private fun limitOverflowScience(overflowScience: Int): Int {
|
||||||
@ -228,7 +220,7 @@ class TechManager : IsPartOfGameInfoSerialization {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun endTurn(scienceForNewTurn: Int) {
|
fun endTurn(scienceForNewTurn: Int) {
|
||||||
addCurrentScienceToScienceOfLast8Turns()
|
addCurrentScienceToScienceOfLast8Turns(scienceForNewTurn)
|
||||||
if (currentTechnologyName() == null) return
|
if (currentTechnologyName() == null) return
|
||||||
|
|
||||||
var finalScienceToAdd = scienceForNewTurn
|
var finalScienceToAdd = scienceForNewTurn
|
||||||
|
Reference in New Issue
Block a user