Problem Definition:
What we see happening is that a user would attempt to, for example, deaugment a lore item.
Scenario:
User has SwordA that is Lore with Augment A on it.
User puts SwordA (with AugmentA) into the augmentation sealer.
- At this time, user has a single lore sword in inventory.
---
User puts the augment remover into the augmentation sealer.
- At this time, the user has a single lore sword in inventory.
---
User clicks the remove augment int eh window.
- At this time, the user has a single lore sword in inventory.
--
User confirms that the user wishes to remove the augment
- At this time, the user has a single lore sword in inventory.
--
At this point the server removes the augment and pushes the new sword and the new augment onto the cursor.
- At this time, the user has two lore swords in inventory (one in aug sealer and one on hand).
* Problem Happens Here*
--
For most users, the server would then send a delete item request for the items in the augmentation sealer.
- At this time, the user has a single lore sword in inventory (zero in aug sealer, one in hand).
The issue is that occasionally (uncommon but not rare) the client would get "DUPLICATE LORE ITEM DELETED!" message and then it would look like they only have a single augment on their cursor. The items in the augmentation sealer would, of course, be deleted. It would -appear- at this time that the user has lost the LoreSwordA.
The problem is that the server believes the user still has the lore sword in the top slot of their cursor inventory slots. At this point the client and server have a sync issue. The client can move around what they believe is the augment and the server believes they are moving around the loreSwordA. If the user zones / camps, then they are resynced and the user sees both the loreSwordA as well as the augment.
Reproduction Steps:
On a server augment / deaugment using the inventory augmentation container until you receive the "Duplicate Lore Item Deleted" message. The longest it took for me to receive this was ~20-25 times. I am not able to reproduce this easily on my local server without massively lagging out my virtual machine to try to introduce latency.
Original thought as to the cause was the two items being on the client at a given time causing the server (or client) to believe that lore items should be deleted. Original solution (as posted above) was to bring us into line with tradeskill combines and remove the items first and then add in the new item.
In chatting with Trevius, there seems to be some questions still regarding how this is happening so bringing into the thread to discuss.
|