diff --git a/data/lua/core.lua b/data/lua/core.lua index 7d339d94b906..0d723ec9ba43 100644 --- a/data/lua/core.lua +++ b/data/lua/core.lua @@ -819,11 +819,25 @@ if wesnoth.kernel_type() == "Game Lua Kernel" then wesnoth.terrain_mask = wesnoth.deprecate_api('wesnoth.terrain_mask', 'wesnoth.map.get():terrain_mask', 1, nil, function(...) get_map().terrain_mask(...) end) - wesnoth.get_terrain = wesnoth.deprecate_api('wesnoth.get_terrain', 'wesnoth.map.get():get_terrain', 1, nil, function(...) - get_map().get_terrain(...) + wesnoth.get_terrain = wesnoth.deprecate_api('wesnoth.get_terrain', 'wesnoth.map.get():get_terrain', 1, nil, function(x, y) + local loc = wesnoth.read_location(x, y) + if loc == nil then error('get_terrain: expected location') end + return get_map()[loc] end) wesnoth.set_terrain = wesnoth.deprecate_api('wesnoth.set_terrain', 'wesnoth.map.get():set_terrain', 1, nil, function(...) - get_map().set_terrain(...) + local loc, n = wesnoth.read_location(...) + if n == 0 then error('set_terrain: expected location') end + local new_ter, mode, replace_if_failed = select(n + 1, ...) + if new_ter == '' or type(new_ter) ~= 'string' then error('set_terrain: expected terrain string') end + if replace_if_failed then + mode = mode or 'both' + new_ter = wesnoth.map.replace_if_failed(new_ter, mode, true) + elseif mode == 'both' or mode == 'base' or mode == 'overlay' then + new_ter = wesnoth.map['replace_' .. mode](new_ter) + else + error('set_terrain: invalid mode') + end + get_map()[loc] = new_ter end) wesnoth.get_map_size = wesnoth.deprecate_api('wesnoth.get_map_size', 'wesnoth.map.get().width,height,border_size', 1, nil, function() local m = get_map()