Exemple #1
0
        public float GetFeltLowPressure(BarotraumaComponent baro, float environmentPressure)
        {
            var modifier   = float.MaxValue;
            var multiplier = float.MaxValue;

            TryComp(baro.Owner, out InventoryComponent? inv);
            TryComp(baro.Owner, out ContainerManagerComponent? contMan);

            // TODO: cache this & update when equipment changes?
            // This continuously raises events for every player in space.

            // First, check if for protective equipment
            foreach (var slot in baro.ProtectionSlots)
            {
                if (!_inventorySystem.TryGetSlotEntity(baro.Owner, slot, out var equipment, inv, contMan) ||
                    !TryComp(equipment, out PressureProtectionComponent? protection))
                {
                    // Missing protection, skin is exposed.
                    modifier   = 0;
                    multiplier = 1;
                    break;
                }

                modifier   = Math.Min(protection.LowPressureModifier, modifier);
                multiplier = Math.Min(protection.LowPressureMultiplier, multiplier);
            }

            // Then apply any generic, non-clothing related modifiers.
            var lowPressureEvent = new LowPressureEvent(environmentPressure);

            RaiseLocalEvent(baro.Owner, lowPressureEvent, false);

            return((environmentPressure + modifier + lowPressureEvent.Modifier) * (multiplier * lowPressureEvent.Multiplier));
        }
        public float GetFeltLowPressure(EntityUid uid, float environmentPressure)
        {
            var lowPressureEvent = new LowPressureEvent(environmentPressure);

            RaiseLocalEvent(uid, lowPressureEvent, false);

            return(CalculateFeltPressure(environmentPressure, lowPressureEvent));
        }
Exemple #3
0
 /// <summary>
 /// Completely prevent low pressure damage
 /// </summary>
 private void OnLowPressureImmuneEvent(EntityUid uid, PressureImmunityComponent component, LowPressureEvent args)
 {
     args.Modifier   = 100;
     args.Multiplier = 10000;
 }
Exemple #4
0
 private void OnLowPressureEvent(EntityUid uid, PressureProtectionComponent component, LowPressureEvent args)
 {
     args.Modifier   += component.LowPressureModifier;
     args.Multiplier *= component.LowPressureMultiplier;
 }
 private void OnLowPressureEvent(EntityUid uid, InventoryComponent component, LowPressureEvent args)
 {
     RelayInventoryEvent(component, args);
 }