private void OnEmagged(EntityUid uid, StasisBedComponent component, GotEmaggedEvent args) { // Repeatable // Reset any metabolisms first so they receive the multiplier correctly UpdateMetabolisms(uid, component, false); component.Multiplier = 1 / component.Multiplier; UpdateMetabolisms(uid, component, true); args.Handled = true; }
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 OnPowerChanged(EntityUid uid, StasisBedComponent component, PowerChangedEvent args) { UpdateAppearance(uid, args.Powered); UpdateMetabolisms(uid, component, args.Powered); }