Index: binaries/data/mods/public/gui/session/menu.js =================================================================== --- binaries/data/mods/public/gui/session/menu.js +++ binaries/data/mods/public/gui/session/menu.js @@ -486,9 +486,18 @@ { let resTribCodes = g_ResourceData.GetTributableCodes(); let r = 0; + let buttons = {}; + let multipliers = {}; + let amounts = {}; + for (let resCode of resTribCodes) { + multipliers[resCode] = 1; + amounts[resCode] = 0; + buttons[resCode] = null; + } for (let resCode of resTribCodes) { let button = Engine.GetGUIObjectByName("diplomacyPlayer[" + (i - 1) + "]_tribute[" + r + "]"); + buttons[resCode] = button; if (!button) { warn("Current GUI limits prevent displaying more than " + r + " tribute buttons!"); @@ -507,19 +516,15 @@ button.onPress = (function(i, resCode, button) { // Shift+click to send 500, shift+click+click to send 1000, etc. // See INPUT_MASSTRIBUTING in input.js - let multiplier = 1; return function() { let isMassTributePressed = Engine.HotkeyIsPressed("session.masstribute"); if (isMassTributePressed) { inputState = INPUT_MASSTRIBUTING; - multiplier += multiplier == 1 ? 4 : 5; + multipliers[resCode] += multipliers[resCode] == 1 ? 4 : 5; } - let amounts = {}; - for (let res of resTribCodes) - amounts[res] = 0; - amounts[resCode] = 100 * multiplier; + amounts[resCode] = 100 * multipliers[resCode]; button.tooltip = formatTributeTooltip(i, resCode, amounts[resCode]); @@ -527,8 +532,11 @@ // evil global variable hackery. g_FlushTributing = function() { Engine.PostNetworkCommand({ "type": "tribute", "player": i, "amounts": amounts }); - multiplier = 1; - button.tooltip = formatTributeTooltip(i, resCode, 100); + for (let res of resTribCodes) { + multipliers[res] = 1; + amounts[res] = 0; + buttons[res].tooltip = formatTributeTooltip(i, res, 100); + } }; if (!isMassTributePressed)