Mass deprecation

This commit is contained in:
yairm210
2021-08-28 22:21:35 +03:00
parent 85e4a68ea1
commit 8779ca7147
9 changed files with 12 additions and 96 deletions

View File

@ -3,8 +3,6 @@ package com.unciv
object Constants { object Constants {
const val worker = "Worker" const val worker = "Worker"
const val canBuildImprovements = "Can build [] improvements on tiles" const val canBuildImprovements = "Can build [] improvements on tiles"
@Deprecated("as of 3.15.5")
const val workerUnique = "Can build improvements on tiles"
const val workBoatsUnique = "May create improvements on water resources" const val workBoatsUnique = "May create improvements on water resources"
const val settler = "Settler" const val settler = "Settler"
const val settlerUnique = "Founds a new city" const val settlerUnique = "Founds a new city"

View File

@ -402,14 +402,6 @@ class GameInfo {
for (tech in civinfo.tech.techsResearched.toList()) for (tech in civinfo.tech.techsResearched.toList())
if (!ruleSet.technologies.containsKey(tech)) if (!ruleSet.technologies.containsKey(tech))
civinfo.tech.techsResearched.remove(tech) civinfo.tech.techsResearched.remove(tech)
for (policy in civinfo.policies.adoptedPolicies.toList())
// So these two policies are deprecated since 3.14.17
// However, we still need to convert save files that have those to valid save files
// The easiest way to do this, is just to allow them here, and filter them out in
// the policyManager class.
// Yes, this is ugly, but it should be temporary, and it works.
if (!ruleSet.policies.containsKey(policy) && !(policy == "Entrepreneurship" || policy == "Patronage"))
civinfo.policies.adoptedPolicies.remove(policy)
} }
} }

View File

@ -139,8 +139,7 @@ class ConstructionAutomation(val cityConstructions: CityConstructions){
private fun addWorkerChoice() { private fun addWorkerChoice() {
val workerEquivalents = civInfo.gameInfo.ruleSet.units.values val workerEquivalents = civInfo.gameInfo.ruleSet.units.values
.filter { it.uniques.any { .filter { it.uniques.any {
// Constants.workerUnique deprecated since 3.15.5 unique -> unique.equalsPlaceholderText(Constants.canBuildImprovements)
unique -> unique.equalsPlaceholderText(Constants.canBuildImprovements) || unique.equalsPlaceholderText(Constants.workerUnique)
} && it.isBuildable(cityConstructions) } } && it.isBuildable(cityConstructions) }
if (workerEquivalents.isEmpty()) return // for mods with no worker units if (workerEquivalents.isEmpty()) return // for mods with no worker units
if (civInfo.getIdleUnits().any { it.isAutomated() && it.hasUniqueToBuildImprovements }) if (civInfo.getIdleUnits().any { it.isAutomated() && it.hasUniqueToBuildImprovements })

View File

@ -202,14 +202,6 @@ object BattleDamage {
if (attacker.matchesCategory(unique.params[1])) if (attacker.matchesCategory(unique.params[1]))
modifiers.add("defence vs [${unique.params[1]}] ", unique.params[0].toInt()) modifiers.add("defence vs [${unique.params[1]}] ", unique.params[0].toInt())
} }
// Deprecated since 3.15.7
if (attacker.isRanged()) {
val defenceVsRanged = 25 * defender.unit.getUniques()
.count { it.text == "+25% Defence against ranged attacks" }
if (defenceVsRanged > 0) modifiers.add("defence vs ranged", defenceVsRanged)
}
//
for (unique in defender.unit.getMatchingUniques("+[]% Strength when defending")) { for (unique in defender.unit.getMatchingUniques("+[]% Strength when defending")) {
modifiers.add("Defender Bonus", unique.params[0].toInt()) modifiers.add("Defender Bonus", unique.params[0].toInt())
@ -223,10 +215,10 @@ object BattleDamage {
if (defender.unit.isFortified()) if (defender.unit.isFortified())
modifiers["Fortification"] = 20 * defender.unit.getFortificationTurns() modifiers["Fortification"] = 20 * defender.unit.getFortificationTurns()
} else if (defender is CityCombatant) { } else if (defender is CityCombatant) {
modifiers["Defensive Bonus"] = defender.city.civInfo.getMatchingUniques("+[]% Defensive strength for cities") modifiers["Defensive Bonus"] =
.map { it.params[0].toFloat() / 100f }.sum().toInt() defender.city.civInfo.getMatchingUniques("+[]% Defensive strength for cities")
.map { it.params[0].toFloat() / 100f }.sum().toInt()
} }
return modifiers return modifiers
@ -250,16 +242,6 @@ object BattleDamage {
) )
modifiers[unique.params[2]] = unique.params[0].toInt() modifiers[unique.params[2]] = unique.params[0].toInt()
} }
// Deprecated since 3.15.7
if (tile.neighbors.flatMap { it.getUnits() }
.any {
it.hasUnique("-10% combat strength for adjacent enemy units") && it.civInfo.isAtWarWith(
unit.getCivInfo()
)
})
modifiers["Haka War Dance"] = -10
//
return modifiers return modifiers
} }

View File

@ -47,10 +47,6 @@ class CityExpansionManager {
for (unique in cityInfo.getMatchingUniques("[]% cost of natural border growth")) for (unique in cityInfo.getMatchingUniques("[]% cost of natural border growth"))
cultureToNextTile *= unique.params[0].toPercent() cultureToNextTile *= unique.params[0].toPercent()
// Unique deprecated since 3.15.10 (seems unused, and should be replaced by the unique above)
if (cityInfo.civInfo.hasUnique("Increased rate of border expansion")) cultureToNextTile *= 0.75
//
return cultureToNextTile.roundToInt() return cultureToNextTile.roundToInt()
} }

View File

@ -49,20 +49,6 @@ class PolicyManager {
fun getPolicyByName(name: String): Policy = civInfo.gameInfo.ruleSet.policies[name]!! fun getPolicyByName(name: String): Policy = civInfo.gameInfo.ruleSet.policies[name]!!
fun setTransients() { fun setTransients() {
// Reassign policies deprecated in 3.14.17, left for backwards compatibility
if (adoptedPolicies.contains("Patronage") &&
!civInfo.gameInfo.ruleSet.policies.contains("Patronage")
) {
adoptedPolicies.add("Merchant Navy")
adoptedPolicies.remove("Patronage")
}
if (adoptedPolicies.contains("Entrepreneurship") &&
!civInfo.gameInfo.ruleSet.policies.contains("Entrepreneurship")
) {
adoptedPolicies.add("Naval Tradition")
adoptedPolicies.remove("Entrepreneurship")
}
//
for (policyName in adoptedPolicies) for (policyName in adoptedPolicies)
addPolicyToTransients(getPolicyByName(policyName)) addPolicyToTransients(getPolicyByName(policyName))
} }

View File

@ -158,11 +158,7 @@ class MapUnit {
var movement = baseUnit.movement var movement = baseUnit.movement
movement += getMatchingUniques("[] Movement").sumBy { it.params[0].toInt() } movement += getMatchingUniques("[] Movement").sumBy { it.params[0].toInt() }
// Deprecated since 3.15.6
movement += getUniques().count { it.text == "+1 Movement" }
//
for (unique in civInfo.getMatchingUniques("+[] Movement for all [] units")) for (unique in civInfo.getMatchingUniques("+[] Movement for all [] units"))
if (matchesFilter(unique.params[1])) if (matchesFilter(unique.params[1]))
movement += unique.params[0].toInt() movement += unique.params[0].toInt()
@ -204,8 +200,7 @@ class MapUnit {
//todo: parameterize [terrainFilter] in 5 to 7 of the following: //todo: parameterize [terrainFilter] in 5 to 7 of the following:
// "All tiles costs 1" obsoleted in 3.11.18 - keyword: Deprecate allTilesCosts1 = hasUnique("All tiles cost 1 movement")
allTilesCosts1 = hasUnique("All tiles cost 1 movement") || hasUnique("All tiles costs 1")
canPassThroughImpassableTiles = hasUnique("Can pass through impassable tiles") canPassThroughImpassableTiles = hasUnique("Can pass through impassable tiles")
ignoresTerrainCost = hasUnique("Ignores terrain cost") ignoresTerrainCost = hasUnique("Ignores terrain cost")
ignoresZoneOfControl = hasUnique("Ignores Zone of Control") ignoresZoneOfControl = hasUnique("Ignores Zone of Control")
@ -216,8 +211,7 @@ class MapUnit {
canEnterIceTiles = hasUnique("Can enter ice tiles") canEnterIceTiles = hasUnique("Can enter ice tiles")
cannotEnterOceanTiles = hasUnique("Cannot enter ocean tiles") cannotEnterOceanTiles = hasUnique("Cannot enter ocean tiles")
cannotEnterOceanTilesUntilAstronomy = hasUnique("Cannot enter ocean tiles until Astronomy") cannotEnterOceanTilesUntilAstronomy = hasUnique("Cannot enter ocean tiles until Astronomy")
// Constants.workerUnique deprecated since 3.15.5 hasUniqueToBuildImprovements = hasUnique(Constants.canBuildImprovements)
hasUniqueToBuildImprovements = hasUnique(Constants.canBuildImprovements) || hasUnique(Constants.workerUnique)
canEnterForeignTerrain = canEnterForeignTerrain =
hasUnique("May enter foreign tiles without open borders, but loses [] religious strength each turn it ends there") hasUnique("May enter foreign tiles without open borders, but loses [] religious strength each turn it ends there")
|| hasUnique("May enter foreign tiles without open borders") || hasUnique("May enter foreign tiles without open borders")
@ -248,15 +242,12 @@ class MapUnit {
for (unique in civInfo.getMatchingUniques("+[] Sight for all [] units")) for (unique in civInfo.getMatchingUniques("+[] Sight for all [] units"))
if (matchesFilter(unique.params[1])) if (matchesFilter(unique.params[1]))
visibilityRange += unique.params[0].toInt() visibilityRange += unique.params[0].toInt()
// TODO: This should be replaced with "Sight" like others, for naming consistency
visibilityRange += getMatchingUniques("[] Visibility Range").sumBy { it.params[0].toInt() } visibilityRange += getMatchingUniques("[] Visibility Range").sumBy { it.params[0].toInt() }
if (hasUnique("Limited Visibility")) visibilityRange -= 1 if (hasUnique("Limited Visibility")) visibilityRange -= 1
// Deprecated since 3.15.1
if (civInfo.hasUnique("+1 Sight for all land military units") && baseUnit.isMilitary() && baseUnit.isLandUnit())
visibilityRange += 1
//
for (unique in getTile().getAllTerrains().flatMap { it.uniqueObjects }) for (unique in getTile().getAllTerrains().flatMap { it.uniqueObjects })
if (unique.placeholderText == "[] Sight for [] units" && matchesFilter(unique.params[1])) if (unique.placeholderText == "[] Sight for [] units" && matchesFilter(unique.params[1]))
@ -313,7 +304,6 @@ class MapUnit {
fun isIdle(): Boolean { fun isIdle(): Boolean {
if (currentMovement == 0f) return false if (currentMovement == 0f) return false
// Constants.workerUnique deprecated since 3.15.5
if (getTile().improvementInProgress != null if (getTile().improvementInProgress != null
&& canBuildImprovement(getTile().getTileImprovementInProgress()!!)) && canBuildImprovement(getTile().getTileImprovementInProgress()!!))
return false return false
@ -325,10 +315,6 @@ class MapUnit {
fun maxAttacksPerTurn(): Int { fun maxAttacksPerTurn(): Int {
var maxAttacksPerTurn = 1 + getMatchingUniques("[] additional attacks per turn").sumBy { it.params[0].toInt() } var maxAttacksPerTurn = 1 + getMatchingUniques("[] additional attacks per turn").sumBy { it.params[0].toInt() }
// Deprecated since 3.15.6
if (hasUnique("1 additional attack per turn"))
maxAttacksPerTurn++
//
return maxAttacksPerTurn return maxAttacksPerTurn
} }
@ -340,10 +326,6 @@ class MapUnit {
fun getRange(): Int { fun getRange(): Int {
if (baseUnit.isMelee()) return 1 if (baseUnit.isMelee()) return 1
var range = baseUnit().range var range = baseUnit().range
// Deprecated since 3.15.6
if (hasUnique("+1 Range")) range++
if (hasUnique("+2 Range")) range += 2
//
range += getMatchingUniques("[] Range").sumBy { it.params[0].toInt() } range += getMatchingUniques("[] Range").sumBy { it.params[0].toInt() }
return range return range
} }
@ -961,8 +943,6 @@ class MapUnit {
} }
fun canBuildImprovement(improvement: TileImprovement, tile: TileInfo = currentTile): Boolean { fun canBuildImprovement(improvement: TileImprovement, tile: TileInfo = currentTile): Boolean {
// Constants.workerUnique deprecated since 3.15.5
if (hasUnique(Constants.workerUnique)) return true
val matchingUniques = getMatchingUniques(Constants.canBuildImprovements) val matchingUniques = getMatchingUniques(Constants.canBuildImprovements)
return matchingUniques.any { improvement.matchesFilter(it.params[0]) || tile.matchesTerrainFilter(it.params[0]) } return matchingUniques.any { improvement.matchesFilter(it.params[0]) || tile.matchesTerrainFilter(it.params[0]) }
} }

View File

@ -12,6 +12,7 @@ import com.unciv.models.stats.Stats
import com.unciv.models.translations.tr import com.unciv.models.translations.tr
import com.unciv.ui.civilopedia.FormattedLine import com.unciv.ui.civilopedia.FormattedLine
import com.unciv.ui.utils.Fonts import com.unciv.ui.utils.Fonts
import com.unciv.ui.utils.toPercent
import kotlin.math.abs import kotlin.math.abs
import kotlin.math.min import kotlin.math.min
@ -228,9 +229,6 @@ open class TileInfo {
if (city != null) { if (city != null) {
var tileUniques = city.getMatchingUniques("[] from [] tiles []") var tileUniques = city.getMatchingUniques("[] from [] tiles []")
.filter { city.matchesFilter(it.params[2]) } .filter { city.matchesFilter(it.params[2]) }
// Deprecated since 3.15.9
tileUniques += city.getLocalMatchingUniques("[] from [] tiles in this city")
//
tileUniques += city.getMatchingUniques("[] from every []") tileUniques += city.getMatchingUniques("[] from every []")
for (unique in tileUniques) { for (unique in tileUniques) {
val tileType = unique.params[1] val tileType = unique.params[1]
@ -329,9 +327,6 @@ open class TileInfo {
if (city != null) { if (city != null) {
var tileUniques = city.getMatchingUniques("[] from [] tiles []") var tileUniques = city.getMatchingUniques("[] from [] tiles []")
.filter { city.matchesFilter(it.params[2]) } .filter { city.matchesFilter(it.params[2]) }
// Deprecated since 3.15.9
tileUniques += city.getLocalMatchingUniques("[] from [] tiles in this city")
//
val improvementUniques = improvement.uniqueObjects.filter { val improvementUniques = improvement.uniqueObjects.filter {
it.placeholderText == "[] on [] tiles once [] is discovered" it.placeholderText == "[] on [] tiles once [] is discovered"
&& observingCiv.tech.isResearched(it.params[2]) && observingCiv.tech.isResearched(it.params[2])
@ -364,12 +359,7 @@ open class TileInfo {
for (unique in observingCiv.getMatchingUniques("+[]% yield from every []")) for (unique in observingCiv.getMatchingUniques("+[]% yield from every []"))
if (improvement.matchesFilter(unique.params[1])) if (improvement.matchesFilter(unique.params[1]))
stats.timesInPlace(1f + unique.params[0].toFloat() / 100f) stats.timesInPlace(unique.params[0].toPercent())
// Deprecated since 3.15
if (containsGreatImprovement() && observingCiv.hasUnique("Tile yield from Great Improvements +100%"))
stats.timesInPlace(2f)
//
return stats return stats
} }

View File

@ -212,16 +212,9 @@ class BaseUnit : INamed, INonPerpetualConstruction, ICivilopediaText {
var cost = getBaseBuyCost(cityInfo, stat)?.toDouble() var cost = getBaseBuyCost(cityInfo, stat)?.toDouble()
if (cost == null) return null if (cost == null) return null
// Deprecated since 3.15
if (stat == Stat.Gold && cityInfo.civInfo.hasUnique("Gold cost of purchasing units -33%")) cost *= 0.67f
//
// Deprecated since 3.15.15 // Deprecated since 3.15.15
if (stat == Stat.Gold) { if (stat == Stat.Gold) {
for (unique in cityInfo.getMatchingUniques("Gold cost of purchasing [] units -[]%")) {
if (matchesFilter(unique.params[0]))
cost *= 1f - unique.params[1].toFloat() / 100f
}
for (unique in cityInfo.getMatchingUniques("Cost of purchasing items in cities reduced by []%")) for (unique in cityInfo.getMatchingUniques("Cost of purchasing items in cities reduced by []%"))
cost *= 1f - (unique.params[0].toFloat() / 100f) cost *= 1f - (unique.params[0].toFloat() / 100f)
} }