Index: binaries/data/mods/public/globalscripts/Templates.js =================================================================== --- binaries/data/mods/public/globalscripts/Templates.js +++ binaries/data/mods/public/globalscripts/Templates.js @@ -207,6 +207,18 @@ for (let damageType of damageTypes.GetTypes()) ret.attack[type].splash[damageType] = getAttackStat("Splash/" + damageType); } + + if (template.Attack[type].Bonuses) + { + ret.attack[type].bonuses = {}; + for (let bonus in template.Attack[type].Bonuses) + { + ret.attack[type].bonuses[bonus] = { + "classes": template.Attack[type].Bonuses[bonus].Classes, + "multiplier": template.Attack[type].Bonuses[bonus].Multiplier + } + } + } } } 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 @@ -823,6 +823,45 @@ }); } +function getCountersTooltip(template) +{ + + if (!template.attack) + return ""; + + let result; + for (let attackType in template.attack) + { + if (!template.attack[attackType].bonuses) + continue; + + let string = headerFont(sprintf(translate("Counters %(attackType)s : "), { + "attackType": attackType + })); + result = result ? result + "\n" + string : string; + let firstBonus = true; + for (let key in template.attack[attackType].bonuses) + { + let bonus = template.attack[attackType].bonuses[key]; + if (bonus && bonus.classes) + { + let separator = ", "; + if (firstBonus) + { + separator = ""; + firstBonus = false; + } + result += bodyFont(sprintf(translate("%(separator)s%(multiplier)sx against %(classes)s"), { + "separator": separator, + "multiplier": bonus.multiplier, + "classes": bonus.classes + })); + } + } + } + return result; +} + function showTemplateViewerOnRightClickTooltip() { // Translation: Appears in a tooltip to indicate that right-clicking the corresponding GUI element will open the Template Details GUI page. Index: binaries/data/mods/public/gui/credits/texts/programming.json =================================================================== --- binaries/data/mods/public/gui/credits/texts/programming.json +++ binaries/data/mods/public/gui/credits/texts/programming.json @@ -83,6 +83,7 @@ {"nick": "falsevision", "name": "Mahdi Khodadadifard"}, {"nick": "fatherbushido", "name": "Nicolas Tisserand"}, {"nick": "fcxSanya", "name": "Alexander Olkhovskiy"}, + {"nick": "Feldfeld"}, {"nick": "FeXoR", "name": "Florian Finke"}, {"nick": "Fire Giant", "name": "Malte Schwarzkopf"}, {"nick": "fpre", "name": "Frederick Stallmeyer"}, Index: binaries/data/mods/public/gui/reference/common/draw.js =================================================================== --- binaries/data/mods/public/gui/reference/common/draw.js +++ binaries/data/mods/public/gui/reference/common/draw.js @@ -10,6 +10,7 @@ * The functions listed are defined in gui/common/tooltips.js */ var g_StatsFunctions = [ + getCountersTooltip, getHealthTooltip, getHealerTooltip, getAttackTooltip, Index: binaries/data/mods/public/gui/session/selection_details.js =================================================================== --- binaries/data/mods/public/gui/session/selection_details.js +++ binaries/data/mods/public/gui/session/selection_details.js @@ -284,6 +284,7 @@ }; Engine.GetGUIObjectByName("attackAndArmorStats").tooltip = [ + getCountersTooltip, getAttackTooltip, getSplashDamageTooltip, getHealerTooltip, Index: binaries/data/mods/public/gui/session/selection_panels.js =================================================================== --- binaries/data/mods/public/gui/session/selection_panels.js +++ binaries/data/mods/public/gui/session/selection_panels.js @@ -979,6 +979,7 @@ if (Engine.ConfigDB_GetValue("user", "showdetailedtooltips") === "true") tooltips = tooltips.concat([ + getCountersTooltip, getHealthTooltip, getAttackTooltip, getSplashDamageTooltip, Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml @@ -22,7 +22,6 @@ Spear Cavalry Spearman - Counters: 1.5x vs. Cavalry. 1.1 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml @@ -32,7 +32,6 @@ Melee Spear Champion Cavalry Spearman - Counters: 1.5x vs. Cavalry. 1.1 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml @@ -33,7 +33,6 @@ Melee Spear Pike Champion Pikeman - Counters: 3x vs. Cavalry. special/formations/syntagma special/formations/testudo Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml @@ -32,7 +32,6 @@ Champion Spearman Melee Spear - Counters: 3x vs. Cavalry. special/formations/testudo Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml @@ -24,7 +24,6 @@ Melee Spear Pike Hero Pikeman - Counters: 3x vs. Cavalry. special/formations/testudo Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml @@ -24,7 +24,6 @@ Melee Spear Hero Spearman - Counters: 3x vs. Cavalry. special/formations/testudo Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml @@ -26,7 +26,6 @@ Spear Pike Pikeman - Counters: 3x vs. Cavalry. special/formations/syntagma Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml @@ -25,7 +25,6 @@ Spear Spearman - Counters: 3x vs. Cavalry. 5