From 81a6f16591547c20975e8cedb8610e780b8f77ef Mon Sep 17 00:00:00 2001 From: Kara Date: Mon, 11 Jul 2022 00:29:51 -0700 Subject: [PATCH] More nukie tweaks (#9618) --- Content.Client/Nuke/NukeMenu.xaml.cs | 2 +- Content.Server/Nuke/NukeSystem.cs | 13 ++++++++++--- Resources/Locale/en-US/nuke/nuke-component.ftl | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Content.Client/Nuke/NukeMenu.xaml.cs b/Content.Client/Nuke/NukeMenu.xaml.cs index a341a69e0d..644513a4a7 100644 --- a/Content.Client/Nuke/NukeMenu.xaml.cs +++ b/Content.Client/Nuke/NukeMenu.xaml.cs @@ -104,7 +104,7 @@ namespace Content.Client.Nuke SecondStatusLabel.Text = secondMsg; EjectButton.Disabled = !state.DiskInserted || state.Status == NukeStatus.ARMED; - AnchorButton.Disabled = !state.DiskInserted; + AnchorButton.Disabled = state.Status == NukeStatus.ARMED; AnchorButton.Pressed = state.IsAnchored; ArmButton.Disabled = !state.AllowArm; } diff --git a/Content.Server/Nuke/NukeSystem.cs b/Content.Server/Nuke/NukeSystem.cs index 967a7bfc1d..0895359649 100644 --- a/Content.Server/Nuke/NukeSystem.cs +++ b/Content.Server/Nuke/NukeSystem.cs @@ -128,8 +128,8 @@ namespace Content.Server.Nuke private void CheckAnchorAttempt(EntityUid uid, NukeComponent component, BaseAnchoredAttemptEvent args) { - // cancel any anchor attempt without nuke disk - if (!component.DiskSlot.HasItem) + // cancel any anchor attempt if armed + if (component.Status == NukeStatus.ARMED) { var msg = Loc.GetString("nuke-component-cant-anchor"); _popups.PopupEntity(msg, uid, Filter.Entities(args.User)); @@ -422,15 +422,22 @@ namespace Content.Server.Nuke _alertLevel.SetLevel(stationUid.Value, component.AlertLevelOnActivate, true, true, true, true); } + var nukeXform = Transform(uid); + var pos = nukeXform.MapPosition; + var x = (int) pos.X; + var y = (int) pos.Y; + var posText = $"({x}, {y})"; + // warn a crew var announcement = Loc.GetString("nuke-component-announcement-armed", - ("time", (int) component.RemainingTime)); + ("time", (int) component.RemainingTime), ("position", posText)); var sender = Loc.GetString("nuke-component-announcement-sender"); _chatSystem.DispatchStationAnnouncement(uid, announcement, sender, false, Color.Red); NukeArmedAudio(component); _itemSlots.SetLock(uid, component.DiskSlot, true); + nukeXform.Anchored = true; component.Status = NukeStatus.ARMED; UpdateUserInterface(uid, component); } diff --git a/Resources/Locale/en-US/nuke/nuke-component.ftl b/Resources/Locale/en-US/nuke/nuke-component.ftl index 52fc260d08..615aa70197 100644 --- a/Resources/Locale/en-US/nuke/nuke-component.ftl +++ b/Resources/Locale/en-US/nuke/nuke-component.ftl @@ -1,6 +1,6 @@ nuke-component-cant-anchor = The bolts seems to be blocked without disk! nuke-component-announcement-sender = Nuclear Fission Explosive -nuke-component-announcement-armed = Attention! The station's self-destruct mechanism has been engaged. {$time} seconds until detonation. +nuke-component-announcement-armed = Attention! The station's self-destruct mechanism has been engaged at global coordinates {$position}. {$time} seconds until detonation. If this was made in error, the mechanism may still be disarmed. nuke-component-announcement-unarmed = The station's self-destruct was deactivated! Have a nice day! nuke-component-announcement-send-codes = Attention! Requested self-destruction codes was sent to communication consoles. nuke-component-doafter-warning = You start fiddling with wires and knobs in order to disarm the nuke.. This may take a while.