diff --git a/Content.Server/Flash/FlashSystem.cs b/Content.Server/Flash/FlashSystem.cs index d893d59bab..d73ef1de48 100644 --- a/Content.Server/Flash/FlashSystem.cs +++ b/Content.Server/Flash/FlashSystem.cs @@ -1,21 +1,15 @@ -using System; -using System.Collections.Generic; using Content.Server.Flash.Components; using Content.Server.Stunnable; using Content.Server.Weapon.Melee; using Content.Shared.Examine; using Content.Shared.Flash; using Content.Shared.Interaction; -using Content.Shared.Interaction.Helpers; using Content.Shared.Inventory; using Content.Shared.Physics; using Content.Shared.Popups; using Content.Shared.Sound; using Robust.Server.GameObjects; using Robust.Shared.Audio; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Localization; using Robust.Shared.Player; using Robust.Shared.Timing; using InventoryComponent = Content.Shared.Inventory.InventoryComponent; @@ -28,18 +22,40 @@ namespace Content.Server.Flash [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly StunSystem _stunSystem = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; + [Dependency] private readonly MetaDataSystem _metaSystem = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnFlashMeleeHit); SubscribeLocalEvent(OnFlashMeleeInteract); SubscribeLocalEvent(OnFlashUseInHand); SubscribeLocalEvent(OnFlashExamined); + SubscribeLocalEvent(OnInventoryFlashAttempt); + SubscribeLocalEvent(OnFlashImmunityFlashAttempt); + + SubscribeLocalEvent(OnFlashableStartup); + SubscribeLocalEvent(OnFlashableShutdown); + SubscribeLocalEvent(OnMetaFlagRemoval); + } + + private void OnMetaFlagRemoval(EntityUid uid, FlashableComponent component, ref MetaFlagRemoveAttemptEvent args) + { + if (component.LifeStage > ComponentLifeStage.Initialized) return; + args.Cancelled = true; + } + + private void OnFlashableStartup(EntityUid uid, FlashableComponent component, ComponentStartup args) + { + _metaSystem.AddFlag(uid, MetaDataFlags.EntitySpecific); + } + + private void OnFlashableShutdown(EntityUid uid, FlashableComponent component, ComponentShutdown args) + { + _metaSystem.RemoveFlag(uid, MetaDataFlags.EntitySpecific); } private void OnFlashMeleeHit(EntityUid uid, FlashComponent comp, MeleeHitEvent args)