Fixed PlayerInstance dropItem methods.

This commit is contained in:
MobiusDevelopment 2020-06-02 08:29:40 +00:00
parent 9b8f27f819
commit 109862e5b4

View File

@ -4100,9 +4100,8 @@ public class PlayerInstance extends Playable
* @param reference : WorldObject Object referencing current action like NPC selling item or previous item in transformation * @param reference : WorldObject Object referencing current action like NPC selling item or previous item in transformation
* @param sendMessage : boolean Specifies whether to send message to Client about this action * @param sendMessage : boolean Specifies whether to send message to Client about this action
* @param protectItem the protect item * @param protectItem the protect item
* @return boolean informing if the action was successful
*/ */
public boolean dropItem(String process, ItemInstance item, WorldObject reference, boolean sendMessage, boolean protectItem) public void dropItem(String process, ItemInstance item, WorldObject reference, boolean sendMessage, boolean protectItem)
{ {
if (_freight.getItemByObjectId(item.getObjectId()) != null) if (_freight.getItemByObjectId(item.getObjectId()) != null)
{ {
@ -4110,7 +4109,7 @@ public class PlayerInstance extends Playable
sendPacket(ActionFailed.STATIC_PACKET); sendPacket(ActionFailed.STATIC_PACKET);
Util.handleIllegalPlayerAction(this, "Warning!! Character " + getName() + " of account " + getAccountName() + " tried to drop Freight Items", IllegalPlayerAction.PUNISH_KICK); Util.handleIllegalPlayerAction(this, "Warning!! Character " + getName() + " of account " + getAccountName() + " tried to drop Freight Items", IllegalPlayerAction.PUNISH_KICK);
return false; return;
} }
final ItemInstance droppedItem = _inventory.dropItem(process, item, this, reference); final ItemInstance droppedItem = _inventory.dropItem(process, item, this, reference);
@ -4120,28 +4119,18 @@ public class PlayerInstance extends Playable
{ {
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2); sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
} }
return false; return;
} }
droppedItem.dropMe(this, (getClientX() + Rnd.get(50)) - 25, (getClientY() + Rnd.get(50)) - 25, getClientZ() + 20); droppedItem.dropMe(this, (getX() + Rnd.get(50)) - 25, (getY() + Rnd.get(50)) - 25, getZ() + 20);
if (Config.DESTROY_DROPPED_PLAYER_ITEM && !Config.LIST_PROTECTED_ITEMS.contains(droppedItem.getItemId()))
if ((Config.AUTODESTROY_ITEM_AFTER > 0) && Config.DESTROY_DROPPED_PLAYER_ITEM && !Config.LIST_PROTECTED_ITEMS.contains(droppedItem.getItemId()) && ((droppedItem.isEquipable() && Config.DESTROY_EQUIPABLE_PLAYER_ITEM) || !droppedItem.isEquipable()))
{ {
if (Config.AUTODESTROY_ITEM_AFTER > 0) // autodestroy enabled ItemsAutoDestroy.getInstance().addItem(droppedItem);
{ }
if ((droppedItem.isEquipable() && Config.DESTROY_EQUIPABLE_PLAYER_ITEM) || !droppedItem.isEquipable()) if (Config.DESTROY_DROPPED_PLAYER_ITEM)
{ {
ItemsAutoDestroy.getInstance().addItem(droppedItem); droppedItem.setProtected(droppedItem.isEquipable() && (!droppedItem.isEquipable() || !Config.DESTROY_EQUIPABLE_PLAYER_ITEM));
droppedItem.setProtected(false);
}
else
{
droppedItem.setProtected(true);
}
}
else
{
droppedItem.setProtected(true);
}
} }
else else
{ {
@ -4153,7 +4142,7 @@ public class PlayerInstance extends Playable
droppedItem.getDropProtection().protect(this); droppedItem.getDropProtection().protect(this);
} }
// Send inventory update packet // Send inventory update packet.
if (!Config.FORCE_INVENTORY_UPDATE) if (!Config.FORCE_INVENTORY_UPDATE)
{ {
final InventoryUpdate playerIU = new InventoryUpdate(); final InventoryUpdate playerIU = new InventoryUpdate();
@ -4165,20 +4154,18 @@ public class PlayerInstance extends Playable
sendPacket(new ItemList(this, false)); sendPacket(new ItemList(this, false));
} }
// Update current load as well // Update current load as well.
final StatusUpdate su = new StatusUpdate(getObjectId()); final StatusUpdate su = new StatusUpdate(getObjectId());
su.addAttribute(StatusUpdate.CUR_LOAD, getCurrentLoad()); su.addAttribute(StatusUpdate.CUR_LOAD, getCurrentLoad());
sendPacket(su); sendPacket(su);
// Sends message to client if requested // Sends message to client if requested.
if (sendMessage) if (sendMessage)
{ {
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DROPPED_S1); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DROPPED_S1);
sm.addItemName(droppedItem.getItemId()); sm.addItemName(droppedItem.getItemId());
sendPacket(sm); sendPacket(sm);
} }
return true;
} }
/** /**
@ -4205,9 +4192,9 @@ public class PlayerInstance extends Playable
return null; return null;
} }
final ItemInstance invitem = _inventory.getItemByObjectId(objectId); final ItemInstance inventoryItem = _inventory.getItemByObjectId(objectId);
final ItemInstance item = _inventory.dropItem(process, objectId, count, this, reference); final ItemInstance droppedItem = _inventory.dropItem(process, objectId, count, this, reference);
if (item == null) if (droppedItem == null)
{ {
if (sendMessage) if (sendMessage)
{ {
@ -4216,30 +4203,31 @@ public class PlayerInstance extends Playable
return null; return null;
} }
item.dropMe(this, x, y, z); droppedItem.dropMe(this, x, y, z);
if ((Config.AUTODESTROY_ITEM_AFTER > 0) && Config.DESTROY_DROPPED_PLAYER_ITEM && !Config.LIST_PROTECTED_ITEMS.contains(item.getItemId()) && ((item.isEquipable() && Config.DESTROY_EQUIPABLE_PLAYER_ITEM) || !item.isEquipable()))
if ((Config.AUTODESTROY_ITEM_AFTER > 0) && Config.DESTROY_DROPPED_PLAYER_ITEM && !Config.LIST_PROTECTED_ITEMS.contains(droppedItem.getItemId()) && ((droppedItem.isEquipable() && Config.DESTROY_EQUIPABLE_PLAYER_ITEM) || !droppedItem.isEquipable()))
{ {
ItemsAutoDestroy.getInstance().addItem(item); ItemsAutoDestroy.getInstance().addItem(droppedItem);
} }
if (Config.DESTROY_DROPPED_PLAYER_ITEM) if (Config.DESTROY_DROPPED_PLAYER_ITEM)
{ {
item.setProtected(item.isEquipable() && (!item.isEquipable() || !Config.DESTROY_EQUIPABLE_PLAYER_ITEM)); droppedItem.setProtected(droppedItem.isEquipable() && (!droppedItem.isEquipable() || !Config.DESTROY_EQUIPABLE_PLAYER_ITEM));
} }
else else
{ {
item.setProtected(true); droppedItem.setProtected(true);
} }
if (protectItem) if (protectItem)
{ {
item.getDropProtection().protect(this); droppedItem.getDropProtection().protect(this);
} }
// Send inventory update packet // Send inventory update packet.
if (!Config.FORCE_INVENTORY_UPDATE) if (!Config.FORCE_INVENTORY_UPDATE)
{ {
final InventoryUpdate playerIU = new InventoryUpdate(); final InventoryUpdate playerIU = new InventoryUpdate();
playerIU.addItem(invitem); playerIU.addItem(inventoryItem);
sendPacket(playerIU); sendPacket(playerIU);
} }
else else
@ -4247,20 +4235,20 @@ public class PlayerInstance extends Playable
sendPacket(new ItemList(this, false)); sendPacket(new ItemList(this, false));
} }
// Update current load as well // Update current load as well.
final StatusUpdate su = new StatusUpdate(getObjectId()); final StatusUpdate su = new StatusUpdate(getObjectId());
su.addAttribute(StatusUpdate.CUR_LOAD, getCurrentLoad()); su.addAttribute(StatusUpdate.CUR_LOAD, getCurrentLoad());
sendPacket(su); sendPacket(su);
// Sends message to client if requested // Sends message to client if requested.
if (sendMessage) if (sendMessage)
{ {
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DROPPED_S1); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DROPPED_S1);
sm.addItemName(item.getItemId()); sm.addItemName(droppedItem.getItemId());
sendPacket(sm); sendPacket(sm);
} }
return item; return droppedItem;
} }
/** /**