public override void OnThink() { base.OnThink(); if (Aspect == null || Aspect.Deleted || !Aspect.Alive || !Aspect.InRange(this, Aspect.RangePerception * 2)) { Kill(); } }
private void Slice() { if (Deleted || !Alive) { StopTimer(); return; } if (Aspect == null || Aspect.Deleted || !Aspect.Alive || !Aspect.InRange(this, Aspect.RangePerception * 2)) { Destroy(); return; } if (!Aspect.InCombat()) { return; } if (_Spawn == null) { _Spawn = ListPool <ISpawnable> .AcquireObject(); } if (_Spawn.Count < 3) { var s = new Tinker(Aspect); _Spawn.Add(s); s.Spawner = this; Register(s); var p = this.GetRandomPoint3D(1, 2, Map, true, true); s.OnBeforeSpawn(p, Map); s.MoveToWorld(p, Map); s.OnAfterSpawn(); } }