private void OnMaskToggled(Entity<BreathToolComponent> ent, ref ItemMaskToggledEvent args)
{
- // toggle breath tool connection (skip during equip since that is handled in LungSystem)
- if (args.IsEquip)
+ if (args.IsToggled || args.IsEquip)
{
- if (args.IsToggled)
- {
- _atmos.DisconnectInternals(ent.Comp);
- }
- else
- {
- ent.Comp.IsFunctional = true;
+ _atmos.DisconnectInternals(ent.Comp);
+ }
+ else
+ {
+ ent.Comp.IsFunctional = true;
- if (TryComp(args.Wearer, out InternalsComponent? internals))
- {
- ent.Comp.ConnectedInternalsEntity = args.Wearer;
- _internals.ConnectBreathTool((args.Wearer, internals), ent);
- }
+ if (TryComp(args.Wearer, out InternalsComponent? internals))
+ {
+ ent.Comp.ConnectedInternalsEntity = args.Wearer;
+ _internals.ConnectBreathTool((args.Wearer, internals), ent);
}
}
}
using Content.Shared.Inventory;
using Content.Shared.Inventory.Events;
using Content.Shared.Popups;
+using Robust.Shared.Timing;
namespace Content.Shared.Clothing.EntitySystems;
[Dependency] private readonly SharedActionsSystem _actionSystem = default!;
[Dependency] private readonly InventorySystem _inventorySystem = default!;
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
+ [Dependency] private readonly IGameTiming _timing = default!;
public override void Initialize()
{
private void OnToggleMask(Entity<MaskComponent> ent, ref ToggleMaskEvent args)
{
var (uid, mask) = ent;
- if (mask.ToggleActionEntity == null)
+ if (mask.ToggleActionEntity == null || !_timing.IsFirstTimePredicted)
return;
if (!_inventorySystem.TryGetSlotEntity(args.Performer, "mask", out var existing) || !uid.Equals(existing))