Exemplo n.º 1
0
 private void ClearDamageTypeInfo()
 {
     KineticAverage.Clear();
     EnergyAverage.Clear();
     KineticDamage      = 0;
     EnergyDamage       = 0;
     KineticAvg         = 0;
     EnergyAvg          = 0;
     _damageTypeBalance = 0;
 }
Exemplo n.º 2
0
        private bool PowerOnline()
        {
            UpdateGridPower();
            if (!_shieldPowered)
            {
                return(false);
            }

            CalculatePowerCharge();

            if (!WarmedUp)
            {
                return(true);
            }

            if (_isServer && _shieldConsumptionRate.Equals(0f) && DsState.State.Charge.Equals(0.01f))
            {
                return(false);
            }

            _power = _shieldMaxChargeRate > 0 ? _shieldConsumptionRate + _shieldMaintaintPower : 0f;

            if (_power < ShieldCurrentPower && (_power - _shieldMaxChargeRate) >= 0.0001f)
            {
                _sink.Update();
            }
            else if (_count == 28 && (ShieldCurrentPower <= 0 || Math.Abs(_power - ShieldCurrentPower) >= 0.0001f))
            {
                _sink.Update();
            }

            if (Absorb > 0)
            {
                _damageReadOut += Absorb;
                KineticAvg      = KineticAverage.Add((int)KineticDamage);
                EnergyAvg       = EnergyAverage.Add((int)EnergyDamage);

                _damageTypeBalance = KineticAvg - EnergyAvg;
                _lastDamageTick    = _tick;

                EffectsCleanTick      = _tick;
                DsState.State.Charge -= Absorb * ConvToWatts;
            }
            else if (Absorb < 0)
            {
                DsState.State.Charge += (Absorb * -1) * ConvToWatts;
            }

            if (_isServer && DsState.State.Charge < 0)
            {
                DsState.State.Charge = 0;
                if (!_empOverLoad)
                {
                    _overLoadLoop = 0;
                }
                else
                {
                    _empOverLoadLoop = 0;
                }
            }

            if (_tick - _lastDamageTick > 600 && (EnergyAvg > 0 || KineticAvg > 0))
            {
                ClearDamageTypeInfo();
            }

            Absorb        = 0f;
            KineticDamage = 0;
            EnergyDamage  = 0;

            return(DsState.State.Charge > 0);
        }