Fixed drop count on maps

Fixed an issue with map drop count displaying errouneous info after items are "picked-up" by reactors or commands like cleardrops.
This commit is contained in:
ronancpl
2017-12-12 11:16:34 -02:00
parent 1386891182
commit b141efdbf2
8 changed files with 28 additions and 21 deletions

View File

@@ -21,7 +21,6 @@
*/
package net.server.channel.handlers;
import client.MapleBuffStat;
import client.MapleClient;
import client.SkillFactory;
import constants.skills.Bishop;
@@ -32,7 +31,6 @@ import constants.skills.FPArchMage;
import constants.skills.ILArchMage;
import constants.skills.Marksman;
import constants.skills.WindArcher;
import constants.skills.NightWalker;
import net.AbstractMaplePacketHandler;
import net.MaplePacketHandler;
import tools.MaplePacketCreator;

View File

@@ -44,6 +44,7 @@ import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public final class SkillEffectHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
int skillId = slea.readInt();
int level = slea.readByte();
@@ -57,7 +58,7 @@ public final class SkillEffectHandler extends AbstractMaplePacketHandler {
case Bishop.BIG_BANG:
case Bowmaster.HURRICANE:
case Marksman.PIERCING_ARROW:
case ChiefBandit.CHAKRA:
case ChiefBandit.CHAKRA:
case Brawler.CORKSCREW_BLOW:
case Gunslinger.GRENADE:
case Corsair.RAPID_FIRE:

View File

@@ -764,9 +764,9 @@ public class MapleMap {
public void pickItemDrop(byte[] pickupPacket, MapleMapItem mdrop) {
broadcastMessage(pickupPacket, mdrop.getPosition());
droppedItemCount.decrementAndGet();
this.removeMapObject(mdrop);
mdrop.setPickedUp(true);
droppedItemCount.decrementAndGet();
}
private void spawnDrop(final Item idrop, final Point dropPos, final MapleMapObject dropper, final MapleCharacter chr, final byte droptype, final short questid) {
@@ -2853,7 +2853,10 @@ public class MapleMap {
reactor.setShouldCollect(false);
MapleMap.this.broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 0, 0), mapitem.getPosition());
droppedItemCount.decrementAndGet();
MapleMap.this.removeMapObject(mapitem);
reactor.hitReactor(c);
if (reactor.getDelay() > 0) {
@@ -3164,6 +3167,7 @@ public class MapleMap {
public void clearDrops(MapleCharacter player) {
List<MapleMapObject> items = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
for (MapleMapObject i : items) {
droppedItemCount.decrementAndGet();
player.getMap().removeMapObject(i);
player.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, player.getId()));
}
@@ -3171,6 +3175,7 @@ public class MapleMap {
public void clearDrops() {
for (MapleMapObject i : getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM))) {
droppedItemCount.decrementAndGet();
removeMapObject(i);
this.broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, 0));
}