/// <summary> /// Applies damage to the player. Will finish the game if health has depleted /// </summary> /// <param name="damage">Damage to apply. Needs to be a positive value</param> public void applyDamage(int damage) { if (PhotonNetwork.IsConnected && !photonView.IsMine) { return; } if (damage <= 0) { Debug.LogWarning(string.Format("Unable to apply negative damage! (Value = {0})", damage)); return; } m_health = Mathf.Max(m_health - damage, 0); if (m_health <= 0) { m_canSpawnMonsters = false; m_canUseAbilities = false; // We lost all our health. The opponent wins! // TODO: Call function for master client to handle int winnerId = PhotonNetwork.IsConnected ? remotePlayer.m_id : -1; GameManager.manager.finishMatch(TDWinCondition.OutOfHealth, winnerId); } else { GameManagerCosmetics.playGoalHurtSound(m_id); } // Call this regardless if (onDamaged != null) { onDamaged.Invoke(this, damage, m_health); } }
public void TakeDamage() { if (PlayerProtected) { return; } PlayerLives--; OnPlayerDamaged?.Invoke(PlayerLives); }
protected override void OnTriggerEnter2D(Collider2D collision) { base.OnTriggerEnter2D(collision); if (collision.CompareTag("Player")) { OnPlayerDamaged?.Invoke(transform.position.x, Enemy.Enemies.LongRange); ReturnToPool(); } }
void OnTriggerStay2D(Collider2D collision) { if (charged) { if (collision.CompareTag("Player")) { OnPlayerDamaged?.Invoke(transform.position.x, Enemy.Enemies.Strong); } StopCoroutine(AttackDurationTimer()); gameObject.SetActive(false); } }
public void TakeDamage(int baseDamage) { _hurtThisBeat = true; int damage = baseDamage; if (IsBlocking()) { damage -= _blockStrength; if (damage <= 0) { damage = 0; _hurtThisBeat = false; } } _currentHealth -= damage; OnPlayerDamaged?.Invoke(damage); if (_currentHealth <= 0) { _currentHealth = 0; GameMaster.Find <GameMaster>().GameOver(); OnPlayerKilled?.Invoke(); } }
public static void RaisePlayerDamaged(IEnemy enemy) => OnPlayerDamaged?.Invoke(enemy);