private void UpdateMetabolisms(EntityUid uid, StasisBedComponent component, bool shouldApply)
        {
            if (!TryComp <StrapComponent>(uid, out var strap) || strap.BuckledEntities.Count == 0)
            {
                return;
            }

            foreach (var buckledEntity in strap.BuckledEntities)
            {
                var metabolicEvent = new ApplyMetabolicMultiplierEvent()
                {
                    Uid = buckledEntity, Multiplier = component.Multiplier, Apply = shouldApply
                };
                RaiseLocalEvent(buckledEntity, metabolicEvent, false);
            }
        }
        private void OnBuckleChange(EntityUid uid, StasisBedComponent component, BuckleChangeEvent args)
        {
            // In testing this also received an unbuckle event when the bed is destroyed
            // So don't worry about that
            if (!TryComp <SharedBodyComponent>(args.BuckledEntity, out var body))
            {
                return;
            }

            if (!this.IsPowered(uid, EntityManager))
            {
                return;
            }

            var metabolicEvent = new ApplyMetabolicMultiplierEvent()
            {
                Uid = args.BuckledEntity, Multiplier = component.Multiplier, Apply = args.Buckling
            };

            RaiseLocalEvent(args.BuckledEntity, metabolicEvent, false);
        }
Esempio n. 3
0
 private void OnApplyMetabolicMultiplier(EntityUid uid, BloodstreamComponent component, ApplyMetabolicMultiplierEvent args)
 {
     if (args.Apply)
     {
         component.UpdateInterval *= args.Multiplier;
         return;
     }
     component.UpdateInterval /= args.Multiplier;
     // Reset the accumulator properly
     if (component.AccumulatedFrametime >= component.UpdateInterval)
     {
         component.AccumulatedFrametime = component.UpdateInterval;
     }
 }