diff --git a/Content.Client/Changelog/ChangelogTab.xaml.cs b/Content.Client/Changelog/ChangelogTab.xaml.cs index 213104c66ed..fd0348036d3 100644 --- a/Content.Client/Changelog/ChangelogTab.xaml.cs +++ b/Content.Client/Changelog/ChangelogTab.xaml.cs @@ -36,112 +36,118 @@ public void CleanChangelog() // Sunrise-End public void PopulateChangelog(ChangelogManager.Changelog changelog) - { - var byDay = changelog.Entries - .GroupBy(e => e.Time.ToLocalTime().Date) - .OrderByDescending(c => c.Key); +{ + var byDay = changelog.Entries + .GroupBy(e => e.Time.ToLocalTime().Date) + .OrderByDescending(c => c.Key); - var hasRead = changelog.Name != MainChangelogName || - _changelog.MaxId <= _changelog.LastReadId; + var hasRead = changelog.Name != MainChangelogName || + _changelog.MaxId <= _changelog.LastReadId; - foreach (var dayEntries in byDay) - { - var day = dayEntries.Key; - - var groupedEntries = dayEntries - .GroupBy(c => (c.Author, Read: c.Id <= _changelog.LastReadId)) - .OrderBy(c => c.Key.Read) - .ThenBy(c => c.Key.Author); - - string dayNice; - var today = DateTime.Today; - if (day == today) - dayNice = Loc.GetString("changelog-today"); - else if (day == today.AddDays(-1)) - dayNice = Loc.GetString("changelog-yesterday"); - else - dayNice = day.ToShortDateString(); - - ChangelogBody.AddChild(new Label + foreach (var dayEntries in byDay) + { + var day = dayEntries.Key; + + var groupedEntries = dayEntries + .GroupBy(c => c.Id <= _changelog.LastReadId) + .OrderBy(g => g.Key) + .Select(g => new { - Text = dayNice, - StyleClasses = { StyleBase.StyleClassLabelHeading }, - Margin = new Thickness(4, 6, 0, 0) + g.Key, + Entries = g.OrderByDescending(e => e.Time) // Сортировка по времени в убывающем порядке }); - var first = true; + string dayNice; + var today = DateTime.Today; + if (day == today) + dayNice = Loc.GetString("changelog-today"); + else if (day == today.AddDays(-1)) + dayNice = Loc.GetString("changelog-yesterday"); + else + dayNice = day.ToShortDateString(); - foreach (var groupedEntry in groupedEntries) - { - var (author, read) = groupedEntry.Key; + ChangelogBody.AddChild(new Label + { + Text = dayNice, + StyleClasses = { StyleBase.StyleClassLabelHeading }, + Margin = new Thickness(4, 6, 0, 0) + }); - if (!first) - { - ChangelogBody.AddChild(new Control { Margin = new Thickness(4) }); - } + var first = true; - if (read && !hasRead) - { - hasRead = true; + foreach (var groupedEntry in groupedEntries) + { + var read = groupedEntry.Key; - var upArrow = - _resourceCache.GetTexture("/Textures/Interface/Changelog/up_arrow.svg.192dpi.png"); + if (!first) + { + ChangelogBody.AddChild(new Control { Margin = new Thickness(4) }); + } - var readDivider = new BoxContainer - { - Orientation = LayoutOrientation.Vertical - }; + if (read && !hasRead) + { + hasRead = true; - var hBox = new BoxContainer + var upArrow = + _resourceCache.GetTexture("/Textures/Interface/Changelog/up_arrow.svg.192dpi.png"); + + var readDivider = new BoxContainer + { + Orientation = LayoutOrientation.Vertical + }; + + var hBox = new BoxContainer + { + Orientation = LayoutOrientation.Horizontal, + HorizontalAlignment = HAlignment.Center, + Children = { - Orientation = LayoutOrientation.Horizontal, - HorizontalAlignment = HAlignment.Center, - Children = + new TextureRect { - new TextureRect - { - Texture = upArrow, - ModulateSelfOverride = Color.FromHex("#888"), - TextureScale = new Vector2(0.5f, 0.5f), - Margin = new Thickness(4, 3), - VerticalAlignment = VAlignment.Bottom - }, - new Label - { - Align = Label.AlignMode.Center, - Text = Loc.GetString("changelog-new-changes"), - FontColorOverride = Color.FromHex("#888"), - }, - new TextureRect - { - Texture = upArrow, - ModulateSelfOverride = Color.FromHex("#888"), - TextureScale = new Vector2(0.5f, 0.5f), - Margin = new Thickness(4, 3), - VerticalAlignment = VAlignment.Bottom - } + Texture = upArrow, + ModulateSelfOverride = Color.FromHex("#888"), + TextureScale = new Vector2(0.5f, 0.5f), + Margin = new Thickness(4, 3), + VerticalAlignment = VAlignment.Bottom + }, + new Label + { + Align = Label.AlignMode.Center, + Text = Loc.GetString("changelog-new-changes"), + FontColorOverride = Color.FromHex("#888"), + }, + new TextureRect + { + Texture = upArrow, + ModulateSelfOverride = Color.FromHex("#888"), + TextureScale = new Vector2(0.5f, 0.5f), + Margin = new Thickness(4, 3), + VerticalAlignment = VAlignment.Bottom } - }; + } + }; - readDivider.AddChild(hBox); - readDivider.AddChild(new PanelContainer { StyleClasses = { StyleBase.ClassLowDivider } }); - ChangelogBody.AddChild(readDivider); + readDivider.AddChild(hBox); + readDivider.AddChild(new PanelContainer { StyleClasses = { StyleBase.ClassLowDivider } }); + ChangelogBody.AddChild(readDivider); - if (first) - readDivider.SetPositionInParent(ChangelogBody.ChildCount - 2); - } + if (first) + readDivider.SetPositionInParent(ChangelogBody.ChildCount - 2); + } - first = false; + first = false; + foreach (var changeEntry in groupedEntry.Entries) + { var authorLabel = new RichTextLabel { Margin = new Thickness(6, 0, 0, 0), }; authorLabel.SetMessage( - FormattedMessage.FromMarkup(Loc.GetString("changelog-author-changed", ("author", author)))); + FormattedMessage.FromMarkup(Loc.GetString("changelog-author-changed", ("author", changeEntry.Author)))); ChangelogBody.AddChild(authorLabel); - foreach (var change in groupedEntry.SelectMany(c => c.Changes)) + foreach (var change in changeEntry.Changes) { var text = new RichTextLabel(); text.SetMessage(FormattedMessage.FromMarkup(change.Message)); @@ -159,6 +165,7 @@ public void PopulateChangelog(ChangelogManager.Changelog changelog) } } } +} private TextureRect GetIcon(ChangelogLineType type) { diff --git "a/Content.Client/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlocker\320\241omponent.cs" b/Content.Client/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlockerComponent.cs similarity index 100% rename from "Content.Client/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlocker\320\241omponent.cs" rename to Content.Client/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlockerComponent.cs diff --git a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs index b9e68d4801c..bfcadc53022 100644 --- a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs +++ b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs @@ -321,6 +321,13 @@ public List GetArrivalsSpawnPoints() public EntityUid? SpawnPlayersOnArrivals(EntityUid? station, JobComponent? job, HumanoidCharacterProfile? profile) { var possiblePositions = GetArrivalsSpawnPoints(); + + if (possiblePositions == null || possiblePositions.Count == 0) + { + Logger.Error("No valid arrival points found!"); + return null; + } + var spawnLoc = _random.Pick(possiblePositions); diff --git a/Content.Server/_Sunrise/EvilTwin/EvilTwinSystem.cs b/Content.Server/_Sunrise/EvilTwin/EvilTwinSystem.cs index bf3530e4ce9..c1102e0f698 100644 --- a/Content.Server/_Sunrise/EvilTwin/EvilTwinSystem.cs +++ b/Content.Server/_Sunrise/EvilTwin/EvilTwinSystem.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.DetailExaminable; +using Content.Server.Forensics; using Content.Server.GameTicking; using Content.Server.Humanoid; using Content.Server.Jobs; @@ -11,11 +12,13 @@ using Content.Server.Roles; using Content.Server.Roles.Jobs; using Content.Server.Station.Systems; +using Content.Shared.Clothing; using Content.Shared.Humanoid; using Content.Shared.Mind.Components; using Content.Shared.Objectives.Components; using Content.Shared.Objectives.Systems; using Content.Shared.Preferences; +using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; using Robust.Shared.Map; using Robust.Shared.Player; @@ -38,6 +41,8 @@ public sealed class EvilTwinSystem : EntitySystem [Dependency] private readonly MetaDataSystem _metaDataSystem = default!; [Dependency] private readonly TargetObjectiveSystem _target = default!; [Dependency] private readonly SharedObjectivesSystem _objectives = default!; + [Dependency] private readonly LoadoutSystem _loadoutSystem = default!; + [ValidatePrototypeId] private const string EvilTwinRole = "EvilTwin"; @@ -49,8 +54,8 @@ public sealed class EvilTwinSystem : EntitySystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent<_Sunrise.EvilTwin.EvilTwinSpawnerComponent, PlayerAttachedEvent>(OnPlayerAttached); - SubscribeLocalEvent<_Sunrise.EvilTwin.EvilTwinComponent, MindAddedMessage>(OnMindAdded); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnMindAdded); SubscribeLocalEvent(OnRoundEnd); } @@ -70,9 +75,9 @@ private void OnPlayerAttached(EntityUid uid, _Sunrise.EvilTwin.EvilTwinSpawnerCo } } - private void OnMindAdded(EntityUid uid, _Sunrise.EvilTwin.EvilTwinComponent component, MindAddedMessage args) + private void OnMindAdded(EntityUid uid, EvilTwinComponent component, MindAddedMessage args) { - if (!TryComp<_Sunrise.EvilTwin.EvilTwinComponent>(uid, out var evilTwin) || + if (!TryComp(uid, out var evilTwin) || !_mindSystem.TryGetMind(uid, out var mindId, out var mind)) return; @@ -89,13 +94,13 @@ private void OnMindAdded(EntityUid uid, _Sunrise.EvilTwin.EvilTwinComponent comp private void OnRoundEnd(RoundEndTextAppendEvent ev) { - var twinsCount = EntityQuery<_Sunrise.EvilTwin.EvilTwinComponent>().Count(); + var twinsCount = EntityQuery().Count(); if (twinsCount == 0) return; var result = Loc.GetString("evil-twin-round-end-result", ("evil-twin-count", twinsCount)); - var query = EntityQueryEnumerator<_Sunrise.EvilTwin.EvilTwinComponent>(); + var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var twin)) { if (!_mindSystem.TryGetMind(uid, out var mindId, out var mind)) @@ -218,6 +223,22 @@ private bool TryGetEligibleHumanoid([NotNullWhen(true)] out EntityUid? uid) if (_jobSystem.MindTryGetJob(mindId, out _, out var jobProto) && jobProto.StartingGear != null) { + var jobLoadout = LoadoutSystem.GetJobPrototype(jobProto.ID); + + if (_prototype.TryIndex(jobLoadout, out RoleLoadoutPrototype? roleProto)) + { + pref.Loadouts.TryGetValue(jobLoadout, out var loadout); + + // Set to default if not present + if (loadout == null) + { + loadout = new RoleLoadout(jobLoadout); + loadout.SetDefault(_prototype); + } + + _stationSpawning.EquipRoleLoadout(twinUid, loadout, roleProto); + } + if (_prototype.TryIndex(jobProto.StartingGear, out var gear)) { _stationSpawning.EquipStartingGear(twinUid, gear); @@ -231,7 +252,13 @@ private bool TryGetEligibleHumanoid([NotNullWhen(true)] out EntityUid? uid) } } - EnsureComp<_Sunrise.EvilTwin.EvilTwinComponent>(twinUid).TargetMindId = mindId; + if (TryComp(target, out var dnaComponent)) + { + var dna = EnsureComp(twinUid); + dna.DNA = dnaComponent.DNA; + } + + EnsureComp(twinUid).TargetMindId = mindId; return twinUid; } diff --git "a/Content.Server/_Sunrise/FactionClothingBlockerSystem/FactionClothingBlocker\320\241omponent.cs" b/Content.Server/_Sunrise/FactionClothingBlockerSystem/FactionClothingBlockerComponent.cs similarity index 100% rename from "Content.Server/_Sunrise/FactionClothingBlockerSystem/FactionClothingBlocker\320\241omponent.cs" rename to Content.Server/_Sunrise/FactionClothingBlockerSystem/FactionClothingBlockerComponent.cs diff --git "a/Content.Server/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlocker\320\241omponent.cs" b/Content.Server/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlockerComponent.cs similarity index 100% rename from "Content.Server/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlocker\320\241omponent.cs" rename to Content.Server/_Sunrise/FactionWeaponBlockerSystem/FactionWeaponBlockerComponent.cs diff --git "a/Content.Shared/_Sunrise/FactionWeaponBlockerSystem/SharedFactionWeaponBlocker\320\241omponent.cs" b/Content.Shared/_Sunrise/FactionWeaponBlockerSystem/SharedFactionWeaponBlockerComponent.cs similarity index 100% rename from "Content.Shared/_Sunrise/FactionWeaponBlockerSystem/SharedFactionWeaponBlocker\320\241omponent.cs" rename to Content.Shared/_Sunrise/FactionWeaponBlockerSystem/SharedFactionWeaponBlockerComponent.cs diff --git a/Resources/Audio/Lobby/attributions.yml b/Resources/Audio/Lobby/attributions.yml index 657d018861c..7b565dbf202 100644 --- a/Resources/Audio/Lobby/attributions.yml +++ b/Resources/Audio/Lobby/attributions.yml @@ -1,9 +1,4 @@ -- files: ["thunderdome.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "-Sector11 by MashedByMachines. Converted from MP3 to OGG." - source: "https://www.newgrounds.com/audio/listen/312622" - -- files: ["endless_space.ogg"] +- files: ["endless_space.ogg"] license: "CC-BY-3.0" copyright: "Endless Space by SolusLunes. Converted from MP3 to OGG." source: "https://www.newgrounds.com/audio/listen/67583" @@ -18,53 +13,3 @@ license: "CC-BY-NC-SA-3.0" copyright: "Absconditus by ZhayTee. Converted from MP3 to OGG." source: "https://bandcamp.zhaytee.net/track/absconditus" - -- files: ["atomicamnesiammx.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "Atomic Amnesia MMX by Philip Dyer. Converted from MP3 to OGG." - source: "https://soundcloud.com/3kliksphilip/atomic-amnesia-mmx-1" - -- files: ["singuloose.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "Singuloose by Janis Schiedková. Converted from MP3 to OGG." - source: "https://soundcloud.com/js_m/singuloose" - -- files: ["title2.ogg"] - license: "Custom" - copyright: "Originally composed by Jonathan Dunn for Robocop 2 Gameboy published by Ocean Software. Remixed by Eric Shumaker for his video Dilbert 3. As of October 9th, 2008 nobody owns the rights to this song and copyright action has never been taken against anyone using this song in their projects." - source: "https://www.youtube.com/watch?v=4o6_8Unj2mQ" - -- files: ["title3.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "Title3 by Cuboos. It is a remix of the song 'Tintin on the Moon'. Converted from MP3 to OGG." - source: "https://www.youtube.com/watch?v=YKVmXn-Gv0M" - -- files: ["comet_haley.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "Comet Haley by Stellardrone. Converted from MP3 to OGG." - source: "https://freemusicarchive.org/music/Stellardrone/Light_Years_1227/07_Comet_Halley" - -- files: ["mod.flip-flap.ogg"] - license: "Custom" - copyright: "Flip Flap by X-ceed is licensed under a short but clear license (see flip-flap.txt in this directory) and is free for non-commercial use. It was converted from MOD to WAV using Schism Tracker, in 16 Bit, Non-Interpolated mode, no output equalizer settings, Ramp volume at start of sample enabled. From there it was converted to OGG Vorbis with `ffmpeg -i flip-flap.wav -q 2.9 flip-flap-renc.ogg` (quality scale chosen to match size of the OGG file being replaced). Non-interpolated mode was chosen as the module has a high enough sample rate to balance it out, but seems muffled in other interpolation modes. If 'Ramp volume at start of sample' is not enabled, a clicking phenomenon results." - source: "http://aminet.net/package/mods/xceed/Flipflap" - -- files: ["Spac_Stac.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "Spac Stac by Hayabusa. Converted from MP3 to OGG." - source: "https://www.youtube.com/watch?v=grUBe-SZgr0" - -- files: ["pwmur.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "phoron will make us rich by Alexander Divine." - source: "https://soundcloud.com/alexanderdivine/phoron-will-make-us-rich" - -- files: ["lasers_rip_apart_the_bulkhead.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "lasers rip apart the bulkhead by Alexander Divine." - source: "https://soundcloud.com/alexanderdivine/lasers-rip-apart-the-bulkhead" - -- files: ["every_light_is_blinking_at_once.ogg"] - license: "CC-BY-NC-SA-3.0" - copyright: "every light is blinking at once by Alexander Divine." - source: "https://soundcloud.com/alexanderdivine/every-light-is-blinking-at-once" diff --git a/Resources/Locale/ru-RU/_sunrise/preferences/loadout-groups.ftl b/Resources/Locale/ru-RU/_sunrise/preferences/loadout-groups.ftl new file mode 100644 index 00000000000..ea84f1fd949 --- /dev/null +++ b/Resources/Locale/ru-RU/_sunrise/preferences/loadout-groups.ftl @@ -0,0 +1,7 @@ +loadout-group-pants = Трусы +loadout-group-bra = Бюстгальтер +loadout-group-socks = Носки +loadout-group-brigmedic-backpack = Рюкзак бригмедика +loadout-group-brigmedic-jumpsuit = Униформа бригмедика +loadout-group-blueshield-backpack = Офицер «Синий Щит», рюкзак +loadout-group-blueshield-jumpsuit = Офицер «Синий Щит», комбинезон \ No newline at end of file diff --git a/Resources/Locale/ru-RU/corvax/preferences/loadout-groups.ftl b/Resources/Locale/ru-RU/corvax/preferences/loadout-groups.ftl index 7927a1671f3..a2edfbb6082 100644 --- a/Resources/Locale/ru-RU/corvax/preferences/loadout-groups.ftl +++ b/Resources/Locale/ru-RU/corvax/preferences/loadout-groups.ftl @@ -1,5 +1,2 @@ loadout-group-inventory = Мой инвентарь -loadout-group-psychologist-backpack = Рюкзак психолога - -loadout-group-brigmedic-backpack = Рюкзак бригмедика -loadout-group-brigmedic-jumpsuit = Униформа бригмедика +loadout-group-psychologist-backpack = Рюкзак психолога \ No newline at end of file diff --git a/Resources/Locale/ru-RU/preferences/loadout-groups.ftl b/Resources/Locale/ru-RU/preferences/loadout-groups.ftl index 87fc4389d8e..e11c7be1dff 100644 --- a/Resources/Locale/ru-RU/preferences/loadout-groups.ftl +++ b/Resources/Locale/ru-RU/preferences/loadout-groups.ftl @@ -153,9 +153,4 @@ loadout-group-paramedic-backpack = Парамедик, рюкзак # Wildcards loadout-group-reporter-jumpsuit = Репортёр, комбинезон loadout-group-boxer-jumpsuit = Боксёр, комбинезон -loadout-group-boxer-gloves = Боксёр, перчатки - -# Sunrise-edit -loadout-group-pants = Трусы -loadout-group-bra = Бюстгальтер -loadout-group-socks = Носки +loadout-group-boxer-gloves = Боксёр, перчатки \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index dd43ec40948..20dba69c08d 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -194,7 +194,7 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockVendomatFilled - cost: 1200 + cost: 1290 category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/GameRules/midround.yml b/Resources/Prototypes/GameRules/midround.yml index 6a834fd4632..1488394d604 100644 --- a/Resources/Prototypes/GameRules/midround.yml +++ b/Resources/Prototypes/GameRules/midround.yml @@ -36,10 +36,8 @@ agentName: thief-round-end-agent-name definitions: - prefRoles: [ Thief ] - maxRange: - min: 2 - max: 5 # Воров много - playerRatio: 1 + max: 5 + playerRatio: 15 lateJoinAdditional: true allowNonHumans: true multiAntagSetting: NotExclusive diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 03c0642caaf..b58f378cf3b 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -21,7 +21,7 @@ - type: SubGamemodes rules: - id: Thief - prob: 0.75 # Воры отличный антаг + prob: 0.85 # Воры отличный антаг - type: entity id: DeathMatch31 diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/pda.yml index eca09f198e2..bd91f83230d 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/pda.yml @@ -37,11 +37,6 @@ name: КПК офицера «синий щит» description: Охуенный стиль. components: - - type: Pda - id: BlueShieldIDCard - state: pda-blueshield - - type: Icon - state: pda-blueshield - type: Sprite sprite: _Sunrise/Objects/pda.rsi layers: @@ -54,3 +49,9 @@ map: [ "enum.PdaVisualLayers.IdLight" ] shader: "unshaded" visible: false + - type: Pda + id: BlueShieldIDCard + state: pda-blueshield + - type: Icon + sprite: _Sunrise/Objects/pda.rsi + state: pda-blueshield \ No newline at end of file diff --git a/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml b/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml index c05426d84d5..828183b99ba 100644 --- a/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml @@ -109,7 +109,7 @@ - type: loadoutGroup id: BlueShieldBackpack - name: Офицер «Синий Щит», рюкзак + name: loadout-group-blueshield-backpack loadouts: - BlueShieldBackpack - BlueShieldSatchel @@ -117,7 +117,7 @@ - type: loadoutGroup id: BlueShieldJumpsuit - name: Офицер «Синий Щит», комбинезон + name: loadout-group-blueshield-jumpsuit loadouts: - BlueShieldJumpsuit - BlueShieldJumpskirt diff --git a/Resources/Prototypes/audio.yml b/Resources/Prototypes/audio.yml index 24df3239b5c..61d930282cb 100644 --- a/Resources/Prototypes/audio.yml +++ b/Resources/Prototypes/audio.yml @@ -203,7 +203,6 @@ - /Audio/Ambience/spookyspace1.ogg - /Audio/Ambience/spookyspace2.ogg - /Audio/Ambience/ambispace2.ogg - - /Audio/Lobby/title2.ogg - type: soundCollection id: AmbienceSpooky diff --git a/Tools/check_crlf.py b/Tools/check_crlf.py index d691e15c703..3d809d4db6a 100755 --- a/Tools/check_crlf.py +++ b/Tools/check_crlf.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import subprocess +import os from typing import Iterable def main() -> int: @@ -25,7 +26,10 @@ def get_text_files() -> Iterable[str]: yield x.strip() def is_file_crlf(path: str) -> bool: - # https://stackoverflow.com/a/29697732/4678631 + if '\\' in path: + print(f"File {path} contains a backslash in its name.") + return True + with open(path, "rb") as f: for line in f: if line.endswith(b"\r\n"): @@ -33,4 +37,4 @@ def is_file_crlf(path: str) -> bool: return False -exit(main()) +exit(main()) \ No newline at end of file