using Content.Shared._White.Implants.VoiceActivatedBomb; using Content.Shared.Implants.Components; using Content.Server.Explosion.Components; using Content.Server.Speech.Components; using Content.Shared.Popups; using Content.Shared.Implants; namespace Content.Server._White.Implants.VoiceActivatedBomb; public sealed class VoiceActivatedBombSystem : SharedVoiceActivatedBombSystem { [Dependency] private readonly SharedPopupSystem _popup = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnTryInsertVoiceActivatedBombServer); SubscribeLocalEvent(OnVoiceActivatedBombInserted); } private void OnTryInsertVoiceActivatedBombServer(Entity ent, ref InsertVoiceActivatedBombEvent args) { if (!TryComp(args.Implanter, out var implanterTrigger)) return; if (implanterTrigger.KeyPhrase == null) { // TODO find some way to make it look good // Right now it's overlaps with implanter-component-implant-failed popup //var message = Loc.GetString("voice-activated-bomb-no-key-phrase"); //_popup.PopupEntity(message, args.Implanter, args.User); args.Cancel(); return; } } private void OnVoiceActivatedBombInserted(Entity ent, ref ImplanterUsed args) { if (!Tag.HasTag(args.Implanter, VoiceActivatedBombTag)) return; if (!TryComp(args.Implanter, out var implanterTrigger)) return; if (!TryComp(args.Implant, out var implantTrigger)) return; implantTrigger.KeyPhrase = implanterTrigger.KeyPhrase; EnsureComp(args.Implant); RemComp(args.Implanter); Tag.RemoveTag(args.Implanter, VoiceActivatedBombTag); } }