From 2de8c22a9971153d594b2bb4736eb293753f1212 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Tue, 6 Sep 2016 19:13:52 +0200 Subject: [PATCH] Make getStackMax return the correct maximal stack size --- src/inventory.h | 5 ++--- src/itemdef.h | 2 +- src/script/common/c_content.cpp | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/inventory.h b/src/inventory.h index a690eb5a..7d7e58d6 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -80,15 +80,14 @@ struct ItemStack // Maximum size of a stack u16 getStackMax(IItemDefManager *itemdef) const { - s16 max = itemdef->get(name).stack_max; - return (max >= 0) ? max : 0; + return itemdef->get(name).stack_max; } // Number of items that can be added to this stack u16 freeSpace(IItemDefManager *itemdef) const { u16 max = getStackMax(itemdef); - if(count > max) + if (count >= max) return 0; return max - count; } diff --git a/src/itemdef.h b/src/itemdef.h index b14ed41f..dcb98e8a 100644 --- a/src/itemdef.h +++ b/src/itemdef.h @@ -61,7 +61,7 @@ struct ItemDefinition /* Item stack and interaction properties */ - s16 stack_max; + u16 stack_max; bool usable; bool liquids_pointable; // May be NULL. If non-NULL, deleted by destructor diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index c664101e..19873abc 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -65,9 +65,8 @@ ItemDefinition read_item_definition(lua_State* L,int index, } lua_pop(L, 1); - def.stack_max = getintfield_default(L, index, "stack_max", def.stack_max); - if(def.stack_max == 0) - def.stack_max = 1; + int stack_max = getintfield_default(L, index, "stack_max", def.stack_max); + def.stack_max = rangelim(stack_max, 1, U16_MAX); lua_getfield(L, index, "on_use"); def.usable = lua_isfunction(L, -1);