summaryrefslogtreecommitdiff
path: root/src/char/int_party.cpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-02-01 16:39:37 -0800
committerBen Longbons <b.r.longbons@gmail.com>2014-02-01 16:56:32 -0800
commitc39691d2f3852e81c0cfd49331e01a0e263591e2 (patch)
tree91a951a2a6c2d98c641511309ff1cf285f326185 /src/char/int_party.cpp
parent7c77cbd24c03aceff65feae5082221b62eaeea6e (diff)
downloadtmwa-c39691d2f3852e81c0cfd49331e01a0e263591e2.tar.gz
tmwa-c39691d2f3852e81c0cfd49331e01a0e263591e2.tar.bz2
tmwa-c39691d2f3852e81c0cfd49331e01a0e263591e2.tar.xz
tmwa-c39691d2f3852e81c0cfd49331e01a0e263591e2.zip
Trim nonexistent party members
Diffstat (limited to 'src/char/int_party.cpp')
-rw-r--r--src/char/int_party.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/char/int_party.cpp b/src/char/int_party.cpp
index 1fc0c05..d657a6c 100644
--- a/src/char/int_party.cpp
+++ b/src/char/int_party.cpp
@@ -101,6 +101,27 @@ bool extract(XString str, party *p)
return true;
}
+static
+void party_check_deleted_init(struct party *p)
+{
+ for (int i = 0; i < MAX_PARTY; i++)
+ {
+ if (!p->member[i].account_id)
+ continue;
+ const struct mmo_charstatus *c = search_character(p->member[i].name);
+ if (!c || c->account_id != p->member[i].account_id)
+ {
+ CHAR_LOG("WARNING: deleting obsolete party member %d %s of %d %s\n",
+ p->member[i].account_id, p->member[i].name,
+ p->party_id, p->name);
+ PRINTF("WARNING: deleting obsolete party member %d %s of %d %s\n",
+ p->member[i].account_id, p->member[i].name,
+ p->party_id, p->name);
+ p->member[i] = party_member{};
+ }
+ }
+}
+
// パーティデータのロード
void inter_party_init(void)
{
@@ -126,6 +147,7 @@ void inter_party_init(void)
{
if (p.party_id >= party_newid)
party_newid = p.party_id + 1;
+ party_check_deleted_init(&p);
party_db.insert(p.party_id, p);
party_check_empty(&p);
}
@@ -378,6 +400,7 @@ void mapif_party_broken(int party_id, int flag)
WBUFB(buf, 6) = flag;
mapif_sendall(buf, 7);
PRINTF("int_party: broken %d\n", party_id);
+ CHAR_LOG("int_party: broken %d\n", party_id);
}
// パーティ内発言