diff --git a/Content.Client/_White/DeepSpaceCom/DeepSpaceComBoundUI.cs b/Content.Client/_White/DeepSpaceCom/DeepSpaceComBoundUI.cs
new file mode 100644
index 0000000000..1f6d1a2555
--- /dev/null
+++ b/Content.Client/_White/DeepSpaceCom/DeepSpaceComBoundUI.cs
@@ -0,0 +1,57 @@
+using Content.Shared._White.DeepSpaceCom;
+using JetBrains.Annotations;
+
+namespace Content.Client._White.DeepSpaceCom;
+
+[UsedImplicitly]
+public sealed class DeepSpaceComBoundUI : BoundUserInterface
+{
+ [ViewVariables]
+ private DeepSpaceComMenu? _menu;
+
+ public DeepSpaceComBoundUI(EntityUid owner, Enum uiKey) : base(owner, uiKey)
+ {
+
+ }
+
+ protected override void Open()
+ {
+ base.Open();
+
+ _menu = new();
+
+ _menu.OnMicPressed += enabled =>
+ {
+ SendMessage(new ToggleDeepSpaceComMicrophoneMessage(enabled));
+ };
+ _menu.OnSpeakerPressed += enabled =>
+ {
+ SendMessage(new ToggleDeepSpaceComSpeakerMessage(enabled));
+ };
+ _menu.OnChannelSelected += channel =>
+ {
+ SendMessage(new SelectDeepSpaceComChannelMessage(channel));
+ };
+
+ _menu.OnClose += Close;
+ _menu.OpenCentered();
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ base.Dispose(disposing);
+ if (!disposing)
+ return;
+ _menu?.Close();
+ }
+
+ protected override void UpdateState(BoundUserInterfaceState state)
+ {
+ base.UpdateState(state);
+
+ if (state is not DeepSpaceComBoundUIState msg)
+ return;
+
+ _menu?.Update(msg);
+ }
+}
diff --git a/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml b/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml
new file mode 100644
index 0000000000..71bd6e3616
--- /dev/null
+++ b/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml.cs b/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml.cs
new file mode 100644
index 0000000000..258f0c3f5f
--- /dev/null
+++ b/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml.cs
@@ -0,0 +1,59 @@
+using Content.Client.UserInterface.Controls;
+using Content.Shared._White.DeepSpaceCom;
+using Content.Shared.Radio;
+using Robust.Client.AutoGenerated;
+using Robust.Client.UserInterface.XAML;
+using Robust.Shared.Prototypes;
+
+namespace Content.Client._White.DeepSpaceCom;
+
+[GenerateTypedNameReferences]
+public sealed partial class DeepSpaceComMenu : FancyWindow
+{
+ [Dependency] private readonly IPrototypeManager _prototype = default!;
+
+ public event Action? OnMicPressed;
+ public event Action? OnSpeakerPressed;
+ public event Action? OnChannelSelected;
+
+ private readonly List _channels = new();
+
+ public DeepSpaceComMenu()
+ {
+ RobustXamlLoader.Load(this);
+ IoCManager.InjectDependencies(this);
+
+ MicButton.OnPressed += args => OnMicPressed?.Invoke(args.Button.Pressed);
+ SpeakerButton.OnPressed += args => OnSpeakerPressed?.Invoke(args.Button.Pressed);
+ }
+
+ public void Update(DeepSpaceComBoundUIState state)
+ {
+ MicButton.Pressed = state.MicEnabled;
+ SpeakerButton.Pressed = state.SpeakerEnabled;
+
+ ChannelOptions.Clear();
+ _channels.Clear();
+ for (var i = 0; i < state.AvailableChannels.Count; i++)
+ {
+ var channel = state.AvailableChannels[i];
+ if (!_prototype.TryIndex(channel, out var prototype))
+ continue;
+
+ _channels.Add(channel);
+ ChannelOptions.AddItem(Loc.GetString(prototype.Name), i);
+
+ if (channel == state.SelectedChannel)
+ ChannelOptions.Select(i);
+ }
+ ChannelOptions.OnItemSelected += args =>
+ {
+ ChannelOptions.SelectId(args.Id);
+ OnChannelSelected?.Invoke(_channels[args.Id]);
+ MicButton.Pressed = false;
+ SpeakerButton.Pressed = false;
+ OnMicPressed?.Invoke(false);
+ OnSpeakerPressed?.Invoke(false);
+ };
+ }
+}
diff --git a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs
index c26b4cae30..0e4192053c 100644
--- a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs
+++ b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs
@@ -4,6 +4,7 @@ using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Radio.Components;
+using Content.Shared._White.DeepSpaceCom; // WD
using Content.Server.Speech;
using Content.Server.Speech.Components;
using Content.Shared.UserInterface;
@@ -51,6 +52,11 @@ public sealed class RadioDeviceSystem : EntitySystem
SubscribeLocalEvent(OnToggleIntercomMic);
SubscribeLocalEvent(OnToggleIntercomSpeaker);
SubscribeLocalEvent(OnSelectIntercomChannel);
+
+ SubscribeLocalEvent(OnBeforeDeepSpaceComUiOpen); // WD start
+ SubscribeLocalEvent(OnToggleDeepSpaceComMic);
+ SubscribeLocalEvent(OnToggleDeepSpaceComSpeaker);
+ SubscribeLocalEvent(OnSelectDeepSpaceComChannel); // WD end
}
public override void Update(float frameTime)
@@ -264,4 +270,55 @@ public sealed class RadioDeviceSystem : EntitySystem
var state = new IntercomBoundUIState(micEnabled, speakerEnabled, availableChannels, selectedChannel);
_ui.SetUiState(uid, IntercomUiKey.Key, state);
}
+
+ private void OnBeforeDeepSpaceComUiOpen(EntityUid uid, DeepSpaceComComponent component, BeforeActivatableUIOpenEvent args) // WD start
+ {
+ UpdateDeepSpaceComUi(uid, component);
+ }
+
+ private void OnToggleDeepSpaceComMic(EntityUid uid, DeepSpaceComComponent component, ToggleDeepSpaceComMicrophoneMessage args)
+ {
+ if (component.RequiresPower && !this.IsPowered(uid, EntityManager))
+ return;
+
+ SetMicrophoneEnabled(uid, args.Actor, args.Enabled, true);
+ UpdateDeepSpaceComUi(uid, component);
+ }
+
+ private void OnToggleDeepSpaceComSpeaker(EntityUid uid, DeepSpaceComComponent component, ToggleDeepSpaceComSpeakerMessage args)
+ {
+ if (component.RequiresPower && !this.IsPowered(uid, EntityManager))
+ return;
+
+ SetSpeakerEnabled(uid, args.Actor, args.Enabled, true);
+ UpdateDeepSpaceComUi(uid, component);
+ }
+
+ private void OnSelectDeepSpaceComChannel(EntityUid uid, DeepSpaceComComponent component, SelectDeepSpaceComChannelMessage args)
+ {
+ if (component.RequiresPower && !this.IsPowered(uid, EntityManager))
+ return;
+
+ if (!_protoMan.TryIndex(args.Channel, out _) || !component.SupportedChannels.Contains(args.Channel))
+ return;
+
+ if (TryComp(uid, out var mic))
+ mic.BroadcastChannel = args.Channel;
+ if (TryComp(uid, out var speaker))
+ speaker.Channels = new(){ args.Channel };
+ UpdateDeepSpaceComUi(uid, component);
+ }
+
+ private void UpdateDeepSpaceComUi(EntityUid uid, DeepSpaceComComponent component)
+ {
+ var micComp = CompOrNull(uid);
+ var speakerComp = CompOrNull(uid);
+
+ var micEnabled = micComp?.Enabled ?? false;
+ var speakerEnabled = speakerComp?.Enabled ?? false;
+ var availableChannels = component.SupportedChannels;
+ var selectedChannel = micComp?.BroadcastChannel ?? SharedChatSystem.CommonChannel;
+ var state = new DeepSpaceComBoundUIState(micEnabled, speakerEnabled, availableChannels, selectedChannel);
+ _ui.SetUiState(uid, DeepSpaceComUiKey.Key, state);
+ } // WD end
}
diff --git a/Content.Server/Radio/EntitySystems/RadioSystem.cs b/Content.Server/Radio/EntitySystems/RadioSystem.cs
index 2fca1b2806..48d7938001 100644
--- a/Content.Server/Radio/EntitySystems/RadioSystem.cs
+++ b/Content.Server/Radio/EntitySystems/RadioSystem.cs
@@ -3,6 +3,7 @@ using Content.Server.Chat.Systems;
using Content.Server.Power.Components;
using Content.Server.Radio.Components;
using Content.Server.VoiceMask;
+using Content.Shared._White.DeepSpaceCom; // WD
using Content.Shared.Chat;
using Content.Shared.Database;
using Content.Shared.Radio;
@@ -127,12 +128,13 @@ public sealed class RadioSystem : EntitySystem
var radioQuery = EntityQueryEnumerator();
while (canSend && radioQuery.MoveNext(out var receiver, out var radio, out var transform))
{
- if (!radio.ReceiveAllChannels)
+ if (!radio.ReceiveAllChannels) // WD start
{
- if (!radio.Channels.Contains(channel.ID) || (TryComp(receiver, out var intercom) &&
- !intercom.SupportedChannels.Contains(channel.ID)))
+ if (!radio.Channels.Contains(channel.ID) ||
+ (TryComp(receiver, out var deepSpaceCom) && !deepSpaceCom.SupportedChannels.Contains(channel.ID)) ||
+ (TryComp(receiver, out var intercom) && !intercom.SupportedChannels.Contains(channel.ID)))
continue;
- }
+ } // WD end
if (!channel.LongRange && transform.MapID != sourceMapId && !radio.GlobalReceive)
continue;
diff --git a/Content.Shared/_White/DeepSpaceCom/DeepSpaceComComponent.cs b/Content.Shared/_White/DeepSpaceCom/DeepSpaceComComponent.cs
new file mode 100644
index 0000000000..a7fbe1745b
--- /dev/null
+++ b/Content.Shared/_White/DeepSpaceCom/DeepSpaceComComponent.cs
@@ -0,0 +1,15 @@
+using Content.Shared.Radio;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
+using Robust.Shared.GameStates;
+
+namespace Content.Shared._White.DeepSpaceCom;
+
+[RegisterComponent, NetworkedComponent]
+public sealed partial class DeepSpaceComComponent : Component
+{
+ [DataField("requiresPower"), ViewVariables(VVAccess.ReadWrite)]
+ public bool RequiresPower = true;
+
+ [DataField("supportedChannels", customTypeSerializer: typeof(PrototypeIdListSerializer))]
+ public List SupportedChannels = new();
+}
diff --git a/Content.Shared/_White/DeepSpaceCom/SharedDeepSpaceCom.cs b/Content.Shared/_White/DeepSpaceCom/SharedDeepSpaceCom.cs
new file mode 100644
index 0000000000..677a217278
--- /dev/null
+++ b/Content.Shared/_White/DeepSpaceCom/SharedDeepSpaceCom.cs
@@ -0,0 +1,59 @@
+using Robust.Shared.Serialization;
+
+namespace Content.Shared._White.DeepSpaceCom;
+
+[Serializable, NetSerializable]
+public enum DeepSpaceComUiKey
+{
+ Key
+}
+
+[Serializable, NetSerializable]
+public sealed class DeepSpaceComBoundUIState : BoundUserInterfaceState
+{
+ public bool MicEnabled;
+ public bool SpeakerEnabled;
+ public List AvailableChannels;
+ public string SelectedChannel;
+
+ public DeepSpaceComBoundUIState(bool micEnabled, bool speakerEnabled, List availableChannels, string selectedChannel)
+ {
+ MicEnabled = micEnabled;
+ SpeakerEnabled = speakerEnabled;
+ AvailableChannels = availableChannels;
+ SelectedChannel = selectedChannel;
+ }
+}
+
+[Serializable, NetSerializable]
+public sealed class ToggleDeepSpaceComMicrophoneMessage : BoundUserInterfaceMessage
+{
+ public bool Enabled;
+
+ public ToggleDeepSpaceComMicrophoneMessage(bool enabled)
+ {
+ Enabled = enabled;
+ }
+}
+
+[Serializable, NetSerializable]
+public sealed class ToggleDeepSpaceComSpeakerMessage : BoundUserInterfaceMessage
+{
+ public bool Enabled;
+
+ public ToggleDeepSpaceComSpeakerMessage(bool enabled)
+ {
+ Enabled = enabled;
+ }
+}
+
+[Serializable, NetSerializable]
+public sealed class SelectDeepSpaceComChannelMessage : BoundUserInterfaceMessage
+{
+ public string Channel;
+
+ public SelectDeepSpaceComChannelMessage(string channel)
+ {
+ Channel = channel;
+ }
+}
diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml
index c0e54b4fcd..8612f0667d 100644
--- a/Resources/Changelog/ChangelogWhite.yml
+++ b/Resources/Changelog/ChangelogWhite.yml
@@ -1,22 +1,4 @@
Entries:
-- author: Aviu
- changes:
- - message: "\u0421\u043A\u0440\u0435\u043B\u043B\u044B."
- type: Add
- id: 165
- time: '2024-02-28T14:43:54.0000000+00:00'
- url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/141
-- author: Aviu
- changes:
- - message: "\u0420\u043E\u0431\u0430 \u043A\u0443\u043B\u044C\u0442\u0430 \u0431\
- \u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\
- \u044F\u0435\u0442 \u0443\u0441\u043A\u043E\u0440\u0435\u043D\u0438\u0435 \u043F\
- \u0440\u0438 \u0434\u0435\u043A\u043E\u043D\u0432\u0435\u0440\u0442\u0430\u0446\
- \u0438\u0438 \u043A\u0443\u043B\u044C\u0442\u0438\u0441\u0442\u0430."
- type: Fix
- id: 166
- time: '2024-02-29T06:10:30.0000000+00:00'
- url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/144
- author: ThereDrD
changes:
- message: "\u0423\u0434\u0430\u043B\u0435\u043D\u044B \u043B\u0438\u0448\u043D\u0438\
@@ -8957,3 +8939,85 @@
id: 664
time: '2025-02-25T20:43:43.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/905
+- author: keslik
+ changes:
+ - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u0441\u043F\u0440\u0430\
+ \u0439\u0442 \u0434\u043B\u044F \u043A\u043E\u0440\u043E\u0431\u043A\u0438 \u0442\
+ \u0440\u0430\u043D\u043A\u0432\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\
+ \u043E\u0432"
+ type: Add
+ - message: "\u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0430 \u043A\u0443\u0447\
+ \u043D\u043E\u0441\u0442\u044C \u0441\u0442\u0440\u0435\u043B\u044C\u0431\u044B\
+ \ \u043A\u0430\u0440\u0442\u0435\u0447\u044C\u044E"
+ type: Tweak
+ - message: "\u041E\u0441\u043B\u0430\u0431\u043B\u0435\u043D \u043F\u0430\u0442\u0440\
+ \u043E\u043D .45 (\u043C\u0430\u0433\u043D\u0443\u043C)"
+ type: Tweak
+ - message: "\u0423\u0441\u0438\u043B\u0435\u043D\u044B \u0442\u0440\u0430\u043D\u043A\
+ \u0432\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u044B \u0438 \u043F\u0443\
+ \u043B\u0438 (\u0441\u043B\u0430\u0433\u0438) \u0434\u043B\u044F 50 \u043A\u0430\
+ \u043B\u0438\u0431\u0440\u0430"
+ type: Tweak
+ - message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430 \u043E\u0433\
+ \u0440\u043E\u043C\u043D\u0430\u044F \u0432\u043C\u0435\u0441\u0442\u0438\u0442\
+ \u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u043A\u043E\u0440\u043E\u0431\
+ \u043A\u0438 \u0434\u043B\u044F \u0441\u0432\u0435\u0447\u0435\u043A"
+ type: Fix
+ id: 665
+ time: '2025-03-05T17:00:51.0000000+00:00'
+ url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/910
+- author: keslik
+ changes:
+ - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043F\u0440\u043E\u0434\
+ \u0432\u0438\u043D\u0443\u0442\u044B\u0439 \u043F\u0440\u043E\u0442\u043E\u043A\
+ \u0438\u043D\u0435\u0442\u0438\u043A"
+ type: Add
+ - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u0432\u043E\u0437\
+ \u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u043E\u043B\u043E\u0436\
+ \u0438\u0442\u044C \u043D\u043E\u0436 \u0432 \u0431\u043E\u0442\u0438\u043D\u043A\
+ \u0438 \u0443\u0442\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430"
+ type: Add
+ - message: "\u0412 \u043F\u0440\u043E\u0442\u043E\u043B\u0430\u0442 \u0434\u043E\
+ \u0431\u0430\u0432\u043B\u0435\u043D\u044B \u0440\u0435\u0446\u0435\u043F\u0442\
+ \u044B \u043A\u0440\u0443\u0448\u0438\u0442\u0435\u043B\u0435\u0439, \u043F\u0440\
+ \u043E\u0434\u0432\u0438\u043D\u0443\u0442\u043E\u0433\u043E \u043F\u0440\u043E\
+ \u0442\u043E\u043A\u0438\u043D\u0435\u0442\u0438\u043A\u0430 \u0438 \u0432\u0437\
+ \u0440\u044B\u0432\u0447\u0430\u0442\u043A\u0438."
+ type: Add
+ - message: "\u0412 \u043E\u0440\u0443\u0436\u0435\u0439\u043D\u0443\u044E \u0432\
+ \u0435\u0442\u043A\u0443 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430\
+ \ \u043D\u043E\u0432\u0430\u044F \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\
+ \u0438\u044F \"\u041F\u0440\u043E\u043C\u044B\u0448\u043B\u0435\u043D\u043D\u0430\
+ \u044F \u0434\u043E\u0431\u044B\u0447\u0430\""
+ type: Add
+ - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u0430\u043B\u043C\u0430\
+ \u0437\u043D\u044B\u0439 \u0448\u0430\u0445\u0442\u0451\u0440\u0441\u043A\u0438\
+ \u0439 \u0431\u0443\u0440 \u0438 \u0435\u0433\u043E \u0447\u0435\u0440\u0442\
+ \u0451\u0436"
+ type: Add
+ - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u043F\u0440\u0438 \u043F\u043E\
+ \u043C\u043E\u0449\u0438 \u043F\u0440\u043E\u0442\u043E\u043A\u0438\u043D\u0435\
+ \u0442\u0438\u043A\u0430 \u043C\u043E\u0436\u043D\u043E \u0434\u043E\u0431\u044B\
+ \u0432\u0430\u0442\u044C \u0440\u0443\u0434\u0443 \u043D\u0430 \u043F\u043B\u0430\
+ \u043D\u0435\u0442\u0430\u0445"
+ type: Fix
+ - message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430 \u043D\u0435\
+ \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0434\u043E\
+ \u0431\u044B\u0432\u0430\u0442\u044C \u0430\u0441\u0442\u0435\u0440\u043E\u0438\
+ \u0434\u044B \u0434\u043B\u044F \u043A\u0440\u0443\u0448\u0438\u0442\u0435\u043B\
+ \u044F"
+ type: Fix
+ - message: "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u043E \u0441\u043E\u0434\u0435\
+ \u0440\u0436\u0438\u043C\u043E\u0435 \u0423\u0442\u0438\u043B\u044C\u041C\u0430\
+ \u0433'\u0430"
+ type: Tweak
+ - message: "\u0421\u043D\u0438\u0436\u0435\u043D\u0430 \u0441\u0442\u043E\u0438\u043C\
+ \u043E\u0441\u0442\u044C \u043F\u043E\u0434\u0441\u0443\u043C\u043A\u043E\u0432"
+ type: Tweak
+ - message: "\u0414\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u0432\u044B\u0441\
+ \u0442\u0440\u0435\u043B\u0430 \u043A\u0440\u0443\u0448\u0438\u0442\u0435\u043B\
+ \u044F \u0441\u043D\u0438\u0436\u0435\u043D\u0430"
+ type: Tweak
+ id: 666
+ time: '2025-03-05T20:08:38.0000000+00:00'
+ url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/911
diff --git a/Resources/Locale/ru-RU/_white/items/apka.ftl b/Resources/Locale/ru-RU/_white/items/apka.ftl
new file mode 100644
index 0000000000..eb1ae3e183
--- /dev/null
+++ b/Resources/Locale/ru-RU/_white/items/apka.ftl
@@ -0,0 +1,4 @@
+ent-WeaponAdvancedProtoKineticAccelerator = продвинутый автоматический протокинетический акселератор
+ .desc = Сокращённо - ПАПА. Обладает повышенной скорострельностью и эффективно добывает породы любых типов. Крайне опасен в бою.
+
+research-technology-industrial-mining = Промышленная добыча
diff --git a/Resources/Locale/ru-RU/_white/radio/deepspacecom.ftl b/Resources/Locale/ru-RU/_white/radio/deepspacecom.ftl
new file mode 100644
index 0000000000..51717b41c0
--- /dev/null
+++ b/Resources/Locale/ru-RU/_white/radio/deepspacecom.ftl
@@ -0,0 +1,7 @@
+ent-ComputerDeepSpaceCom = консоль дальней связи
+ .desc = Дальняя космическая связь обеспечивает быстрый обмен сообщениями почти на любом расстоянии. Корпорация слышит!
+
+ent-DeepSpaceComComputerCircuitboard = печатная плата пульта дальней связи
+ .desc = Печатная плата для пульта дальней космической связи.
+
+chat-radio-deepspace = Дальняя связь
diff --git a/Resources/Locale/ru-RU/_white/radio/deepspacecomui.ftl b/Resources/Locale/ru-RU/_white/radio/deepspacecomui.ftl
new file mode 100644
index 0000000000..505ac52005
--- /dev/null
+++ b/Resources/Locale/ru-RU/_white/radio/deepspacecomui.ftl
@@ -0,0 +1,5 @@
+deepspacecom-menu-title = Пульт дальней космической связи
+deepspacecom-channel-label = Частота:
+deepspacecom-button-text-mic = Микрофон
+deepspacecom-button-text-speaker = Динамик
+deepspacecom-flavor-text = Поиск сигналов...
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/tools/blueprint.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/tools/blueprint.ftl
index 4e07a6758b..b155697cef 100644
--- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/tools/blueprint.ftl
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/tools/blueprint.ftl
@@ -2,7 +2,7 @@ ent-BaseBlueprint = чертёж
.desc = Чертёж какого-то устройства. Его можно поместить в автолат.
ent-BlueprintFulton = чертёж фултона
.desc = Чертёж со схемой фултона. Его можно поместить в автолат.
-ent-BlueprintSeismicCharge = чертёж сейсмического заряда
- .desc = Чертеж со схемой сейсмического заряда. Его можно поместить в автолат.
+ent-BlueprintMiningDrillDiamond = чертёж алмазного шахтёрского бура
+ .desc = Чертеж со схемой алмазного бура. Его можно поместить в автолат.
ent-BlueprintSoapOmega = чертёж омега мыла
.desc = Чертеж со схемой омега мыла. Его можно поместить в автолат.
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/melee/mining.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/melee/mining.ftl
index 33e699a9fc..9867b945fd 100644
--- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/melee/mining.ftl
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/melee/mining.ftl
@@ -10,3 +10,5 @@ ent-Pickaxe = кирка
.desc = Зазубренная до совершенства, чтобы вбивать её в камни.
ent-MiningDrill = шахтёрский бур
.desc = Мощный инструмент, служащий для быстрого бурения горных пород.
+ent-MiningDrillDiamond = шахтёрский бур с алмазным сверлом
+ .desc = Более эффективная версия шахтёрского бура.
diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml
index 59d5056ec2..d0cef80701 100644
--- a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml
+++ b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml
@@ -441,6 +441,9 @@
- type: Storage
grid:
- 0,0,9,2
+ whitelist: # WD start
+ components:
+ - ExtinguishOnInteract # WD end
- type: StorageFill
contents:
- id: Candle
@@ -466,6 +469,9 @@
- type: Storage
grid:
- 0,0,9,2
+ whitelist: # WD start
+ components:
+ - ExtinguishOnInteract # WD end
- type: StorageFill
contents:
- id: CandleSmall
diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
index 1f551bf5f6..9d5a34f81c 100644
--- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
+++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
@@ -102,7 +102,7 @@
- id: BoxID
- id: BoxHeadset
- id: IDComputerCircuitboard
- - id: WeaponEgun
+ - id: WeaponDisabler
- id: DoorRemoteService
- id: ClothingNeckGoldmedal
- id: RubberStampHop
diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml
index ef265eac75..33eee9c629 100644
--- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml
+++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml
@@ -1,23 +1,24 @@
- type: vendingMachineInventory
id: SalvageEquipmentInventory
startingInventory:
- WeaponProtoKineticAccelerator: 2
- WeaponCrusher: 1
- WeaponCrusherDagger: 2
- HandheldGPSBasic: 4
- Crowbar: 2
- BoxMRE: 3
+ WeaponProtoKineticAccelerator: 4 # WD start
Pickaxe: 4
- SurvivalKnife: 2
OreBag: 4
+ SeismicCharge: 3
+ SurvivalKnife: 2
+ Crowbar: 2
Flare: 10
FlashlightLantern: 3
Floodlight: 2
- RadioHandheld: 4
- InflatableWallStack1: 20
- InflatableDoorStack1: 10
- SeismicCharge: 3
+ PowerCellMedium: 3
+ HandheldGPSBasic: 3
+ RadioHandheld: 3
FultonBeacon: 2
Fulton: 3
+ BoxInflatable: 2
+ BoxMRE: 2
+ ClothingEyesGlassesMeson: 3
+ ClothingPouchMedical: 2
+ ClothingPouchGrenade: 2 # WD end
emaggedInventory:
JetpackBlackFilled: 1
diff --git a/Resources/Prototypes/Entities/Clothing/Pouches/base_clothingpouch.yml b/Resources/Prototypes/Entities/Clothing/Pouches/base_clothingpouch.yml
index 5c845561ae..4c9c35fdbb 100644
--- a/Resources/Prototypes/Entities/Clothing/Pouches/base_clothingpouch.yml
+++ b/Resources/Prototypes/Entities/Clothing/Pouches/base_clothingpouch.yml
@@ -14,7 +14,7 @@
materialComposition:
Cloth: 35
- type: StaticPrice
- price: 200
+ price: 50
- type: EmitSoundOnPickup
sound:
path: /Audio/White/Web/walk1.ogg
diff --git a/Resources/Prototypes/Entities/Clothing/Pouches/pouches.yml b/Resources/Prototypes/Entities/Clothing/Pouches/pouches.yml
index ebc399e942..8fe5e00ba5 100644
--- a/Resources/Prototypes/Entities/Clothing/Pouches/pouches.yml
+++ b/Resources/Prototypes/Entities/Clothing/Pouches/pouches.yml
@@ -27,7 +27,7 @@
- Patch
- Healing
- type: StaticPrice
- price: 250
+ price: 75
- type: Appearance
- type: entity
@@ -50,8 +50,6 @@
- SmokeOnTrigger
- ClusterGrenade
- ExplodeOnTrigger
- - type: StaticPrice
- price: 125
- type: Appearance
- type: entity
@@ -118,7 +116,7 @@
maxFillLevels: 1
fillBaseName: fill-
- type: StaticPrice
- price: 110
+ price: 40
- type: Appearance
- type: entity
@@ -165,5 +163,5 @@
slots: [pocket, belt]
quickEquip: false
- type: StaticPrice
- price: 150
+ price: 70
- type: Appearance
diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml
index 09ce68ce21..943fd7bbe3 100644
--- a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml
+++ b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml
@@ -22,7 +22,7 @@
sprite: Clothing/Shoes/Boots/jackboots.rsi
- type: entity
- parent: ClothingShoesBaseButcherable
+ parent: ClothingShoesMilitaryBase # WD
id: ClothingShoesBootsSalvage
name: salvage boots
description: Steel-toed salvage boots for salvaging in hazardous environments.
@@ -31,7 +31,6 @@
sprite: Clothing/Shoes/Boots/explorer.rsi
- type: Clothing
sprite: Clothing/Shoes/Boots/explorer.rsi
- - type: Matchbox
- type: entity
parent: ClothingShoesBaseButcherable
diff --git a/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml b/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml
index 43cbdc2431..18a52f29ee 100644
--- a/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml
+++ b/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml
@@ -30,10 +30,10 @@
- type: entity
parent: BaseBlueprint
- id: BlueprintSeismicCharge
- name: seismic charge blueprint
- description: A blueprint with a schematic of a seismic charge. It can be inserted into an autolathe.
+ id: BlueprintMiningDrillDiamond # WD start
+ name: diamond mining drill blueprint
+ description: A blueprint with a schematic of a diamond mining drill. It can be inserted into an autolathe.
components:
- type: Blueprint
providedRecipes:
- - SeismicCharge
+ - MiningDrillDiamond # WD end
diff --git a/Resources/Prototypes/Entities/Objects/Tools/flare.yml b/Resources/Prototypes/Entities/Objects/Tools/flare.yml
index fdf5314863..d325d92f6a 100644
--- a/Resources/Prototypes/Entities/Objects/Tools/flare.yml
+++ b/Resources/Prototypes/Entities/Objects/Tools/flare.yml
@@ -26,6 +26,8 @@
loop: true
volume: -10
maxDistance: 5
+ - type: StaticPrice # WD
+ price: 5 # WD
- type: Sprite
sprite: Objects/Misc/flare.rsi
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml
index 831c3c3352..2d4941dd7e 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml
@@ -113,4 +113,4 @@
- type: Sprite
layers:
- state: boxwide
- - state: shellslug
\ No newline at end of file
+ - state: shelltranquilizer # WD
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml
index fb7cb21ae3..87c2abcb00 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml
@@ -10,7 +10,7 @@
- ShellShotgun
- type: CartridgeAmmo
count: 6
- spread: 28
+ spread: 14 # WD
soundEject:
collection: ShellEject
- type: Sprite
@@ -125,9 +125,9 @@
ammo:
reagents:
- ReagentId: ChloralHydrate
- Quantity: 5
+ Quantity: 12 # WD
- type: SolutionTransfer
- maxTransferAmount: 7
+ maxTransferAmount: 15 # WD
- type: SpentAmmoVisuals
state: "practice"
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml
index 364ba18c42..a31a086845 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml
@@ -7,7 +7,7 @@
- type: Projectile
damage:
types:
- Piercing: 35
+ Piercing: 32 # WD
- type: entity
id: BulletMagnumPractice
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml
index f7b30f214d..d9f8adb2ca 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml
@@ -10,7 +10,10 @@
- type: Projectile
damage:
types:
- Piercing: 40
+ Piercing: 50 # WD start
+ - type: StaminaDamageOnCollide
+ ignoreResistances: false
+ damage: 80 # WD end
- type: entity
id: PelletShotgunBeanbag
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml
index 744100cc95..ad343bf2a8 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml
@@ -420,6 +420,7 @@
layers:
- state: chronobolt
shader: unshaded
+ - type: GatheringProjectile # WD
- type: Projectile
impactEffect: BulletImpactEffectKinetic
damage:
@@ -487,9 +488,10 @@
damage:
types:
Blunt: 0
+ Structural: 15 # WD
# Short lifespan
- type: TimedDespawn
- lifetime: 0.4
+ lifetime: 0.2 # WD
- type: entity
parent: BaseBullet
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml
index fa961dca56..8806ba6f89 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml
@@ -64,3 +64,25 @@
Brute: 3
types:
Structural: 12
+
+- type: entity
+ name: diamond tipped mining drill
+ parent: MiningDrill
+ id: MiningDrillDiamond
+ description: A significantly more efficient mining drill tipped with diamond.
+ components:
+ - type: Sprite
+ sprite: Objects/Tools/handdrilldiamond.rsi
+ state: handdrill
+ - type: MeleeWeapon
+ autoAttack: true
+ angle: 0
+ wideAnimationRotation: -90
+ soundHit:
+ path: "/Audio/Items/drill_hit.ogg"
+ attackRate: 4
+ damage:
+ groups:
+ Brute: 6
+ types:
+ Structural: 30
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index 8db7f2d98a..abc5373446 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -382,6 +382,10 @@
- WeaponForceGun
- WeaponLaserSvalinn
- WeaponProtoKineticAccelerator
+ - WeaponAdvancedProtoKineticAccelerator # WD start
+ - SeismicCharge
+ - WeaponCrusherDagger
+ - WeaponCrusher # WD end
- WeaponTetherGun
- WeaponGrapplingGun
- ClothingBackpackHolding
diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml
index 6a786f2b24..1d33217e98 100644
--- a/Resources/Prototypes/Recipes/Lathes/devices.yml
+++ b/Resources/Prototypes/Recipes/Lathes/devices.yml
@@ -212,6 +212,51 @@
Glass: 500
Silver: 100
+- type: latheRecipe # WD start
+ id: WeaponAdvancedProtoKineticAccelerator
+ result: WeaponAdvancedProtoKineticAccelerator
+ category: Weapons
+ completetime: 5
+ materials:
+ Steel: 800
+ Plasma: 400
+ Glass: 200
+ Uranium: 200
+ Silver: 300
+ Gold: 600
+
+- type: latheRecipe
+ id: SeismicCharge
+ result: SeismicCharge
+ category: Weapons
+ completetime: 3
+ materials:
+ Plastic: 800
+ Plasma: 100
+ Glass: 200
+
+- type: latheRecipe
+ id: WeaponCrusherDagger
+ result: WeaponCrusherDagger
+ category: Weapons
+ completetime: 5
+ materials:
+ Steel: 500
+ Plastic: 200
+ Silver: 100
+
+- type: latheRecipe
+ id: WeaponCrusher
+ result: WeaponCrusher
+ category: Weapons
+ completetime: 5
+ materials:
+ Steel: 2000
+ Plastic: 400
+ Glass: 300
+ Plasma: 300
+ Silver: 200 # WD end
+
- type: latheRecipe
id: WeaponTetherGun
result: WeaponTetherGun
diff --git a/Resources/Prototypes/Recipes/Lathes/salvage.yml b/Resources/Prototypes/Recipes/Lathes/salvage.yml
index 567793a23a..cdbfe5fb4d 100644
--- a/Resources/Prototypes/Recipes/Lathes/salvage.yml
+++ b/Resources/Prototypes/Recipes/Lathes/salvage.yml
@@ -18,11 +18,11 @@
# If they get spammed make it cost silver.
- type: latheRecipe
- id: SeismicCharge
- result: SeismicCharge
+ id: MiningDrillDiamond # WD start
+ result: MiningDrillDiamond
category: Tools
- completetime: 5 # WD Edit from 1 to 5
+ completetime: 5
materials:
- Plastic: 1500
- Steel: 100
- Silver: 100
+ Steel: 1500
+ Plastic: 1000
+ Silver: 200 # WD end
diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml
index e22be07067..acc358d51c 100644
--- a/Resources/Prototypes/Research/arsenal.yml
+++ b/Resources/Prototypes/Research/arsenal.yml
@@ -12,6 +12,7 @@
recipeUnlocks:
- WeaponProtoKineticAccelerator
- ShuttleGunKineticCircuitboard
+ - WeaponCrusherDagger # WD
# These are roundstart but not replenishable for salvage
- type: technology
@@ -109,6 +110,22 @@
# Tier 2
+- type: technology # WD start
+ id: IndustrialMining
+ name: research-technology-industrial-mining
+ icon:
+ sprite: Objects/Weapons/Bombs/seismic.rsi
+ state: icon
+ discipline: Arsenal
+ tier: 2
+ cost: 9500
+ recipeUnlocks:
+ - WeaponAdvancedProtoKineticAccelerator
+ - SeismicCharge
+ - WeaponCrusher
+ technologyPrerequisites:
+ - SalvageWeapons # WD end
+
- type: technology
id: LightweightMagnets
name: research-technology-lightweight-magnets
diff --git a/Resources/Prototypes/_White/Entities/Objects/Weapons/Guns/apka.yml b/Resources/Prototypes/_White/Entities/Objects/Weapons/Guns/apka.yml
new file mode 100644
index 0000000000..94c88294a2
--- /dev/null
+++ b/Resources/Prototypes/_White/Entities/Objects/Weapons/Guns/apka.yml
@@ -0,0 +1,59 @@
+- type: entity
+ parent: BaseItem
+ id: WeaponAdvancedProtoKineticAccelerator
+ name: advanced proto-kinetic accelerator
+ description: Apka.
+ components:
+ - type: Sprite
+ sprite: White/Objects/Weapons/advanced_kinetic.rsi
+ layers:
+ - state: icon
+ - state: animation-icon
+ visible: false
+ map: [ "empty-icon" ]
+ - type: Item
+ sprite: White/Objects/Weapons/advanced_kinetic.rsi
+ size: Normal
+ - type: GunWieldBonus
+ minAngle: -43
+ maxAngle: -43
+ - type: Wieldable
+ - type: Gun
+ angleDecay: 45
+ minAngle: 44
+ maxAngle: 45
+ fireRate: 6
+ ShotsPerBurst: 3
+ selectedMode: Burst
+ availableModes:
+ - Burst
+ soundGunshot:
+ path: /Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg
+ - type: AmmoCounter
+ - type: Appearance
+ - type: GenericVisualizer
+ visuals:
+ enum.AmmoVisuals.HasAmmo:
+ empty-icon:
+ True: { visible: False }
+ False: { visible: True }
+ - type: RechargeBasicEntityAmmo
+ rechargeCooldown: 0.7
+ rechargeSound:
+ path: /Audio/Weapons/Guns/MagIn/kinetic_reload.ogg
+ params:
+ volume: -1
+ pitch: 1.2
+ variation: 0.08
+ - type: BasicEntityAmmoProvider
+ proto: BulletKinetic
+ capacity: 3
+ count: 2
+ - type: Clothing
+ sprite: Objects/Weapons/Guns/Basic/kinetic_accelerator.rsi
+ quickEquip: false
+ slots:
+ - suitStorage
+ - Belt
+ - type: UseDelay
+ delay: 1
diff --git a/Resources/Prototypes/_White/Structures/Machines/deepspacecom.yml b/Resources/Prototypes/_White/Structures/Machines/deepspacecom.yml
new file mode 100644
index 0000000000..269a2ec66b
--- /dev/null
+++ b/Resources/Prototypes/_White/Structures/Machines/deepspacecom.yml
@@ -0,0 +1,62 @@
+- type: entity
+ parent: BaseComputer
+ id: ComputerDeepSpaceCom
+ name: deep space communications desk
+ description: A computer.
+ components:
+ - type: ApcPowerReceiver
+ - type: Electrified
+ enabled: false
+ usesApcPower: true
+ - type: RadioMicrophone
+ powerRequired: true
+ unobstructedRequired: true
+ listenRange: 2
+ toggleOnInteract: false
+ - type: RadioSpeaker
+ toggleOnInteract: false
+ - type: DeepSpaceCom
+ supportedChannels:
+ - DeepSpace
+ - Common
+ - type: TTS # check tts work
+ id: Sentrybot
+ - type: Speech
+ speechVerb: Robotic
+ - type: Sprite # replace sprites in future
+ layers:
+ - map: ["computerLayerBody"]
+ state: computer
+ - map: ["computerLayerKeyboard"]
+ state: generic_keyboard
+ - map: ["computerLayerScreen"]
+ sprite: White/Structures/deepSpaceCom.rsi
+ state: comm
+ - map: ["computerLayerKeys"]
+ state: id_key
+ - type: ActivatableUI
+ key: enum.DeepSpaceComUiKey.Key
+ - type: UserInterface
+ interfaces:
+ enum.DeepSpaceComUiKey.Key:
+ type: DeepSpaceComBoundUI
+ - type: Computer
+ board: DeepSpaceComComputerCircuitboard
+ - type: PointLight
+ radius: 1.5
+ energy: 1.6
+ color: "#3c5eb5"
+ - type: Damageable
+ damageContainer: StructuralInorganic
+ damageModifierSet: StrongMetallic
+
+- type: entity
+ parent: BaseComputerCircuitboard
+ id: DeepSpaceComComputerCircuitboard
+ name: deepspacecom computer board
+ description: A computer printed circuit board for a DeepSpaceCom desk.
+ components:
+ - type: Sprite
+ state: cpu_command
+ - type: ComputerBoard
+ prototype: ComputerDeepSpaceCom
diff --git a/Resources/Prototypes/radio_channels.yml b/Resources/Prototypes/radio_channels.yml
index 57dbb3feb8..dea460baa5 100644
--- a/Resources/Prototypes/radio_channels.yml
+++ b/Resources/Prototypes/radio_channels.yml
@@ -118,3 +118,9 @@
color: "#f6ce64"
# long range since otherwise it'd defeat the point of a handheld radio independent of telecomms
longRange: true
+
+- type: radioChannel # WD start
+ id: DeepSpace
+ name: chat-radio-deepspace
+ frequency: 1501
+ longRange: true # WD end
diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json
index 4707570cba..f0cb543c35 100644
--- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json
+++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json
@@ -1,7 +1,7 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
- "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, vials was drawn by Ubaser, evidence_markers by moomoobeef, ziplock by CaypenNow.",
+ "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, vials was drawn by Ubaser, evidence_markers by moomoobeef, ziplock by CaypenNow, shelltranquilizer modified by keslik.",
"size": {
"x": 32,
"y": 32
@@ -203,6 +203,9 @@
{
"name": "shelltoy"
},
+ {
+ "name": "shelltranquilizer"
+ },
{
"name": "ziptie"
},
diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/shelltranquilizer.png b/Resources/Textures/Objects/Storage/boxes.rsi/shelltranquilizer.png
new file mode 100644
index 0000000000..344de11682
Binary files /dev/null and b/Resources/Textures/Objects/Storage/boxes.rsi/shelltranquilizer.png differ
diff --git a/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/handdrill.png b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/handdrill.png
new file mode 100644
index 0000000000..8b913e2bd9
Binary files /dev/null and b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/handdrill.png differ
diff --git a/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/inhand-left.png b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/inhand-left.png
new file mode 100644
index 0000000000..db6873b739
Binary files /dev/null and b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/inhand-right.png b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/inhand-right.png
new file mode 100644
index 0000000000..37f9d3f44d
Binary files /dev/null and b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/meta.json b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/meta.json
new file mode 100644
index 0000000000..e9341a75be
--- /dev/null
+++ b/Resources/Textures/Objects/Tools/handdrilldiamond.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/8fdee6e4e3dacdb7a12efaac132933dc0fc649b4 and modified by alzore_",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "handdrill"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/animation-icon.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/animation-icon.png
new file mode 100644
index 0000000000..5b125162ac
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/animation-icon.png differ
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/equipped-BELT.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/equipped-BELT.png
new file mode 100644
index 0000000000..0547f4066d
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/equipped-BELT.png differ
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/equipped-SUITSTORAGE.png
new file mode 100644
index 0000000000..0547f4066d
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/equipped-SUITSTORAGE.png differ
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/icon.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/icon.png
new file mode 100644
index 0000000000..210dd089d4
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/icon.png differ
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/inhand-left.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/inhand-left.png
new file mode 100644
index 0000000000..dc24e45d92
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/inhand-left.png differ
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/inhand-right.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/inhand-right.png
new file mode 100644
index 0000000000..9f099d7b66
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/inhand-right.png differ
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/meta.json b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/meta.json
new file mode 100644
index 0000000000..50753e83d3
--- /dev/null
+++ b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/meta.json
@@ -0,0 +1,47 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "icon by RiceMar1244 based on tgstation at https://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57; inhand, wield, and belt equip sprites by RiceMar1244. Recolor by keslik",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "animation-icon",
+ "delays": [
+ [
+ 0.2,
+ 0.2
+ ]
+ ]
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "equipped-BELT",
+ "directions": 4
+ },
+ {
+ "name": "equipped-SUITSTORAGE",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/wielded-inhand-left.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/wielded-inhand-left.png
new file mode 100644
index 0000000000..ef9f7190c2
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/wielded-inhand-left.png differ
diff --git a/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/wielded-inhand-right.png b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/wielded-inhand-right.png
new file mode 100644
index 0000000000..bcdd7c988d
Binary files /dev/null and b/Resources/Textures/White/Objects/Weapons/advanced_kinetic.rsi/wielded-inhand-right.png differ
diff --git a/Resources/Textures/White/Structures/deepSpaceCom.rsi/comm.png b/Resources/Textures/White/Structures/deepSpaceCom.rsi/comm.png
new file mode 100644
index 0000000000..db51e59c4f
Binary files /dev/null and b/Resources/Textures/White/Structures/deepSpaceCom.rsi/comm.png differ
diff --git a/Resources/Textures/White/Structures/deepSpaceCom.rsi/meta.json b/Resources/Textures/White/Structures/deepSpaceCom.rsi/meta.json
new file mode 100644
index 0000000000..9d17dff9ac
--- /dev/null
+++ b/Resources/Textures/White/Structures/deepSpaceCom.rsi/meta.json
@@ -0,0 +1,33 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bd6873fd4dd6a61d7e46f1d75cd4d90f64c40894.",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "comm",
+ "directions": 4,
+ "delays": [
+ [
+ 0.1,
+ 0.1
+ ],
+ [
+ 0.1,
+ 0.1
+ ],
+ [
+ 0.1,
+ 0.1
+ ],
+ [
+ 0.1,
+ 0.1
+ ]
+ ]
+ }
+ ]
+}
\ No newline at end of file