Exemplo n.º 1
0
    /// <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);
        }
    }
Exemplo n.º 2
0
        public void TakeDamage()
        {
            if (PlayerProtected)
            {
                return;
            }

            PlayerLives--;
            OnPlayerDamaged?.Invoke(PlayerLives);
        }
Exemplo n.º 3
0
    protected override void OnTriggerEnter2D(Collider2D collision)
    {
        base.OnTriggerEnter2D(collision);

        if (collision.CompareTag("Player"))
        {
            OnPlayerDamaged?.Invoke(transform.position.x, Enemy.Enemies.LongRange);
            ReturnToPool();
        }
    }
Exemplo n.º 4
0
    void OnTriggerStay2D(Collider2D collision)
    {
        if (charged)
        {
            if (collision.CompareTag("Player"))
            {
                OnPlayerDamaged?.Invoke(transform.position.x, Enemy.Enemies.Strong);
            }

            StopCoroutine(AttackDurationTimer());
            gameObject.SetActive(false);
        }
    }
Exemplo n.º 5
0
    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();
        }
    }
Exemplo n.º 6
0
 public static void RaisePlayerDamaged(IEnemy enemy) => OnPlayerDamaged?.Invoke(enemy);