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); }
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; } }