Ejemplo n.º 1
0
        public override void OnThink()
        {
            base.OnThink();

            if (Aspect == null || Aspect.Deleted || !Aspect.Alive || !Aspect.InRange(this, Aspect.RangePerception * 2))
            {
                Kill();
            }
        }
Ejemplo n.º 2
0
            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();
                }
            }