summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/clif.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 8dfe196d4..5d2413acd 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -8613,28 +8613,29 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd)
void clif_parse_DropItem(int fd, struct map_session_data *sd)
{
int item_index, item_amount;
+ do {
+ if (pc_isdead(sd))
+ break;
- if (pc_isdead(sd)) {
- clif_clearunit_area(&sd->bl, 1);
- return;
- }
+ if (pc_cant_act(sd))
+ break;
- if (pc_cant_act(sd))
- return;
+ if (sd->sc.count && (
+ sd->sc.data[SC_AUTOCOUNTER] ||
+ sd->sc.data[SC_BLADESTOP] ||
+ (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM)
+ ))
+ break;
- if (sd->sc.count && (
- sd->sc.data[SC_AUTOCOUNTER] ||
- sd->sc.data[SC_BLADESTOP] ||
- (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM)
- ))
- return;
+ item_index = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2;
+ item_amount = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]);
+ if (!pc_dropitem(sd, item_index, item_amount))
+ break;
- item_index = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2;
- item_amount = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]);
- if (!pc_dropitem(sd, item_index, item_amount))
+ return;
+ } while (0);
//Because the client does not likes being ignored.
- clif_delitem(sd, item_index,0);
-
+ clif_delitem(sd, item_index,0);
}
/*==========================================