From 5e85c3ca72aa0ff09b21b064b8639e32874de5f6 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 1 Mar 2023 16:35:06 +0200 Subject: [PATCH] "by consuming this unit" is better --- .../assets/jsons/Civ V - Gods & Kings/Units.json | 14 +++++++------- android/assets/jsons/Civ V - Vanilla/Units.json | 14 +++++++------- .../com/unciv/models/ruleset/RulesetValidator.kt | 9 --------- .../com/unciv/models/ruleset/unique/UniqueType.kt | 7 ++----- .../worldscreen/unit/actions/UnitActions.kt | 8 ++++++-- docs/Modders/uniques.md | 6 ------ 6 files changed, 22 insertions(+), 36 deletions(-) diff --git a/android/assets/jsons/Civ V - Gods & Kings/Units.json b/android/assets/jsons/Civ V - Gods & Kings/Units.json index 2426ca4c37..6de7e11c60 100644 --- a/android/assets/jsons/Civ V - Gods & Kings/Units.json +++ b/android/assets/jsons/Civ V - Gods & Kings/Units.json @@ -1600,7 +1600,7 @@ "name": "Great Artist", "unitType": "Civilian", "uniques": ["Can start an [8]-turn golden age", - "Can instantly construct a [Landmark] improvement ", + "Can instantly construct a [Landmark] improvement ", "Great Person - [Culture]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1608,7 +1608,7 @@ "name": "Great Scientist", "unitType": "Civilian", "uniques": ["Can hurry technology research", - "Can instantly construct a [Academy] improvement ", + "Can instantly construct a [Academy] improvement ", "Great Person - [Science]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1616,7 +1616,7 @@ "name": "Great Merchant", "unitType": "Civilian", "uniques": ["Can undertake a trade mission with City-State, giving a large sum of gold and [30] Influence", - "Can instantly construct a [Customs house] improvement ", + "Can instantly construct a [Customs house] improvement ", "Great Person - [Gold]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1624,7 +1624,7 @@ "name": "Great Engineer", "unitType": "Civilian", "uniques": ["Can speed up construction of a building", - "Can instantly construct a [Manufactory] improvement ", + "Can instantly construct a [Manufactory] improvement ", "Great Person - [Production]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1632,7 +1632,7 @@ "name": "Great Prophet", "unitType": "Civilian", "uniques": [ - "Can instantly construct a [Holy site] improvement ", + "Can instantly construct a [Holy site] improvement ", "Can [Spread Religion] [4] times", "Removes other religions when spreading religion", "May found a religion", @@ -1647,7 +1647,7 @@ "name": "Great General", "unitType": "Civilian", "uniques": ["Can start an [8]-turn golden age", "[+15]% Strength bonus for [Military] units within [2] tiles", - "Can instantly construct a [Citadel] improvement ", + "Can instantly construct a [Citadel] improvement ", "Great Person - [War]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1658,7 +1658,7 @@ "replaces": "Great General", "uniques": ["Can start an [8]-turn golden age","[+15]% Strength bonus for [Military] units within [2] tiles", "All adjacent units heal [+15] HP when healing", "[+15] HP when healing", - "Can instantly construct a [Citadel] improvement ", + "Can instantly construct a [Citadel] improvement ", "Great Person - [War]", "Unbuildable", "Uncapturable"], "movement": 5 }, diff --git a/android/assets/jsons/Civ V - Vanilla/Units.json b/android/assets/jsons/Civ V - Vanilla/Units.json index 94849caaed..3a893175ee 100644 --- a/android/assets/jsons/Civ V - Vanilla/Units.json +++ b/android/assets/jsons/Civ V - Vanilla/Units.json @@ -1259,7 +1259,7 @@ "name": "Great Artist", "unitType": "Civilian", "uniques": ["Can start an [8]-turn golden age", - "Can instantly construct a [Landmark] improvement ", + "Can instantly construct a [Landmark] improvement ", "Great Person - [Culture]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1267,7 +1267,7 @@ "name": "Great Scientist", "unitType": "Civilian", "uniques": ["Can hurry technology research", - "Can instantly construct a [Academy] improvement ", + "Can instantly construct a [Academy] improvement ", "Great Person - [Science]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1275,7 +1275,7 @@ "name": "Great Merchant", "unitType": "Civilian", "uniques": ["Can undertake a trade mission with City-State, giving a large sum of gold and [30] Influence", - "Can instantly construct a [Customs house] improvement ", + "Can instantly construct a [Customs house] improvement ", "Great Person - [Gold]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1283,7 +1283,7 @@ "name": "Great Engineer", "unitType": "Civilian", "uniques": ["Can speed up construction of a building", - "Can instantly construct a [Manufactory] improvement ", + "Can instantly construct a [Manufactory] improvement ", "Great Person - [Production]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1291,7 +1291,7 @@ "name": "Great Prophet", "unitType": "Civilian", "uniques": [ - "Can instantly construct a [Holy site] improvement ", + "Can instantly construct a [Holy site] improvement ", "Can [Spread Religion] [4] times", "Removes other religions when spreading religion", "May found a religion", @@ -1306,7 +1306,7 @@ "name": "Great General", "unitType": "Civilian", "uniques": ["Can start an [8]-turn golden age", "[+15]% Strength bonus for [Military] units within [2] tiles", - "Can instantly construct a [Citadel] improvement ", + "Can instantly construct a [Citadel] improvement ", "Great Person - [War]", "Unbuildable", "Uncapturable"], "movement": 2 }, @@ -1317,7 +1317,7 @@ "replaces": "Great General", "uniques": ["Can start an [8]-turn golden age", "[+15]% Strength bonus for [Military] units within [2] tiles", "All adjacent units heal [+15] HP when healing", "[+15] HP when healing", - "Can instantly construct a [Citadel] improvement ", + "Can instantly construct a [Citadel] improvement ", "Great Person - [War]", "Unbuildable", "Uncapturable"], "movement": 5 }, diff --git a/core/src/com/unciv/models/ruleset/RulesetValidator.kt b/core/src/com/unciv/models/ruleset/RulesetValidator.kt index 866b0855af..35f366f48a 100644 --- a/core/src/com/unciv/models/ruleset/RulesetValidator.kt +++ b/core/src/com/unciv/models/ruleset/RulesetValidator.kt @@ -542,15 +542,6 @@ class RulesetValidator(val ruleset: Ruleset) { rulesetErrors.add(deprecationText, severity) } - if (unique.type.targetTypes.none { uniqueTarget.canAcceptUniqueTarget(it) } - // the 'consume unit' conditional causes a triggerable unique to become a unit action - && !(uniqueTarget== UniqueTarget.Unit - && unique.isTriggerable - && unique.conditionals.any { it.type == UniqueType.UnitActionConsumeUnit })) - rulesetErrors.add( - "$name's unique \"${unique.text}\" cannot be put on this type of object!", - RulesetErrorSeverity.Warning - ) return rulesetErrors } } diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 53ec8381f2..160ab7976a 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -351,7 +351,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: FoundCity("Founds a new city", UniqueTarget.Unit), ConstructImprovementInstantly("Can instantly construct a [improvementName] improvement", UniqueTarget.Unit), - @Deprecated("as of 4.5.2", ReplaceWith("Can instantly construct a [improvementName] improvement")) + @Deprecated("as of 4.5.2", ReplaceWith("Can instantly construct a [improvementName] improvement ")) ConstructImprovementConsumingUnit("Can construct [improvementName]", UniqueTarget.Unit), BuildImprovements("Can build [improvementFilter/terrainFilter] improvements on tiles", UniqueTarget.Unit), CreateWaterImprovements("May create improvements on water resources", UniqueTarget.Unit), @@ -505,10 +505,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: ///////////////////////////////////////// region UNIT ACTION MODIFIERS ///////////////////////////////////////// - UnitActionConsumeUnit("consuming this unit", UniqueTarget.UnitActionModifier), - UnitActionTriggerUnitUnique("as an action", UniqueTarget.UnitActionModifier), - @Deprecated("as of 4.5.2", ReplaceWith("consuming this unit")) - UnitActionConsumeUnitOld("by consuming this unit", UniqueTarget.UnitActionModifier), + UnitActionConsumeUnit("by consuming this unit", UniqueTarget.UnitActionModifier), // endregion diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt index e07fd2b1e7..3209e4e587 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt @@ -19,6 +19,7 @@ import com.unciv.models.UnitAction import com.unciv.models.UnitActionType import com.unciv.models.ruleset.unique.StateForConditionals import com.unciv.models.ruleset.unique.Unique +import com.unciv.models.ruleset.unique.UniqueTarget import com.unciv.models.ruleset.unique.UniqueTriggerActivation import com.unciv.models.ruleset.unique.UniqueType import com.unciv.models.translations.removeConditionals @@ -642,7 +643,7 @@ object UnitActions { private fun addTriggerUniqueActions(unit: MapUnit, actionList: ArrayList){ for (unique in unit.getUniques()) { - if (!unique.conditionals.any { it.type == UniqueType.UnitActionTriggerUnitUnique }) continue + if (unique.conditionals.none { it.type?.targetTypes?.contains(UniqueTarget.UnitActionModifier) == true }) continue val unitAction = UnitAction(type = UnitActionType.TriggerUnique, unique.text.removeConditionals()){ UniqueTriggerActivation.triggerUnitwideUnique(unique, unit) @@ -674,11 +675,14 @@ object UnitActions { } fun activateSideEffects(unit: MapUnit, actionUnique: Unique){ + var conditionalsWithNoSideEffect = 0 for (conditional in actionUnique.conditionals){ when (conditional.type){ UniqueType.UnitActionConsumeUnit -> unit.consume() - else -> unit.useMovementPoints(1f) + else -> conditionalsWithNoSideEffect++ } } + if (conditionalsWithNoSideEffect == actionUnique.conditionals.size) + unit.useMovementPoints(1f) } } diff --git a/docs/Modders/uniques.md b/docs/Modders/uniques.md index fa4815eed7..0b29039eda 100644 --- a/docs/Modders/uniques.md +++ b/docs/Modders/uniques.md @@ -1975,12 +1975,6 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl Applicable to: UnitTriggerCondition ## UnitActionModifier uniques -??? example "<consuming this unit>" - Applicable to: UnitActionModifier - -??? example "<as an action>" - Applicable to: UnitActionModifier - ??? example "<by consuming this unit>" Applicable to: UnitActionModifier