summaryrefslogtreecommitdiff
path: root/src/map/pc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/pc.c')
-rw-r--r--src/map/pc.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/map/pc.c b/src/map/pc.c
index e9332ee46..e1da6f69d 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1268,9 +1268,11 @@ static bool pc_authok(struct map_session_data *sd, int login_id2, time_t expirat
VECTOR_INIT(sd->channels);
VECTOR_INIT(sd->script_queues);
VECTOR_INIT(sd->achievement); // Achievements [Smokexyz/Hercules]
- VECTOR_INIT(sd->storage.item); // initialize storage item vector.
VECTOR_INIT(sd->hatEffectId);
+ // Storage
+ VECTOR_INIT(sd->storage.list);
+
sd->state.dialog = 0;
sd->delayed_damage = 0;
@@ -1505,7 +1507,8 @@ static int pc_reg_received(struct map_session_data *sd)
sd->status.last_login = time(NULL);
// Storage Request
- intif->request_account_storage(sd);
+ for (i = 0; i < VECTOR_LENGTH(storage->configuration); i++)
+ intif->request_account_storage(sd, VECTOR_INDEX(storage->configuration, i).uid);
intif->Mail_requestinbox(sd->status.char_id, 0); // MAIL SYSTEM - Request Mail Inbox
intif->request_questlog(sd);
@@ -10506,21 +10509,26 @@ static int pc_checkitem(struct map_session_data *sd)
sd->itemcheck &= ~PCCHECKITEM_CART;
}
- if (sd->itemcheck & PCCHECKITEM_STORAGE && sd->storage.received == true) {
- for (i = 0; i < VECTOR_LENGTH(sd->storage.item); i++) {
- struct item *it = &VECTOR_INDEX(sd->storage.item, i);
+ if ((sd->itemcheck & PCCHECKITEM_STORAGE) != 0) {
+ for (i = 0; i < VECTOR_LENGTH(sd->storage.list); i++) {
+ struct storage_data *stor = &VECTOR_INDEX(sd->storage.list, i);
- if ((id = it->nameid) == 0)
- continue;
+ for (int j = 0; j < VECTOR_LENGTH(sd->storage.list); j++) {
+ struct item *it = &VECTOR_INDEX(stor->item, j);
- if (!itemdb_available(id)) {
- ShowWarning("pc_checkitem: Removed invalid/disabled item id %d from storage (amount=%d, char_id=%d).\n", id, it->amount, sd->status.char_id);
- storage->delitem(sd, i, it->amount);
- continue;
+ if ((id = it->nameid) == 0)
+ continue;
+
+ if (itemdb_available(id) == 0) {
+ ShowWarning("pc_checkitem: Removed invalid/disabled item id %d from storage %d (amount=%d, char_id=%d).\n", id, stor->uid, it->amount, sd->status.char_id);
+ storage->delitem(sd, stor, i, it->amount);
+ continue;
+ }
+
+ if (it->unique_id == 0 && itemdb->isstackable(id) == 0)
+ it->unique_id = itemdb->unique_id(sd);
}
- if (it->unique_id == 0 && itemdb->isstackable(id) == 0)
- it->unique_id = itemdb->unique_id(sd);
}
storage->close(sd);