Do not add group values of zero to group lists. (#8751)

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.
master
Beha 2019-08-07 04:48:04 -04:00 committed by sfan5
parent 233cb86e86
commit 4d7f296717
1 changed files with 5 additions and 3 deletions

View File

@ -1529,13 +1529,15 @@ void read_groups(lua_State *L, int index, ItemGroupList &result)
return; return;
result.clear(); result.clear();
lua_pushnil(L); lua_pushnil(L);
if(index < 0) if (index < 0)
index -= 1; index -= 1;
while(lua_next(L, index) != 0){ while (lua_next(L, index) != 0) {
// key at index -2 and value at index -1 // key at index -2 and value at index -1
std::string name = luaL_checkstring(L, -2); std::string name = luaL_checkstring(L, -2);
int rating = luaL_checkinteger(L, -1); 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 // removes value, keeps key for next iteration
lua_pop(L, 1); lua_pop(L, 1);
} }