public override OrderReceipt Transfer3(AvatarState seller, AvatarState buyer, long blockIndex) { if (seller.inventory.TryGetLockedItem(new OrderLock(OrderId), out var inventoryItem)) { if (inventoryItem.item is INonFungibleItem nonFungibleItem) { nonFungibleItem.RequiredBlockIndex = blockIndex; seller.inventory.RemoveItem(inventoryItem); if (nonFungibleItem is Costume costume) { buyer.UpdateFromAddCostume(costume, false); } else { buyer.UpdateFromAddItem2((ItemUsable)nonFungibleItem, false); } } return(new OrderReceipt(OrderId, buyer.agentAddress, buyer.address, blockIndex)); } throw new ItemDoesNotExistException( $"Aborted because the tradable item({TradableId}) was failed to load from avatar's inventory."); }