Converted all "Bonus vs unitType" effects to "+[amount]% Strength vs [unitType]"

Open terrain and rough terrain bonuses are now generic and uniques
This commit is contained in:
Yair Morgenstern 2021-04-14 18:52:10 +03:00
parent b312d24d4a
commit d825352bf4
4 changed files with 44 additions and 44 deletions

View File

@ -22,7 +22,7 @@
"movementCost": 1, "movementCost": 1,
"defenceBonus": -0.1, "defenceBonus": -0.1,
"RGB": [97,171,58], "RGB": [97,171,58],
"uniques": ["Occurs at temperature between [-0.4] and [0.8] and humidity between [0.5] and [1]"] "uniques": ["Occurs at temperature between [-0.4] and [0.8] and humidity between [0.5] and [1]", "Open terrain"]
}, },
{ {
"name": "Plains", "name": "Plains",
@ -33,7 +33,7 @@
"defenceBonus": -0.1, "defenceBonus": -0.1,
"RGB": [168,185,102], "RGB": [168,185,102],
"uniques": ["Occurs at temperature between [-0.4] and [0.8] and humidity between [0] and [0.5]", "uniques": ["Occurs at temperature between [-0.4] and [0.8] and humidity between [0] and [0.5]",
"Occurs at temperature between [0.8] and [1] and humidity between [0.7] and [1]"] "Occurs at temperature between [0.8] and [1] and humidity between [0.7] and [1]", "Open terrain"]
}, },
{ {
"name": "Tundra", "name": "Tundra",
@ -42,7 +42,7 @@
"movementCost": 1, "movementCost": 1,
"defenceBonus": -0.1, "defenceBonus": -0.1,
"RGB": [189,204,191], "RGB": [189,204,191],
"uniques": ["Occurs at temperature between [-1] and [-0.4] and humidity between [0.5] and [1]"] "uniques": ["Occurs at temperature between [-1] and [-0.4] and humidity between [0.5] and [1]", "Open terrain"]
}, },
{ {
"name": "Desert", "name": "Desert",
@ -50,7 +50,7 @@
"movementCost": 1, "movementCost": 1,
"defenceBonus": -0.1, "defenceBonus": -0.1,
"RGB": [ 230, 230, 113], "RGB": [ 230, 230, 113],
"uniques": ["Occurs at temperature between [0.8] and [1] and humidity between [0] and [0.7]"] "uniques": ["Occurs at temperature between [0.8] and [1] and humidity between [0] and [0.7]", "Open terrain"]
}, },
{ {
"name": "Lakes", "name": "Lakes",
@ -82,7 +82,7 @@
"movementCost": 1, "movementCost": 1,
"defenceBonus": -0.1, "defenceBonus": -0.1,
"RGB": [231, 242, 249], "RGB": [231, 242, 249],
"uniques": ["Occurs at temperature between [-1] and [-0.4] and humidity between [0] and [0.5]"] "uniques": ["Occurs at temperature between [-1] and [-0.4] and humidity between [0] and [0.5]", "Open terrain"]
}, },
// Terrain features // Terrain features
@ -146,7 +146,7 @@
"food": 2, "food": 2,
"movementCost": 1, "movementCost": 1,
"defenceBonus": -0.1, "defenceBonus": -0.1,
"occursOn": ["Desert"] "occursOn": ["Desert", "Open terrain"]
}, },
{ {
"name": "Ice", "name": "Ice",

View File

@ -9,44 +9,44 @@
// Ranged+Siege // Ranged+Siege
{ {
"name": "Accuracy I", "name": "Accuracy I",
"effect": "Bonus vs units in open terrain 15%", "effect": "+[15]% Strength in [Open terrain]",
"unitTypes": ["Siege","Ranged"] "unitTypes": ["Siege","Ranged"]
}, },
{ {
"name": "Accuracy II", "name": "Accuracy II",
"prerequisites": ["Accuracy I"], "prerequisites": ["Accuracy I"],
"effect": "Bonus vs units in open terrain 15%", "effect": "+[15]% Strength in [Open terrain]",
"unitTypes": ["Siege","Ranged"] "unitTypes": ["Siege","Ranged"]
}, },
{ {
"name": "Accuracy III", "name": "Accuracy III",
"prerequisites": ["Accuracy II"], "prerequisites": ["Accuracy II"],
"effect": "Bonus vs units in open terrain 15%", "effect": "+[15]% Strength in [Open terrain]",
"unitTypes": ["Siege","Ranged"] "unitTypes": ["Siege","Ranged"]
}, },
{ {
"name": "Barrage I", "name": "Barrage I",
"effect": "Bonus vs units in rough terrain 15%", "effect": "+[15]% Strength in [Rough terrain]",
"unitTypes": ["Siege","Ranged"] "unitTypes": ["Siege","Ranged"]
}, },
{ {
"name": "Barrage II", "name": "Barrage II",
"prerequisites": ["Barrage I"], "prerequisites": ["Barrage I"],
"effect": "Bonus vs units in rough terrain 15%", "effect": "+[15]% Strength in [Rough terrain]",
"unitTypes": ["Siege","Ranged"] "unitTypes": ["Siege","Ranged"]
}, },
{ {
"name": "Barrage III", "name": "Barrage III",
"prerequisites": ["Barrage II"], "prerequisites": ["Barrage II"],
"effect": "Bonus vs units in rough terrain 15%", "effect": "+[15]% Strength in [Rough terrain]",
"unitTypes": ["Siege","Ranged"] "unitTypes": ["Siege","Ranged"]
}, },
{ {
"name": "Volley", "name": "Volley",
"prerequisites": ["Accuracy I","Barrage I"], "prerequisites": ["Accuracy I","Barrage I"],
"effect": "Bonus vs City 50%", "effect": "+[50]% Strength vs [City]",
"unitTypes": ["Ranged","Siege"] "unitTypes": ["Ranged","Siege"]
}, },
{ {
@ -65,61 +65,61 @@
// Melee, Mounted+Armor // Melee, Mounted+Armor
{ {
"name": "Shock I", "name": "Shock I",
"effect": "Bonus vs units in open terrain 15%", "effect": "+[15]% Strength in [Open terrain]",
"unitTypes": ["Melee","Mounted","Armor"] "unitTypes": ["Melee","Mounted","Armor"]
}, },
{ {
"name": "Shock II", "name": "Shock II",
"prerequisites": ["Shock I"], "prerequisites": ["Shock I"],
"effect": "Bonus vs units in open terrain 15%", "effect": "+[15]% Strength in [Open terrain]",
"unitTypes": ["Melee","Mounted","Armor"] "unitTypes": ["Melee","Mounted","Armor"]
}, },
{ {
"name": "Shock III", "name": "Shock III",
"prerequisites": ["Shock II"], "prerequisites": ["Shock II"],
"effect": "Bonus vs units in open terrain 15%", "effect": "+[15]% Strength in [Open terrain]",
"unitTypes": ["Melee","Mounted","Armor"] "unitTypes": ["Melee","Mounted","Armor"]
}, },
{ {
"name": "Drill I", "name": "Drill I",
"effect": "Bonus vs units in rough terrain 15%", "effect": "+[15]% Strength in [Rough terrain]",
"unitTypes": ["Melee","Mounted","Armor"] "unitTypes": ["Melee","Mounted","Armor"]
}, },
{ {
"name": "Drill II", "name": "Drill II",
"prerequisites": ["Drill I"], "prerequisites": ["Drill I"],
"effect": "Bonus vs units in rough terrain 15%", "effect": "+[15]% Strength in [Rough terrain]",
"unitTypes": ["Melee","Mounted","Armor"] "unitTypes": ["Melee","Mounted","Armor"]
}, },
{ {
"name": "Drill III", "name": "Drill III",
"prerequisites": ["Drill II"], "prerequisites": ["Drill II"],
"effect": "Bonus vs units in rough terrain 15%", "effect": "+[15]% Strength in [Rough terrain]",
"unitTypes": ["Melee","Mounted","Armor"] "unitTypes": ["Melee","Mounted","Armor"]
}, },
{ {
"name": "Charge", "name": "Charge",
"prerequisites": ["Shock II","Drill II"], "prerequisites": ["Shock II","Drill II"],
"effect": "Bonus vs wounded units 33%", "effect": "+[33]% Strength vs [wounded units]",
"unitTypes": ["Mounted","Armor"] "unitTypes": ["Mounted","Armor"]
}, },
{ {
"name": "Besiege", // Not called "Siege" in order to not conflict with siege type units for translations "name": "Besiege", // Not called "Siege" in order to not conflict with siege type units for translations
"prerequisites": ["Shock II","Drill II"], "prerequisites": ["Shock II","Drill II"],
"effect": "Bonus vs City 50%", "effect": "+[50]% Strength vs [City]",
"unitTypes": ["Melee"] "unitTypes": ["Melee"]
}, },
{ {
"name": "Formation I", "name": "Formation I",
"prerequisites": ["Shock II","Drill II"], "prerequisites": ["Shock II","Drill II"],
"effect": "Bonus vs Mounted 33%", "effect": "+[33]% Strength vs [Mounted]",
"unitTypes": ["Melee","Mounted"] "unitTypes": ["Melee","Mounted"]
}, },
{ {
"name": "Formation II", "name": "Formation II",
"prerequisites": ["Formation I"], "prerequisites": ["Formation I"],
"effect": "Bonus vs Mounted 33%", "effect": "+[33]% Strength vs [Mounted]",
"unitTypes": ["Melee","Mounted"] "unitTypes": ["Melee","Mounted"]
}, },
@ -171,37 +171,37 @@
// Water melee // Water melee
{ {
"name": "Boarding Party I", "name": "Boarding Party I",
"effect": "Bonus vs water units 15%", "effect": "+[33]% Strength vs [Water units]",
"unitTypes": ["WaterMelee"] "unitTypes": ["WaterMelee"]
}, },
{ {
"name": "Boarding Party II", "name": "Boarding Party II",
"prerequisites": ["Boarding Party I"], "prerequisites": ["Boarding Party I"],
"effect": "Bonus vs water units 15%", "effect": "+[33]% Strength vs [Water units]",
"unitTypes": ["WaterMelee"] "unitTypes": ["WaterMelee"]
}, },
{ {
"name": "Boarding Party III", "name": "Boarding Party III",
"prerequisites": ["Boarding Party II"], "prerequisites": ["Boarding Party II"],
"effect": "Bonus vs water units 15%", "effect": "+[33]% Strength vs [Water units]",
"unitTypes": ["WaterMelee"] "unitTypes": ["WaterMelee"]
}, },
{ {
"name": "Coastal Raider I", "name": "Coastal Raider I",
"effect": "Bonus vs City 15%", "effect": "+[15]% Strength vs [City]",
"unitTypes": ["WaterMelee"] "unitTypes": ["WaterMelee"]
}, },
{ {
"name": "Coastal Raider II", "name": "Coastal Raider II",
"prerequisites": ["Coastal Raider I"], "prerequisites": ["Coastal Raider I"],
"effect": "Bonus vs City 15%", "effect": "+[15]% Strength vs [City]",
"unitTypes": ["WaterMelee"] "unitTypes": ["WaterMelee"]
}, },
{ {
"name": "Coastal Raider III", "name": "Coastal Raider III",
"prerequisites": ["Coastal Raider II"], "prerequisites": ["Coastal Raider II"],
"effect": "Bonus vs City 15%", "effect": "+[15]% Strength vs [City]",
"unitTypes": ["WaterMelee"] "unitTypes": ["WaterMelee"]
}, },
@ -263,19 +263,19 @@
// Bomber // Bomber
{ {
"name": "Siege I", "name": "Siege I",
"effect": "Bonus vs City 33%", "effect": "+[33]% Strength vs [City]",
"unitTypes": ["Bomber"] "unitTypes": ["Bomber"]
}, },
{ {
"name": "Siege II", "name": "Siege II",
"prerequisites": ["Siege I"], "prerequisites": ["Siege I"],
"effect": "Bonus vs City 33%", "effect": "+[33]% Strength vs [City]",
"unitTypes": ["Bomber"] "unitTypes": ["Bomber"]
}, },
{ {
"name": "Siege III", "name": "Siege III",
"prerequisites": ["Siege II"], "prerequisites": ["Siege II"],
"effect": "Bonus vs City 34%", "effect": "+[34]% Strength vs [City]",
"unitTypes": ["Bomber"] "unitTypes": ["Bomber"]
}, },
{ {
@ -385,13 +385,13 @@
{ {
"name": "Ambush I", "name": "Ambush I",
"effect": "Bonus vs Armor 25%", "effect": "+[25]% Strength vs [Armor]",
"unitTypes": ["Melee","Fighter","Bomber"] "unitTypes": ["Melee","Fighter","Bomber"]
}, },
{ {
"name": "Ambush II", "name": "Ambush II",
"prerequisites": ["Ambush I"], "prerequisites": ["Ambush I"],
"effect": "Bonus vs Armor 25%", "effect": "+[25]% Strength vs [Armor]",
"unitTypes": ["Melee","Fighter","Bomber"] "unitTypes": ["Melee","Fighter","Bomber"]
}, },
@ -399,44 +399,44 @@
// Water ranged and air units // Water ranged and air units
{ {
"name": "Bombardment I", "name": "Bombardment I",
"effect": "Bonus vs land units 33%", "effect": "+[33]% Strength vs [land units]",
"unitTypes": ["WaterRanged","Fighter","Bomber"] "unitTypes": ["WaterRanged","Fighter","Bomber"]
}, },
{ {
"name": "Bombardment II", "name": "Bombardment II",
"prerequisites": ["Bombardment I"], "prerequisites": ["Bombardment I"],
"effect": "Bonus vs land units 33%", "effect": "+[33]% Strength vs [land units]",
"unitTypes": ["WaterRanged","Fighter","Bomber"] "unitTypes": ["WaterRanged","Fighter","Bomber"]
}, },
{ {
"name": "Bombardment III", "name": "Bombardment III",
"prerequisites": ["Bombardment II"], "prerequisites": ["Bombardment II"],
"effect": "Bonus vs land units 34%", "effect": "+[34]% Strength vs [land units]",
"unitTypes": ["WaterRanged","Fighter","Bomber"] "unitTypes": ["WaterRanged","Fighter","Bomber"]
}, },
// Targeting I has different requirements for air and waterranged units, this was the cleanest way to do so // Targeting I has different requirements for air and waterranged units, this was the cleanest way to do so
{ {
"name": "Targeting I", "name": "Targeting I",
"effect": "Bonus vs water units 15%", "effect": "+[15]% Strength vs [water units]",
"unitTypes": ["WaterRanged"] "unitTypes": ["WaterRanged"]
}, },
{ {
"name": "Targeting I (air)", "name": "Targeting I (air)",
"prerequisites": ["Interception I","Dogfighting I", "Siege I","Bombardment I"], "prerequisites": ["Interception I","Dogfighting I", "Siege I","Bombardment I"],
"effect": "Bonus vs water units 15%", "effect": "+[15]% Strength vs [water units]",
"unitTypes": ["Fighter","Bomber"] "unitTypes": ["Fighter","Bomber"]
}, },
{ {
"name": "Targeting II", "name": "Targeting II",
"prerequisites": ["Targeting I","Targeting I (air)"], "prerequisites": ["Targeting I","Targeting I (air)"],
"effect": "Bonus vs water units 15%", "effect": "+[15]% Strength vs [water units]",
"unitTypes": ["WaterRanged","Fighter","Bomber"] "unitTypes": ["WaterRanged","Fighter","Bomber"]
}, },
{ {
"name": "Targeting III", "name": "Targeting III",
"prerequisites": ["Targeting II"], "prerequisites": ["Targeting II"],
"effect": "Bonus vs water units 15%", "effect": "+[15]% Strength vs [water units]",
"unitTypes": ["WaterRanged"] "unitTypes": ["WaterRanged"]
}, },

View File

@ -201,7 +201,7 @@ object BattleDamage {
private fun getTileSpecificModifiers(unit: MapUnitCombatant, tile: TileInfo): Counter<String> { private fun getTileSpecificModifiers(unit: MapUnitCombatant, tile: TileInfo): Counter<String> {
val modifiers = Counter<String>() val modifiers = Counter<String>()
for (unique in unit.unit.getMatchingUniques("+[]% combat bonus in []") // deprecated as of 3.14.1 for (unique in unit.unit.getMatchingUniques("+[]% combat bonus in []") // deprecated as of 3.14.1 - changed to "+[]% Strength in []"
+ unit.unit.getMatchingUniques("+[]% Strength in []") + unit.unit.getMatchingUniques("+[]% Strength in []")
+ unit.getCivInfo().getMatchingUniques("+[]% combat bonus for units fighting in []")) { + unit.getCivInfo().getMatchingUniques("+[]% combat bonus for units fighting in []")) {
val filter = unique.params[1] val filter = unique.params[1]
@ -220,10 +220,10 @@ object BattleDamage {
modifiers["Haka War Dance"] = -10 modifiers["Haka War Dance"] = -10
// Deprecated as of 3.14.1 - changed to "+[15]% Strength in [Rough terrain]"
val isRoughTerrain = tile.isRoughTerrain() val isRoughTerrain = tile.isRoughTerrain()
for (BDM in getBattleDamageModifiersOfUnit(unit.unit)) { for (BDM in getBattleDamageModifiersOfUnit(unit.unit)) {
val text = BDM.getText() val text = BDM.getText()
// this will change when we change over everything to ints
if (BDM.vs == "units in open terrain" && !isRoughTerrain) modifiers.add(text, (BDM.modificationAmount).toInt()) if (BDM.vs == "units in open terrain" && !isRoughTerrain) modifiers.add(text, (BDM.modificationAmount).toInt())
if (BDM.vs == "units in rough terrain" && isRoughTerrain) modifiers.add(text, (BDM.modificationAmount).toInt()) if (BDM.vs == "units in rough terrain" && isRoughTerrain) modifiers.add(text, (BDM.modificationAmount).toInt())
} }

View File

@ -379,7 +379,7 @@ open class TileInfo {
|| filter == "River" && isAdjacentToRiver() || filter == "River" && isAdjacentToRiver()
|| terrainFeatures.contains(filter) || terrainFeatures.contains(filter)
|| baseTerrainObject.uniques.contains(filter) || baseTerrainObject.uniques.contains(filter)
|| getTerrainFeatures().any { it.uniques.contains(filter) } || terrainFeatures.isNotEmpty() && getTerrainFeatures().last().uniques.contains(filter)
|| improvement == filter || improvement == filter
|| civInfo != null && hasViewableResource(civInfo) && resource == filter || civInfo != null && hasViewableResource(civInfo) && resource == filter
|| filter == "Water" && isWater || filter == "Water" && isWater