diff options
author | Kenpachi Developer <Kenpachi.Developer@gmx.de> | 2020-06-25 08:20:50 +0200 |
---|---|---|
committer | Kenpachi Developer <Kenpachi.Developer@gmx.de> | 2020-06-25 08:20:50 +0200 |
commit | 1ee5255bc81b5057dae57f4f1d91b7c70efeb143 (patch) | |
tree | b50ce313490ffdf805f0b332fdb87a6d0ea9bbe9 /src | |
parent | 87994df22212939fb9151160015953daccc289b6 (diff) | |
download | hercules-1ee5255bc81b5057dae57f4f1d91b7c70efeb143.tar.gz hercules-1ee5255bc81b5057dae57f4f1d91b7c70efeb143.tar.bz2 hercules-1ee5255bc81b5057dae57f4f1d91b7c70efeb143.tar.xz hercules-1ee5255bc81b5057dae57f4f1d91b7c70efeb143.zip |
Disable using Megaphone while Rodex send mail window is present
This also fixes the issue where the client freezes when talking to a NPC while Rodex send mail window is present.
Diffstat (limited to 'src')
-rw-r--r-- | src/map/clif.c | 3 | ||||
-rw-r--r-- | src/map/pc.c | 9 | ||||
-rw-r--r-- | src/map/rodex.c | 1 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index f347a379a..fa01d31b5 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -22190,6 +22190,9 @@ static void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd const struct PACKET_CZ_REQ_OPEN_WRITE_MAIL *rPacket = RFIFOP(fd, 0); int8 result = (rodex->isenabled() && (sd->npc_id == 0 || sd->state.using_megaphone != 0)) ? 1 : 0; + if (result == 1) + sd->state.workinprogress |= 2; + clif->rodex_open_write_mail(fd, rPacket->receiveName, result); } diff --git a/src/map/pc.c b/src/map/pc.c index 085b7c6bb..63d62467c 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5190,6 +5190,15 @@ static int pc_useitem(struct map_session_data *sd, int n) // Store information for later use before it is lost (via pc->delitem) [Paradox924X] nameid = sd->inventory_data[n]->nameid; + if (nameid == ITEMID_MEGAPHONE && (sd->state.workinprogress & 2) != 0) { +#if PACKETVER >= 20110308 + clif->msgtable(sd, MSG_BUSY); +#else + clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_sd(sd, 48)); +#endif + return 0; + } + if (nameid != ITEMID_NAUTHIZ && sd->sc.opt1 > 0 && sd->sc.opt1 != OPT1_STONEWAIT && sd->sc.opt1 != OPT1_BURNING) return 0; diff --git a/src/map/rodex.c b/src/map/rodex.c index 998066eca..f2bb8a0d4 100644 --- a/src/map/rodex.c +++ b/src/map/rodex.c @@ -575,6 +575,7 @@ static void rodex_clean(struct map_session_data *sd, int8 flag) if (flag == 0) VECTOR_CLEAR(sd->rodex.messages); + sd->state.workinprogress &= ~2; memset(&sd->rodex.tmp, 0x0, sizeof(sd->rodex.tmp)); } |