Разрешаю кушать (Фикс банданы) (#818)

This commit is contained in:
BIGZi0348
2024-12-13 21:18:04 +03:00
committed by GitHub
4 changed files with 24 additions and 3 deletions

View File

@@ -22,4 +22,18 @@ public sealed partial class MaskComponent : Component
[DataField, AutoNetworkedField] [DataField, AutoNetworkedField]
public string EquippedPrefix = "toggled"; public string EquippedPrefix = "toggled";
/// <summary>
/// WD Ahead of wizden.
/// When <see langword="true"/> will function normally, otherwise will not react to events
/// </summary>
[DataField("enabled"), AutoNetworkedField]
public bool IsEnabled = true;
/// <summary>
/// WD Ahead of wizden.
/// When <see langword="true"/> will disable <see cref="IsEnabled"/> when folded
/// </summary>
[DataField, AutoNetworkedField]
public bool DisableOnFolded;
} }

View File

@@ -35,7 +35,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 || !_timing.IsFirstTimePredicted) if (mask.ToggleActionEntity == null || !_timing.IsFirstTimePredicted || !mask.IsEnabled) // WD Ahead of wizden
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))
@@ -53,7 +53,7 @@ public sealed class MaskSystem : EntitySystem
// set to untoggled when unequipped, so it isn't left in a 'pulled down' state // set to untoggled when unequipped, so it isn't left in a 'pulled down' state
private void OnGotUnequipped(EntityUid uid, MaskComponent mask, GotUnequippedEvent args) private void OnGotUnequipped(EntityUid uid, MaskComponent mask, GotUnequippedEvent args)
{ {
if (!mask.IsToggled) if (!mask.IsToggled || !mask.IsEnabled) // WD Ahead of wizden
return; return;
mask.IsToggled = false; mask.IsToggled = false;
@@ -66,7 +66,7 @@ public sealed class MaskSystem : EntitySystem
private void ToggleMaskComponents(EntityUid uid, MaskComponent mask, EntityUid wearer, string? equippedPrefix = null, bool isEquip = false) private void ToggleMaskComponents(EntityUid uid, MaskComponent mask, EntityUid wearer, string? equippedPrefix = null, bool isEquip = false)
{ {
Dirty(uid, mask); Dirty(uid, mask);
if (mask.ToggleActionEntity is {} action) if (mask.ToggleActionEntity is { } action)
_actionSystem.SetToggled(action, mask.IsToggled); _actionSystem.SetToggled(action, mask.IsToggled);
var maskEv = new ItemMaskToggledEvent(wearer, equippedPrefix, mask.IsToggled, isEquip); var maskEv = new ItemMaskToggledEvent(wearer, equippedPrefix, mask.IsToggled, isEquip);
@@ -78,6 +78,8 @@ public sealed class MaskSystem : EntitySystem
private void OnFolded(Entity<MaskComponent> ent, ref FoldedEvent args) private void OnFolded(Entity<MaskComponent> ent, ref FoldedEvent args)
{ {
if (ent.Comp.DisableOnFolded) // WD Ahead of wizden
ent.Comp.IsEnabled = !args.IsFolded;
ent.Comp.IsToggled = args.IsFolded; ent.Comp.IsToggled = args.IsFolded;
ToggleMaskComponents(ent.Owner, ent.Comp, ent.Owner); ToggleMaskComponents(ent.Owner, ent.Comp, ent.Owner);

View File

@@ -7,6 +7,8 @@
folded: true folded: true
- type: Mask - type: Mask
isToggled: true isToggled: true
enabled: false
disableOnFolded: true
- type: IngestionBlocker - type: IngestionBlocker
enabled: false enabled: false
- type: IdentityBlocker - type: IdentityBlocker
@@ -20,6 +22,8 @@
- state: icon_mask - state: icon_mask
map: [ "unfoldedLayer" ] map: [ "unfoldedLayer" ]
visible: false visible: false
- type: HideLayerClothing # needed since head bandana inherits from mask bandana
slots: []
- type: Tag - type: Tag
tags: tags:
- Bandana - Bandana

View File

@@ -12,6 +12,7 @@
unfoldedSlots: unfoldedSlots:
- MASK - MASK
- type: Mask - type: Mask
disableOnFolded: true
- type: IngestionBlocker - type: IngestionBlocker
- type: IdentityBlocker - type: IdentityBlocker
coverage: MOUTH coverage: MOUTH