From a01a02f7a1ec915c207632085cd5f24eab28da17 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 30 Jan 2021 12:41:27 +0100 Subject: Preserve immortal group for players when damage is disabled --- src/script/lua_api/l_object.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/script/lua_api') diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index ba201a9d3..07aa3f7c9 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -355,6 +355,15 @@ int ObjectRef::l_set_armor_groups(lua_State *L) ItemGroupList groups; read_groups(L, 2, groups); + if (sao->getType() == ACTIVEOBJECT_TYPE_PLAYER) { + if (!g_settings->getBool("enable_damage") && !itemgroup_get(groups, "immortal")) { + warningstream << "Mod tried to enable damage for a player, but it's " + "disabled globally. Ignoring." << std::endl; + infostream << script_get_backtrace(L) << std::endl; + groups["immortal"] = 1; + } + } + sao->setArmorGroups(groups); return 0; } -- cgit v1.2.3