public void Defrag() { for (int i = 0; i < m_pugs.Count; ++i) { try { object o = m_pugs[i]; Pug pug = o as Pug; if (pug == null || !pug.Alive) { m_pugs.RemoveAt(i); --i; } else if (pug.Controlled || pug.IsStabled) { pug.kin = null; m_pugs.RemoveAt(i); --i; } } catch {} } }
public void Spawnpugs() { Defrag(); int family = m_pugs.Count; if (family >= pugCount) { return; } //Say( "family {0}, should be {1}", family, pugCount ); Map map = this.Map; if (map == null) { return; } int hr = (int)((this.RangeHome + 1) / 2); for (int i = family; i < pugCount; ++i) { Pug pug = new Pug(); bool validLocation = false; Point3D loc = this.Location; for (int j = 0; !validLocation && j < 10; ++j) { int x = X + Utility.Random(5) - 1; int y = Y + Utility.Random(5) - 1; int z = map.GetAverageZ(x, y); if (validLocation = map.CanFit(x, y, this.Z, 16, false, false)) { loc = new Point3D(x, y, Z); } else if (validLocation = map.CanFit(x, y, z, 16, false, false)) { loc = new Point3D(x, y, z); } } pug.kin = this; pug.Team = this.Team; pug.Home = this.Location; pug.RangeHome = (hr > 4 ? 4 : hr); pug.MoveToWorld(loc, map); m_pugs.Add(pug); } }
public void Spawnpugs() { Defrag(); int family = m_pugs.Count; if( family >= pugCount ) return; //Say( "family {0}, should be {1}", family, pugCount ); Map map = this.Map; if ( map == null ) return; int hr = (int)((this.RangeHome + 1) / 2); for ( int i = family; i < pugCount; ++i ) { Pug pug = new Pug(); bool validLocation = false; Point3D loc = this.Location; for ( int j = 0; !validLocation && j < 10; ++j ) { int x = X + Utility.Random( 5 ) - 1; int y = Y + Utility.Random( 5 ) - 1; int z = map.GetAverageZ( x, y ); if ( validLocation = map.CanFit( x, y, this.Z, 16, false, false ) ) loc = new Point3D( x, y, Z ); else if ( validLocation = map.CanFit( x, y, z, 16, false, false ) ) loc = new Point3D( x, y, z ); } pug.kin = this; pug.Team = this.Team; pug.Home = this.Location; pug.RangeHome = ( hr > 4 ? 4 : hr ); pug.MoveToWorld( loc, map ); m_pugs.Add( pug ); } }