protected override void OnTarget(Mobile from, object targeted)
            {
                if (m_Potion.Deleted || m_Potion.Map == Map.Internal)
                {
                    return;
                }

                Map map = from.Map;

                if (map == null)
                {
                    return;
                }

                IPoint3D ip = targeted as IPoint3D;

                if (ip == null)
                {
                    return;
                }
                Point3D p = new Point3D(ip);

                if (!SpellHelper.CheckSafeZone(p, from))
                {
                    from.SendMessage("Can't throw it there!");
                    from.Target = new ThrowTarget(m_Potion);
                    return;
                }

                SpellHelper.GetSurfaceTop(ref ip);
                p.Z = ip.Z;

                from.RevealingAction();

                IEntity to = new Entity(Serial.Zero, p, map);

                Effects.SendMovingEffect(from, to, m_Potion.ItemID & 0x3FFF, 7, 0, false, false, m_Potion.Hue, 0);

                if (m_Potion.Amount > 1)
                {
                    Mobile.LiftItemDupe(m_Potion, 1);
                }

                m_Potion.Internalize();
                Timer.DelayCall(TimeSpan.FromSeconds(1.0), new TimerStateCallback(m_Potion.Reposition_OnTick), new object[] { from, p, map });
            }