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; }