Esempio n. 1
0
        public void TakeDamage(int amount)
        {
            if (m_Flags.HasFlag(CombatFlags.Invulnerable))
            {
                return;
            }

            m_CurrentHealth     = Mathf.Max(m_CurrentHealth - amount, 0);
            m_HealthBar.Current = m_CurrentHealth;

            if (m_CurrentHealth <= 0)
            {
                m_Animator.enabled  = false;
                m_HealthBar.Current = 0;
                m_Flags            |= CombatFlags.Dead;

                if (!CompareTag("Player"))
                {
                    GetComponent <StateController>().enabled = false;
                    GetComponent <Collider>().enabled        = false; // prevent targeting
                    GetComponent <UnitController>().Stop();
                    if (!m_DeathAudioPlayed && TryGetComponent(out AudioSource audio))
                    {
                        var gameMgr   = FindObjectOfType <GameManager>();
                        var scoreText = gameMgr.m_ScoreText.GetComponent <TMP_Text>();
                        gameMgr.m_Score += 50;
                        scoreText.text   = gameMgr.m_Score.ToString();
                        audio.Stop();
                        audio.clip = m_Death[0];
                        audio.Play();
                        m_DeathAudioPlayed = true;
                    }
                    Destroy(gameObject, 5);
                }
            }
        }
Esempio n. 2
0
 internal static bool CheckCombatFlag(CombatFlags flag)
 {
     return((CombatType & flag) != 0);
 }