Handler created for equip message.

This commit is contained in:
2024-03-08 13:29:52 -05:00
parent 83e8a8a218
commit 75691aaab9
4 changed files with 128 additions and 94 deletions
@@ -211,90 +211,6 @@ public class ClientMessagePump implements NetMsgHandler {
}
private static void TransferItemFromInventoryToEquip(TransferItemFromInventoryToEquipMsg msg, ClientConnection origin) {
PlayerCharacter pc = origin.getPlayerCharacter();
if (pc == null)
return;
CharacterItemManager itemManager = pc.getCharItemManager();
if (itemManager == null) {
forceTransferFromEquipToInventory(msg, origin, "Can't find your item manager");
return;
}
int uuid = msg.getUUID();
int slot = msg.getSlotNumber();
//System.out.println("loading to slot: " + slot);
Item i = itemManager.getItemByUUID(uuid);
if (i == null) {
forceTransferFromEquipToInventory(msg, origin, "Item not found in your item manager");
return;
}
if (!itemManager.doesCharOwnThisItem(i.getObjectUUID())) {
forceTransferFromEquipToInventory(msg, origin, "You do not own this item");
return;
}
//dupe check
if (!i.validForInventory(origin, pc, itemManager))
return;
if (i.containerType == ItemContainerType.INVENTORY) {
if (!itemManager.equipItem(i, (byte) slot)) {
forceTransferFromEquipToInventory(msg, origin, "Failed to transfer item.");
return;
}
} else {
forceTransferFromEquipToInventory(msg, origin, "This item is not in your inventory");
return;
}
// Update player formulas
pc.applyBonuses();
DispatchMessage.dispatchMsgToInterestArea(pc, msg, DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, false, false);
for (String name : i.getEffects().keySet()) {
Effect eff = i.getEffects().get(name);
if (eff == null)
return;
ApplyEffectMsg pum = new ApplyEffectMsg();
pum.setEffectID(eff.getEffectToken());
pum.setSourceType(pc.getObjectType().ordinal());
pum.setSourceID(pc.getObjectUUID());
pum.setTargetType(pc.getObjectType().ordinal());
pum.setTargetID(pc.getObjectUUID());
pum.setNumTrains(eff.getTrains());
pum.setUnknown05(1);
pum.setUnknown06((byte) 1);
pum.setEffectSourceType(i.getObjectType().ordinal());
pum.setEffectSourceID(i.getObjectUUID());
pum.setDuration(-1);
DispatchMessage.dispatchMsgToInterestArea(pc, pum, DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, false, false);
;
}
}
//call this if the transfer fails server side to kick the item back to inventory from equip
private static void forceTransferFromEquipToInventory(TransferItemFromInventoryToEquipMsg msg, ClientConnection origin, String reason) {
PlayerCharacter pc = origin.getPlayerCharacter();
if (pc == null)
return;
TransferItemFromEquipToInventoryMsg back = new TransferItemFromEquipToInventoryMsg(pc, msg.getSlotNumber());
Dispatch dispatch = Dispatch.borrow(pc, back);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
ChatManager.chatInfoError(pc, "Can't equip item: " + reason);
}
public static Boolean NPCVaultBankRangeCheck(PlayerCharacter pc, ClientConnection origin, String bankorvault) {
if (pc == null)
@@ -1917,9 +1833,6 @@ public class ClientMessagePump implements NetMsgHandler {
case UNEQUIP:
TransferItemFromEquipToInventory((TransferItemFromEquipToInventoryMsg) msg, origin);
break;
case EQUIP:
TransferItemFromInventoryToEquip((TransferItemFromInventoryToEquipMsg) msg, origin);
break;
case DELETEOBJECT:
DeleteItem((DeleteItemMsg) msg, origin);
break;