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
@@ -383,45 +383,53 @@
function getStatusEffectsTooltip(template)
{
let tooltipAttributes = [];
- let tooltipString = "";
if (template.StatusTooltip)
- {
- tooltipAttributes.push("%(tooltip)s");
- tooltipString = translate(template.StatusTooltip);
- }
+ tooltipAttributes.push(translate(template.StatusTooltip));
- let attackEffectsString = "";
if (template.Damage || template.Capture)
- {
- tooltipAttributes.push("%(effects)s");
- attackEffectsString = attackEffectsDetails(template);
- }
+ tooltipAttributes.push(attackEffectsDetails(template));
- let intervalString = "";
if (template.Interval)
- {
- tooltipAttributes.push("%(rate)s");
- intervalString = sprintf(translate("%(interval)s"), {
- "interval": attackRateDetails(+template.Interval)
- });
- }
+ tooltipAttributes.push(attackRateDetails(+template.Interval));
- let durationString = "";
if (template.Duration)
- {
- tooltipAttributes.push("%(duration)s");
- durationString = sprintf(translate("%(durName)s: %(duration)s"), {
- "durName": headerFont(translate("Duration")),
- "duration": getSecondsString((template._timeElapsed ? +template.Duration - template._timeElapsed : +template.Duration) / 1000),
- });
- }
+ tooltipAttributes.push(getStatusEffectDurationTooltip(template));
- return sprintf(translate("%(statusName)s: " + tooltipAttributes.join(translate(commaFont(", ")))), {
+ return sprintf(translate("%(statusName)s: %(statusInfo)s %(stackability)s"), {
"statusName": headerFont(translateWithContext("status effect", template.StatusName)),
- "tooltip": tooltipString,
- "effects": attackEffectsString,
- "rate": intervalString,
- "duration": durationString
+ "statusInfo": tooltipAttributes.join(commaFont(translate(", "))),
+ "stackability": getStatusEffectStackabilityTooltip(template)
+ });
+}
+
+function getStatusEffectDurationTooltip(template)
+{
+ if (!template.Duration)
+ return "";
+
+ return sprintf(translate("%(durName)s: %(duration)s"), {
+ "durName": headerFont(translate("Duration")),
+ "duration": getSecondsString((template._timeElapsed ?
+ +template.Duration - template._timeElapsed :
+ +template.Duration) / 1000)
+ });
+}
+
+function getStatusEffectStackabilityTooltip(template)
+{
+ if (!template.Stackability || template.Stackability == "Ignore")
+ return "";
+
+ let stackabilityString = "";
+ if (template.Stackability == "Extend")
+ stackabilityString = translateWithContext("status effect stackability", "(extends)");
+ else if (template.Stackability == "Replace")
+ stackabilityString = translateWithContext("status effect stackability", "(replaces)");
+ else if (template.Stackability == "Stack")
+ stackabilityString = translateWithContext("status effect stackability", "(stacks)");
+
+ return sprintf(translate("%(stackability)s"), {
+ "stackability": stackabilityString
});
}
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
@@ -108,7 +108,9 @@
size.top = i * 18;
size.bottom = i * 18 + 16;
statusIcons[i].size = size;
- i++;
+
+ if (++i >= statusIcons.length)
+ break;
}
for (; i < statusIcons.length; ++i)
statusIcons[i].hidden = true;
Index: binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
===================================================================
--- binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
+++ binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
@@ -83,7 +83,7 @@
Rank
-
+