Do not add group values of zero to group lists. (#8751)
authorBeha <shacknetisp@mail.com>
Wed, 7 Aug 2019 08:48:04 +0000 (04:48 -0400)
committersfan5 <sfan5@live.de>
Wed, 7 Aug 2019 08:48:04 +0000 (10:48 +0200)
This fixes an issue where when the engine looked up groups (for example,
in ABM node names), NodeDefManager's m_group_to_items would contain nodes
with a group value of zero, resulting in nodes with flammable = 0 being
burned by a fire mod with a group:flammable checking ABM.

It brings consistency to the behaviour described in the api
documentation, where zero and nil groups should be the same.

src/script/common/c_content.cpp

index 3a9e9e049d1b20f52eccdaf45588706201963cd8..9eba4cbf2d107f67ea3331169715af891b7ec961 100644 (file)
@@ -1529,13 +1529,15 @@ void read_groups(lua_State *L, int index, ItemGroupList &result)
                return;
        result.clear();
        lua_pushnil(L);
-       if(index < 0)
+       if (index < 0)
                index -= 1;
-       while(lua_next(L, index) != 0){
+       while (lua_next(L, index) != 0) {
                // key at index -2 and value at index -1
                std::string name = luaL_checkstring(L, -2);
                int rating = luaL_checkinteger(L, -1);
-               result[name] = rating;
+               // zero rating indicates not in the group
+               if (rating != 0)
+                       result[name] = rating;
                // removes value, keeps key for next iteration
                lua_pop(L, 1);
        }