[DataField, AutoNetworkedField]
public string EquippedPrefix = "toggled";
+
+ /// <summary>
+ /// When <see langword="true"/> will function normally, otherwise will not react to events
+ /// </summary>
+ [DataField("enabled"), AutoNetworkedField]
+ public bool IsEnabled = true;
+
+ /// <summary>
+ /// When <see langword="true"/> will disable <see cref="IsEnabled"/> when folded
+ /// </summary>
+ [DataField, AutoNetworkedField]
+ public bool DisableOnFolded;
}
private void OnToggleMask(Entity<MaskComponent> ent, ref ToggleMaskEvent args)
{
var (uid, mask) = ent;
- if (mask.ToggleActionEntity == null || !_timing.IsFirstTimePredicted)
+ if (mask.ToggleActionEntity == null || !_timing.IsFirstTimePredicted || !mask.IsEnabled)
return;
if (!_inventorySystem.TryGetSlotEntity(args.Performer, "mask", out var existing) || !uid.Equals(existing))
// set to untoggled when unequipped, so it isn't left in a 'pulled down' state
private void OnGotUnequipped(EntityUid uid, MaskComponent mask, GotUnequippedEvent args)
{
- if (!mask.IsToggled)
+ if (!mask.IsToggled || !mask.IsEnabled)
return;
mask.IsToggled = false;
private void OnFolded(Entity<MaskComponent> ent, ref FoldedEvent args)
{
+ if (ent.Comp.DisableOnFolded)
+ ent.Comp.IsEnabled = !args.IsFolded;
ent.Comp.IsToggled = args.IsFolded;
ToggleMaskComponents(ent.Owner, ent.Comp, ent.Owner);