private void OnLeftMouseButtonUp(object sender, EventArgs e) { if (TargetSystem.IsTargeting && IsMouseOverWorld) { switch (TargetSystem.TargetingState) { case TargetType.Position: case TargetType.Object: GameObject obj = null; if (IsMouseOverUI) { GumpControl control = UIManager.MouseOverControl; if (control is ItemGumpling gumpling) { obj = gumpling.Item; } //else if (control.RootParent is Mobil) } else if (IsMouseOverWorld) { obj = SelectedObject; } if (obj != null) { TargetSystem.MouseTargetingEventObject(obj); Mouse.LastLeftButtonClickTime = 0; } break; case TargetType.Nothing: break; default: Log.Message(LogTypes.Warning, "Not implemented."); break; } } else if (IsHoldingItem) { SelectedObject = null; if (IsMouseOverUI) { GumpControl target = UIManager.MouseOverControl; if (target is ItemGumpling gumpling && !(target is ItemGumplingPaperdoll)) { Item item = gumpling.Item; SelectedObject = item; if (TileData.IsContainer((long)item.ItemData.Flags)) { DropHeldItemToContainer(item); } else if (HeldItem.Graphic == item.Graphic && TileData.IsStackable((long)HeldItem.ItemData.Flags)) { MergeHeldItem(item); } else { if (item.Container.IsItem) { DropHeldItemToContainer(World.Items.Get(item.Container), (ushort)(target.X + (Mouse.Position.X - target.ScreenCoordinateX) - _heldOffset.X), (ushort)(target.Y + (Mouse.Position.Y - target.ScreenCoordinateY) - _heldOffset.Y)); } } } else if (target is GumpPicContainer container) { SelectedObject = container.Item; int x = Mouse.Position.X - _heldOffset.X - (target.X + target.Parent.X); int y = Mouse.Position.Y - _heldOffset.Y - (target.Y + target.Parent.Y); DropHeldItemToContainer(container.Item, (ushort)x, (ushort)y); } else if (target is ItemGumplingPaperdoll || (target is GumpPic pic && pic.IsPaperdoll) || target is EquipmentSlot || target?.Parent is PaperDollGump) { if (TileData.IsWearable((long)HeldItem.ItemData.Flags)) { WearHeldItem(); } } else if (target is GumpPicBackpack backpack) { DropHeldItemToContainer(backpack.BackpackItem); } }