public override void OnComplete()
        {
            Mobile from = System.From;
            Map    map  = from.Map;

            Effects.SendLocationEffect(m_ImpLocation, map, 0x3728, 10, 10);
            Effects.PlaySound(m_ImpLocation, map, 0x1FE);

            Mobile imp = new Zeefzorpul();

            imp.MoveToWorld(m_ImpLocation, map);

            imp.Direction = imp.GetDirectionTo(from);

            Timer.DelayCall(TimeSpan.FromSeconds(3.0), new TimerStateCallback(DeleteImp), imp);
        }
        public override void CheckProgress()
        {
            PlayerMobile player = System.From;
            Map          map    = player.Map;

            if ((m_Corpse == null || m_Corpse.Deleted) && (map == Map.Trammel || map == Map.Felucca) && player.InRange(m_CorpseLocation, 8))
            {
                m_Corpse = new HagApprenticeCorpse();
                m_Corpse.MoveToWorld(m_CorpseLocation, map);

                Effects.SendLocationEffect(m_CorpseLocation, map, 0x3728, 10, 10);
                Effects.PlaySound(m_CorpseLocation, map, 0x1FE);

                Mobile imp = new Zeefzorpul();
                imp.MoveToWorld(m_CorpseLocation, map);

                // * You see a strange imp stealing a scrap of paper from the bloodied corpse *
                m_Corpse.SendLocalizedMessageTo(player, 1055049);

                Timer.DelayCall(TimeSpan.FromSeconds(3.0), new TimerStateCallback(DeleteImp), imp);
            }
        }