diff --git a/changelog.md b/changelog.md index fd4e6a4a2d14..31aefc9876a7 100644 --- a/changelog.md +++ b/changelog.md @@ -5,7 +5,7 @@ * Support [filter_weapon] in leadership and resistance abilities, which activates the ability only when the affected unit is using a matching weapon. - * Support WFL in [random_placement]num_items= + * Support WFL and percentages in [random_placement]num_items= ### Language and i18n * Fixed many cases of interpolated strings in the engine possibly having their translations retrieved from the wrong textdomain and falling back diff --git a/data/lua/wml/random_placement.lua b/data/lua/wml/random_placement.lua index bf6421224314..d3d78c21c655 100644 --- a/data/lua/wml/random_placement.lua +++ b/data/lua/wml/random_placement.lua @@ -18,6 +18,8 @@ wesnoth.wml_actions.random_placement = function(cfg) local params = {size = #locs} local result = wesnoth.eval_formula(num_items) num_items = math.floor(tonumber(result)) + elseif num_items:match('^%d+%%$') then + num_items = tonumber(num_items:sub(1,-2)) else wesnoth.deprecated_message('num_items=lua', 2, '1.17.0', 'Use of Lua for [random_placement]num_items is deprecated. Use WFL instead and enclose the whole thing in parentheses.') num_items = math.floor(load("local size = " .. #locs .. "; return " .. num_items)())