Ejemplo n.º 1
0
        public override void ReceiveDamage(IAttackerEntity attacker, CharacterItem weapon, Dictionary <DamageElement, MinMaxFloat> allDamageAmounts, CharacterBuff debuff, uint hitEffectsId)
        {
            if (!IsServer || IsDead())
            {
                return;
            }

            base.ReceiveDamage(attacker, weapon, allDamageAmounts, debuff, hitEffectsId);
            float calculatingTotalDamage = 0f;

            if (allDamageAmounts.Count > 0)
            {
                foreach (KeyValuePair <DamageElement, MinMaxFloat> allDamageAmount in allDamageAmounts)
                {
                    DamageElement damageElement = allDamageAmount.Key;
                    MinMaxFloat   damageAmount  = allDamageAmount.Value;
                    calculatingTotalDamage += damageAmount.Random();
                }
            }
            // Apply damages
            int totalDamage = (int)calculatingTotalDamage;

            CurrentHp -= totalDamage;

            ReceivedDamage(attacker, CombatAmountType.NormalDamage, totalDamage);

            // If current hp <= 0, character dead
            if (IsDead())
            {
                NetworkDestroy();
            }
        }
Ejemplo n.º 2
0
    private IEnumerator DoSpawnLoop()
    {
        yield return(null);

        DoInit();

        yield return(null);

        var powerUpTimer     = PowerUpTimer.Random();
        var dangerousTimer   = DangerousTimer.Random();
        var normalSpawnTimer = SafeTimer.Random();

        while (Spawning.Value)
        {
            var deltaTime = Time.deltaTime;
            powerUpTimer     -= deltaTime;
            normalSpawnTimer -= deltaTime;
            dangerousTimer   -= deltaTime;

            if (normalSpawnTimer <= 0)
            {
                DoSpawnInWorld(SafeSpawnables.UnityRandomObject().Next);
                normalSpawnTimer = SafeTimer.Random();
            }

            if (powerUpTimer <= 0)
            {
                DoSpawnInWorld(PowerUpSpawnables.UnityRandomObject().Next);
                powerUpTimer = PowerUpTimer.Random();
            }

            if (dangerousTimer <= 0)
            {
                DoSpawnInWorld(DangerousSpawnables.UnityRandomObject().Next);
                dangerousTimer = DangerousTimer.Random();
            }

            yield return(null);
        }
    }