From 9969bd25841b5162d80125c9a2fc000a94c3b558 Mon Sep 17 00:00:00 2001 From: Arendian <137322659+Arendian@users.noreply.github.com> Date: Sat, 17 Feb 2024 17:38:21 +0100 Subject: [PATCH 01/21] Fix nymphs being deleted immediatly after spawning (#25344) * nymphs now don't get deleted together with the body of the diona * moved nymph system to server --- .../Species/Systems/NymphSystem.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) rename {Content.Shared => Content.Server}/Species/Systems/NymphSystem.cs (75%) diff --git a/Content.Shared/Species/Systems/NymphSystem.cs b/Content.Server/Species/Systems/NymphSystem.cs similarity index 75% rename from Content.Shared/Species/Systems/NymphSystem.cs rename to Content.Server/Species/Systems/NymphSystem.cs index 7acbf2e1528..8d0646ae8e4 100644 --- a/Content.Shared/Species/Systems/NymphSystem.cs +++ b/Content.Server/Species/Systems/NymphSystem.cs @@ -1,15 +1,15 @@ +using Content.Server.Mind; using Content.Shared.Species.Components; using Content.Shared.Body.Events; -using Content.Shared.Mind; using Robust.Shared.Prototypes; using Robust.Shared.Timing; -namespace Content.Shared.Species; +namespace Content.Server.Species.Systems; public sealed partial class NymphSystem : EntitySystem { - [Dependency] protected readonly IPrototypeManager _protoManager = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; + [Dependency] private readonly IPrototypeManager _protoManager= default!; + [Dependency] private readonly MindSystem _mindSystem = default!; [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() @@ -31,11 +31,11 @@ private void OnRemovedFromPart(EntityUid uid, NymphComponent comp, RemovedFromPa return; var coords = Transform(uid).Coordinates; - var nymph = EntityManager.SpawnEntity(entityProto.ID, coords); + var nymph = EntityManager.SpawnAtPosition(entityProto.ID, coords); if (comp.TransferMind == true && _mindSystem.TryGetMind(args.OldBody, out var mindId, out var mind)) _mindSystem.TransferTo(mindId, nymph, mind: mind); - EntityManager.QueueDeleteEntity(uid); + QueueDel(uid); } } From f27d78c2710cd1680dcf36290b794a64244d4c90 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 17 Feb 2024 16:39:26 +0000 Subject: [PATCH 02/21] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d24496ce4ab..e700e7f24a3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Emisse - changes: - - message: The Grand Lottery now has much more prizes in store! - type: Tweak - id: 5456 - time: '2023-12-27T12:31:03.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23048 - author: TheShuEd changes: - message: The thief will temporarily not steal structures for the time being, as @@ -3877,3 +3870,10 @@ id: 5955 time: '2024-02-17T05:02:12.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25326 +- author: Dygon + changes: + - message: Diona nymphs aren't deleted immediately after spawning anymore. + type: Fix + id: 5956 + time: '2024-02-17T16:38:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25344 From 7d94cc719c4c7c6cbffbe4b7aad72f36ed689621 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 17 Feb 2024 08:54:58 -0800 Subject: [PATCH 03/21] Fix: Grenades don't make trigger sound (#25321) * Fix: Grenades don't make trigger sound * transform instead of trycomp transform --------- Co-authored-by: Plykiya --- .../Explosion/EntitySystems/TriggerSystem.cs | 14 +++++++++++--- .../Objects/Weapons/Throwable/grenades.yml | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs index 5830018c488..9b9a042641f 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs @@ -29,6 +29,8 @@ using Robust.Shared.Physics.Systems; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using Robust.Shared.Player; +using Content.Shared.Coordinates; namespace Content.Server.Explosion.EntitySystems { @@ -103,9 +105,15 @@ public override void Initialize() private void OnSoundTrigger(EntityUid uid, SoundOnTriggerComponent component, TriggerEvent args) { - _audio.PlayPvs(component.Sound, uid); - if (component.RemoveOnTrigger) - RemCompDeferred(uid); + if (component.RemoveOnTrigger) // if the component gets removed when it's triggered + { + var xform = Transform(uid); + _audio.PlayPvs(component.Sound, xform.Coordinates); // play the sound at its last known coordinates + } + else // if the component doesn't get removed when triggered + { + _audio.PlayPvs(component.Sound, uid); // have the sound follow the entity itself + } } private void OnAnchorTrigger(EntityUid uid, AnchorOnTriggerComponent component, TriggerEvent args) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index 90cb751e40a..0b1a7ecb77a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -67,7 +67,7 @@ sprite: Objects/Weapons/Grenades/flashbang.rsi - type: FlashOnTrigger range: 7 - - type: EmitSoundOnTrigger + - type: SoundOnTrigger sound: path: "/Audio/Effects/flash_bang.ogg" - type: DeleteOnTrigger From 5b485fedbd6f41ffb82343f1f6cbb7113ce6284f Mon Sep 17 00:00:00 2001 From: Flesh <62557990+PolterTzi@users.noreply.github.com> Date: Sat, 17 Feb 2024 18:08:59 +0100 Subject: [PATCH 04/21] fixed the specific if statement called when plant age is under 0 (#25346) --- Content.Server/Botany/Systems/PlantHolderSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Server/Botany/Systems/PlantHolderSystem.cs b/Content.Server/Botany/Systems/PlantHolderSystem.cs index 86f7be6d7b0..0f54fd0da50 100644 --- a/Content.Server/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Server/Botany/Systems/PlantHolderSystem.cs @@ -621,6 +621,7 @@ public void Update(EntityUid uid, PlantHolderComponent? component = null) RemovePlant(uid, component); component.ForceUpdate = true; Update(uid, component); + return; } CheckHealth(uid, component); From cb999d23f4b15e1c182e1ae4bf2e414306822f89 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Sat, 17 Feb 2024 21:30:54 +0100 Subject: [PATCH 05/21] Save round information into replay_final.yml (#23013) * Save round information into the replay * Add round end text too * This is way better * Get actual job * oop * OK THERE * Fake line endings to make life easier * I was told this yaml is legal * I just realised this will make my life easier * REVIEWS BABY IM A PROGRAMMER MOMMY * Live pjb reaction * Live pjb reaction 2 * Reviews 2 * Dont need this * Please no more have mercy on my soul * Oh frick --- .../GameTicking/GameTicker.Replays.cs | 21 ++++++++++++++ .../GameTicking/GameTicker.RoundFlow.cs | 10 +++++++ .../GameTicking/SharedGameTicker.cs | 28 ++++++++++++++++--- Content.Shared/Roles/MindGetAllRolesEvent.cs | 3 +- Content.Shared/Roles/SharedRoleSystem.cs | 8 ++++-- 5 files changed, 63 insertions(+), 7 deletions(-) diff --git a/Content.Server/GameTicking/GameTicker.Replays.cs b/Content.Server/GameTicking/GameTicker.Replays.cs index 7e1a553a856..f23482585cc 100644 --- a/Content.Server/GameTicking/GameTicker.Replays.cs +++ b/Content.Server/GameTicking/GameTicker.Replays.cs @@ -2,6 +2,10 @@ using Robust.Shared; using Robust.Shared.ContentPack; using Robust.Shared.Replays; +using Robust.Shared.Serialization.Manager; +using Robust.Shared.Serialization.Markdown; +using Robust.Shared.Serialization.Markdown.Mapping; +using Robust.Shared.Serialization.Markdown.Value; using Robust.Shared.Utility; namespace Content.Server.GameTicking; @@ -10,12 +14,15 @@ public sealed partial class GameTicker { [Dependency] private readonly IReplayRecordingManager _replays = default!; [Dependency] private readonly IResourceManager _resourceManager = default!; + [Dependency] private readonly ISerializationManager _serialman = default!; + private ISawmill _sawmillReplays = default!; private void InitializeReplays() { _replays.RecordingFinished += ReplaysOnRecordingFinished; + _replays.RecordingStopped += ReplaysOnRecordingStopped; } /// @@ -108,6 +115,20 @@ private void ReplaysOnRecordingFinished(ReplayRecordingFinished data) data.Directory.Rename(data.Path, state.MoveToPath.Value); } + private void ReplaysOnRecordingStopped(MappingDataNode metadata) + { + // Write round info like map and round end summery into the replay_final.yml file. Useful for external parsers. + + metadata["map"] = new ValueDataNode(_gameMapManager.GetSelectedMap()?.MapName); + metadata["gamemode"] = new ValueDataNode(CurrentPreset != null ? Loc.GetString(CurrentPreset.ModeTitle) : string.Empty); + metadata["roundEndPlayers"] = _serialman.WriteValue(_replayRoundPlayerInfo); + metadata["roundEndText"] = new ValueDataNode(_replayRoundText); + metadata["server_id"] = new ValueDataNode(_configurationManager.GetCVar(CCVars.ServerId)); + // These should be set to null to prepare them for the next round. + _replayRoundPlayerInfo = null; + _replayRoundText = null; + } + private ResPath GetAutoReplayPath() { var cfgValue = _cfg.GetCVar(CCVars.ReplayAutoRecordName); diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index 6f0463aaf8f..ffe26aeb346 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -46,6 +46,10 @@ public sealed partial class GameTicker [ViewVariables] private GameRunLevel _runLevel; + private RoundEndMessageEvent.RoundEndPlayerInfo[]? _replayRoundPlayerInfo; + + private string? _replayRoundText; + [ViewVariables] public GameRunLevel RunLevel { @@ -372,11 +376,14 @@ public void ShowRoundEndScoreboard(string text = "") PlayerOOCName = contentPlayerData?.Name ?? "(IMPOSSIBLE: REGISTERED MIND WITH NO OWNER)", // Character name takes precedence over current entity name PlayerICName = playerIcName, + PlayerGuid = userId, PlayerNetEntity = GetNetEntity(entity), Role = antag ? roles.First(role => role.Antagonist).Name : roles.FirstOrDefault().Name ?? Loc.GetString("game-ticker-unknown-role"), Antag = antag, + JobPrototypes = roles.Where(role => !role.Antagonist).Select(role => role.Prototype).ToArray(), + AntagPrototypes = roles.Where(role => role.Antagonist).Select(role => role.Prototype).ToArray(), Observer = observer, Connected = connected }; @@ -389,6 +396,9 @@ public void ShowRoundEndScoreboard(string text = "") RaiseNetworkEvent(new RoundEndMessageEvent(gamemodeTitle, roundEndText, roundDuration, RoundId, listOfPlayerInfoFinal.Length, listOfPlayerInfoFinal, LobbySong, sound)); + + _replayRoundPlayerInfo = listOfPlayerInfoFinal; + _replayRoundText = roundEndText; } private async void SendRoundEndDiscordMessage() diff --git a/Content.Shared/GameTicking/SharedGameTicker.cs b/Content.Shared/GameTicking/SharedGameTicker.cs index 7778588f97c..2677d499c2f 100644 --- a/Content.Shared/GameTicking/SharedGameTicker.cs +++ b/Content.Shared/GameTicking/SharedGameTicker.cs @@ -1,4 +1,5 @@ using Content.Shared.Roles; +using Robust.Shared.Network; using Robust.Shared.Replays; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Markdown.Mapping; @@ -144,18 +145,37 @@ public TickerJobsAvailableEvent(Dictionary stationNames, Dict } } - [Serializable, NetSerializable] - public sealed class RoundEndMessageEvent : EntityEventArgs + [Serializable, NetSerializable, DataDefinition] + public sealed partial class RoundEndMessageEvent : EntityEventArgs { - [Serializable, NetSerializable] - public struct RoundEndPlayerInfo + [Serializable, NetSerializable, DataDefinition] + public partial struct RoundEndPlayerInfo { + [DataField] public string PlayerOOCName; + + [DataField] public string? PlayerICName; + + [DataField, NonSerialized] + public NetUserId? PlayerGuid; + public string Role; + + [DataField, NonSerialized] + public string[] JobPrototypes; + + [DataField, NonSerialized] + public string[] AntagPrototypes; + public NetEntity? PlayerNetEntity; + + [DataField] public bool Antag; + + [DataField] public bool Observer; + public bool Connected; } diff --git a/Content.Shared/Roles/MindGetAllRolesEvent.cs b/Content.Shared/Roles/MindGetAllRolesEvent.cs index 9313d94edfd..69878739084 100644 --- a/Content.Shared/Roles/MindGetAllRolesEvent.cs +++ b/Content.Shared/Roles/MindGetAllRolesEvent.cs @@ -16,4 +16,5 @@ namespace Content.Shared.Roles; /// Name of the role. /// Whether or not this role makes this player an antagonist. /// The id associated with the role. -public readonly record struct RoleInfo(Component Component, string Name, bool Antagonist, string? PlayTimeTrackerId); +/// The prototype ID of the role +public readonly record struct RoleInfo(Component Component, string Name, bool Antagonist, string? PlayTimeTrackerId, string Prototype); diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs index 05d6ab9f37f..24db1d56774 100644 --- a/Content.Shared/Roles/SharedRoleSystem.cs +++ b/Content.Shared/Roles/SharedRoleSystem.cs @@ -27,16 +27,18 @@ public override void Initialize() private void OnJobGetAllRoles(EntityUid uid, JobComponent component, ref MindGetAllRolesEvent args) { var name = "game-ticker-unknown-role"; + var prototype = ""; string? playTimeTracker = null; if (component.Prototype != null && _prototypes.TryIndex(component.Prototype, out JobPrototype? job)) { name = job.Name; + prototype = job.ID; playTimeTracker = job.PlayTimeTracker; } name = Loc.GetString(name); - args.Roles.Add(new RoleInfo(component, name, false, playTimeTracker)); + args.Roles.Add(new RoleInfo(component, name, false, playTimeTracker, prototype)); } protected void SubscribeAntagEvents() where T : AntagonistRoleComponent @@ -44,13 +46,15 @@ protected void SubscribeAntagEvents() where T : AntagonistRoleComponent SubscribeLocalEvent((EntityUid _, T component, ref MindGetAllRolesEvent args) => { var name = "game-ticker-unknown-role"; + var prototype = ""; if (component.PrototypeId != null && _prototypes.TryIndex(component.PrototypeId, out AntagPrototype? antag)) { name = antag.Name; + prototype = antag.ID; } name = Loc.GetString(name); - args.Roles.Add(new RoleInfo(component, name, true, null)); + args.Roles.Add(new RoleInfo(component, name, true, null, prototype)); }); SubscribeLocalEvent((EntityUid _, T _, ref MindIsAntagonistEvent args) => args.IsAntagonist = true); From dbf2c64cfd5a47088f5b20e850862a202795d5c8 Mon Sep 17 00:00:00 2001 From: Geekyhobo <66805063+Geekyhobo@users.noreply.github.com> Date: Sat, 17 Feb 2024 15:32:21 -0500 Subject: [PATCH 06/21] Adds a massban flag to the admin flags (#25327) Adds a massban flag to the admin flags used on ss14 to ban large amounts of players rom a .tsv file Co-authored-by: Geekyhobo <66805063+Ahlytlex@users.noreply.github.com> --- Content.Shared/Administration/AdminFlags.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Content.Shared/Administration/AdminFlags.cs b/Content.Shared/Administration/AdminFlags.cs index 05b7a45a464..f7d7efb1dbd 100644 --- a/Content.Shared/Administration/AdminFlags.cs +++ b/Content.Shared/Administration/AdminFlags.cs @@ -89,6 +89,11 @@ public enum AdminFlags : uint /// EditNotes = 1 << 14, + /// + /// Lets you Massban, on SS14.Admin + /// + MassBan = 1 << 15, + /// /// Dangerous host permissions like scsi. /// From 3beb01b5b05785e50434cfaf6b2d9c6821a68351 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 17 Feb 2024 20:33:27 +0000 Subject: [PATCH 07/21] Automatic changelog update --- Resources/Changelog/Changelog.yml | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e700e7f24a3..c416884aa9f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,20 +1,4 @@ Entries: -- author: TheShuEd - changes: - - message: The thief will temporarily not steal structures for the time being, as - this task seems too difficult. - type: Tweak - - message: Added Emag into thief's syndie kit - type: Add - - message: Added 3 smoke grenades into thief's smuggler kit - type: Add - - message: Replaced radio jammer to cyber pen into thief's communicator kit - type: Tweak - - message: Replaced omnizine bottle to omega soap into thief's chemistry kit - type: Tweak - id: 5457 - time: '2023-12-27T20:42:16.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/22976 - author: Alekshhh changes: - message: Changed brown fedora and inspector's coat palette and minor adjustments @@ -3877,3 +3861,10 @@ id: 5956 time: '2024-02-17T16:38:21.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25344 +- author: Geekyhobo + changes: + - message: Massban Flag has been added to admin ranks + type: Add + id: 5957 + time: '2024-02-17T20:32:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25327 From 71713fdebf9d27da7d02ea2d31ae0c92b2d9eaa0 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 17 Feb 2024 21:46:38 +0100 Subject: [PATCH 08/21] Fix missing line in nuke exploding sprite (#25351) I could've sworn I corrected this before committing but guess not ??? --- .../Devices/nuke.rsi/nuclearbomb_exploding.png | Bin 366 -> 372 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Objects/Devices/nuke.rsi/nuclearbomb_exploding.png b/Resources/Textures/Objects/Devices/nuke.rsi/nuclearbomb_exploding.png index c5861c43bcbb07bb152b4d475afe9b9cb180b53b..d7e07d888029139670ca053aedad9f334da493ad 100644 GIT binary patch delta 332 zcmV-S0ki(@0`vlqF@G*eL_t(&f$f-0Zp0uAMn9@K82j8LJx_8I_T0=}FsPGa!jD`z z5`NKa0@yEu;sAiLI*z?deh08IEdef`k^--4au-Vh@&Ulf_HV<=Uj^=x-z9DJPh$ee zZ#9t=G(BM}NNDzJ$Job{=fM&b5>kOjB~%4c-u-K896$t+fPca^B_M{2TUiHs#?=bg z1iJsg69g8Ae6T4`F$ZP(UUw6mY|T33Op*IDvwg6}dB{>5 zRrlMne;JUccz|Mi%f)TnkAEZl_CMB=UxTdg3q^^M Date: Sat, 17 Feb 2024 12:49:16 -0800 Subject: [PATCH 09/21] Added Evidence Markers for the Detective! (#25255) * added evidence markers * box tweak * fixed a spelling mistake * new sprites, tweaked yml too --- .../Catalog/Fills/Lockers/security.yml | 1 + .../Specific/Security/evidence-marker.yml | 110 ++++++++++++++++++ .../Detective/evidence_marker.rsi/eight.png | Bin 0 -> 6539 bytes .../Detective/evidence_marker.rsi/five.png | Bin 0 -> 6549 bytes .../Detective/evidence_marker.rsi/four.png | Bin 0 -> 6537 bytes .../evidence_marker.rsi/inhand-left.png | Bin 0 -> 7379 bytes .../evidence_marker.rsi/inhand-right.png | Bin 0 -> 7395 bytes .../Detective/evidence_marker.rsi/meta.json | 46 ++++++++ .../Detective/evidence_marker.rsi/nine.png | Bin 0 -> 6549 bytes .../Detective/evidence_marker.rsi/one.png | Bin 0 -> 6494 bytes .../Detective/evidence_marker.rsi/seven.png | Bin 0 -> 6499 bytes .../Detective/evidence_marker.rsi/six.png | Bin 0 -> 6536 bytes .../Detective/evidence_marker.rsi/three.png | Bin 0 -> 6555 bytes .../Detective/evidence_marker.rsi/two.png | Bin 0 -> 6554 bytes .../Storage/boxes.rsi/evidence_markers.png | Bin 0 -> 160 bytes .../Objects/Storage/boxes.rsi/meta.json | 5 +- 16 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/Entities/Objects/Specific/Security/evidence-marker.yml create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/eight.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/five.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/four.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/nine.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/one.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/seven.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/six.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/three.png create mode 100644 Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/two.png create mode 100644 Resources/Textures/Objects/Storage/boxes.rsi/evidence_markers.png diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 5e7d7e1efc0..623371ad09b 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -126,6 +126,7 @@ - id: DrinkDetFlask - id: ClothingHandsGlovesForensic - id: HoloprojectorSecurity + - id: BoxEvidenceMarkers - type: entity id: ClosetBombFilled diff --git a/Resources/Prototypes/Entities/Objects/Specific/Security/evidence-marker.yml b/Resources/Prototypes/Entities/Objects/Specific/Security/evidence-marker.yml new file mode 100644 index 00000000000..35b99573d09 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Specific/Security/evidence-marker.yml @@ -0,0 +1,110 @@ +- type: entity + abstract: true + parent: BaseItem + id: EvidenceMarker + name: evidence marker + description: A numbered yellow marker, useful for labeling evidence on a crime scene. + components: + - type: Sprite + sprite: Objects/Specific/Detective/evidence_marker.rsi + - type: Item + sprite: Objects/Specific/Detective/evidence_marker.rsi + size: Tiny + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerOne + name: evidence marker + components: + - type: Sprite + state: one + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerTwo + name: evidence marker + components: + - type: Sprite + state: two + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerThree + name: evidence marker + components: + - type: Sprite + state: three + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerFour + name: evidence marker + components: + - type: Sprite + state: four + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerFive + name: evidence marker + components: + - type: Sprite + state: five + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerSix + name: evidence marker + components: + - type: Sprite + state: six + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerSeven + name: evidence marker + components: + - type: Sprite + state: seven + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerEight + name: evidence marker + components: + - type: Sprite + state: eight + +- type: entity + parent: EvidenceMarker + id: EvidenceMarkerNine + name: evidence marker + components: + - type: Sprite + state: nine + +- type: entity + name: evidence marker box + parent: BoxCardboard + id: BoxEvidenceMarkers + description: A pack of numbered yellow markers, useful for labeling evidence on a crime scene. + components: + - type: Item + shape: + - 0,0,1,1 + - type: StorageFill + contents: + - id: EvidenceMarkerOne + - id: EvidenceMarkerTwo + - id: EvidenceMarkerThree + - id: EvidenceMarkerFour + - id: EvidenceMarkerFive + - id: EvidenceMarkerSix + - id: EvidenceMarkerSeven + - id: EvidenceMarkerEight + - id: EvidenceMarkerNine + - type: Sprite + layers: + - state: box_security + - state: evidence_markers + \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/eight.png b/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/eight.png new file mode 100644 index 0000000000000000000000000000000000000000..71c38d8d78aeb3e0aae9b18a6e7d9f388b1e1b90 GIT binary patch literal 6539 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/four.png b/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/four.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d7147896b42a9685c0a70f76ac430b5e95d82b GIT binary patch literal 6537 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/meta.json b/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/meta.json new file mode 100644 index 00000000000..4beec91793c --- /dev/null +++ b/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Modified sprites made originally by tgstation @ https://github.com/tgstation/tgstation/commit/da42afcbaeaa04e5ba288ade027c011efb3ef0ab, Skarlet and Psychosyo. Modified by moomoobeef.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "one" + }, + { + "name": "two" + }, + { + "name": "three" + }, + { + "name": "four" + }, + { + "name": "five" + }, + { + "name": "six" + }, + { + "name": "seven" + }, + { + "name": "eight" + }, + { + "name": "nine" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/nine.png b/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/nine.png new file mode 100644 index 0000000000000000000000000000000000000000..a81db9fae746c0cb726809ca6357e391b8bb226f GIT binary patch literal 6549 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 a|0UC(`TDg)=H-CoAgN@2$l;msIsXOw`v=?r literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/one.png b/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/one.png new file mode 100644 index 0000000000000000000000000000000000000000..22967c91b800a151abb15cf14c159290a5a49039 GIT binary patch literal 6494 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 X^Zm@6E!K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/two.png b/Resources/Textures/Objects/Specific/Detective/evidence_marker.rsi/two.png new file mode 100644 index 0000000000000000000000000000000000000000..7309c2ff9b91996c037339709334dcde7a411f8b GIT binary patch literal 6554 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 Date: Sun, 18 Feb 2024 07:49:48 +1100 Subject: [PATCH 10/21] Add "tailed" hair (#25216) * add * yes --- .../Locale/en-US/accessories/human-hair.ftl | 3 ++- .../Mobs/Customization/Markings/human_hair.yml | 7 +++++++ .../Mobs/Customization/human_hair.rsi/meta.json | 6 +++++- .../Mobs/Customization/human_hair.rsi/tailed.png | Bin 0 -> 2164 bytes 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/tailed.png diff --git a/Resources/Locale/en-US/accessories/human-hair.ftl b/Resources/Locale/en-US/accessories/human-hair.ftl index 2d66537d368..1f10b363f8a 100644 --- a/Resources/Locale/en-US/accessories/human-hair.ftl +++ b/Resources/Locale/en-US/accessories/human-hair.ftl @@ -163,6 +163,7 @@ marking-HumanHairSpiky = Spiky 2 marking-HumanHairSpiky2 = Spiky 3 marking-HumanHairSwept = Swept Back Hair marking-HumanHairSwept2 = Swept Back Hair 2 +marking-HumanHairTailed = Tailed marking-HumanHairThinning = Thinning marking-HumanHairThinningfront = Thinning (Front) marking-HumanHairThinningrear = Thinning (Rear) @@ -175,6 +176,7 @@ marking-HumanHairTwoStrands = Two Strands marking-HumanHairUndercut = Undercut marking-HumanHairUndercutleft = Undercut Left marking-HumanHairUndercutright = Undercut Right +marking-HumanHairUneven = Uneven marking-HumanHairUnkept = Unkept marking-HumanHairUpdo = Updo marking-HumanHairVlong = Very Long Hair @@ -184,4 +186,3 @@ marking-HumanHairVeryshortovereyealternate = Very Short Over Eye marking-HumanHairVlongfringe = Very Long with Fringe marking-HumanHairVolaju = Volaju marking-HumanHairWisp = Wisp -marking-HumanHairUneven = Uneven diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml index bb9d6d2b295..92943a7af4b 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml @@ -1307,3 +1307,10 @@ sprites: - sprite: Mobs/Customization/human_hair.rsi state: uneven +- type: marking + id: HumanHairTailed + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: Mobs/Customization/human_hair.rsi + state: tailed diff --git a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json index 927d2ec6e44..c0bf805c386 100644 --- a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json @@ -4,7 +4,7 @@ "x": 32, "y": 32 }, - "copyright": "Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi ,resprited by Alekshhh, a modified by potato1234x, uneven is drawn by Ubaser, doublebun_long by Emisse", + "copyright": "Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi ,resprited by Alekshhh, a modified by potato1234x, uneven and tailed is drawn by Ubaser, doublebun_long by Emisse", "license": "CC-BY-SA-3.0", "states": [ { @@ -758,6 +758,10 @@ { "name": "uneven", "directions": 4 + }, + { + "name": "tailed", + "directions": 4 } ] } diff --git a/Resources/Textures/Mobs/Customization/human_hair.rsi/tailed.png b/Resources/Textures/Mobs/Customization/human_hair.rsi/tailed.png new file mode 100644 index 0000000000000000000000000000000000000000..f24abb81e320e65fb535f5930fd908f77c546deb GIT binary patch literal 2164 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F;KxA5N2eb5`33|fjK8LB%&n3*T*V3KUXg?B|j-uuOhbq ztjngt3dqb&ElE_U$j!+swyLmI0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~% zTnY*bHbp6ERzWUqQ0+jTtx`rwNr9EVetCJhUb(Seeo?xG?W zUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$ z>!;?V=BDPA6zd!68R}!xSCW~AaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`F zXfoK|;*u17BnA3L1_l&2TID3>rQ0f1=%%EmC6?xtDA{@Xy2l%uT3XuZLsX&ahKQmXYNL{p zmyJF=C)sg{E@QD~U|?zYba4!+V0;^8?V;@`vR67z`G= zDkQQsFk}sjcA)oBFP%%#Q5uirb+!m?2@!N<{r;3^&W1H7PoGH>o>F1j>w%_ON z{GPXIvr^Q*e6~Fr&-{ISe#pzqU%GNdMOj(--mhP~>Z_}@ySuw5KH2%oz|{1qx)A5g z`SZW0rKkTrf8PJ2jlY79N(2REEP?cMm1mzVd` zuU}eIr%t{1@ZrM!TeqqL0o&$)c??295ls2n+1cK=%ZrMVZk3jnUb=TrPgGR&TG`Vt z4G;2|M2=m*e%(7VawhxZ#yb};K0JH&?990y*`W=`E?%5yIB!v=#qWLZPhYwuwA*RD zCx1%D6O{(TzSv{y9tX$8{p(F^SbXK$wX}xL^cT;b9phNFYSpCn_Vz8uFG?54K4duj z@#K>9h{qjf*&ztvW{d)b#xHz*%-@bqM?R|6q>ebX+U+i*bNN)J?E7?%pmUa8yOP4N{*xzu- zbMRS~=gPWMR%xRmPv_2EyRypUA8y#aJG*V7j3?9cr>oXFDd?!I;8>UVJ#i2B=fs(2 zwQ9Ccq*an6`mHidoG-Y=EwSu)tH79{KKbOAb1p)!He}@Ho<07a_kq#PM9X7~p3L=- z6S(&M-#kPUW8c0a6{Ir~++*xi&G)_FWgy0&=nVzq;^^77IV*A5yKTs%Ir!QiyL zCmYY&b?eN&wS6s8RD8cPFiAf?;0e<|yA$ryHnTrr7JGhc<3>Y$iT{PC{+Vui!1`0` zceX74(-uzu)8N%kb0k^=noUyh7CN=CtgroA$-i- z%xukkQLEMi&z>!-udCzZ30}a!C2BNRsqSM3U;gq9TefUDapA&*t+9T~4_nMT#%UPK zdxoE%Ke{>ascVKM=4> zrs0Rz8Gm7h8mWG>QkUDyECd;*KiBO)6f4Ac{YYs0#)ZKsCOntDnm{r-UW|V=PtA literal 0 HcmV?d00001 From f72a1a0edb5f28bc9c83e5fe484b77cce0b7d8a0 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Sun, 18 Feb 2024 07:50:39 +1100 Subject: [PATCH 11/21] Clean up scars.yml and add a new chest scar (#25215) add --- Resources/Locale/en-US/markings/scars.ftl | 3 ++ .../Mobs/Customization/Markings/scars.yml | 26 ++++++++++-------- .../Mobs/Customization/scars.rsi/meta.json | 4 +++ .../Customization/scars.rsi/scar_chest.png | Bin 0 -> 1410 bytes 4 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 Resources/Textures/Mobs/Customization/scars.rsi/scar_chest.png diff --git a/Resources/Locale/en-US/markings/scars.ftl b/Resources/Locale/en-US/markings/scars.ftl index 57047731d1a..fae2ffe8873 100644 --- a/Resources/Locale/en-US/markings/scars.ftl +++ b/Resources/Locale/en-US/markings/scars.ftl @@ -9,3 +9,6 @@ marking-ScarTopSurgeryShort = Top Surgery Scar (Short) marking-ScarTopSurgeryLong-scar_top_surgery_long = Top Surgery Scar marking-ScarTopSurgeryLong = Top Surgery Scar (Long) + +marking-ScarChest-scar_chest = Chest Scar +marking-ScarChest = Chest Scar diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml index 097675efa76..37d6ebe279f 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml @@ -3,11 +3,7 @@ bodyPart: Head markingCategory: Head speciesRestriction: [Human, Dwarf] - coloring: - default: - type: - !type:TattooColoring - fallbackColor: "#FFFFFF" + followSkinColor: true sprites: - sprite: Mobs/Customization/scars.rsi state: scar_eye_right @@ -17,11 +13,7 @@ bodyPart: Head markingCategory: Head speciesRestriction: [Human, Dwarf] - coloring: - default: - type: - !type:TattooColoring - fallbackColor: "#FFFFFF" + followSkinColor: true sprites: - sprite: Mobs/Customization/scars.rsi state: scar_eye_left @@ -30,7 +22,7 @@ id: ScarTopSurgeryShort bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human] + speciesRestriction: [Human, Dwarf] sexRestriction: [Male] followSkinColor: true sprites: @@ -41,9 +33,19 @@ id: ScarTopSurgeryLong bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human] + speciesRestriction: [Human, Dwarf] sexRestriction: [Male] followSkinColor: true sprites: - sprite: Mobs/Customization/scars.rsi state: scar_top_surgery_long + +- type: marking + id: ScarChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Human, Dwarf] + followSkinColor: true + sprites: + - sprite: Mobs/Customization/scars.rsi + state: scar_chest diff --git a/Resources/Textures/Mobs/Customization/scars.rsi/meta.json b/Resources/Textures/Mobs/Customization/scars.rsi/meta.json index c3bfd498d69..0a323f7f65d 100644 --- a/Resources/Textures/Mobs/Customization/scars.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/scars.rsi/meta.json @@ -22,6 +22,10 @@ { "name": "scar_top_surgery_long", "directions": 4 + }, + { + "name": "scar_chest", + "directions": 4 } ] } diff --git a/Resources/Textures/Mobs/Customization/scars.rsi/scar_chest.png b/Resources/Textures/Mobs/Customization/scars.rsi/scar_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..9a1cc56c5eaaefd41a959e81287b35d6c1f8ebe4 GIT binary patch literal 1410 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F;KxA5N2eb5`33|fjK8LB%&n3*T*V3KUXg?B|j-uuOhbq ztjngt3dqb&ElE_U$j!+swyLmI0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~% zTnY*bHbp6ERzWUqQ0+jTtx`rwNr9EVetCJhUb(Seeo?xG?W zUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$ z>!;?V=BDPA6zd!68R}!xSCW~AaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`F zXfoK|;*u17BnA3L1_l&2TID3>rQ0f1=%%EmC6?xtDA{@Xy2l%uT3XuZLsX&ahKQmXYNL{p zmyJF=C)sg{E@QCayJOdMOgS5JQx87CEVT&?u8^1_I&x6i*@e*BcgW6vVsz`zJ18uPfm zBrW-CA{RaPdEwSBqvhwG#|IzT`H8t@OMIGf_1*WWkIm z`d61Z947s@kh^=Q{qDJ~$>#6els_BH|E|(@ITaB$H`z zs&%3NpL{pT-1%zJB=)aNTLdq+UM~+=w^r}ST8%Y=HEeIT-!@vbr(4ti--a!(`nlLH zFt5Ln^UD3VzHPL9jgk|aE#urfUprp-v@$SpC^TRr9K4xM+NJFXu?w1g#b|EG>LR_% ze{cD4Z~1p%4)@kNx%AuXyIZe*`g8M~sBDv0vgqg7C)3{iS*Wq-$SFRDN&DyfoZ9TI zeZ^O06LUrU`qMS}Y|R?%ab*nG>gvUo2>6!Szuq|4^6ln(s$%`fme+?p;I_Em!PqUO R@eNe|dAj Date: Sat, 17 Feb 2024 20:51:45 +0000 Subject: [PATCH 12/21] Automatic changelog update --- Resources/Changelog/Changelog.yml | 43 ++++++++++++++++--------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c416884aa9f..e6c389d8cd0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,25 +1,4 @@ Entries: -- author: Alekshhh - changes: - - message: Changed brown fedora and inspector's coat palette and minor adjustments - type: Tweak - id: 5458 - time: '2023-12-27T22:53:10.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23065 -- author: Velcroboy - changes: - - message: Added melee dmg to salami logs! - type: Add - id: 5459 - time: '2023-12-28T02:59:14.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23041 -- author: Emisse - changes: - - message: Ion Storm is silent now - type: Tweak - id: 5460 - time: '2023-12-28T03:03:00.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23045 - author: Alekshhh changes: - message: Changed wall lockers visually to match regular lockers and sit on walls @@ -3868,3 +3847,25 @@ id: 5957 time: '2024-02-17T20:32:21.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25327 +- author: Moomoobeef + changes: + - message: Detectives are now supplied with a box of evidence markers, useful for + marking evidence at a crime scene. + type: Add + id: 5958 + time: '2024-02-17T20:49:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25255 +- author: Ubaser + changes: + - message: New "tailed" hair. + type: Add + id: 5959 + time: '2024-02-17T20:49:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25216 +- author: Ubaser + changes: + - message: A new chest scar marking is now available to humans and dwarves. + type: Add + id: 5960 + time: '2024-02-17T20:50:40.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25215 From 1ce21553152199e3d97a8d02c11922fb8db5fd52 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 17 Feb 2024 21:52:11 +0100 Subject: [PATCH 13/21] Add new "OptionsVisualizer" (#25128) This is a visualizer somewhat similar to the Generic. It allows configuring appearance info based on specific CVars the user has set. This allows YAML to easily configure alternatives for accessibility CVars like reduced motion. --- .../Options/OptionsVisualizerComponent.cs | 84 +++++++++++++++ .../Options/OptionsVisualizerSystem.cs | 97 ++++++++++++++++++ Content.Server/Entry/IgnoredComponents.cs | 1 + Content.Shared/CCVar/CCVars.cs | 10 ++ .../Entities/Debugging/options_visualizer.yml | 24 +++++ .../optionsvisualizertest.rsi/both.png | Bin 0 -> 316 bytes .../optionsvisualizertest.rsi/meta.json | 1 + .../optionsvisualizertest.rsi/motion.png | Bin 0 -> 336 bytes .../optionsvisualizertest.rsi/none.png | Bin 0 -> 251 bytes .../optionsvisualizertest.rsi/test.png | Bin 0 -> 317 bytes 10 files changed, 217 insertions(+) create mode 100644 Content.Client/Options/OptionsVisualizerComponent.cs create mode 100644 Content.Client/Options/OptionsVisualizerSystem.cs create mode 100644 Resources/Prototypes/Entities/Debugging/options_visualizer.yml create mode 100644 Resources/Textures/Effects/optionsvisualizertest.rsi/both.png create mode 100644 Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json create mode 100644 Resources/Textures/Effects/optionsvisualizertest.rsi/motion.png create mode 100644 Resources/Textures/Effects/optionsvisualizertest.rsi/none.png create mode 100644 Resources/Textures/Effects/optionsvisualizertest.rsi/test.png diff --git a/Content.Client/Options/OptionsVisualizerComponent.cs b/Content.Client/Options/OptionsVisualizerComponent.cs new file mode 100644 index 00000000000..87999f381c1 --- /dev/null +++ b/Content.Client/Options/OptionsVisualizerComponent.cs @@ -0,0 +1,84 @@ +using Content.Shared.CCVar; + +namespace Content.Client.Options; + +/// +/// Allows specifying sprite alternatives depending on the client's accessibility options. +/// +/// +/// A list of layer mappings is given that the component applies to, +/// and it will pick one entry to apply based on the settings configuration. Example: +/// +/// +/// - type: Sprite +/// sprite: Effects/optionsvisualizertest.rsi +/// layers: +/// - state: none +/// map: [ "layer" ] +/// - type: OptionsVisualizer +/// visuals: +/// layer: +/// - options: Default +/// data: { state: none } +/// - options: Test +/// data: { state: test } +/// - options: ReducedMotion +/// data: { state: motion } +/// - options: [Test, ReducedMotion] +/// data: { state: both } +/// +/// +/// +/// +[RegisterComponent] +public sealed partial class OptionsVisualizerComponent : Component +{ + /// + /// A mapping storing data about which sprite layer keys should be controlled. + /// + /// + /// Each layer stores an array of possible options. The last entry with a + /// matching the active user preferences will be picked. + /// This allows choosing a priority if multiple entries are matched. + /// + [DataField(required: true)] + public Dictionary Visuals = default!; + + /// + /// A single option for a layer to be selected. + /// + [DataDefinition] + public sealed partial class LayerDatum + { + /// + /// Which options must be set by the user to make this datum match. + /// + [DataField] + public OptionVisualizerOptions Options { get; set; } + + /// + /// The sprite layer data to set on the sprite when this datum matches. + /// + [DataField] + public PrototypeLayerData Data { get; set; } + } +} + +[Flags] +public enum OptionVisualizerOptions +{ + /// + /// Corresponds to no special options being set, can be used as a "default" state. + /// + Default = 0, + + /// + /// Corresponds to the CVar being set. + /// + Test = 1 << 0, + + /// + /// Corresponds to the CVar being set. + /// + ReducedMotion = 1 << 1, +} diff --git a/Content.Client/Options/OptionsVisualizerSystem.cs b/Content.Client/Options/OptionsVisualizerSystem.cs new file mode 100644 index 00000000000..2a297e3802a --- /dev/null +++ b/Content.Client/Options/OptionsVisualizerSystem.cs @@ -0,0 +1,97 @@ +using Content.Shared.CCVar; +using Robust.Client.GameObjects; +using Robust.Shared.Configuration; +using Robust.Shared.Reflection; + +namespace Content.Client.Options; + +/// +/// Implements . +/// +public sealed class OptionsVisualizerSystem : EntitySystem +{ + private static readonly (OptionVisualizerOptions, CVarDef)[] OptionVars = + { + (OptionVisualizerOptions.Test, CCVars.DebugOptionVisualizerTest), + (OptionVisualizerOptions.ReducedMotion, CCVars.ReducedMotion), + }; + + [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly IReflectionManager _reflection = default!; + + private OptionVisualizerOptions _currentOptions; + + public override void Initialize() + { + base.Initialize(); + + foreach (var (_, cvar) in OptionVars) + { + Subs.CVar(_cfg, cvar, _ => CVarChanged()); + } + + UpdateActiveOptions(); + + SubscribeLocalEvent(OnComponentStartup); + } + + private void CVarChanged() + { + UpdateActiveOptions(); + UpdateAllComponents(); + } + + private void UpdateActiveOptions() + { + _currentOptions = OptionVisualizerOptions.Default; + + foreach (var (value, cVar) in OptionVars) + { + if (_cfg.GetCVar(cVar)) + _currentOptions |= value; + } + } + + private void UpdateAllComponents() + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out _, out var component, out var sprite)) + { + UpdateComponent(component, sprite); + } + } + + private void OnComponentStartup(EntityUid uid, OptionsVisualizerComponent component, ComponentStartup args) + { + if (!TryComp(uid, out SpriteComponent? sprite)) + return; + + UpdateComponent(component, sprite); + } + + private void UpdateComponent(OptionsVisualizerComponent component, SpriteComponent sprite) + { + foreach (var (layerKeyRaw, layerData) in component.Visuals) + { + object layerKey = _reflection.TryParseEnumReference(layerKeyRaw, out var @enum) + ? @enum + : layerKeyRaw; + + OptionsVisualizerComponent.LayerDatum? matchedDatum = null; + foreach (var datum in layerData) + { + if ((datum.Options & _currentOptions) != datum.Options) + continue; + + matchedDatum = datum; + } + + if (matchedDatum == null) + continue; + + var layerIndex = sprite.LayerMapReserveBlank(layerKey); + sprite.LayerSetData(layerIndex, matchedDatum.Data); + } + } +} + diff --git a/Content.Server/Entry/IgnoredComponents.cs b/Content.Server/Entry/IgnoredComponents.cs index c1b646ec4f9..fe073da7a49 100644 --- a/Content.Server/Entry/IgnoredComponents.cs +++ b/Content.Server/Entry/IgnoredComponents.cs @@ -19,6 +19,7 @@ public static class IgnoredComponents "InventorySlots", "LightFade", "HolidayRsiSwap", + "OptionsVisualizer", }; } } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index fb6b25b57f5..e8f5e44a616 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2011,5 +2011,15 @@ public static readonly CVarDef public static readonly CVarDef GatewayGeneratorEnabled = CVarDef.Create("gateway.generator_enabled", true); + + /* + * DEBUG + */ + + /// + /// A simple toggle to test OptionsVisualizerComponent. + /// + public static readonly CVarDef DebugOptionVisualizerTest = + CVarDef.Create("debug.option_visualizer_test", false, CVar.CLIENTONLY); } } diff --git a/Resources/Prototypes/Entities/Debugging/options_visualizer.yml b/Resources/Prototypes/Entities/Debugging/options_visualizer.yml new file mode 100644 index 00000000000..229ffa00ccb --- /dev/null +++ b/Resources/Prototypes/Entities/Debugging/options_visualizer.yml @@ -0,0 +1,24 @@ +- type: entity + id: OptionsVisualizerTest + suffix: DEBUG + components: + - type: Tag + tags: + - Debug + - type: Sprite + sprite: Effects/optionsvisualizertest.rsi + layers: + - state: none + map: [ "layer" ] + - type: OptionsVisualizer + visuals: + layer: + - options: Default + data: { state: none } + - options: Test + data: { state: test } + - options: ReducedMotion + data: { state: motion } + - options: [Test, ReducedMotion] + data: { state: both } + diff --git a/Resources/Textures/Effects/optionsvisualizertest.rsi/both.png b/Resources/Textures/Effects/optionsvisualizertest.rsi/both.png new file mode 100644 index 0000000000000000000000000000000000000000..76237f5076fffb9e3de2965a2285eaa0b0b9862b GIT binary patch literal 316 zcmV-C0mJ@@P)Px#_DMuRR9J=WR_zLaFbGuX{U2HTWti!{+K6BWQCYj)P8~xL5%>`F<>Xrc0Kj2i zqH;jQG(H122b44-N5tZH5ebEM33!VUSMV2YIBM^Z0L`_v6A^)k9x=T{5X1-#~eBCu>ooaRMh=N3PktqDL7iY(5-2WTS6$QNmmaqhM$)Yx{T7XVD%bOQcnl$Q;W&yL%BH&g7E3|0JGVY=S*2>4gq|I7ZZBgukZ0C!F zj-n_aBJMdeycUolJ1;Cf57hd2 O0000F@hKX literal 0 HcmV?d00001 diff --git a/Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json b/Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json new file mode 100644 index 00000000000..e7f749513dc --- /dev/null +++ b/Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-4.0","copyright":"Discord pjb","states":[{"name":"none"},{"name":"both"},{"name":"motion"},{"name":"test"}]} diff --git a/Resources/Textures/Effects/optionsvisualizertest.rsi/motion.png b/Resources/Textures/Effects/optionsvisualizertest.rsi/motion.png new file mode 100644 index 0000000000000000000000000000000000000000..edbbd52636503deb3774b71419aa34dd44acc367 GIT binary patch literal 336 zcmV-W0k8gvP)Px$3Q0skR9J=WmeCHwAP7Z;^#4DZyC*tI0jo3XlJzEgP*yz1)s_ID-6+0u@du!_ z);2qc>_9~6{0bd*K$AwviKvVN2tkJcKGn>w(9a#iXe(#8cM9O!3IUjTuNc6=d^)eD zw0*a8K9*_A0?gb*WKY8UX0;#+C?b2Sv;g0_2qe_oiUE5@ z&0;42PpXyo`kBRhV5tYJ`E;xcWw8;k5+E~^{crAxSH5rSfff$!Kf-dyWqQI4~(%#`8UzJNP_0`J)~9}-SXKFiI((DzL_ihWXMoqLJ! zhed&flP(tPx#_en%SR9J=WmO&20AP7aJ>HUxFpA`)vsOXrciGS6>4m?1t1OVwpU2g_I04b$( z%OBQuAR^cP4;2+)r6CZZxJ0Q0{+RRHXqoyx3qE4V5WDyq;J$}IU=LwcEe zb`wBnSiOjQ|ua*ui3*D^kr0a0acfq1BGaG&H9`kDxw$ zWYAeP0W8OnJHs-7C-1(n^*+%1B1U`9GLK@GcIaik0`ZLt$pJV32Vkdu2Jp)efnPl^ P00000NkvXXu0mjfSu%kU literal 0 HcmV?d00001 From d4c68a9ab9df3dda9ad3b2b355074bacffbc223d Mon Sep 17 00:00:00 2001 From: Peptide90 <78795277+Peptide90@users.noreply.github.com> Date: Sat, 17 Feb 2024 20:55:01 +0000 Subject: [PATCH 14/21] Suffix spelling mistake on seed vendor (#25352) spelling error --- .../Entities/Structures/Machines/vending_machines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 0bfb173c801..d2b2961728a 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -888,7 +888,7 @@ - type: entity parent: VendingMachineSeedsUnlocked id: VendingMachineSeeds - suffix: Hyroponics + suffix: Hydroponics components: - type: AccessReader access: [["Hydroponics"]] From e4930078aba424288c36e258390c8b24892d904c Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 17 Feb 2024 22:26:27 +0100 Subject: [PATCH 15/21] Update engine to v210.1.1 (#25354) Important fixes from the UI PR --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index f8cb1729a3e..ef0bc1a2e48 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit f8cb1729a3e0f790fe1b72f060fed0b27b1eefc2 +Subproject commit ef0bc1a2e4878eedc24dd6fedc0631be56aca072 From e8eddf57f64daca19054f0e3dfbe73dd6af8c342 Mon Sep 17 00:00:00 2001 From: ArchPigeon Date: Sat, 17 Feb 2024 16:33:10 -0500 Subject: [PATCH 16/21] Stop wagging tails on crit (#25323) * Add Flammable Touch Reaction for liquid tritium * Stop tail wagging action on crit * Revert "Add Flammable Touch Reaction for liquid tritium" This reverts commit 41be57b058a0cdee0cecfc51eb1c4a25631e62f3. --- Content.Server/Wagging/WaggingSystem.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Content.Server/Wagging/WaggingSystem.cs b/Content.Server/Wagging/WaggingSystem.cs index 7e9ffbbc8f4..7ccc19e20c6 100644 --- a/Content.Server/Wagging/WaggingSystem.cs +++ b/Content.Server/Wagging/WaggingSystem.cs @@ -48,9 +48,6 @@ private void OnWaggingToggle(EntityUid uid, WaggingComponent component, ref Togg private void OnMobStateChanged(EntityUid uid, WaggingComponent component, MobStateChangedEvent args) { - if (args.NewMobState != MobState.Dead) - return; - if (component.Wagging) TryToggleWagging(uid, wagging: component); } From fa09f7aaa1f21fe9e8f3a9dfd66dab5f189bdc6c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 17 Feb 2024 21:34:15 +0000 Subject: [PATCH 17/21] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e6c389d8cd0..831cdda18f1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Alekshhh - changes: - - message: Changed wall lockers visually to match regular lockers and sit on walls - better - type: Tweak - id: 5461 - time: '2023-12-28T03:05:05.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23060 - author: EmoGarbage404 changes: - message: Added the clerical error station event, which causes a small amount of @@ -3869,3 +3861,10 @@ id: 5960 time: '2024-02-17T20:50:40.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25215 +- author: ArchPigeon + changes: + - message: Tails now stop wagging on crit + type: Fix + id: 5961 + time: '2024-02-17T21:33:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25323 From aadf7492f44d9cdf654898e64dc4f73c13927815 Mon Sep 17 00:00:00 2001 From: Killerqu00 <47712032+Killerqu00@users.noreply.github.com> Date: Sat, 17 Feb 2024 23:34:38 +0100 Subject: [PATCH 18/21] EVA suit helmets now have (un)equip sounds (#25349) add (un)equip sounds to EVA helms --- .../Prototypes/Entities/Clothing/Head/base_clothinghead.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml b/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml index 813888fb6b4..e34208e9ca1 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml @@ -128,6 +128,12 @@ - type: TemperatureProtection coefficient: 0.2 - type: IngestionBlocker + - type: Clothing + #Copies ClothingHeadHardsuitBase behavior + equipSound: /Audio/Mecha/mechmove03.ogg + unequipSound: /Audio/Mecha/mechmove03.ogg + quickEquip: false + slots: [ HEAD ] - type: Tag tags: - HidesHair From a361e6aee55b083fd22b600d408b7123c54ea2b5 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 17 Feb 2024 22:35:44 +0000 Subject: [PATCH 19/21] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 831cdda18f1..67225918922 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - message: Added the clerical error station event, which causes a small amount of - station records to be destroyed. - type: Add - id: 5462 - time: '2023-12-28T03:09:05.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23091 - author: EmoGarbage404 changes: - message: Added the GORILLA gauntlet. When powered with an anomaly core, a single @@ -3868,3 +3860,10 @@ id: 5961 time: '2024-02-17T21:33:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25323 +- author: Killerqu00 + changes: + - message: EVA and paramedic suits now play sound when putting helmet on. + type: Fix + id: 5962 + time: '2024-02-17T22:34:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25349 From 7a96cfa126bca960b374198e5d83033b35faf665 Mon Sep 17 00:00:00 2001 From: Morb0 <14136326+Morb0@users.noreply.github.com> Date: Sun, 18 Feb 2024 02:38:52 +0300 Subject: [PATCH 20/21] Update locale --- .../ss14-ru/prototypes/actions/diona.ftl | 4 ++++ .../prototypes/entities/clothing/eyes/hud.ftl | 2 +- .../entities/clothing/head/hats.ftl | 6 ++++- .../entities/debugging/options_visualizer.ftl | 3 +++ .../prototypes/entities/effects/portal.ftl | 2 ++ .../markers/spawners/random/shadowkudzu.ftl | 2 ++ .../prototypes/entities/mobs/npcs/animals.ftl | 2 ++ .../prototypes/entities/mobs/npcs/shadows.ftl | 4 ++++ .../prototypes/entities/mobs/player/diona.ftl | 2 ++ .../entities/objects/base_shadow.ftl | 2 ++ .../objects/devices/electronics/signaller.ftl | 4 +++- .../entities/objects/materials/materials.ftl | 2 +- .../entities/objects/misc/kudzu.ftl | 6 +++++ .../entities/objects/specific/mech/mechs.ftl | 2 +- .../objects/specific/medical/healing.ftl | 4 ++++ .../specific/security/evidence-marker.ftl | 22 +++++++++++++++++++ .../structures/lighting/base_lighting.ftl | 18 +++++++++++++++ .../structures/machines/vending_machines.ftl | 2 +- .../structures/specific/anomaly/anomalies.ftl | 3 +++ .../structures/specific/anomaly/cores.ftl | 7 ++++++ .../Locale/ru-RU/accessories/human-hair.ftl | 1 + .../Locale/ru-RU/actions/actions/diona.ftl | 2 ++ .../components/plant-holder-component.ftl | 1 + .../ru-RU/chat/sanitizer-replacements.ftl | 2 ++ .../criminal-records/criminal-records.ftl | 1 + Resources/Locale/ru-RU/fax/fax.ftl | 4 ++++ .../interaction-popup-component.ftl | 3 +++ .../components/microwave-component.ftl | 2 ++ .../Locale/ru-RU/main-menu/main-menu.ftl | 1 + Resources/Locale/ru-RU/markings/scars.ftl | 2 ++ .../Locale/ru-RU/markings/slimeperson.ftl | 4 ++++ .../Locale/ru-RU/nuke/nuke-component.ftl | 2 ++ .../nutrition/components/drink-component.ftl | 2 ++ .../components/openable-component.ftl | 2 ++ .../Locale/ru-RU/reagents/meta/biological.ftl | 2 ++ Resources/Locale/ru-RU/species/namepreset.ftl | 1 + Resources/Locale/ru-RU/species/species.ftl | 1 + .../ss14-ru/prototypes/actions/diona.ftl | 4 ++++ .../ss14-ru/prototypes/body/organs/diona.ftl | 17 ++++++++++++++ .../entities/clothing/head/bandanas.ftl | 2 +- .../entities/clothing/head/hats.ftl | 4 ++++ .../entities/clothing/head/soft.ftl | 2 +- .../entities/clothing/masks/bandanas.ftl | 2 +- .../entities/debugging/options_visualizer.ftl | 3 +++ .../prototypes/entities/effects/portal.ftl | 2 ++ .../markers/spawners/random/shadowkudzu.ftl | 2 ++ .../prototypes/entities/mobs/npcs/animals.ftl | 2 ++ .../prototypes/entities/mobs/npcs/shadows.ftl | 4 ++++ .../prototypes/entities/mobs/player/diona.ftl | 2 ++ .../entities/objects/base_shadow.ftl | 2 ++ .../objects/devices/electronics/signaller.ftl | 2 ++ .../entities/objects/misc/kudzu.ftl | 6 +++++ .../objects/specific/medical/healing.ftl | 4 ++++ .../specific/security/evidence-marker.ftl | 22 +++++++++++++++++++ .../structures/lighting/base_lighting.ftl | 18 +++++++++++++++ .../structures/specific/anomaly/anomalies.ftl | 3 +++ .../structures/specific/anomaly/cores.ftl | 7 ++++++ .../Locale/ru-RU/weapons/melee/melee.ftl | 2 ++ 58 files changed, 235 insertions(+), 9 deletions(-) create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/actions/diona.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/base_shadow.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/diona.ftl create mode 100644 Resources/Locale/ru-RU/nutrition/components/openable-component.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/actions/diona.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/base_shadow.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/actions/diona.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/actions/diona.ftl new file mode 100644 index 00000000000..58dcfb8c8c2 --- /dev/null +++ b/Resources/Locale/en-US/ss14-ru/prototypes/actions/diona.ftl @@ -0,0 +1,4 @@ +ent-DionaGibAction = Gib Yourself! + .desc = Split apart into 3 nymphs. +ent-DionaReformAction = Reform + .desc = Reform back into a whole Diona. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/eyes/hud.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/eyes/hud.ftl index f4f9cb201de..7e76628369e 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/eyes/hud.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/eyes/hud.ftl @@ -1,5 +1,5 @@ ent-ClothingEyesHudDiagnostic = diagnostic hud - .desc = A heads-up display capable of analyzing the integrity and status of robotics and exosuits. + .desc = A heads-up display capable of analyzing the integrity and status of robotics and exosuits. Made out of see-borg-ium. ent-ClothingEyesHudMedical = medical hud .desc = A heads-up display that scans the humanoids in view and provides accurate data about their health status. ent-ClothingEyesHudSecurity = security hud diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/head/hats.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/head/hats.ftl index 15d1b1dccf3..3bafba6b949 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/head/hats.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/head/hats.ftl @@ -2,6 +2,8 @@ ent-ClothingHeadHatBeaverHat = beaver hat .desc = Gentlemen? ent-ClothingHeadHatBeret = beret .desc = A beret, an artists favorite headwear. +ent-ClothingHeadHatBeretFrench = French beret + .desc = A French beret, "vive la France". ent-ClothingHeadHatBeretSecurity = security beret .desc = A stylish clothing option for security officers. ent-ClothingHeadHatCasa = casa @@ -18,7 +20,7 @@ ent-ClothingHeadHatBeretWarden = warden's beret .desc = A corporate blue beret with a warden's rank emblem. For officers that are more inclined towards style than safety. ent-ClothingHeadHatBeretSeniorPhysician = physician beret .desc = Donning the colours of medical and chemistry, physicians are the pride of this department! -ent-ClothingHeadHatBeretBrigmedic = medical beret +ent-ClothingHeadHatBeretBrigmedic = brigmedical beret .desc = White beret, looks like a cream pie on the head. ent-ClothingHeadHatBeretMerc = mercenary beret .desc = Olive beret, the badge depicts a jackal on a rock. @@ -154,3 +156,5 @@ ent-ClothingHeadHatCowboyBountyHunter = bounty hunter cowboy hat .desc = { ent-ClothingHeadHatCowboyBrown.desc } ent-ClothingHeadHatStrawHat = straw hat .desc = A fancy hat for hot days! Not recommended to wear near fires. +ent-ClothingHeadHatBeretMedic = medical beret + .desc = White beret that encourages you to be clean. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl new file mode 100644 index 00000000000..bd3f150c84a --- /dev/null +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl @@ -0,0 +1,3 @@ +ent-OptionsVisualizerTest = { "" } + .suffix = DEBUG + .desc = { "" } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/effects/portal.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/effects/portal.ftl index 0c3fddeb8d2..03f5c6f8cd9 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/effects/portal.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/effects/portal.ftl @@ -6,3 +6,5 @@ ent-PortalBlue = { ent-BasePortal } .desc = { ent-BasePortal.desc } ent-PortalArtifact = { ent-BasePortal } .desc = { ent-BasePortal.desc } +ent-ShadowPortal = shadow rift + .desc = Looks unstable. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl new file mode 100644 index 00000000000..d28c0d0778e --- /dev/null +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl @@ -0,0 +1,2 @@ +ent-ShadowKudzuLootSpawner = { ent-MarkerBase } + .desc = { ent-MarkerBase.desc } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl index 21f6e18ed7e..7909e4a8b8e 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl @@ -131,3 +131,5 @@ ent-MobHamster = hamster .desc = A cute, fluffy, robust hamster. ent-MobPig = pig .desc = Oink. +ent-MobDionaNymph = diona nymph + .desc = It's like a cat, only.... branch-ier. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl new file mode 100644 index 00000000000..8164c16901e --- /dev/null +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl @@ -0,0 +1,4 @@ +ent-BaseShadowMob = { ent-BaseShadow } + .desc = { ent-BaseShadow.desc } +ent-MobCatShadow = shadow cat + .desc = A lovely piece of darkness. Hope he doesn't bring you a curse. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/diona.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/diona.ftl index 77e780d7652..4f02c7db2a8 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/diona.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/diona.ftl @@ -1,2 +1,4 @@ ent-MobDiona = Urist McPlants .desc = { ent-BaseMobDiona.desc } +ent-MobDionaReformed = Reformed Diona + .desc = { ent-MobDiona.desc } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/base_shadow.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/base_shadow.ftl new file mode 100644 index 00000000000..9a85067823d --- /dev/null +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/base_shadow.ftl @@ -0,0 +1,2 @@ +ent-BaseShadow = { "" } + .desc = { "" } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl index 4ca2a2c7688..261bbd87d16 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl @@ -1,2 +1,4 @@ ent-RemoteSignaller = remote signaller - .desc = A handheld device used for remotely sending signals to objects. + .desc = A handheld device used for remotely sending signals to objects within a small radius of about 15 meters. +ent-RemoteSignallerAdvanced = advanced remote signaller + .desc = A handheld device used for remotely sending signals to objects within a small radius of about 50 meters. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/materials/materials.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/materials/materials.ftl index 0cf10540cb2..147ecdf73bb 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/materials/materials.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/materials/materials.ftl @@ -62,7 +62,7 @@ ent-MaterialBananium1 = { ent-MaterialBananium } .suffix = Single .desc = { ent-MaterialBananium.desc } ent-MaterialWebSilk = silk - .desc = A webby material + .desc = A webby material. .suffix = Full ent-MaterialWebSilk25 = { ent-MaterialWebSilk } .suffix = 25 diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl index afceefc58e2..f36ae9760a6 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl @@ -1,3 +1,5 @@ +ent-BaseKudzu = { "" } + .desc = { "" } ent-Kudzu = kudzu .desc = A rapidly growing, dangerous plant. WHY ARE YOU STOPPING TO LOOK AT IT?! ent-WeakKudzu = { ent-Kudzu } @@ -11,3 +13,7 @@ ent-KudzuFlowerAngry = { ent-KudzuFlowerFriendly } .desc = { ent-KudzuFlowerFriendly.desc } ent-FleshKudzu = tendons .desc = A rapidly growing cluster of meaty tendons. WHY ARE YOU STOPPING TO LOOK AT IT?! +ent-ShadowKudzu = dark haze + .desc = { ent-BaseKudzu.desc } +ent-ShadowKudzuWeak = Haze + .desc = { ent-ShadowKudzu.desc } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/mech/mechs.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/mech/mechs.ftl index 633d59df033..8b24349b6cc 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/mech/mechs.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/mech/mechs.ftl @@ -16,7 +16,7 @@ ent-MechHamtrBattery = { ent-MechHamtr } .suffix = Battery .desc = { ent-MechHamtr.desc } ent-MechVim = Vim - .desc = A minature exosuit from Nanotrasen, developed to let the irreplacable station pets live a little longer. + .desc = A miniature exosuit from Nanotrasen, developed to let the irreplaceable station pets live a little longer. ent-MechVimBattery = { ent-MechVim } .suffix = Battery .desc = { ent-MechVim.desc } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl index ac84cea2feb..8641a0c60d8 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl @@ -11,7 +11,9 @@ ent-Ointment10Lingering = { ent-Ointment } .desc = { ent-Ointment.desc } ent-RegenerativeMesh = regenerative mesh .desc = Used to treat even the nastiest burns. Also effective against caustic burns. + .suffix = Full ent-OintmentAdvanced1 = { ent-RegenerativeMesh } + .suffix = Single .desc = { ent-RegenerativeMesh.desc } ent-Brutepack = bruise pack .desc = A therapeutic gel pack and bandages designed to treat blunt-force trauma. @@ -24,7 +26,9 @@ ent-Brutepack10Lingering = { ent-Brutepack } .desc = { ent-Brutepack.desc } ent-MedicatedSuture = medicated suture .desc = A suture soaked in medicine, treats blunt-force trauma effectively and closes wounds. + .suffix = Full ent-BrutepackAdvanced1 = { ent-MedicatedSuture } + .suffix = Single .desc = { ent-MedicatedSuture.desc } ent-Bloodpack = blood pack .desc = Contains a groundbreaking universal blood replacement created by Nanotrasen's advanced medical science. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl new file mode 100644 index 00000000000..f0bc94a73da --- /dev/null +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl @@ -0,0 +1,22 @@ +ent-EvidenceMarker = evidence marker + .desc = A numbered yellow marker, useful for labeling evidence on a crime scene. +ent-EvidenceMarkerOne = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerTwo = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerThree = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerFour = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerFive = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerSix = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerSeven = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerEight = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerNine = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-BoxEvidenceMarkers = evidence marker box + .desc = A pack of numbered yellow markers, useful for labeling evidence on a crime scene. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl index b6c061c0668..3573700e69a 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl @@ -37,18 +37,36 @@ ent-EmergencyLight = emergency light ent-PoweredlightCyan = { ent-Poweredlight } .suffix = Cyan .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightCyan = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Cyan + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightBlue = { ent-Poweredlight } .suffix = Blue .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightBlue = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Blue + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightPink = { ent-Poweredlight } .suffix = Pink .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightPink = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Pink + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightOrange = { ent-Poweredlight } .suffix = Orange .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightOrange = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Orange + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightRed = { ent-Poweredlight } .suffix = Red .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightRed = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Red + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightGreen = { ent-Poweredlight } .suffix = Green .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightGreen = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Green + .desc = { ent-AlwaysPoweredWallLight.desc } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/machines/vending_machines.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/machines/vending_machines.ftl index 3881de398c9..27d491b14ea 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/machines/vending_machines.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/machines/vending_machines.ftl @@ -56,7 +56,7 @@ ent-VendingMachineSeedsUnlocked = MegaSeed Servitor .desc = For when you need seeds fast. Hands down the best seed selection on the station! .suffix = Unlocked ent-VendingMachineSeeds = { ent-VendingMachineSeedsUnlocked } - .suffix = Hyroponics + .suffix = Hydroponics .desc = { ent-VendingMachineSeedsUnlocked.desc } ent-VendingMachineSnack = Getmore Chocolate Corp .desc = A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl index 3bda3d40ddf..01c006b34cf 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl @@ -42,3 +42,6 @@ ent-AnomalyFloraBulb = strange glowing berry ent-AnomalyLiquid = { ent-BaseAnomaly } .suffix = Liquid .desc = { ent-BaseAnomaly.desc } +ent-AnomalyShadow = { ent-BaseAnomaly } + .suffix = Shadow + .desc = { ent-BaseAnomaly.desc } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl index 1e9d7e605a7..eb011f77ca2 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl @@ -27,6 +27,9 @@ ent-AnomalyCoreElectricity = { ent-BaseAnomalyCore } ent-AnomalyCoreFlora = { ent-BaseAnomalyCore } .suffix = Flora .desc = { ent-BaseAnomalyCore.desc } +ent-AnomalyCoreShadow = { ent-BaseAnomalyCore } + .suffix = Shadow + .desc = { ent-BaseAnomalyCore.desc } ent-BaseAnomalyInertCore = { ent-BaseAnomalyCore } .desc = { ent-BaseAnomalyCore.desc } ent-AnomalyCorePyroclasticInert = { ent-BaseAnomalyInertCore } @@ -56,3 +59,7 @@ ent-AnomalyCoreElectricityInert = { ent-BaseAnomalyInertCore } ent-AnomalyCoreFloraInert = { ent-BaseAnomalyInertCore } .suffix = Flora, Inert .desc = { ent-BaseAnomalyInertCore.desc } +ent-AnomalyCoreShadowInert = { ent-['BaseAnomalyInertCore', 'BaseShadow'] } + + .suffix = Shadow, Inert + .desc = { ent-['BaseAnomalyInertCore', 'BaseShadow'].desc } diff --git a/Resources/Locale/ru-RU/accessories/human-hair.ftl b/Resources/Locale/ru-RU/accessories/human-hair.ftl index 7e9cad61dcf..08dd615b309 100644 --- a/Resources/Locale/ru-RU/accessories/human-hair.ftl +++ b/Resources/Locale/ru-RU/accessories/human-hair.ftl @@ -163,6 +163,7 @@ marking-HumanHairSpiky = Колючая 2 marking-HumanHairSpiky2 = Колючая 3 marking-HumanHairSwept = Зачёс назад marking-HumanHairSwept2 = Зачёс назад 2 +marking-HumanHairTailed = Tailed marking-HumanHairThinning = Редеющая marking-HumanHairThinningfront = Редеющая (Спереди) marking-HumanHairThinningrear = Редеющая (Сзади) diff --git a/Resources/Locale/ru-RU/actions/actions/diona.ftl b/Resources/Locale/ru-RU/actions/actions/diona.ftl new file mode 100644 index 00000000000..39eeb3f6d3a --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/diona.ftl @@ -0,0 +1,2 @@ +diona-gib-action-use = { $name } splits apart in an instant! +diona-reform-attempt = { $name } attempts to reform! diff --git a/Resources/Locale/ru-RU/botany/components/plant-holder-component.ftl b/Resources/Locale/ru-RU/botany/components/plant-holder-component.ftl index 8522aa9e1aa..157ebf43e00 100644 --- a/Resources/Locale/ru-RU/botany/components/plant-holder-component.ftl +++ b/Resources/Locale/ru-RU/botany/components/plant-holder-component.ftl @@ -32,3 +32,4 @@ plant-holder-component-light-improper-warning = Мигает [color=yellow]пр plant-holder-component-heat-improper-warning = Мигает [color=orange]предупреждение о неподходящем уровне температуры[/color]. plant-holder-component-pressure-improper-warning = Мигает [color=lightblue]предупреждение о неподходящем атмосферном давлении[/color]. plant-holder-component-gas-missing-warning = Мигает [color=cyan]предупреждение о неподходящем атмосферном составе[/color]. +plant-holder-component-early-sample-message = The plant hasn't grown enough to take a sample yet. diff --git a/Resources/Locale/ru-RU/chat/sanitizer-replacements.ftl b/Resources/Locale/ru-RU/chat/sanitizer-replacements.ftl index 5a5a6315a74..e34351fabfa 100644 --- a/Resources/Locale/ru-RU/chat/sanitizer-replacements.ftl +++ b/Resources/Locale/ru-RU/chat/sanitizer-replacements.ftl @@ -19,4 +19,6 @@ chatsan-unimpressed = кажется не впечатлённым chatsan-waves = машет chatsan-salutes = отдаёт честь chatsan-tearfully-salutes = отдаёт честь со слезами на глазах +chatsan-tearfully-smiles = tearfully smiles +chatsan-winks = winks chatsan-shrugs = пожимает плечами diff --git a/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl b/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl index 67c7312b80f..20bee4a59d5 100644 --- a/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl +++ b/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl @@ -29,6 +29,7 @@ criminal-records-console-wanted = { $name } разыскивается по ре criminal-records-console-detained = { $name } арестовали, арестовал: { $officer }. criminal-records-console-released = { $name } отпустили, отпустил: { $officer }. criminal-records-console-not-wanted = { $name } больше не разыскивается. +criminal-records-console-unknown-officer = ## Filters diff --git a/Resources/Locale/ru-RU/fax/fax.ftl b/Resources/Locale/ru-RU/fax/fax.ftl index 295f537e3fc..678efe1c03f 100644 --- a/Resources/Locale/ru-RU/fax/fax.ftl +++ b/Resources/Locale/ru-RU/fax/fax.ftl @@ -6,6 +6,9 @@ fax-machine-popup-name-set = Имя факса было обновлено fax-machine-dialog-rename = Переименовать fax-machine-dialog-field-name = Имя fax-machine-ui-window = Факс +fax-machine-ui-file-button = Print File +fax-machine-ui-paper-button-normal = Normal Paper +fax-machine-ui-paper-button-office = Office Paper fax-machine-ui-copy-button = Копировать fax-machine-ui-send-button = Отправить fax-machine-ui-refresh-button = Обновить @@ -16,3 +19,4 @@ fax-machine-ui-paper = Бумага: fax-machine-ui-paper-inserted = Бумага в лотке fax-machine-ui-paper-not-inserted = Нет бумаги fax-machine-chat-notify = Получено новое сообщение с "{ $fax }" факса +fax-machine-printed-paper-name = printed paper diff --git a/Resources/Locale/ru-RU/interaction/interaction-popup-component.ftl b/Resources/Locale/ru-RU/interaction/interaction-popup-component.ftl index 0b4e0733448..c2cab052846 100644 --- a/Resources/Locale/ru-RU/interaction/interaction-popup-component.ftl +++ b/Resources/Locale/ru-RU/interaction/interaction-popup-component.ftl @@ -31,6 +31,7 @@ petting-success-bear = Вы нерешительно гладите { $target } petting-success-slimes = Вы гладите { $target } по { POSS-ADJ($target) } студенистой поверхности. petting-success-snake = Вы гладите { $target } по { POSS-ADJ($target) } большой чешуйчатой голове. petting-success-monkey = Вы гладите { $target } по { POSS-ADJ($target) } озорной маленькой голове. +petting-success-nymph = You pet { THE($target) } on { POSS-ADJ($target) } wooden little head. petting-failure-generic = Вы тянетесь погладить { $target }, но { $target } настороженно уклоняется от вас. petting-failure-bat = Вы тянетесь погладить { $target }, но { $target } очень трудно поймать! petting-failure-carp = Вы тянетесь погладить { $target }, но { POSS-ADJ($target) } острые зубки заставляют вас передумать. @@ -51,6 +52,8 @@ petting-failure-bear = Вы думаете погладить { $target }, но ## Knocking on windows petting-failure-monkey = Вы тянетесь погладить { $target }, но { SUBJECT($target) } едва не кусает вас за пальцы! +petting-failure-nymph = You reach out to pet { THE($target) }, but { POSS-ADJ($target) } moves their branches away. +petting-failure-shadow = You're trying to pet { THE($target) }, but your hand passes through the cold darkness of his body. petting-success-honkbot = Вы гладите { $target } по его скользкой металлической голове. petting-success-mimebot = Вы гладите { $target } по { POSS-ADJ($target) } холодной металлической голове.. petting-success-cleanbot = Вы гладите { $target } по его влажной металлической голове. diff --git a/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl b/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl index 3ee96285e62..22d23222813 100644 --- a/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl +++ b/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl @@ -24,3 +24,5 @@ microwave-menu-start-button = Старт microwave-menu-eject-all-text = Извлечь всё microwave-menu-eject-all-tooltip = Это испарит все жидкости, но вернёт всё твёрдое. microwave-menu-instant-button = МГНОВЕННО +microwave-menu-footer-flavor-left = Do not insert any electronic, metallic or living objects. +microwave-menu-footer-flavor-right = v1.5 diff --git a/Resources/Locale/ru-RU/main-menu/main-menu.ftl b/Resources/Locale/ru-RU/main-menu/main-menu.ftl index aace4f39297..8494aaa4860 100644 --- a/Resources/Locale/ru-RU/main-menu/main-menu.ftl +++ b/Resources/Locale/ru-RU/main-menu/main-menu.ftl @@ -7,6 +7,7 @@ main-menu-failed-to-connect = { $reason } main-menu-username-label = Имя пользователя: main-menu-username-text = Имя пользователя +main-menu-address-label = Server Address: main-menu-join-public-server-button = Публичный сервер main-menu-join-public-server-button-tooltip = Нельзя подключаться к публичным серверам с отладочной сборкой. main-menu-direct-connect-button = Прямое подключение diff --git a/Resources/Locale/ru-RU/markings/scars.ftl b/Resources/Locale/ru-RU/markings/scars.ftl index 13b39d65fb1..5583206f601 100644 --- a/Resources/Locale/ru-RU/markings/scars.ftl +++ b/Resources/Locale/ru-RU/markings/scars.ftl @@ -6,3 +6,5 @@ marking-ScarTopSurgeryLong-scar_top_surgery_long = Хирургический ш marking-ScarEyeLeft = Шрам на глазу (Левый) marking-ScarTopSurgeryShort = Хирургический шрам (Короткий) marking-ScarTopSurgeryLong = Хирургический шрам (Длинный) +marking-ScarChest-scar_chest = Chest Scar +marking-ScarChest = Chest Scar diff --git a/Resources/Locale/ru-RU/markings/slimeperson.ftl b/Resources/Locale/ru-RU/markings/slimeperson.ftl index 8842b91e805..7c1dc6d1175 100644 --- a/Resources/Locale/ru-RU/markings/slimeperson.ftl +++ b/Resources/Locale/ru-RU/markings/slimeperson.ftl @@ -2,6 +2,10 @@ marking-SlimeGradientLeftArm-gradient_l_arm = Слаймолюд, левая р marking-SlimeGradientRightArm-gradient_r_arm = Слаймолюд, правая рука (Градиент) marking-SlimeGradientLeftArm = Слаймолюд, левая рука (Градиент) marking-SlimeGradientLeftLeg-gradient_l_leg = Слаймолюд, левая нога (Градиент) +marking-SlimeGradientLeftFoot-gradient_l_foot = Slime Left Foot (Gradient) +marking-SlimeGradientLeftFoot = Slime Left Foot (Gradient) +marking-SlimeGradientRightFoot-gradient_r_foot = Slime Right Foot (Gradient) +marking-SlimeGradientRightFoot = Slime Right Foot (Gradient) marking-SlimeGradientRightLeg-gradient_r_leg = Слаймолюд, правая нога (Градиент) marking-SlimeGradientRightArm = Слаймолюд, правая рука (Градиент) marking-SlimeGradientLeftHand-gradient_l_hand = Слаймолюд, кисть левой руки (Градиент) diff --git a/Resources/Locale/ru-RU/nuke/nuke-component.ftl b/Resources/Locale/ru-RU/nuke/nuke-component.ftl index cef0554577a..1090f36973f 100644 --- a/Resources/Locale/ru-RU/nuke/nuke-component.ftl +++ b/Resources/Locale/ru-RU/nuke/nuke-component.ftl @@ -38,3 +38,5 @@ nuke-codes-list = Код { $name }: { $code } nuke-codes-fax-paper-name = коды ядерной аутентификации # Nuke disk slot nuke-slot-component-slot-name-disk = Диск +nuke-examine-armed = Hey uh, why's that [color=red]red light[/color] blinking? +nuke-examine-exploding = Yeah... I think it's too late buddy. diff --git a/Resources/Locale/ru-RU/nutrition/components/drink-component.ftl b/Resources/Locale/ru-RU/nutrition/components/drink-component.ftl index 573ecde8bff..fbb0917599e 100644 --- a/Resources/Locale/ru-RU/nutrition/components/drink-component.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/drink-component.ftl @@ -1,6 +1,8 @@ drink-component-on-use-is-empty = { $owner } пуст! drink-component-on-examine-is-empty = [color=gray]Пусто[/color] drink-component-on-examine-is-opened = [color=yellow]Открыто[/color] +drink-component-on-examine-is-sealed = The seal is intact. +drink-component-on-examine-is-unsealed = The seal is broken. drink-component-on-examine-is-full = Полон drink-component-on-examine-is-mostly-full = Почти полон drink-component-on-examine-is-half-full = Наполовину полон diff --git a/Resources/Locale/ru-RU/nutrition/components/openable-component.ftl b/Resources/Locale/ru-RU/nutrition/components/openable-component.ftl new file mode 100644 index 00000000000..3acc24cf532 --- /dev/null +++ b/Resources/Locale/ru-RU/nutrition/components/openable-component.ftl @@ -0,0 +1,2 @@ +openable-component-verb-open = Open +openable-component-verb-close = Close diff --git a/Resources/Locale/ru-RU/reagents/meta/biological.ftl b/Resources/Locale/ru-RU/reagents/meta/biological.ftl index cf0c6187a58..7ba297e06f1 100644 --- a/Resources/Locale/ru-RU/reagents/meta/biological.ftl +++ b/Resources/Locale/ru-RU/reagents/meta/biological.ftl @@ -6,6 +6,8 @@ reagent-name-slime = слизь reagent-desc-slime = Сначала вам показалось, что это градиент крови, но вы ошиблись. reagent-name-hemocyanin-blood = голубая кровь reagent-desc-hemocyanin-blood = Содержит медь, а не железо, что придаёт ей ярко выраженный голубой цвет. +reagent-name-ammonia-blood = anaerobic blood +reagent-desc-ammonia-blood = Nothing else in the entire galaxy smells quite so appalling. reagent-name-zombie-blood = кровь зомби reagent-desc-zombie-blood = Не рекомендуется употреблять в пищу. Может быть использована для создания прививки от инфекции. reagent-name-ichor = ихор diff --git a/Resources/Locale/ru-RU/species/namepreset.ftl b/Resources/Locale/ru-RU/species/namepreset.ftl index 48241dcb611..831ed3723f3 100644 --- a/Resources/Locale/ru-RU/species/namepreset.ftl +++ b/Resources/Locale/ru-RU/species/namepreset.ftl @@ -1,3 +1,4 @@ +namepreset-first = { $first } namepreset-firstlast = { $first } { $last } namepreset-firstdashfirst = { $first1 }-{ $first2 } namepreset-thefirstoflast = { $first } { $last } diff --git a/Resources/Locale/ru-RU/species/species.ftl b/Resources/Locale/ru-RU/species/species.ftl index 5d8204976b5..6e9f6b7bbdb 100644 --- a/Resources/Locale/ru-RU/species/species.ftl +++ b/Resources/Locale/ru-RU/species/species.ftl @@ -8,3 +8,4 @@ species-name-diona = Диона species-name-arachnid = Арахнид species-name-moth = Ниан species-name-skeleton = Скелет +species-name-vox = Vox diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/actions/diona.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/actions/diona.ftl new file mode 100644 index 00000000000..58dcfb8c8c2 --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/actions/diona.ftl @@ -0,0 +1,4 @@ +ent-DionaGibAction = Gib Yourself! + .desc = Split apart into 3 nymphs. +ent-DionaReformAction = Reform + .desc = Reform back into a whole Diona. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/diona.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/diona.ftl index d005eede453..ffb5cd05cb3 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/diona.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/diona.ftl @@ -6,3 +6,20 @@ ent-OrganDionaEyes = глаза .desc = Я тебя вижу! ent-OrganDionaStomach = желудок .desc = Мерзость. Не перевариваю его. +ent-OrganDionaLungs = lungs + .desc = Filters oxygen from an atmosphere, which is then sent into the bloodstream to be used as an electron carrier. +ent-OrganDionaBrainNymph = brain + .desc = The source of incredible, unending intelligence. Honk. +ent-OrganDionaStomachNymph = stomach + .desc = Gross. This is hard to stomach. +ent-OrganDionaLungsNymph = lungs + .desc = Filters oxygen from an atmosphere, which is then sent into the bloodstream to be used as an electron carrier. +ent-OrganDionaNymphBrain = diona nymph + .desc = Contains the brain of a formerly fully-formed Diona. Killing this would kill the Diona forever. You monster. + .suffix = Brain +ent-OrganDionaNymphStomach = diona nymph + .desc = Contains the stomach of a formerly fully-formed Diona. It doesn't taste any better for it. + .suffix = Stomach +ent-OrganDionaNymphLungs = diona nymph + .desc = Contains the lungs of a formerly fully-formed Diona. Breathtaking. + .suffix = Lungs diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/bandanas.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/bandanas.ftl index 65efd32ba0e..2c9e8963ef3 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/bandanas.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/bandanas.ftl @@ -1,5 +1,5 @@ ent-ClothingHeadBandBase = { ent-ClothingHeadBaseButcherable } - .desc = { ent-ClothingHeadBaseButcherable.desc } + .desc = { ent-ClothingHeadBaseButcherable.desc } ent-ClothingHeadBandBlack = чёрная бандана .desc = Чёрная бандана, чтобы выглядеть круто. ent-ClothingHeadBandBlue = синяя бандана diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hats.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hats.ftl index b8970f758e0..ad5bc0ae766 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hats.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hats.ftl @@ -2,6 +2,8 @@ ent-ClothingHeadHatBeaverHat = бобровая шапка .desc = Джентльмены? ent-ClothingHeadHatBeret = берет .desc = Берет, любимый головной убор творцов. +ent-ClothingHeadHatBeretFrench = French beret + .desc = A French beret, "vive la France". ent-ClothingHeadHatBeretSecurity = берет охраны .desc = Стильный вариант одежды для сотрудников службы безопасности. ent-ClothingHeadHatCasa = каса @@ -154,3 +156,5 @@ ent-ClothingHeadHatCowboyBountyHunter = ковбойская шляпа охот .desc = { ent-ClothingHeadHatCowboyBrown.desc } ent-ClothingHeadHatStrawHat = соломенная шляпа .desc = Модная шляпа для жарких деньков! Не рекомендуется носить около источников огня. +ent-ClothingHeadHatBeretMedic = medical beret + .desc = White beret that encourages you to be clean. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/soft.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/soft.ftl index 6c750e13503..d29d50c8be2 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/soft.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/soft.ftl @@ -1,5 +1,5 @@ ent-ClothingHeadHeadHatBaseFlippable = { ent-ClothingHeadBaseButcherable } - .desc = { ent-ClothingHeadBaseButcherable.desc } + .desc = { ent-ClothingHeadBaseButcherable.desc } ent-ClothingHeadHeadHatBaseFlipped = { ent-ClothingHeadHeadHatBaseFlippable } .suffix = Перевёрнутый .desc = { ent-ClothingHeadHeadHatBaseFlippable.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/masks/bandanas.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/masks/bandanas.ftl index 88362d7019b..c9592d413fd 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/masks/bandanas.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/masks/bandanas.ftl @@ -1,5 +1,5 @@ ent-ClothingMaskBandanaBase = { ent-ClothingMaskBaseButcherable } - .desc = { ent-ClothingMaskBaseButcherable.desc } + .desc = { ent-ClothingMaskBaseButcherable.desc } ent-ClothingMaskBandBlack = чёрная бандана .desc = Чёрная бандана, чтобы выглядеть круто. ent-ClothingMaskBandBlue = синяя бандана diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl new file mode 100644 index 00000000000..bd3f150c84a --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/debugging/options_visualizer.ftl @@ -0,0 +1,3 @@ +ent-OptionsVisualizerTest = { "" } + .suffix = DEBUG + .desc = { "" } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/effects/portal.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/effects/portal.ftl index 018402d3b9f..7df4de09853 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/effects/portal.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/effects/portal.ftl @@ -6,3 +6,5 @@ ent-PortalBlue = { ent-BasePortal } .desc = { ent-BasePortal.desc } ent-PortalArtifact = { ent-BasePortal } .desc = { ent-BasePortal.desc } +ent-ShadowPortal = shadow rift + .desc = Looks unstable. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl new file mode 100644 index 00000000000..d28c0d0778e --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/shadowkudzu.ftl @@ -0,0 +1,2 @@ +ent-ShadowKudzuLootSpawner = { ent-MarkerBase } + .desc = { ent-MarkerBase.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl index 86891c6e996..cc42cad6a6e 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/animals.ftl @@ -131,3 +131,5 @@ ent-MobHamster = хомяк .desc = Милый, пушистый, робастный хомяк. ent-MobPig = свинья .desc = Хрю. +ent-MobDionaNymph = diona nymph + .desc = It's like a cat, only.... branch-ier. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl new file mode 100644 index 00000000000..8164c16901e --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/shadows.ftl @@ -0,0 +1,4 @@ +ent-BaseShadowMob = { ent-BaseShadow } + .desc = { ent-BaseShadow.desc } +ent-MobCatShadow = shadow cat + .desc = A lovely piece of darkness. Hope he doesn't bring you a curse. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/diona.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/diona.ftl index 6e69088b4e1..332e7f3b700 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/diona.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/diona.ftl @@ -1,2 +1,4 @@ ent-MobDiona = Урист МакДиона .desc = { ent-BaseMobDiona.desc } +ent-MobDionaReformed = Reformed Diona + .desc = { ent-MobDiona.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/base_shadow.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/base_shadow.ftl new file mode 100644 index 00000000000..9a85067823d --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/base_shadow.ftl @@ -0,0 +1,2 @@ +ent-BaseShadow = { "" } + .desc = { "" } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl index 1ea2dc585d0..c4826b4eba3 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/electronics/signaller.ftl @@ -1,2 +1,4 @@ ent-RemoteSignaller = передатчик сигналов .desc = Портативное устройство, используемое для дистанционной передачи сигналов объектам. +ent-RemoteSignallerAdvanced = advanced remote signaller + .desc = A handheld device used for remotely sending signals to objects within a small radius of about 50 meters. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl index 7df0e39c562..b9530941566 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/kudzu.ftl @@ -1,3 +1,5 @@ +ent-BaseKudzu = { "" } + .desc = { "" } ent-Kudzu = кудзу .desc = Быстрорастущее, опасное растение. ЗАЧЕМ ВЫ ОСТАНОВИЛИСЬ ПОСМОТРЕТЬ НА НЕГО?! ent-WeakKudzu = { ent-Kudzu } @@ -11,3 +13,7 @@ ent-KudzuFlowerAngry = { ent-KudzuFlowerFriendly } .desc = { ent-KudzuFlowerFriendly.desc } ent-FleshKudzu = сухожилия .desc = Быстрорастущее скопление мясистых сухожилий. ЗАЧЕМ ВЫ ОСТАНОВИЛИСЬ ПОСМОТРЕТЬ НА НИХ?! +ent-ShadowKudzu = dark haze + .desc = { ent-BaseKudzu.desc } +ent-ShadowKudzuWeak = Haze + .desc = { ent-ShadowKudzu.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl index bf4a081c63a..8ea8838ecec 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl @@ -11,8 +11,10 @@ ent-Ointment10Lingering = { ent-Ointment } .desc = { ent-Ointment.desc } ent-RegenerativeMesh = регенеративная сеть .desc = Применяется для лечения даже самых неприятных ожогов. Эффективна также при кислотных ожогах. + .suffix = Full ent-OintmentAdvanced1 = { ent-RegenerativeMesh } .desc = { ent-RegenerativeMesh.desc } + .suffix = Single ent-Brutepack = набор для ушибов .desc = Терапевтический набор гелей и пластырей, предназначенных для лечения ушибов. .suffix = Полный @@ -24,8 +26,10 @@ ent-Brutepack10Lingering = { ent-Brutepack } .desc = { ent-Brutepack.desc } ent-MedicatedSuture = медицинская нить .desc = Нить, пропитанная лекарством, эффективно лечит механические травмы и закрывает раны. + .suffix = Full ent-BrutepackAdvanced1 = { ent-MedicatedSuture } .desc = { ent-MedicatedSuture.desc } + .suffix = Single ent-Bloodpack = пакет крови .desc = Содержит новый инновационный универсальный кровезаменитель, разработанный передовыми учёными компании Nanotrasen. .suffix = Полный diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl new file mode 100644 index 00000000000..f0bc94a73da --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/security/evidence-marker.ftl @@ -0,0 +1,22 @@ +ent-EvidenceMarker = evidence marker + .desc = A numbered yellow marker, useful for labeling evidence on a crime scene. +ent-EvidenceMarkerOne = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerTwo = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerThree = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerFour = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerFive = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerSix = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerSeven = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerEight = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-EvidenceMarkerNine = evidence marker + .desc = { ent-EvidenceMarker.desc } +ent-BoxEvidenceMarkers = evidence marker box + .desc = A pack of numbered yellow markers, useful for labeling evidence on a crime scene. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl index 3d5cd053562..671f5c141ed 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/lighting/base_lighting.ftl @@ -37,18 +37,36 @@ ent-EmergencyLight = аварийная лампа ent-PoweredlightCyan = { ent-Poweredlight } .suffix = Голубой .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightCyan = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Cyan + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightBlue = { ent-Poweredlight } .suffix = Синий .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightBlue = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Blue + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightPink = { ent-Poweredlight } .suffix = Розовый .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightPink = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Pink + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightOrange = { ent-Poweredlight } .suffix = Оранжевый .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightOrange = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Orange + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightRed = { ent-Poweredlight } .suffix = Красный .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightRed = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Red + .desc = { ent-AlwaysPoweredWallLight.desc } ent-PoweredlightGreen = { ent-Poweredlight } .suffix = Зелёный .desc = { ent-Poweredlight.desc } +ent-AlwaysPoweredlightGreen = { ent-AlwaysPoweredWallLight } + .suffix = Always Powered, Green + .desc = { ent-AlwaysPoweredWallLight.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl index 2f93c66d8ca..5200b93ca97 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/anomalies.ftl @@ -42,3 +42,6 @@ ent-AnomalyFloraBulb = странная светящаяся ягода ent-AnomalyLiquid = { ent-BaseAnomaly } .suffix = Жидкость .desc = { ent-BaseAnomaly.desc } +ent-AnomalyShadow = { ent-BaseAnomaly } + .suffix = Shadow + .desc = { ent-BaseAnomaly.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl index 8737f7ef02a..99267d50a04 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl @@ -27,6 +27,9 @@ ent-AnomalyCoreElectricity = { ent-BaseAnomalyCore } ent-AnomalyCoreFlora = { ent-BaseAnomalyCore } .suffix = Флора .desc = { ent-BaseAnomalyCore.desc } +ent-AnomalyCoreShadow = { ent-BaseAnomalyCore } + .suffix = Shadow + .desc = { ent-BaseAnomalyCore.desc } ent-BaseAnomalyInertCore = { ent-BaseAnomalyCore } .desc = { ent-BaseAnomalyCore.desc } ent-AnomalyCorePyroclasticInert = { ent-BaseAnomalyInertCore } @@ -56,3 +59,7 @@ ent-AnomalyCoreElectricityInert = { ent-BaseAnomalyInertCore } ent-AnomalyCoreFloraInert = { ent-BaseAnomalyInertCore } .suffix = Флора, Инертный .desc = { ent-BaseAnomalyInertCore.desc } +ent-AnomalyCoreShadowInert = { ent-['BaseAnomalyInertCore', 'BaseShadow'] } + + .suffix = Shadow, Inert + .desc = { ent-['BaseAnomalyInertCore', 'BaseShadow'].desc } diff --git a/Resources/Locale/ru-RU/weapons/melee/melee.ftl b/Resources/Locale/ru-RU/weapons/melee/melee.ftl index be88b9cf2d9..abb7650933e 100644 --- a/Resources/Locale/ru-RU/weapons/melee/melee.ftl +++ b/Resources/Locale/ru-RU/weapons/melee/melee.ftl @@ -1,2 +1,4 @@ melee-inject-failed-hardsuit = Ваш { $weapon } не может проникнуть сквозь скафандр! melee-balloon-pop = { CAPITALIZE($balloon) } лопнул! +#BatteryComponent +melee-battery-examine = It has enough charge for [color={ $color }]{ $count }[/color] hits. From 92aae19f59d21d8d0af222f5367275639e78e08e Mon Sep 17 00:00:00 2001 From: Morb0 <14136326+Morb0@users.noreply.github.com> Date: Sun, 18 Feb 2024 02:41:47 +0300 Subject: [PATCH 21/21] Fix locale --- .../entities/structures/specific/anomaly/cores.ftl | 5 ++--- .../entities/structures/specific/anomaly/cores.ftl | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl index eb011f77ca2..9368de36a69 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl @@ -59,7 +59,6 @@ ent-AnomalyCoreElectricityInert = { ent-BaseAnomalyInertCore } ent-AnomalyCoreFloraInert = { ent-BaseAnomalyInertCore } .suffix = Flora, Inert .desc = { ent-BaseAnomalyInertCore.desc } -ent-AnomalyCoreShadowInert = { ent-['BaseAnomalyInertCore', 'BaseShadow'] } - +ent-AnomalyCoreShadowInert = { ent-BaseAnomalyInertCore } .suffix = Shadow, Inert - .desc = { ent-['BaseAnomalyInertCore', 'BaseShadow'].desc } + .desc = { ent-BaseAnomalyInertCore.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl index 99267d50a04..62edadf3c3a 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/specific/anomaly/cores.ftl @@ -59,7 +59,6 @@ ent-AnomalyCoreElectricityInert = { ent-BaseAnomalyInertCore } ent-AnomalyCoreFloraInert = { ent-BaseAnomalyInertCore } .suffix = Флора, Инертный .desc = { ent-BaseAnomalyInertCore.desc } -ent-AnomalyCoreShadowInert = { ent-['BaseAnomalyInertCore', 'BaseShadow'] } - +ent-AnomalyCoreShadowInert = { ent-BaseAnomalyInertCore } .suffix = Shadow, Inert - .desc = { ent-['BaseAnomalyInertCore', 'BaseShadow'].desc } + .desc = { ent-BaseAnomalyInertCore.desc }