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

                IPoint3D p = targeted as IPoint3D;

                if (p == null)
                {
                    return;
                }

                Map map = from.Map;

                if (map == null)
                {
                    return;
                }

                SpellHelper.GetSurfaceTop(ref p);

                from.RevealingAction();

                IEntity to;

                if (p is Mobile)
                {
                    to = (Mobile)p;
                    p  = to.Location;
                }
                else
                {
                    to = new DummyEntity(Serial.Zero, new Point3D(p), map);
                }

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

                m_Potion.Consume();

                Effects.PlaySound(p, map, 0x20C);

                int damageMin, damageMax;

                m_Potion.ComputeDamage(from, out damageMin, out damageMax);

                Timer.DelayCall(TimeSpan.FromSeconds(1.5), () =>
                {
                    for (int i = -2; i <= 2; i++)
                    {
                        for (int j = -2; j <= 2; j++)
                        {
                            Point3D point = new Point3D(p.X + i, p.Y + j, p.Z);

                            if (map.CanFit(point, 12, true, false) && from.InLOS(point))
                            {
                                new InternalItem(from, point, map, damageMin, damageMax);
                            }
                        }
                    }
                });

                m_Potion.SetNextDrinkTime(from);
            }