diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/itemdb.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/map/itemdb.c b/src/map/itemdb.c index b016af1c9..cbb7a0a1e 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -226,14 +226,19 @@ static int itemdb_chain_item(unsigned short chain_id, int *rate) return UNKNOWN_ITEM_ID; } - entry = &itemdb->chains[chain_id].items[ rnd()%itemdb->chains[chain_id].qty ]; + // [TMW2] Loop through the item chain + for (short i = 0; i < itemdb->chains[chain_id].qty ; i++) { + entry = &itemdb->chains[chain_id].items[ i ]; - if( rnd()%10000 >= entry->rate ) - return 0; + if( rnd()%10000 >= entry->rate ) + continue; - if( rate ) - rate[0] = entry->rate; - return entry->id; + if ( rate ) + rate[0] = entry->rate; + return entry->id; + } + + return 0; } /* [Ind/Hercules] */ static void itemdb_package_item(struct map_session_data *sd, struct item_package *package) |