mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-24 03:53:12 -04:00
chore: deprecated old uniques
This commit is contained in:
parent
7f690c3f51
commit
7b796e3ee7
@ -54,14 +54,6 @@ object BattleDamage {
|
|||||||
if (greatGeneralBonus != 0)
|
if (greatGeneralBonus != 0)
|
||||||
modifiers[greatGeneralName] = greatGeneralBonus
|
modifiers[greatGeneralName] = greatGeneralBonus
|
||||||
|
|
||||||
for (unique in combatant.unit.getMatchingUniques(UniqueType.StrengthWhenStacked)) {
|
|
||||||
var stackedUnitsBonus = 0
|
|
||||||
if (combatant.unit.getTile().getUnits().any { it.matchesFilter(unique.params[1]) })
|
|
||||||
stackedUnitsBonus += unique.params[0].toInt()
|
|
||||||
|
|
||||||
if (stackedUnitsBonus > 0)
|
|
||||||
modifiers["Stacked with [${unique.params[1]}]"] = stackedUnitsBonus
|
|
||||||
}
|
|
||||||
} else if (combatant is CityCombatant) {
|
} else if (combatant is CityCombatant) {
|
||||||
for (unique in combatant.city.getMatchingUniques(UniqueType.StrengthForCities, conditionalState)) {
|
for (unique in combatant.city.getMatchingUniques(UniqueType.StrengthForCities, conditionalState)) {
|
||||||
modifiers.add(getModifierStringFromUnique(unique), unique.params[0].toInt())
|
modifiers.add(getModifierStringFromUnique(unique), unique.params[0].toInt())
|
||||||
|
@ -141,11 +141,6 @@ class CityConstructions : IsPartOfGameInfoSerialization {
|
|||||||
maintenanceCost += maintenanceForThisBuilding
|
maintenanceCost += maintenanceForThisBuilding
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unique in city.getMatchingUniques(UniqueType.BuildingMaintenanceOld)) {
|
|
||||||
maintenanceCost = (maintenanceCost * unique.params[0].toPercent())
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return maintenanceCost
|
return maintenanceCost
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,8 +174,7 @@ class CityStats(val city: City) {
|
|||||||
@Readonly
|
@Readonly
|
||||||
fun hasExtraAnnexUnhappiness(): Boolean {
|
fun hasExtraAnnexUnhappiness(): Boolean {
|
||||||
if (city.civ.civName == city.foundingCiv || city.isPuppet) return false
|
if (city.civ.civName == city.foundingCiv || city.isPuppet) return false
|
||||||
return !city.containsBuildingUnique(UniqueType.RemoveAnnexUnhappiness)
|
return !city.containsBuildingUnique(UniqueType.RemovesAnnexUnhappiness)
|
||||||
&& !city.containsBuildingUnique(UniqueType.RemovesAnnexUnhappiness)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Readonly
|
@Readonly
|
||||||
|
@ -42,7 +42,6 @@ import com.unciv.models.ruleset.nation.Nation
|
|||||||
import com.unciv.models.ruleset.nation.Personality
|
import com.unciv.models.ruleset.nation.Personality
|
||||||
import com.unciv.models.ruleset.tech.Era
|
import com.unciv.models.ruleset.tech.Era
|
||||||
import com.unciv.models.ruleset.tile.ResourceSupplyList
|
import com.unciv.models.ruleset.tile.ResourceSupplyList
|
||||||
import com.unciv.models.ruleset.tile.ResourceType
|
|
||||||
import com.unciv.models.ruleset.tile.TileImprovement
|
import com.unciv.models.ruleset.tile.TileImprovement
|
||||||
import com.unciv.models.ruleset.tile.TileResource
|
import com.unciv.models.ruleset.tile.TileResource
|
||||||
import com.unciv.models.ruleset.unique.*
|
import com.unciv.models.ruleset.unique.*
|
||||||
@ -509,15 +508,9 @@ class Civilization : IsPartOfGameInfoSerialization {
|
|||||||
fun getResourceModifier(resource: TileResource): Float {
|
fun getResourceModifier(resource: TileResource): Float {
|
||||||
var finalModifier = 1f
|
var finalModifier = 1f
|
||||||
|
|
||||||
if (resource.resourceType == ResourceType.Strategic)
|
|
||||||
for (unique in getMatchingUniques(UniqueType.StrategicResourcesIncrease))
|
|
||||||
finalModifier += unique.params[0].toFloat() / 100f
|
|
||||||
for (unique in getMatchingUniques(UniqueType.PercentResourceProduction))
|
for (unique in getMatchingUniques(UniqueType.PercentResourceProduction))
|
||||||
if (resource.matchesFilter(unique.params[1]))
|
if (resource.matchesFilter(unique.params[1]))
|
||||||
finalModifier += unique.params[0].toFloat() / 100f
|
finalModifier += unique.params[0].toFloat() / 100f
|
||||||
for (unique in getMatchingUniques(UniqueType.DoubleResourceProduced))
|
|
||||||
if (unique.params[0] == resource.name)
|
|
||||||
finalModifier += 1f
|
|
||||||
|
|
||||||
return finalModifier
|
return finalModifier
|
||||||
}
|
}
|
||||||
|
@ -522,9 +522,7 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
|
|||||||
}
|
}
|
||||||
if (getMatchingUniques(UniqueType.StatsFromTiles).any { it.stats[stat] > 0 }) return true
|
if (getMatchingUniques(UniqueType.StatsFromTiles).any { it.stats[stat] > 0 }) return true
|
||||||
if (getMatchingUniques(UniqueType.StatsPerPopulation).any { it.stats[stat] > 0 }) return true
|
if (getMatchingUniques(UniqueType.StatsPerPopulation).any { it.stats[stat] > 0 }) return true
|
||||||
if (stat == Stat.Happiness &&
|
if (stat == Stat.Happiness && hasUnique(UniqueType.RemovesAnnexUnhappiness)) return true
|
||||||
(hasUnique(UniqueType.RemoveAnnexUnhappiness) || hasUnique(UniqueType.RemovesAnnexUnhappiness))
|
|
||||||
) return true
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ class GlobalUniques: RulesetObject() {
|
|||||||
return when (unique.modifiers.first().type) {
|
return when (unique.modifiers.first().type) {
|
||||||
UniqueType.ConditionalGoldenAge -> "Golden Age"
|
UniqueType.ConditionalGoldenAge -> "Golden Age"
|
||||||
UniqueType.ConditionalHappy -> "Happiness"
|
UniqueType.ConditionalHappy -> "Happiness"
|
||||||
UniqueType.ConditionalBetweenHappiness, UniqueType.ConditionalBelowHappiness -> "Unhappiness"
|
|
||||||
UniqueType.ConditionalWLTKD -> "We Love The King Day"
|
UniqueType.ConditionalWLTKD -> "We Love The King Day"
|
||||||
else -> "Global Effect"
|
else -> "Global Effect"
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,6 @@ class RejectionReason(val type: RejectionReasonType,
|
|||||||
RejectionReasonType.RequiresBuildingInSomeCity,
|
RejectionReasonType.RequiresBuildingInSomeCity,
|
||||||
RejectionReasonType.RequiresBuildingInSomeCities,
|
RejectionReasonType.RequiresBuildingInSomeCities,
|
||||||
RejectionReasonType.CanOnlyBeBuiltInSpecificCities,
|
RejectionReasonType.CanOnlyBeBuiltInSpecificCities,
|
||||||
RejectionReasonType.CannotBeBuiltUnhappiness,
|
|
||||||
RejectionReasonType.PopulationRequirement,
|
RejectionReasonType.PopulationRequirement,
|
||||||
RejectionReasonType.ConsumesResources,
|
RejectionReasonType.ConsumesResources,
|
||||||
RejectionReasonType.CanOnlyBePurchased,
|
RejectionReasonType.CanOnlyBePurchased,
|
||||||
@ -207,7 +206,6 @@ class RejectionReason(val type: RejectionReasonType,
|
|||||||
// Exceptions. Used for units spawned/upgrade path, not built
|
// Exceptions. Used for units spawned/upgrade path, not built
|
||||||
private val constructionRejectionReasonType = listOf(
|
private val constructionRejectionReasonType = listOf(
|
||||||
RejectionReasonType.Unbuildable,
|
RejectionReasonType.Unbuildable,
|
||||||
RejectionReasonType.CannotBeBuiltUnhappiness,
|
|
||||||
RejectionReasonType.CannotBeBuilt,
|
RejectionReasonType.CannotBeBuilt,
|
||||||
RejectionReasonType.CanOnlyBeBuiltInSpecificCities,
|
RejectionReasonType.CanOnlyBeBuiltInSpecificCities,
|
||||||
)
|
)
|
||||||
@ -249,12 +247,10 @@ enum class RejectionReasonType(val shouldShow: Boolean, val errorMessage: String
|
|||||||
UniqueToOtherNation(false, "Unique to another nation"),
|
UniqueToOtherNation(false, "Unique to another nation"),
|
||||||
ReplacedByOurUnique(false, "Our unique replaces this"),
|
ReplacedByOurUnique(false, "Our unique replaces this"),
|
||||||
CannotBeBuilt(false, "Cannot be built by this nation"),
|
CannotBeBuilt(false, "Cannot be built by this nation"),
|
||||||
CannotBeBuiltUnhappiness(true, "Unhappiness"),
|
|
||||||
|
|
||||||
Obsoleted(false, "Obsolete"),
|
Obsoleted(false, "Obsolete"),
|
||||||
RequiresTech(false, "Required tech not researched"),
|
RequiresTech(false, "Required tech not researched"),
|
||||||
RequiresPolicy(false, "Requires a specific policy!"),
|
RequiresPolicy(false, "Requires a specific policy!"),
|
||||||
UnlockedWithEra(false, "Unlocked when reaching a specific era"),
|
|
||||||
MorePolicyBranches(false, "Hidden until more policy branches are fully adopted"),
|
MorePolicyBranches(false, "Hidden until more policy branches are fully adopted"),
|
||||||
|
|
||||||
RequiresNearbyResource(false, "Requires a certain resource being exploited nearby"),
|
RequiresNearbyResource(false, "Requires a certain resource being exploited nearby"),
|
||||||
|
@ -137,8 +137,12 @@ class Ruleset {
|
|||||||
sequence {
|
sequence {
|
||||||
for (unique in this@Ruleset.allUniques())
|
for (unique in this@Ruleset.allUniques())
|
||||||
for (conditional in unique.modifiers){
|
for (conditional in unique.modifiers){
|
||||||
if (conditional.type == UniqueType.ConditionalBelowHappiness) yield(conditional.params[0].toInt())
|
if (conditional.type == UniqueType.ConditionalWhenBelowAmountStatResource
|
||||||
if (conditional.type == UniqueType.ConditionalBetweenHappiness){
|
&& conditional.params[1] == "Happiness") yield(conditional.params[0].toInt())
|
||||||
|
if (conditional.type == UniqueType.ConditionalWhenAboveAmountStatResource
|
||||||
|
&& conditional.params[1] == "Happiness") yield(conditional.params[0].toInt())
|
||||||
|
if (conditional.type == UniqueType.ConditionalWhenBetweenStatResource
|
||||||
|
&& conditional.params[2] == "Happiness"){
|
||||||
yield(conditional.params[0].toInt())
|
yield(conditional.params[0].toInt())
|
||||||
yield(conditional.params[1].toInt() + 1)
|
yield(conditional.params[1].toInt() + 1)
|
||||||
}
|
}
|
||||||
|
@ -136,10 +136,6 @@ object Conditionals {
|
|||||||
{ current, lowerLimit, upperLimit -> current >= lowerLimit && current <= upperLimit }
|
{ current, lowerLimit, upperLimit -> current >= lowerLimit && current <= upperLimit }
|
||||||
|
|
||||||
UniqueType.ConditionalHappy -> checkOnCiv { stats.happiness >= 0 }
|
UniqueType.ConditionalHappy -> checkOnCiv { stats.happiness >= 0 }
|
||||||
UniqueType.ConditionalBetweenHappiness ->
|
|
||||||
checkOnCiv { stats.happiness in conditional.params[0].toInt() .. conditional.params[1].toInt() }
|
|
||||||
UniqueType.ConditionalAboveHappiness -> checkOnCiv { stats.happiness > conditional.params[0].toInt() }
|
|
||||||
UniqueType.ConditionalBelowHappiness -> checkOnCiv { stats.happiness < conditional.params[0].toInt() }
|
|
||||||
UniqueType.ConditionalGoldenAge -> checkOnCiv { goldenAges.isGoldenAge() }
|
UniqueType.ConditionalGoldenAge -> checkOnCiv { goldenAges.isGoldenAge() }
|
||||||
UniqueType.ConditionalNotGoldenAge -> checkOnCiv { !goldenAges.isGoldenAge() }
|
UniqueType.ConditionalNotGoldenAge -> checkOnCiv { !goldenAges.isGoldenAge() }
|
||||||
|
|
||||||
|
@ -502,19 +502,6 @@ object UniqueTriggerActivation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UniqueType.StrategicResourcesIncrease -> {
|
|
||||||
return {
|
|
||||||
civInfo.cache.updateCivResources()
|
|
||||||
if (notification != null)
|
|
||||||
civInfo.addNotification(
|
|
||||||
notification,
|
|
||||||
NotificationCategory.General,
|
|
||||||
NotificationIcon.Construction
|
|
||||||
)
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UniqueType.OneTimeProvideResources -> {
|
UniqueType.OneTimeProvideResources -> {
|
||||||
val resourceName = unique.params[1]
|
val resourceName = unique.params[1]
|
||||||
val resource = ruleset.tileResources[resourceName] ?: return null
|
val resource = ruleset.tileResources[resourceName] ?: return null
|
||||||
|
@ -7,7 +7,6 @@ import com.unciv.models.ruleset.validation.RulesetValidator
|
|||||||
import com.unciv.models.ruleset.validation.Suppression
|
import com.unciv.models.ruleset.validation.Suppression
|
||||||
import com.unciv.models.translations.getPlaceholderParameters
|
import com.unciv.models.translations.getPlaceholderParameters
|
||||||
import com.unciv.models.translations.getPlaceholderText
|
import com.unciv.models.translations.getPlaceholderText
|
||||||
import yairm210.purity.annotations.LocalState
|
|
||||||
import yairm210.purity.annotations.Readonly
|
import yairm210.purity.annotations.Readonly
|
||||||
|
|
||||||
// I didn't put this in a companion object because APPARENTLY doing that means you can't use it in the init function.
|
// I didn't put this in a companion object because APPARENTLY doing that means you can't use it in the init function.
|
||||||
@ -144,8 +143,6 @@ enum class UniqueType(
|
|||||||
GainFreeBuildings("Gain a free [buildingName] [cityFilter]", UniqueTarget.Global, UniqueTarget.Triggerable,
|
GainFreeBuildings("Gain a free [buildingName] [cityFilter]", UniqueTarget.Global, UniqueTarget.Triggerable,
|
||||||
docDescription = "Free buildings CANNOT be self-removing - this leads to an endless loop of trying to add the building"),
|
docDescription = "Free buildings CANNOT be self-removing - this leads to an endless loop of trying to add the building"),
|
||||||
BuildingMaintenance("[relativeAmount]% maintenance cost for [buildingFilter] buildings [cityFilter]", UniqueTarget.Global, UniqueTarget.FollowerBelief),
|
BuildingMaintenance("[relativeAmount]% maintenance cost for [buildingFilter] buildings [cityFilter]", UniqueTarget.Global, UniqueTarget.FollowerBelief),
|
||||||
@Deprecated(message = "as of 4.16.13", ReplaceWith("[relativeAmount]% maintenance cost for [all] buildings [cityFilter]"), level = DeprecationLevel.WARNING)
|
|
||||||
BuildingMaintenanceOld("[relativeAmount]% maintenance cost for buildings [cityFilter]", UniqueTarget.Global, UniqueTarget.FollowerBelief),
|
|
||||||
RemoveBuilding("Remove [buildingFilter] [cityFilter]", UniqueTarget.Global, UniqueTarget.Triggerable),
|
RemoveBuilding("Remove [buildingFilter] [cityFilter]", UniqueTarget.Global, UniqueTarget.Triggerable),
|
||||||
OneTimeSellBuilding("Sell [buildingFilter] buildings [cityFilter]", UniqueTarget.Global, UniqueTarget.Triggerable),
|
OneTimeSellBuilding("Sell [buildingFilter] buildings [cityFilter]", UniqueTarget.Global, UniqueTarget.Triggerable),
|
||||||
|
|
||||||
@ -212,10 +209,6 @@ enum class UniqueType(
|
|||||||
flags = setOf(UniqueFlag.AcceptsSpeedModifier)),
|
flags = setOf(UniqueFlag.AcceptsSpeedModifier)),
|
||||||
|
|
||||||
PercentResourceProduction("[relativeAmount]% [resourceFilter] resource production", UniqueTarget.Global),
|
PercentResourceProduction("[relativeAmount]% [resourceFilter] resource production", UniqueTarget.Global),
|
||||||
@Deprecated("As of 4.16.18", ReplaceWith("[relativeAmount]% [Strategic] resource production"))
|
|
||||||
StrategicResourcesIncrease("Quantity of strategic resources produced by the empire +[relativeAmount]%", UniqueTarget.Global), // used by Policies
|
|
||||||
@Deprecated("As of 4.16.18", ReplaceWith("[+100]% [resource] resource production"))
|
|
||||||
DoubleResourceProduced("Double quantity of [resource] produced", UniqueTarget.Global),
|
|
||||||
|
|
||||||
/// Diplomacy
|
/// Diplomacy
|
||||||
EnablesEmbassies("Enables establishment of embassies", UniqueTarget.Tech),
|
EnablesEmbassies("Enables establishment of embassies", UniqueTarget.Tech),
|
||||||
@ -352,8 +345,6 @@ enum class UniqueType(
|
|||||||
DoublesGoldFromCapturingCity("Doubles Gold given to enemy if city is captured", UniqueTarget.Building),
|
DoublesGoldFromCapturingCity("Doubles Gold given to enemy if city is captured", UniqueTarget.Building),
|
||||||
|
|
||||||
|
|
||||||
@Deprecated("As of 4.16.14", ReplaceWith("Removes extra unhappiness from annexed cities"))
|
|
||||||
RemoveAnnexUnhappiness("Remove extra unhappiness from annexed cities", UniqueTarget.Building),
|
|
||||||
RemovesAnnexUnhappiness("Removes extra unhappiness from annexed cities", UniqueTarget.Building),
|
RemovesAnnexUnhappiness("Removes extra unhappiness from annexed cities", UniqueTarget.Building),
|
||||||
ConnectTradeRoutes("Connects trade routes over water", UniqueTarget.Building),
|
ConnectTradeRoutes("Connects trade routes over water", UniqueTarget.Building),
|
||||||
GainBuildingWhereBuildable("Automatically built in all cities where it is buildable", UniqueTarget.Building),
|
GainBuildingWhereBuildable("Automatically built in all cities where it is buildable", UniqueTarget.Building),
|
||||||
@ -404,8 +395,6 @@ enum class UniqueType(
|
|||||||
StrengthNearCapital("[relativeAmount]% Strength decreasing with distance from the capital", UniqueTarget.Unit, UniqueTarget.Global),
|
StrengthNearCapital("[relativeAmount]% Strength decreasing with distance from the capital", UniqueTarget.Unit, UniqueTarget.Global),
|
||||||
FlankAttackBonus("[relativeAmount]% to Flank Attack bonuses", UniqueTarget.Unit, UniqueTarget.Global),
|
FlankAttackBonus("[relativeAmount]% to Flank Attack bonuses", UniqueTarget.Unit, UniqueTarget.Global),
|
||||||
StrengthForAdjacentEnemies("[relativeAmount]% Strength for enemy [mapUnitFilter] units in adjacent [tileFilter] tiles", UniqueTarget.Unit),
|
StrengthForAdjacentEnemies("[relativeAmount]% Strength for enemy [mapUnitFilter] units in adjacent [tileFilter] tiles", UniqueTarget.Unit),
|
||||||
@Deprecated("As of 4.16.14", ReplaceWith("[relativeAmount]% Strength <when stacked with a [mapUnitFilter] unit>"), DeprecationLevel.WARNING)
|
|
||||||
StrengthWhenStacked("[relativeAmount]% Strength when stacked with [mapUnitFilter]", UniqueTarget.Unit), // candidate for conditional!
|
|
||||||
StrengthBonusInRadius("[relativeAmount]% Strength bonus for [mapUnitFilter] units within [amount] tiles", UniqueTarget.Unit),
|
StrengthBonusInRadius("[relativeAmount]% Strength bonus for [mapUnitFilter] units within [amount] tiles", UniqueTarget.Unit),
|
||||||
|
|
||||||
// Stat bonuses
|
// Stat bonuses
|
||||||
@ -716,13 +705,6 @@ enum class UniqueType(
|
|||||||
ConditionalWLTKD("during We Love The King Day", UniqueTarget.Conditional),
|
ConditionalWLTKD("during We Love The King Day", UniqueTarget.Conditional),
|
||||||
|
|
||||||
ConditionalHappy("while the empire is happy", UniqueTarget.Conditional),
|
ConditionalHappy("while the empire is happy", UniqueTarget.Conditional),
|
||||||
@Deprecated("As of 4.16.18", ReplaceWith("when between [amount] and [amount] [Happiness]"), DeprecationLevel.WARNING)
|
|
||||||
ConditionalBetweenHappiness("when between [amount] and [amount] Happiness", UniqueTarget.Conditional,
|
|
||||||
docDescription = " 'Between' is inclusive - so 'between 1 and 5' includes 1 and 5."),
|
|
||||||
@Deprecated("As of 4.16.18", ReplaceWith("when above [amount] [Happiness]"), DeprecationLevel.WARNING)
|
|
||||||
ConditionalAboveHappiness("when above [amount] Happiness", UniqueTarget.Conditional),
|
|
||||||
@Deprecated("As of 4.16.18", ReplaceWith("when below [amount] [Happiness]"), DeprecationLevel.WARNING)
|
|
||||||
ConditionalBelowHappiness("when below [amount] Happiness", UniqueTarget.Conditional),
|
|
||||||
|
|
||||||
ConditionalDuringEra("during the [era]", UniqueTarget.Conditional),
|
ConditionalDuringEra("during the [era]", UniqueTarget.Conditional),
|
||||||
ConditionalBeforeEra("before the [era]", UniqueTarget.Conditional),
|
ConditionalBeforeEra("before the [era]", UniqueTarget.Conditional),
|
||||||
@ -1034,6 +1016,23 @@ enum class UniqueType(
|
|||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
///////////////////////////////////////////// region 99 DEPRECATED AND REMOVED /////////////////////////////////////////////
|
///////////////////////////////////////////// region 99 DEPRECATED AND REMOVED /////////////////////////////////////////////
|
||||||
|
@Deprecated("As of 4.16.18", ReplaceWith("[relativeAmount]% [Strategic] resource production"))
|
||||||
|
StrategicResourcesIncrease("Quantity of strategic resources produced by the empire +[relativeAmount]%", UniqueTarget.Global), // used by Policies
|
||||||
|
@Deprecated("As of 4.16.18", ReplaceWith("[+100]% [resource] resource production"))
|
||||||
|
DoubleResourceProduced("Double quantity of [resource] produced", UniqueTarget.Global),
|
||||||
|
@Deprecated(message = "as of 4.16.13", ReplaceWith("[relativeAmount]% maintenance cost for [all] buildings [cityFilter]"), level = DeprecationLevel.WARNING)
|
||||||
|
BuildingMaintenanceOld("[relativeAmount]% maintenance cost for buildings [cityFilter]", UniqueTarget.Global, UniqueTarget.FollowerBelief),
|
||||||
|
@Deprecated("As of 4.16.14", ReplaceWith("Removes extra unhappiness from annexed cities"), DeprecationLevel.ERROR)
|
||||||
|
RemoveAnnexUnhappiness("Remove extra unhappiness from annexed cities", UniqueTarget.Building),
|
||||||
|
@Deprecated("As of 4.16.14", ReplaceWith("[relativeAmount]% Strength <when stacked with a [mapUnitFilter] unit>"), DeprecationLevel.ERROR)
|
||||||
|
StrengthWhenStacked("[relativeAmount]% Strength when stacked with [mapUnitFilter]", UniqueTarget.Unit), // candidate for conditional!
|
||||||
|
@Deprecated("As of 4.16.18", ReplaceWith("when between [amount] and [amount] [Happiness]"), DeprecationLevel.ERROR)
|
||||||
|
ConditionalBetweenHappiness("when between [amount] and [amount] Happiness", UniqueTarget.Conditional,
|
||||||
|
docDescription = " 'Between' is inclusive - so 'between 1 and 5' includes 1 and 5."),
|
||||||
|
@Deprecated("As of 4.16.18", ReplaceWith("when above [amount] [Happiness]"), DeprecationLevel.ERROR)
|
||||||
|
ConditionalAboveHappiness("when above [amount] Happiness", UniqueTarget.Conditional),
|
||||||
|
@Deprecated("As of 4.16.18", ReplaceWith("when below [amount] [Happiness]"), DeprecationLevel.ERROR)
|
||||||
|
ConditionalBelowHappiness("when below [amount] Happiness", UniqueTarget.Conditional),
|
||||||
@Deprecated("As of 4.16.0", ReplaceWith("Unavailable <when number of [Completed Policy branches] is less than [amount]>"), DeprecationLevel.ERROR)
|
@Deprecated("As of 4.16.0", ReplaceWith("Unavailable <when number of [Completed Policy branches] is less than [amount]>"), DeprecationLevel.ERROR)
|
||||||
HiddenBeforeAmountPolicies("Hidden until [amount] social policy branches have been completed", UniqueTarget.Building, UniqueTarget.Unit),
|
HiddenBeforeAmountPolicies("Hidden until [amount] social policy branches have been completed", UniqueTarget.Building, UniqueTarget.Unit),
|
||||||
@Deprecated("As of 4.15.11", ReplaceWith("New [baseUnitFilter] units start with [amount] XP [cityFilter]"), DeprecationLevel.ERROR)
|
@Deprecated("As of 4.15.11", ReplaceWith("New [baseUnitFilter] units start with [amount] XP [cityFilter]"), DeprecationLevel.ERROR)
|
||||||
|
@ -286,11 +286,7 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
|
|||||||
|
|
||||||
for (unique in civ.getMatchingUniques(UniqueType.CannotBuildUnits, stateForConditionals))
|
for (unique in civ.getMatchingUniques(UniqueType.CannotBuildUnits, stateForConditionals))
|
||||||
if (this@BaseUnit.matchesFilter(unique.params[0], stateForConditionals)) {
|
if (this@BaseUnit.matchesFilter(unique.params[0], stateForConditionals)) {
|
||||||
val hasHappinessCondition = unique.hasModifier(UniqueType.ConditionalBelowHappiness)
|
yield(RejectionReasonType.CannotBeBuilt.toInstance())
|
||||||
|| unique.hasModifier(UniqueType.ConditionalBetweenHappiness)
|
|
||||||
if (hasHappinessCondition)
|
|
||||||
yield(RejectionReasonType.CannotBeBuiltUnhappiness.toInstance(unique.getDisplayText()))
|
|
||||||
else yield(RejectionReasonType.CannotBeBuilt.toInstance())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (city != null && isAirUnit() && !canUnitEnterTile(city)) {
|
if (city != null && isAirUnit() && !canUnitEnterTile(city)) {
|
||||||
|
@ -183,7 +183,7 @@ class UniqueValidator(val ruleset: Ruleset) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val resourceUniques = setOf(UniqueType.ProvidesResources, UniqueType.ConsumesResources,
|
private val resourceUniques = setOf(UniqueType.ProvidesResources, UniqueType.ConsumesResources,
|
||||||
UniqueType.DoubleResourceProduced, UniqueType.StrategicResourcesIncrease, UniqueType.PercentResourceProduction)
|
UniqueType.PercentResourceProduction)
|
||||||
private val resourceConditionals = setOf(
|
private val resourceConditionals = setOf(
|
||||||
UniqueType.ConditionalWithResource,
|
UniqueType.ConditionalWithResource,
|
||||||
UniqueType.ConditionalWithoutResource,
|
UniqueType.ConditionalWithoutResource,
|
||||||
|
@ -135,10 +135,12 @@ class StatsOverviewTab(
|
|||||||
init {
|
init {
|
||||||
defaults().pad(5f)
|
defaults().pad(5f)
|
||||||
uniques = sequenceOf(
|
uniques = sequenceOf(
|
||||||
UniqueType.ConditionalBetweenHappiness,
|
UniqueType.ConditionalWhenAboveAmountStatResource,
|
||||||
UniqueType.ConditionalBelowHappiness
|
UniqueType.ConditionalWhenBetweenStatResource,
|
||||||
|
UniqueType.ConditionalWhenBelowAmountStatResource,
|
||||||
).flatMap { conditionalType ->
|
).flatMap { conditionalType ->
|
||||||
viewingPlayer.getTriggeredUniques(conditionalType)
|
viewingPlayer.getMatchingUniques(conditionalType)
|
||||||
|
.filter { it.params.last() == "Happiness" }
|
||||||
.sortedBy { it.type } // otherwise order might change as a HashMap is involved
|
.sortedBy { it.type } // otherwise order might change as a HashMap is involved
|
||||||
}.filterNot { it.isHiddenToUsers() }
|
}.filterNot { it.isHiddenToUsers() }
|
||||||
.toSet()
|
.toSet()
|
||||||
|
@ -3,8 +3,6 @@ package com.unciv.uniques
|
|||||||
import com.badlogic.gdx.math.Vector2
|
import com.badlogic.gdx.math.Vector2
|
||||||
import com.unciv.logic.civilization.PlayerType
|
import com.unciv.logic.civilization.PlayerType
|
||||||
import com.unciv.models.ruleset.BeliefType
|
import com.unciv.models.ruleset.BeliefType
|
||||||
import com.unciv.models.ruleset.unique.Unique
|
|
||||||
import com.unciv.models.ruleset.unique.UniqueTriggerActivation
|
|
||||||
import com.unciv.models.ruleset.unique.UniqueType
|
import com.unciv.models.ruleset.unique.UniqueType
|
||||||
import com.unciv.testing.GdxTestRunner
|
import com.unciv.testing.GdxTestRunner
|
||||||
import com.unciv.testing.TestGame
|
import com.unciv.testing.TestGame
|
||||||
@ -51,24 +49,16 @@ class ResourceTests {
|
|||||||
fun testResourceProductionAndConsumptionModifierDoesNotAffectConsumption() {
|
fun testResourceProductionAndConsumptionModifierDoesNotAffectConsumption() {
|
||||||
val consumesCoal = game.createBuilding("Consumes [1] [Coal]")
|
val consumesCoal = game.createBuilding("Consumes [1] [Coal]")
|
||||||
val providesCoal = game.createBuilding("Provides [1] [Coal]")
|
val providesCoal = game.createBuilding("Provides [1] [Coal]")
|
||||||
val doubleCoal = game.createBuilding("Double quantity of [Coal] produced")
|
|
||||||
val doubleStrategic = game.createBuilding("Quantity of strategic resources produced by the empire +[100]%")
|
|
||||||
val doubleStrategicProduction = game.createBuilding("[+100]% [Strategic] resource production")
|
val doubleStrategicProduction = game.createBuilding("[+100]% [Strategic] resource production")
|
||||||
|
|
||||||
city.cityConstructions.addBuilding(providesCoal)
|
city.cityConstructions.addBuilding(providesCoal)
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 1)
|
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 1)
|
||||||
|
|
||||||
city.cityConstructions.addBuilding(doubleCoal)
|
city.cityConstructions.addBuilding(doubleStrategicProduction)
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 2)
|
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 2)
|
||||||
|
|
||||||
city.cityConstructions.addBuilding(doubleStrategic)
|
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 3)
|
|
||||||
|
|
||||||
city.cityConstructions.addBuilding(doubleStrategicProduction)
|
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 4)
|
|
||||||
|
|
||||||
city.cityConstructions.addBuilding(consumesCoal)
|
city.cityConstructions.addBuilding(consumesCoal)
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 3) // Produce 4 (1 + 1 + 1 + 1), consume 1
|
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 1) // Produce 2, consume 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -128,11 +118,11 @@ class ResourceTests {
|
|||||||
tile.setImprovement(improvement.name, civInfo)
|
tile.setImprovement(improvement.name, civInfo)
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 1)
|
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 1)
|
||||||
|
|
||||||
val doubleCoal = game.createBuilding("Double quantity of [Coal] produced")
|
val doubleCoal = game.createBuilding("[+100]% [Coal] resource production")
|
||||||
city.cityConstructions.addBuilding(doubleCoal)
|
city.cityConstructions.addBuilding(doubleCoal)
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 2)
|
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 2)
|
||||||
|
|
||||||
val doubleStrategic = game.createBuilding("Quantity of strategic resources produced by the empire +[100]%")
|
val doubleStrategic = game.createBuilding("[+100]% [Strategic] resource production")
|
||||||
city.cityConstructions.addBuilding(doubleStrategic)
|
city.cityConstructions.addBuilding(doubleStrategic)
|
||||||
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 3)
|
Assert.assertTrue(civInfo.getCivResourcesByName()["Coal"] == 3)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user