diff options
Diffstat (limited to 'src/map/itemdb.c')
-rw-r--r-- | src/map/itemdb.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/map/itemdb.c b/src/map/itemdb.c index ce10f4f39..6455d10b6 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -724,6 +724,46 @@ static int itemdb_read_itemdelay(void) return 0; } +/*================================================================== + * Reads item stacking restrictions + *----------------------------------------------------------------*/ +static bool itemdb_read_stack(char* fields[], int columns, int current) +{// <item id>,<stack limit amount>,<type> + unsigned short nameid, amount; + unsigned int type; + struct item_data* id; + + nameid = (unsigned short)strtoul(fields[0], NULL, 10); + + if( ( id = itemdb_exists(nameid) ) == NULL ) + { + ShowWarning("itemdb_read_stack: Unknown item id '%hu'.\n", nameid); + return false; + } + + if( !itemdb_isstackable2(id) ) + { + ShowWarning("itemdb_read_stack: Item id '%hu' is not stackable.\n", nameid); + return false; + } + + amount = (unsigned short)strtoul(fields[1], NULL, 10); + type = strtoul(fields[2], NULL, 10); + + if( !amount ) + {// ignore + return true; + } + + id->stack.amount = amount; + id->stack.inventory = (type&1)!=0; + id->stack.cart = (type&2)!=0; + id->stack.storage = (type&4)!=0; + id->stack.guildstorage = (type&8)!=0; + + return true; +} + /*====================================== * Applies gender restrictions according to settings. [Skotlex] *======================================*/ @@ -1040,6 +1080,7 @@ static void itemdb_read(void) itemdb_read_noequip(); itemdb_read_itemtrade(); itemdb_read_itemdelay(); + sv_readdb(db_path, "item_stack.txt", ',', 3, 3, -1, &itemdb_read_stack); } /*========================================== |