mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 06:16:37 -04:00
More UniqueType-ing, discovering an overlap this time
This commit is contained in:
parent
5fc7d1ce46
commit
bd7824cdb9
@ -7,6 +7,7 @@ import com.unciv.logic.civilization.PopupAlert
|
|||||||
import com.unciv.models.ruleset.Building
|
import com.unciv.models.ruleset.Building
|
||||||
import com.unciv.models.ruleset.Ruleset
|
import com.unciv.models.ruleset.Ruleset
|
||||||
import com.unciv.models.ruleset.unique.UniqueMap
|
import com.unciv.models.ruleset.unique.UniqueMap
|
||||||
|
import com.unciv.models.ruleset.unique.UniqueType
|
||||||
import com.unciv.models.ruleset.unit.BaseUnit
|
import com.unciv.models.ruleset.unit.BaseUnit
|
||||||
import com.unciv.models.stats.Stat
|
import com.unciv.models.stats.Stat
|
||||||
import com.unciv.models.stats.Stats
|
import com.unciv.models.stats.Stats
|
||||||
@ -75,9 +76,6 @@ class CityConstructions {
|
|||||||
fun getConstructableUnits() = cityInfo.getRuleset().units.values
|
fun getConstructableUnits() = cityInfo.getRuleset().units.values
|
||||||
.asSequence().filter { it.isBuildable(this) }
|
.asSequence().filter { it.isBuildable(this) }
|
||||||
|
|
||||||
fun getBasicCultureBuildings() = cityInfo.getRuleset().buildings.values
|
|
||||||
.asSequence().filter { it.culture > 0f && !it.isAnyWonder() && it.replaces == null }
|
|
||||||
|
|
||||||
fun getBasicStatBuildings(stat: Stat) = cityInfo.getRuleset().buildings.values
|
fun getBasicStatBuildings(stat: Stat) = cityInfo.getRuleset().buildings.values
|
||||||
.asSequence()
|
.asSequence()
|
||||||
.filter { !it.isAnyWonder() && it.replaces == null && it.getStats(null)[stat] > 0f }
|
.filter { !it.isAnyWonder() && it.replaces == null && it.getStats(null)[stat] > 0f }
|
||||||
@ -164,7 +162,7 @@ class CityConstructions {
|
|||||||
|
|
||||||
fun addFreeBuildings() {
|
fun addFreeBuildings() {
|
||||||
// "Provides a free [buildingName] [cityFilter]"
|
// "Provides a free [buildingName] [cityFilter]"
|
||||||
for (unique in cityInfo.getMatchingUniques("Provides a free [] []")) {
|
for (unique in cityInfo.getMatchingUniques(UniqueType.ProvidesFreeBuildings)) {
|
||||||
val freeBuildingName = cityInfo.civInfo.getEquivalentBuilding(unique.params[0]).name
|
val freeBuildingName = cityInfo.civInfo.getEquivalentBuilding(unique.params[0]).name
|
||||||
val citiesThatApply = when (unique.params[1]) {
|
val citiesThatApply = when (unique.params[1]) {
|
||||||
"in this city" -> listOf(cityInfo)
|
"in this city" -> listOf(cityInfo)
|
||||||
|
@ -288,7 +288,7 @@ class CityInfo {
|
|||||||
if (tileInfo.improvement == null) continue
|
if (tileInfo.improvement == null) continue
|
||||||
val tileImprovement = tileInfo.getTileImprovement()
|
val tileImprovement = tileInfo.getTileImprovement()
|
||||||
for (unique in tileImprovement!!.uniqueObjects) {
|
for (unique in tileImprovement!!.uniqueObjects) {
|
||||||
if (unique.placeholderText == "Provides [] []") {
|
if (unique.matches(UniqueType.ProvidesResources, getRuleset())) {
|
||||||
val resource = getRuleset().tileResources[unique.params[1]] ?: continue
|
val resource = getRuleset().tileResources[unique.params[1]] ?: continue
|
||||||
cityResources.add(
|
cityResources.add(
|
||||||
resource,
|
resource,
|
||||||
@ -314,7 +314,7 @@ class CityInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unique in getLocalMatchingUniques("Provides [] []")) { // E.G "Provides [1] [Iron]"
|
for (unique in getLocalMatchingUniques(UniqueType.ProvidesResources)) { // E.G "Provides [1] [Iron]"
|
||||||
val resource = getRuleset().tileResources[unique.params[1]]
|
val resource = getRuleset().tileResources[unique.params[1]]
|
||||||
if (resource != null) {
|
if (resource != null) {
|
||||||
cityResources.add(
|
cityResources.add(
|
||||||
|
@ -18,6 +18,7 @@ enum class UniqueType(val text:String, val replacedBy: UniqueType? = null) {
|
|||||||
StatsPerCity("[stats] [cityFilter]"),
|
StatsPerCity("[stats] [cityFilter]"),
|
||||||
|
|
||||||
ConsumesResources("Consumes [amount] [resource]"), // No conditional support as of yet
|
ConsumesResources("Consumes [amount] [resource]"), // No conditional support as of yet
|
||||||
|
ProvidesResources("Provides [amount] [resource]"),
|
||||||
|
|
||||||
FreeUnits("[amount] units cost no maintenance"),
|
FreeUnits("[amount] units cost no maintenance"),
|
||||||
UnitMaintenanceDiscount("[amount]% maintenance costs for [mapUnitFilter] units"),
|
UnitMaintenanceDiscount("[amount]% maintenance costs for [mapUnitFilter] units"),
|
||||||
@ -27,8 +28,12 @@ enum class UniqueType(val text:String, val replacedBy: UniqueType? = null) {
|
|||||||
DecreasedUnitMaintenanceCostsGlobally("-[amount]% unit upkeep costs", UnitMaintenanceDiscount), // No conditional support
|
DecreasedUnitMaintenanceCostsGlobally("-[amount]% unit upkeep costs", UnitMaintenanceDiscount), // No conditional support
|
||||||
@Deprecated("As of 3.16.16", ReplaceWith("Stats <>"))
|
@Deprecated("As of 3.16.16", ReplaceWith("Stats <>"))
|
||||||
StatBonusForNumberOfSpecialists("[stats] if this city has at least [amount] specialists"), // No conditional support
|
StatBonusForNumberOfSpecialists("[stats] if this city has at least [amount] specialists"), // No conditional support
|
||||||
|
|
||||||
|
// TODO: Unify these (I'm in favor of "gain a free" above "provides" because it fits more cases)
|
||||||
|
ProvidesFreeBuildings("Provides a free [buildingName] [cityFilter]"),
|
||||||
GainFreeBuildings("Gain a free [buildingName] [cityFilter]"),
|
GainFreeBuildings("Gain a free [buildingName] [cityFilter]"),
|
||||||
|
|
||||||
|
|
||||||
CityStateStatsPerTurn("Provides [stats] per turn"), // Should not be Happiness!
|
CityStateStatsPerTurn("Provides [stats] per turn"), // Should not be Happiness!
|
||||||
CityStateStatsPerCity("Provides [stats] [cityFilter]"),
|
CityStateStatsPerCity("Provides [stats] [cityFilter]"),
|
||||||
CityStateHappiness("Provides [amount] Happiness"),
|
CityStateHappiness("Provides [amount] Happiness"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user