diff --git a/data/multiplayer/scenarios/Random_Scenario_Cave.cfg b/data/multiplayer/scenarios/Random_Scenario_Cave.cfg index e6c3b71cb3f2..b36130502ec7 100644 --- a/data/multiplayer/scenarios/Random_Scenario_Cave.cfg +++ b/data/multiplayer/scenarios/Random_Scenario_Cave.cfg @@ -177,5 +177,6 @@ Rb,Rb,Rb,Rb,Rb,Rb,Rb,Rb^Uf,Rb^Ii,Sm,Sm,Uue,Rb^Fetd,Rb^Fdw#enddef [/generator] [/multiplayer] +#undef CLEAR_TERRAINS #undef ROAD_COSTS #undef PLAYER_CHAMBER diff --git a/src/scripting/mapgen_lua_kernel.cpp b/src/scripting/mapgen_lua_kernel.cpp index 732106f6e180..e531edc5c8e4 100644 --- a/src/scripting/mapgen_lua_kernel.cpp +++ b/src/scripting/mapgen_lua_kernel.cpp @@ -152,9 +152,15 @@ void mapgen_lua_kernel::run_generator(const char * prog, const config & generato protected_call(1, 1, std::bind(&lua_kernel_base::throw_exception, this, _1, _2)); } -void mapgen_lua_kernel::user_config(const char * prog, const config & generator) +void mapgen_lua_kernel::user_config(const char * prog, config & generator) { run_generator(prog, generator); + if(!luaW_toconfig(mState, -1, generator)) { + std::string msg = "expected a string, found a "; + msg += lua_typename(mState, lua_type(mState, -1)); + lua_pop(mState, 1); + throw game::lua_error(msg.c_str(),"bad return value"); + } } std::string mapgen_lua_kernel::create_map(const char * prog, const config & generator, boost::optional seed) // throws game::lua_error diff --git a/src/scripting/mapgen_lua_kernel.hpp b/src/scripting/mapgen_lua_kernel.hpp index 038f72e91d98..a995dcfb29aa 100644 --- a/src/scripting/mapgen_lua_kernel.hpp +++ b/src/scripting/mapgen_lua_kernel.hpp @@ -29,7 +29,7 @@ class mapgen_lua_kernel : public lua_kernel_base { virtual std::string my_name() { return "Mapgen Lua Kernel"; } - void user_config(const char * prog, const config & generator); // throws game::lua_error + void user_config(const char * prog, config & generator); // throws game::lua_error std::string create_map(const char * prog, const config & generator, boost::optional seed); // throws game::lua_error config create_scenario(const char * prog, const config & generator, boost::optional seed); // throws game::lua_error