Fixed an issue with RODEX's retrieve all (#6245)

Sometimes players would not be able to retrieve their items anymore.

Thanks to @Balferian and @limitro
This commit is contained in:
Lemongrass3110 2021-09-09 00:19:32 +02:00 committed by GitHub
parent cdce54ac0a
commit d25ec40a8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -290,7 +290,7 @@ void mail_getattachment(struct map_session_data* sd, struct mail_message* msg, i
for( i = 0; i < MAIL_MAX_ITEM; i++ ){
if( item[i].nameid > 0 && item[i].amount > 0 ){
struct item_data* id = itemdb_search( item->nameid );
struct item_data* id = itemdb_search( item[i].nameid );
// Item does not exist (anymore?)
if( id == nullptr ){
@ -316,12 +316,16 @@ void mail_getattachment(struct map_session_data* sd, struct mail_message* msg, i
break;
}
}else{
int slots = id->inventorySlotNeeded( item[i].amount );
char check = pc_checkadditem( sd, item[i].nameid, item[i].amount );
// Add the item normally
if( pc_additem( sd, &item[i], item[i].amount, LOG_TYPE_MAIL ) == ADDITEM_SUCCESS ){
if( check != CHKADDITEM_OVERAMOUNT && pc_additem( sd, &item[i], item[i].amount, LOG_TYPE_MAIL ) == ADDITEM_SUCCESS ){
item_received = true;
sd->mail.pending_slots -= slots;
// Only reduce slots if it really required a new slot
if( check == CHKADDITEM_NEW ){
sd->mail.pending_slots -= id->inventorySlotNeeded( item[i].amount );
}
}else{
// Do not send receive packet so that the mail is still displayed with item attachment
item_received = false;