Allow WFL for [random_placement]num_items=

(cherry-picked from commit e4a2c14177)
This commit is contained in:
Celtic Minstrel 2018-03-25 20:50:04 -04:00
parent d7d3bc692b
commit 0131631220
2 changed files with 10 additions and 2 deletions

View file

@ -5,6 +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=
### Language and i18n
* Fixed many cases of interpolated strings in the engine possibly having
their translations retrieved from the wrong textdomain and falling back

View file

@ -14,8 +14,15 @@ wesnoth.wml_actions.random_placement = function(cfg)
local math_abs = math.abs
local locs = wesnoth.get_locations(filter)
if type(num_items) == "string" then
num_items = math.floor(load("local size = " .. #locs .. "; return " .. num_items)())
print("num_items=" .. num_items .. ", #locs=" .. #locs)
if num_items:match('^%s%(.*%)%s$') then
local params = {size = #locs}
local result = wesnoth.eval_formula(num_items)
num_items = math.floor(tonumber(result))
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)())
print("num_items=" .. num_items .. ", #locs=" .. #locs)
end
end
local size = #locs
for i = 1, num_items do