Index: binaries/data/mods/public/gui/common/tooltips.js =================================================================== --- binaries/data/mods/public/gui/common/tooltips.js +++ binaries/data/mods/public/gui/common/tooltips.js @@ -17,6 +17,17 @@ "crush": translate("Crush"), }; +var g_RangeTooltipString = { + "relative": { + "minRange": translate("%(attackLabel)s %(damageTypes)s, %(rangeLabel)s %(minRange)s to %(maxRange)s (%(relativeRange)s) %(rangeUnit)s, %(rate)s"), + "no-minRange": translate("%(attackLabel)s %(damageTypes)s, %(rangeLabel)s %(maxRange)s (%(relativeRange)s) %(rangeUnit)s, %(rate)s"), + }, + "non-relative": { + "minRange": translate("%(attackLabel)s %(damageTypes)s, %(rangeLabel)s %(minRange)s to %(maxRange)s %(rangeUnit)s, %(rate)s"), + "no-minRange": translate("%(attackLabel)s %(damageTypes)s, %(rangeLabel)s %(maxRange)s %(rangeUnit)s, %(rate)s"), + } +}; + function resourceIcon(resource) { return '[icon="icon_' + resource + '"]'; @@ -132,13 +143,12 @@ })).join(commaFont(translate(", "))); } -// TODO: should also show minRange function getAttackTooltip(template) { if (!template.attack) return ""; - let attacks = []; + let tooltips = []; for (let type in template.attack) { if (type == "Slaughter") @@ -156,7 +166,7 @@ let attackLabel = headerFont(g_AttackTypes[type]); if (type == "Capture" || type != "Ranged") { - attacks.push(sprintf(translate("%(attackLabel)s %(details)s, %(rate)s"), { + tooltips.push(sprintf(translate("%(attackLabel)s %(details)s, %(rate)s"), { "attackLabel": attackLabel, "details": type == "Capture" ? @@ -167,28 +177,27 @@ continue; } + let minRange = Math.round(template.attack[type].minRange); + let maxRange = Math.round(template.attack[type].maxRange); let realRange = template.attack[type].elevationAdaptedRange; - let range = Math.round(template.attack[type].maxRange); - let relativeRange = realRange ? Math.round(realRange - range) : 0; - - let rangeString = relativeRange ? - translate("%(attackLabel)s %(damageTypes)s, %(rangeLabel)s %(rangeString)s (%(relative)s), %(rate)s") : - translate("%(attackLabel)s %(damageTypes)s, %(rangeLabel)s %(rangeString)s, %(rate)s"); + let relativeRange = realRange ? Math.round(realRange - maxRange) : 0; - attacks.push(sprintf(rangeString, { + tooltips.push(sprintf(g_RangeTooltipString[relativeRange ? "relative" : "non-relative"][minRange ? "minRange" : "no-minRange"], { "attackLabel": attackLabel, "damageTypes": damageTypesToText(template.attack[type]), - "rangeLabel": translate("Range:"), - "rangeString": sprintf( - translatePlural("%(range)s %(meters)s", "%(range)s %(meters)s", range), { - "range": range, - "meters": unitFont(translatePlural("meter", "meters", range)) - }), + "rangeLabel": headerFont(translate("Range:")), + "minRange": minRange, + "maxRange": maxRange, + "relativeRange": relativeRange > 0 ? "+" + relativeRange : relativeRange, + "rangeUnit": + unitFont(minRange || relativeRange ? + // Translation: For example "0.5 to 1 meters", "1 (+1) meters" or "1 to 2 (+3) meters" + translate("meters") : + translatePlural("meter", "meters", maxRange)), "rate": rate, - "relative": relativeRange > 0 ? "+" + relativeRange : relativeRange, })); } - return attacks.join("\n"); + return tooltips.join("\n"); } function getSplashDamageTooltip(template) Index: binaries/data/mods/public/simulation/data/technologies/attack_tower_murderholes.json =================================================================== --- binaries/data/mods/public/simulation/data/technologies/attack_tower_murderholes.json +++ binaries/data/mods/public/simulation/data/technologies/attack_tower_murderholes.json @@ -8,6 +8,6 @@ "researchTime": 40, "tooltip": "Removes defense tower minimum range.", "modifications": [{"value": "Attack/Ranged/MinRange", "replace": 0}], - "affects": ["DefenseTower"], + "affects": ["Defensive"], "soundComplete": "interface/alarm/alarm_upgradearmory.xml" } Index: binaries/data/mods/public/simulation/templates/structures/brit_fortress.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/brit_fortress.xml +++ binaries/data/mods/public/simulation/templates/structures/brit_fortress.xml @@ -3,7 +3,7 @@ 80.0 - 14.0 + 25.0 Index: binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml +++ binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml @@ -1,5 +1,10 @@ + + + 25.0 + + 12.0 Index: binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml +++ binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml @@ -16,7 +16,7 @@ 25.0 0.0 80.0 - 12.0 + 25.0 75.0 1200 2000 Index: binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml +++ binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml @@ -1,5 +1,10 @@ + + + 20.0 + + 8.0 Index: binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml +++ binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml @@ -19,7 +19,7 @@ 12.0 0.0 72.0 - 10.0 + 20.0 75.0 1200 2000 Index: binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre_military_colony.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre_military_colony.xml +++ binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre_military_colony.xml @@ -21,10 +21,6 @@ 200 - - - 12.0 - 2000 rubble/rubble_stone_5x5 Index: binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml @@ -11,7 +11,7 @@ 16.0 0.0 72.0 - 8.0 + 20.0 75.0 1200 2000