コード例 #1
0
        public static void TakeDamage(this ICharacterClass characterClass, float damage)
        {
            if (characterClass.CheckIfDead() == false)
            {
                if (characterClass.CheckIfContainsCondition <DamageReduction>())
                {
                    Debug.Log("Hitting player on Damage reduction");
                }

                characterClass.SetCurrentHealth(characterClass.GetCurrentHealth() - damage);

                if (characterClass.CheckIfDead())
                {
                    if (OnPlayerDeath != null)
                    {
                        OnPlayerDeath.Invoke(characterClass);
                    }
                }

                characterClass.GetStatusBarManager().PerformValueChangeTextEffectWithColor(damage, StateValueChangeAction.TakingDamage);
            }
        }
コード例 #2
0
        public static void TakeHealing(this ICharacterClass characterClass, float healingTaken)
        {
            if (characterClass.CheckIfDead() == false)
            {
                float maximumHealth = characterClass.GetMaximumHealth();
                float currentHealth = characterClass.GetCurrentHealth();

                bool healingOverflow = currentHealth + healingTaken > maximumHealth;

                float validatedHealthValue = healingOverflow ? maximumHealth
                                                             : currentHealth + healingTaken;

                characterClass.SetCurrentHealth(validatedHealthValue);
                characterClass.GetStatusBarManager().PerformValueChangeTextEffectWithColor(healingTaken, StateValueChangeAction.TakingHealing);
            }
        }