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); }
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; }
/// <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(); } } }