public override bool Think()
        {
            // Gusts run away from their masters
            Mobile master = m_Mobile.SummonMaster;

            if (master != null && master.Map == m_Mobile.Map && master.InRange(m_Mobile, m_Mobile.RangePerception))
            {
                m_Mobile.FocusMob = master;
                DoActionFlee();
            }
            else
            {
                WalkRandom(0, 0, 1);
            }
            if (m_Mobile is Gust)
            {
                Gust g = m_Mobile as Gust;
                if (g.shove != null)
                {
                    g.shove.Location = g.Location;
                    g.shove          = null;
                }
            }

            return(true);
        }
        private void DoSmash(object state)
        {
            object[] states = ((object[])state);
            Point3D  loc    = ((Point3D)states[0]);

            AbilityCollection.AreaEffect(TimeSpan.FromSeconds(0.1), TimeSpan.FromSeconds(0.1), 0.1, Map, loc, 14000, 13, 1102, 2, 1, 3, false, true, false);
            CantWalk = false;
            try
            {
                foreach (Mobile m in this.Map.GetMobilesInRange(loc, 2))
                {
                    if (m != null && m.Alive && m != this)
                    {
                        if (m is Gust)
                        {
                            continue;
                        }
                        m.NonlocalOverheadMessage(Server.Network.MessageType.Emote, 2217, true, "*Is sent flying by the massive strike*");
                        AOS.Damage(m, 75, 100, 0, 0, 0, 0);
                        Gust g = new Gust(this, m, 2.0);
                        g.MoveToWorld(m.Location, m.Map);
                    }
                }
            }
            catch { }
        }
 public GustAI(Gust m)
     : base(m)
 {
     m.CurrentSpeed = m.ActiveSpeed;
 }