protected override void OnTick()
            {
                if (m_Owner.Deleted)
                {
                    Stop();
                    return;
                }

                if (m_AutoDelete)
                {
                    if ((m_Stage++ % 4) == 0 || !m_Owner.Move(m_Owner.Direction))
                    {
                        m_Owner.Direction = (Direction)Utility.Random(8);
                    }

                    if (m_Stage > 16)
                    {
                        Stop();
                        Effects.SendLocationParticles(EffectItem.Create(m_Owner.Location, m_Owner.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
                        m_Owner.PlaySound(0x1FE);
                        m_Owner.Delete();
                    }
                }
                else
                {
                    if (m_Mobile == null)
                    {
                        Stop();
                    }
                    else if (m_Stage++ % 4 == 0)
                    {
                        if (Utility.RandomBool())
                        {
                            switch (Utility.Random(5))
                            {                                   // say things just once
                            case 0: if (said[0]++ == 0)
                                {
                                    m_Owner.Say("Let that be a lesson to you {0}!", m_Mobile.Name);
                                }
                                break;

                            case 1: if (said[1]++ == 0)
                                {
                                    m_Owner.Say("Take heed citizens.");
                                }
                                break;

                            case 2: if (said[2]++ == 0)
                                {
                                    m_Owner.Say("{0} won’t be giving us any more trouble.", m_Mobile.Female ? "She" : "He");
                                }
                                break;

                            case 3: if (said[3]++ == 0)
                                {
                                    m_Owner.Say("{0} > {1}", m_Owner.Name, m_Mobile.Name);
                                }
                                break;

                            case 4: if (said[4]++ == 0)
                                {
                                    m_Owner.Whisper("That'll teach {0}.", m_Mobile.Female ? "her" : "him");
                                }
                                break;
                            }
                        }
                    }
                    else if (m_Stage > 16)
                    {                           // salute
                        m_Owner.Animate(33, 5, 1, true, false, 0);
                        Stop();
                    }
                }
            }