示例#1
0
        private bool IsValidNearTarget(AbstractSpawnable obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (Vector3.Distance(transform.position, obj.transform.position) > INACTIVERANGE)
            {
                return(false);
            }

            if (obj is Item && _gameManager.GameMode != GameManager.Mode.SPECIAL)
            {
                var item = obj as Item;
                if (_basicComponent.Team.TeamNo != GameManager.MOBTEAMNO && !item.IsPickedUp() &&
                    (item.ReservingPlayer == null || item.ReservingPlayer == _basicComponent))
                {
                    return(true);
                }
            }
            else if (obj is Character)
            {
                if (!(obj as Character).IsDead() && (obj as Character).Team != null &&
                    !Equals(_basicComponent.Team, (obj as Character).Team))
                {
                    return(true);
                }
            }

            return(false);
        }
示例#2
0
        public void Reset()
        {
            if (ActivePrefab != null)
            {
                Destroy(ActivePrefab.gameObject);
                ActivePrefab = null;
            }

            HitCounter                   = 0;
            Moved                        = 0;
            Inactive                     = true;
            Attached                     = false;
            HasGravity                   = false;
            Range                        = 0f;
            Speed                        = 0;
            Damage                       = 0;
            StartUp                      = 0;
            TimeToLive                   = 0;
            StartPosition                = Vector3.zero;
            PrefabSize                   = new Vector3(1f, 1f, 1f);
            AoEPrefabSize                = Vector3.zero;
            PrefabRotation               = Vector3.zero;
            AoEPrefabRotation            = Vector3.zero;
            AoEPrefab                    = null;
            ActivePrefab                 = null;
            ForkPrefab                   = null;
            gameObject.renderer.enabled  = false;
            transform.localScale         = new Vector3(1f, 1f, 1f);
            ((BoxCollider)collider).size = new Vector3(1f, 1f, 1f);
            ProjectileDirection          = Vector3.forward;
            PlayerDirection              = Vector3.forward;
            Knockback                    = Vector3.zero;
            Hitstun                      = 0;
            Player                       = null;
            PlayerObj                    = null;
            ForkTriggerEnemy             = null;
            _forkTriggerEnemy            = null;
            DoPiercing                   = false;
            DamageLoss                   = 0;
            ForkDamage                   = false;
            AoEDamage                    = false;
            ForkArcRadius                = 0;
            AoESize                      = Vector3.zero;
            AoEKnockbackVert             = Vector3.zero;
            AoEKnockbackHor              = 0;
            AoEDamageValue               = 0;
            AoETime                      = 0;
            DoMultiForkDamage            = false;
            ForkMultiDamageDelay         = 0.0f;
            ForkMultiDamageRate          = 0.0f;
        }
示例#3
0
        /// <summary>
        /// Listen for collisions
        /// </summary>
        /// <param name="other">the object we hit</param>
        public void OnTriggerEnter(Collider other)
        {
            if (!_net.IsClient)
            {
                // TODO: There needs to be a better way of doing this.
                //       Trying all possible classes is really ugly --
                //       there's this great concept called "polymorphism"...
                var s = other.GetComponent <Character>();

                if (s == null)
                {   // Not a Character.
                    return;
                }

                if (Player == null || Player == s)
                {
                    return;
                }

                if (s.Team != null && Player.Team != null && s.Team.Equals(Player.Team))
                {
                    // Friendly fire.
                    return;
                }

                if (s is Mercenary && (s as Mercenary).Cage != null)
                {
                    // It's a mercenary in its cage. It shouldn't take any damage.
                    return;
                }

                if (s != ForkTriggerEnemy)
                {
                    HitCounter++;
                }

                // start the AE Effect
                if (ForkDamage)
                {
                    _forkTriggerEnemy = s;
                    DoForkDamage();
                }
            }
        }