Skip to content

Commit

Permalink
Extended item_check to also add unique_ids to any non-stackable items…
Browse files Browse the repository at this point in the history
… that lack it

- This is useful in case an old server that didn't have the unique_id feature enabled is updated to the latest version.
- It'll only have effect if item_check is enabled in the configuration files.
  • Loading branch information
hemagx committed Aug 20, 2014
1 parent d1e9675 commit 49d6047
Showing 1 changed file with 34 additions and 4 deletions.
38 changes: 34 additions & 4 deletions src/map/pc.c
Expand Up @@ -9148,40 +9148,70 @@ int pc_checkitem(struct map_session_data *sd)
for( i = 0; i < MAX_INVENTORY; i++ ) {
id = sd->status.inventory[i].nameid;

if( id && !itemdb_available(id) ) {
if (!id)
continue;

if( !itemdb_available(id) ) {
ShowWarning("Removed invalid/disabled item id %d from inventory (amount=%d, char_id=%d).\n", id, sd->status.inventory[i].amount, sd->status.char_id);
pc->delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_OTHER);
continue;
}

if ( !sd->status.inventory[i].unique_id && !itemdb->isstackable(id) )
sd->status.inventory[i].unique_id = itemdb->unique_id(sd);
}

for( i = 0; i < MAX_CART; i++ ) {
id = sd->status.cart[i].nameid;

if( id && !itemdb_available(id) ) {
if (!id)
continue;

if( !itemdb_available(id) ) {
ShowWarning("Removed invalid/disabled item id %d from cart (amount=%d, char_id=%d).\n", id, sd->status.cart[i].amount, sd->status.char_id);
pc->cart_delitem(sd, i, sd->status.cart[i].amount, 0, LOG_TYPE_OTHER);
continue;
}

if ( !sd->status.cart[i].unique_id && !itemdb->isstackable(id) )
sd->status.cart[i].unique_id = itemdb->unique_id(sd);
}

for( i = 0; i < MAX_STORAGE; i++ ) {
id = sd->status.storage.items[i].nameid;

if (!id)
continue;

if( id && !itemdb_available(id) ) {
ShowWarning("Removed invalid/disabled item id %d from storage (amount=%d, char_id=%d).\n", id, sd->status.storage.items[i].amount, sd->status.char_id);
storage->delitem(sd, i, sd->status.storage.items[i].amount);
storage->close(sd); // force closing
storage->close(sd);
continue;
}

if ( !sd->status.storage.items[i].unique_id && !itemdb->isstackable(id) )
sd->status.storage.items[i].unique_id = itemdb->unique_id(sd);
}

if (sd->guild) {
struct guild_storage *guild_storage = gstorage->id2storage2(sd->guild->guild_id);
if (guild_storage) {
for( i = 0; i < MAX_GUILD_STORAGE; i++ ) {
id = guild_storage->items[i].nameid;
if( id && !itemdb_available(id) ) {

if (!id)
continue;

if( !itemdb_available(id) ) {
ShowWarning("Removed invalid/disabled item id %d from guild storage (amount=%d, char_id=%d, guild_id=%d).\n", id, guild_storage->items[i].amount, sd->status.char_id, sd->guild->guild_id);
gstorage->delitem(sd, guild_storage, i, guild_storage->items[i].amount);
gstorage->close(sd); // force closing
continue;
}

if (!guild_storage->items[i].unique_id && !itemdb->isstackable(id))
guild_storage->items[i].unique_id = itemdb->unique_id(sd);
}
}
}
Expand Down

0 comments on commit 49d6047

Please sign in to comment.