예제 #1
0
        private void AbsorbClientShieldHits()
        {
            for (int i = 0; i < ShieldHits.Count; i++)
            {
                var hit        = ShieldHits[i];
                var damageType = hit.DamageType;

                if (!WasOnline)
                {
                    continue;
                }

                if (damageType == Session.Instance.MPExplosion)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = true;
                    Absorb += hit.Amount * ConvToWatts;
                    UtilsStatic.CreateFakeSmallExplosion(WorldImpactPosition);
                    if (hit.Attacker != null)
                    {
                        hit.Attacker.Close();
                        hit.Attacker.InScene = false;
                    }
                    continue;
                }
                if (damageType == Session.Instance.MPKinetic)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = false;
                    Absorb += hit.Amount * ConvToWatts;
                    continue;
                }
                if (damageType == Session.Instance.MPEnergy)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = true;
                    Absorb += hit.Amount * ConvToWatts;
                    continue;
                }
                if (damageType == Session.Instance.MPEMP)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = true;
                    Absorb += hit.Amount * ConvToWatts;
                    continue;
                }
            }
            ShieldHits.Clear();
        }
예제 #2
0
        private void AbsorbClientShieldHits()
        {
            for (int i = 0; i < ShieldHits.Count; i++)
            {
                var hit        = ShieldHits[i];
                var damageType = hit.DamageType;

                if (!NotFailed)
                {
                    continue;
                }

                if (damageType == Session.Instance.MPExplosion)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = HitType.Energy;
                    Absorb += hit.Amount * ConvToWatts;
                    UtilsStatic.CreateFakeSmallExplosion(WorldImpactPosition);
                    if (hit.Attacker != null)
                    {
                        ((IMyDestroyableObject)hit.Attacker).DoDamage(1, Session.Instance.MPKinetic, false, null, ShieldEnt.EntityId);
                    }
                    continue;
                }
                if (damageType == Session.Instance.MPKinetic)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = HitType.Kinetic;
                    Absorb += hit.Amount * ConvToWatts;
                    continue;
                }
                if (damageType == Session.Instance.MPEnergy)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = HitType.Energy;
                    Absorb += hit.Amount * ConvToWatts;
                    continue;
                }
                if (damageType == Session.Instance.MPEMP)
                {
                    ImpactSize          = hit.Amount;
                    WorldImpactPosition = hit.HitPos;
                    EnergyHit           = HitType.Energy;
                    Absorb += hit.Amount * ConvToWatts;
                    continue;
                }
            }
            ShieldHits.Clear();
        }
예제 #3
0
 private void AddLocalHit()
 {
     ShieldHits.Add(new ShieldHit(MyEntities.GetEntityById(ShieldHit.AttackerId), ShieldHit.Amount, MyStringHash.GetOrCompute(ShieldHit.DamageType), ShieldHit.HitPos));
 }