Fix toggle mask issues (#22496)
This commit is contained in:
@@ -53,22 +53,18 @@ public sealed class LungSystem : EntitySystem
|
|||||||
|
|
||||||
private void OnMaskToggled(Entity<BreathToolComponent> ent, ref ItemMaskToggledEvent args)
|
private void OnMaskToggled(Entity<BreathToolComponent> ent, ref ItemMaskToggledEvent args)
|
||||||
{
|
{
|
||||||
// toggle breath tool connection (skip during equip since that is handled in LungSystem)
|
if (args.IsToggled || args.IsEquip)
|
||||||
if (args.IsEquip)
|
|
||||||
{
|
{
|
||||||
if (args.IsToggled)
|
_atmos.DisconnectInternals(ent.Comp);
|
||||||
{
|
}
|
||||||
_atmos.DisconnectInternals(ent.Comp);
|
else
|
||||||
}
|
{
|
||||||
else
|
ent.Comp.IsFunctional = true;
|
||||||
{
|
|
||||||
ent.Comp.IsFunctional = true;
|
|
||||||
|
|
||||||
if (TryComp(args.Wearer, out InternalsComponent? internals))
|
if (TryComp(args.Wearer, out InternalsComponent? internals))
|
||||||
{
|
{
|
||||||
ent.Comp.ConnectedInternalsEntity = args.Wearer;
|
ent.Comp.ConnectedInternalsEntity = args.Wearer;
|
||||||
_internals.ConnectBreathTool((args.Wearer, internals), ent);
|
_internals.ConnectBreathTool((args.Wearer, internals), ent);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Content.Shared.Clothing.Components;
|
|||||||
using Content.Shared.Inventory;
|
using Content.Shared.Inventory;
|
||||||
using Content.Shared.Inventory.Events;
|
using Content.Shared.Inventory.Events;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
namespace Content.Shared.Clothing.EntitySystems;
|
namespace Content.Shared.Clothing.EntitySystems;
|
||||||
|
|
||||||
@@ -11,6 +12,7 @@ public sealed class MaskSystem : EntitySystem
|
|||||||
[Dependency] private readonly SharedActionsSystem _actionSystem = default!;
|
[Dependency] private readonly SharedActionsSystem _actionSystem = default!;
|
||||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||||
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
||||||
|
[Dependency] private readonly IGameTiming _timing = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -30,7 +32,7 @@ public sealed class MaskSystem : EntitySystem
|
|||||||
private void OnToggleMask(Entity<MaskComponent> ent, ref ToggleMaskEvent args)
|
private void OnToggleMask(Entity<MaskComponent> ent, ref ToggleMaskEvent args)
|
||||||
{
|
{
|
||||||
var (uid, mask) = ent;
|
var (uid, mask) = ent;
|
||||||
if (mask.ToggleActionEntity == null)
|
if (mask.ToggleActionEntity == null || !_timing.IsFirstTimePredicted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_inventorySystem.TryGetSlotEntity(args.Performer, "mask", out var existing) || !uid.Equals(existing))
|
if (!_inventorySystem.TryGetSlotEntity(args.Performer, "mask", out var existing) || !uid.Equals(existing))
|
||||||
|
|||||||
Reference in New Issue
Block a user