mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-21 05:09:25 +07:00
Can now use [stats]
unique for e.g. techs, policies, etc, to add gold/faith/culture/science to the global pool
This commit is contained in:
@ -220,9 +220,6 @@ class CityStats(val cityInfo: CityInfo) {
|
||||
sourceToStats.addStats(unique.stats, getSourceNameForUnique(unique), unique.sourceObjectName ?: "")
|
||||
}
|
||||
|
||||
for (unique in cityInfo.getMatchingUniques(UniqueType.Stats))
|
||||
addUniqueStats(unique)
|
||||
|
||||
for (unique in cityInfo.getMatchingUniques(UniqueType.StatsPerCity))
|
||||
if (cityInfo.matchesFilter(unique.params[1]))
|
||||
addUniqueStats(unique)
|
||||
|
@ -7,6 +7,7 @@ import com.unciv.models.ruleset.BeliefType
|
||||
import com.unciv.models.ruleset.Policy
|
||||
import com.unciv.models.ruleset.tile.ResourceType
|
||||
import com.unciv.models.ruleset.unique.StateForConditionals
|
||||
import com.unciv.models.ruleset.unique.UniqueTarget
|
||||
import com.unciv.models.ruleset.unique.UniqueType
|
||||
import com.unciv.models.stats.Stat
|
||||
import com.unciv.models.stats.StatMap
|
||||
@ -139,6 +140,10 @@ class CivInfoStats(val civInfo: CivilizationInfo) {
|
||||
statMap.add(entry.key, entry.value)
|
||||
}
|
||||
|
||||
for (unique in civInfo.getMatchingUniques(UniqueType.Stats))
|
||||
if (unique.sourceObjectType != UniqueTarget.Building && unique.sourceObjectType != UniqueTarget.Wonder)
|
||||
statMap.add(unique.sourceObjectName!!, unique.stats)
|
||||
|
||||
//City-States bonuses
|
||||
for (otherCiv in civInfo.getKnownCivs()) {
|
||||
val relationshipLevel = otherCiv.getDiplomacyManager(civInfo.civName).relationshipLevel()
|
||||
|
@ -188,6 +188,9 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
|
||||
stats.add(unique.stats)
|
||||
}
|
||||
|
||||
for (unique in getMatchingUniques(UniqueType.Stats, StateForConditionals(city.civInfo, city)))
|
||||
stats.add(unique.stats)
|
||||
|
||||
if (!isWonder)
|
||||
for (unique in localUniqueCache.get("StatsFromBuildings", city.getMatchingUniques(UniqueType.StatsFromBuildings))) {
|
||||
if (matchesFilter(unique.params[1]))
|
||||
|
@ -73,7 +73,9 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
|
||||
|
||||
// region Stat providing uniques
|
||||
|
||||
// Used for *global* bonuses and improvement/terrain bonuses
|
||||
Stats("[stats]", UniqueTarget.Global, UniqueTarget.FollowerBelief, UniqueTarget.Improvement, UniqueTarget.Terrain),
|
||||
// Used for city-wide bonuses
|
||||
StatsPerCity("[stats] [cityFilter]", UniqueTarget.Global, UniqueTarget.FollowerBelief),
|
||||
|
||||
StatsFromSpecialist("[stats] from every specialist [cityFilter]", UniqueTarget.Global, UniqueTarget.FollowerBelief),
|
||||
|
@ -27,7 +27,7 @@ class GlobalUniquesTests {
|
||||
// region base stat bonus providing uniques
|
||||
|
||||
@Test
|
||||
fun stats() {
|
||||
fun statsOnBuilding() {
|
||||
val civInfo = game.addCiv()
|
||||
val tile = game.setTileFeatures(Vector2(0f,0f), Constants.desert)
|
||||
val cityInfo = game.addCity(civInfo, tile, true)
|
||||
@ -38,6 +38,15 @@ class GlobalUniquesTests {
|
||||
Assert.assertTrue(cityInfo.cityStats.finalStatList["Buildings"]!!.equals(Stats(food=1f)))
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun statsNotOnBuilding() {
|
||||
val civInfo = game.addCiv("[+2 Gold]")
|
||||
civInfo.updateStatsForNextTurn()
|
||||
Assert.assertTrue(civInfo.statsForNextTurn.equals(Stats(gold=2f)))
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun statsPerCity() {
|
||||
val civInfo = game.addCiv()
|
||||
|
Reference in New Issue
Block a user