From d450f9fd7b5d4fd71d4f7e244ef9d0786d0f745a Mon Sep 17 00:00:00 2001 From: MadCamel Date: Mon, 16 Mar 2009 19:40:12 +0000 Subject: Now possible to divorce when partner is offline --- src/map/chrif.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/map/chrif.c') diff --git a/src/map/chrif.c b/src/map/chrif.c index 4f8edf6..ef681b7 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -676,7 +676,9 @@ int chrif_accountreg2(int fd) } /*========================================== - * 離婚情報同期要求 + * Divorce request from char server + * triggered on account deletion or as an + * ack from a map-server divorce request *------------------------------------------ */ int chrif_divorce(int char_id, int partner_id) @@ -686,12 +688,32 @@ int chrif_divorce(int char_id, int partner_id) if (!char_id || !partner_id) return 0; - nullpo_retr(0, sd = map_nick2sd(map_charid2nick(partner_id))); - if (sd->status.partner_id == char_id) { - int i; + + sd = map_nick2sd(map_charid2nick(char_id)); + if (sd && sd->status.partner_id == partner_id) { sd->status.partner_id = 0; + map_scriptcont(sd, sd->npc_id); } + nullpo_retr(0, sd = map_nick2sd(map_charid2nick(partner_id))); + if (sd->status.partner_id == char_id) + sd->status.partner_id = 0; + + return 0; +} + +/*========================================== + * Tell character server someone is divorced + * Needed to divorce when partner is not connected to map server + *------------------------------------- + */ +int chrif_send_divorce(int char_id) { + if (char_fd < 0) + return -1; + + WFIFOW(char_fd, 0) = 0x2b16; + WFIFOL(char_fd, 2) = char_id; + WFIFOSET(char_fd,6); return 0; } -- cgit v1.2.3-60-g2f50