diff --git a/Content.Client/_White/Lighting/PointLight/Airlock/PointLightAirlockSystem.cs b/Content.Client/_White/Lighting/PointLight/Airlock/PointLightAirlockSystem.cs index e903457e17..2c75f8a771 100644 --- a/Content.Client/_White/Lighting/PointLight/Airlock/PointLightAirlockSystem.cs +++ b/Content.Client/_White/Lighting/PointLight/Airlock/PointLightAirlockSystem.cs @@ -4,6 +4,9 @@ using Robust.Client.GameObjects; namespace Content.Client._White.Lighting.PointLight.Airlock; +// TODO: Перепилить емаггинг дверей, потому что ебучие двери вообще не в курсе, емагнуты они или нет. +// А сам емаг просто ставит стейты, а не поражает дверь +// А еще он ставит дверь на болты каким-то хуем не меняя DoorVisuals.BoltLights public sealed class PointLightAirlockSystem : EntitySystem { [Dependency] private readonly SharedPointLightSystem _pointLightSystem = default!; @@ -44,10 +47,16 @@ public sealed class PointLightAirlockSystem : EntitySystem if (!args.AppearanceData.TryGetValue(DoorVisuals.State, out var state)) return; - HandleState(uid, component, (DoorState) state); + if (!component.IsEmagged) + HandleState(uid, component, (DoorState) state); if (args.AppearanceData.TryGetValue(DoorVisuals.EmergencyLights, out var emergency)) - ToggleLight(uid, component.YellowColor, component, (bool) emergency); + { + if ((bool) emergency) + ToggleLight(uid, component.YellowColor, component, (bool) emergency); + else if (!component.IsEmagged) + HandleState(uid, component, (DoorState) state); + } if (!args.AppearanceData.TryGetValue(DoorVisuals.BoltLights, out var boltsDown)) return; @@ -59,17 +68,25 @@ public sealed class PointLightAirlockSystem : EntitySystem else if (args.AppearanceData.TryGetValue(DoorVisuals.EmergencyLights, out var emergencyLights) && (bool) emergencyLights) ToggleLight(uid, component.YellowColor, component); else + { + if (component.IsEmagged) + component.IsEmagged = false; HandleState(uid, component, (DoorState) state); + } } component.LastBoltsState = (bool) boltsDown; - } private void HandleState(EntityUid uid, PointLightAirlockComponent component, DoorState state) { switch (state) { + case DoorState.Emagging: + ToggleLight(uid, component.RedColor, component); + component.IsEmagged = true; + break; + case DoorState.Open: ToggleLight(uid, component.BlueColor, component); break; diff --git a/Content.Server/Audio/ContentAudioSystem.cs b/Content.Server/Audio/ContentAudioSystem.cs index e2be27f16b..4890f7e26f 100644 --- a/Content.Server/Audio/ContentAudioSystem.cs +++ b/Content.Server/Audio/ContentAudioSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Server._White.RealRoundEnded; using Content.Server.GameTicking; using Content.Server.GameTicking.Events; using Content.Shared.Audio; @@ -14,7 +15,7 @@ namespace Content.Server.Audio; public sealed class ContentAudioSystem : SharedContentAudioSystem { [ValidatePrototypeId] - private const string LobbyMusicCollection = "LobbyMusicWhite"; + private const string LobbyMusicCollection = "LobbyMusicSongs"; [Dependency] private readonly AudioSystem _serverAudio = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; @@ -30,7 +31,7 @@ public sealed class ContentAudioSystem : SharedContentAudioSystem _lobbyMusicCollection = _prototypeManager.Index(LobbyMusicCollection); _lobbyPlaylist = ShuffleLobbyPlaylist(); - SubscribeLocalEvent(OnRoundEnd); + SubscribeLocalEvent(OnRoundEnd); SubscribeLocalEvent(OnPlayerJoinedLobby); SubscribeLocalEvent(OnRoundCleanup); SubscribeLocalEvent(OnRoundStart); @@ -64,7 +65,7 @@ public sealed class ContentAudioSystem : SharedContentAudioSystem } } - private void OnRoundEnd(RoundEndMessageEvent ev) + private void OnRoundEnd(RealRoundEndedEvent ev) { // The lobby song is set here instead of in RestartRound, // because ShowRoundEndScoreboard triggers the start of the music playing diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index dfa81b4035..c3a09b8796 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using System.Linq; +using Content.Server._White.Discord.GameTicking; using Content.Server.Announcements; using Content.Server.Discord; using Content.Server.GameTicking.Events; @@ -22,6 +23,7 @@ using Robust.Shared.Player; using Robust.Shared.Random; using Robust.Shared.Utility; using Content.Server._White.PandaSocket.Main; +using Content.Server._White.RealRoundEnded; using Content.Server._White.Reputation; using Content.Server._White.Stalin; using Content.Shared._White; @@ -503,6 +505,7 @@ namespace Content.Server.GameTicking _sawmill.Info("Restarting round!"); SendServerMessage(Loc.GetString("game-ticker-restart-round")); + RaiseLocalEvent(new RealRoundEndedEvent()); RoundNumberMetric.Inc(); @@ -858,4 +861,4 @@ namespace Content.Server.GameTicking _doNewLine = true; } } -} \ No newline at end of file +} diff --git a/Content.Server/_White/AspectsSystem/Aspects/CatEarsAspect.cs b/Content.Server/_White/AspectsSystem/Aspects/CatEarsAspect.cs index c75b097fdd..a1d651da4c 100644 --- a/Content.Server/_White/AspectsSystem/Aspects/CatEarsAspect.cs +++ b/Content.Server/_White/AspectsSystem/Aspects/CatEarsAspect.cs @@ -4,6 +4,7 @@ using Content.Server.GameTicking.Rules.Components; using Content.Server.Speech.Components; using Content.Server._White.AspectsSystem.Aspects.Components; using Content.Server._White.AspectsSystem.Base; +using Content.Server._White.Discord.GameTicking; using Content.Shared.GameTicking; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; diff --git a/Content.Server/_White/Cult/Items/Systems/ShuttleCurseSystem.cs b/Content.Server/_White/Cult/Items/Systems/ShuttleCurseSystem.cs index d244ccc7b0..a2017266dc 100644 --- a/Content.Server/_White/Cult/Items/Systems/ShuttleCurseSystem.cs +++ b/Content.Server/_White/Cult/Items/Systems/ShuttleCurseSystem.cs @@ -2,6 +2,7 @@ using Content.Server.RoundEnd; using Content.Server.Shuttles.Systems; using Content.Server._White.Cult.Items.Components; +using Content.Server._White.Discord.GameTicking; using Content.Shared.GameTicking; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction.Events; diff --git a/Content.Server/_White/Discord/GameTicking/RoundEndedEvent.cs b/Content.Server/_White/Discord/GameTicking/RoundEndedEvent.cs index 5ed462d085..3b2fa54684 100644 --- a/Content.Server/_White/Discord/GameTicking/RoundEndedEvent.cs +++ b/Content.Server/_White/Discord/GameTicking/RoundEndedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.GameTicking; +namespace Content.Server._White.Discord.GameTicking; public sealed class RoundEndedEvent : EntityEventArgs { diff --git a/Content.Server/_White/Discord/RoundNotificationsSystem.cs b/Content.Server/_White/Discord/RoundNotificationsSystem.cs index 79775bd9b4..c82b2f0cd7 100644 --- a/Content.Server/_White/Discord/RoundNotificationsSystem.cs +++ b/Content.Server/_White/Discord/RoundNotificationsSystem.cs @@ -2,6 +2,7 @@ using System.Net.Http; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; +using Content.Server._White.Discord.GameTicking; using Content.Server.Maps; using Content.Shared.GameTicking; using Content.Shared._White; diff --git a/Content.Server/_White/RealRoundEnded/RealRoundEndedEvent.cs b/Content.Server/_White/RealRoundEnded/RealRoundEndedEvent.cs new file mode 100644 index 0000000000..6ea566cf7b --- /dev/null +++ b/Content.Server/_White/RealRoundEnded/RealRoundEndedEvent.cs @@ -0,0 +1,6 @@ +namespace Content.Server._White.RealRoundEnded; + +public sealed class RealRoundEndedEvent : EntityEventArgs +{ + +} diff --git a/Content.Shared/_White/Lighting/PointLight/Airlock/PointLightAirlockComponent.cs b/Content.Shared/_White/Lighting/PointLight/Airlock/PointLightAirlockComponent.cs index 210f9a2a84..07b302157a 100644 --- a/Content.Shared/_White/Lighting/PointLight/Airlock/PointLightAirlockComponent.cs +++ b/Content.Shared/_White/Lighting/PointLight/Airlock/PointLightAirlockComponent.cs @@ -11,6 +11,9 @@ public sealed partial class PointLightAirlockComponent : Component [ViewVariables] public bool LastBoltsState; + [ViewVariables] + public bool IsEmagged; + [ViewVariables] public readonly string RedColor = "#D56C6C"; diff --git a/Resources/Audio/Lobby/roomishere.ogg b/Resources/Audio/Lobby/Dark/roomishere.ogg similarity index 100% rename from Resources/Audio/Lobby/roomishere.ogg rename to Resources/Audio/Lobby/Dark/roomishere.ogg diff --git a/Resources/Audio/Lobby/saveheaven.ogg b/Resources/Audio/Lobby/Dark/saveheaven.ogg similarity index 100% rename from Resources/Audio/Lobby/saveheaven.ogg rename to Resources/Audio/Lobby/Dark/saveheaven.ogg diff --git a/Resources/Audio/Lobby/govnovoz.ogg b/Resources/Audio/Lobby/Meme/Govnovoz1.ogg similarity index 100% rename from Resources/Audio/Lobby/govnovoz.ogg rename to Resources/Audio/Lobby/Meme/Govnovoz1.ogg diff --git a/Resources/Audio/Lobby/govnovoz2.ogg b/Resources/Audio/Lobby/Meme/govnovoz2.ogg similarity index 100% rename from Resources/Audio/Lobby/govnovoz2.ogg rename to Resources/Audio/Lobby/Meme/govnovoz2.ogg diff --git a/Resources/Audio/Lobby/govnovoz3.ogg b/Resources/Audio/Lobby/Meme/govnovoz3.ogg similarity index 100% rename from Resources/Audio/Lobby/govnovoz3.ogg rename to Resources/Audio/Lobby/Meme/govnovoz3.ogg diff --git a/Resources/Audio/Lobby/govnovoz4.ogg b/Resources/Audio/Lobby/Meme/govnovoz4.ogg similarity index 100% rename from Resources/Audio/Lobby/govnovoz4.ogg rename to Resources/Audio/Lobby/Meme/govnovoz4.ogg diff --git a/Resources/Audio/Lobby/absconditus.ogg b/Resources/Audio/Lobby/SS13/absconditus.ogg similarity index 100% rename from Resources/Audio/Lobby/absconditus.ogg rename to Resources/Audio/Lobby/SS13/absconditus.ogg diff --git a/Resources/Audio/Lobby/endless_space.ogg b/Resources/Audio/Lobby/SS13/endless_space.ogg similarity index 100% rename from Resources/Audio/Lobby/endless_space.ogg rename to Resources/Audio/Lobby/SS13/endless_space.ogg diff --git a/Resources/Audio/Lobby/mod.flip-flap.ogg b/Resources/Audio/Lobby/SS13/mod.flip-flap.ogg similarity index 100% rename from Resources/Audio/Lobby/mod.flip-flap.ogg rename to Resources/Audio/Lobby/SS13/mod.flip-flap.ogg diff --git a/Resources/Audio/Lobby/pwmur.ogg b/Resources/Audio/Lobby/SS13/pwmur.ogg similarity index 100% rename from Resources/Audio/Lobby/pwmur.ogg rename to Resources/Audio/Lobby/SS13/pwmur.ogg diff --git a/Resources/Audio/Lobby/title2.ogg b/Resources/Audio/Lobby/SS13/title2.ogg similarity index 100% rename from Resources/Audio/Lobby/title2.ogg rename to Resources/Audio/Lobby/SS13/title2.ogg diff --git a/Resources/Audio/Lobby/title3.ogg b/Resources/Audio/Lobby/SS13/title3.ogg similarity index 100% rename from Resources/Audio/Lobby/title3.ogg rename to Resources/Audio/Lobby/SS13/title3.ogg diff --git a/Resources/Audio/Lobby/Songs/CircleAroundTheSun.ogg b/Resources/Audio/Lobby/Songs/CircleAroundTheSun.ogg new file mode 100644 index 0000000000..131125c4d0 Binary files /dev/null and b/Resources/Audio/Lobby/Songs/CircleAroundTheSun.ogg differ diff --git a/Resources/Audio/Lobby/Songs/RetroFilk.ogg b/Resources/Audio/Lobby/Songs/RetroFilk.ogg new file mode 100644 index 0000000000..b134adb3c7 Binary files /dev/null and b/Resources/Audio/Lobby/Songs/RetroFilk.ogg differ diff --git a/Resources/Audio/Lobby/space_asshole.ogg b/Resources/Audio/Lobby/Songs/SpaceAsshole.ogg similarity index 100% rename from Resources/Audio/Lobby/space_asshole.ogg rename to Resources/Audio/Lobby/Songs/SpaceAsshole.ogg diff --git a/Resources/Audio/Lobby/spaceoddity.ogg b/Resources/Audio/Lobby/Songs/SpaceOddity.ogg similarity index 100% rename from Resources/Audio/Lobby/spaceoddity.ogg rename to Resources/Audio/Lobby/Songs/SpaceOddity.ogg diff --git a/Resources/Audio/Lobby/Songs/SpaceShuttle.ogg b/Resources/Audio/Lobby/Songs/SpaceShuttle.ogg new file mode 100644 index 0000000000..e3f839f71b Binary files /dev/null and b/Resources/Audio/Lobby/Songs/SpaceShuttle.ogg differ diff --git a/Resources/Audio/Lobby/Songs/TheSettler.ogg b/Resources/Audio/Lobby/Songs/TheSettler.ogg new file mode 100644 index 0000000000..0cb7edb38d Binary files /dev/null and b/Resources/Audio/Lobby/Songs/TheSettler.ogg differ diff --git a/Resources/Audio/Lobby/Songs/TheWizard.ogg b/Resources/Audio/Lobby/Songs/TheWizard.ogg new file mode 100644 index 0000000000..98eb886b7e Binary files /dev/null and b/Resources/Audio/Lobby/Songs/TheWizard.ogg differ diff --git a/Resources/Audio/Lobby/Spac_Stac.ogg b/Resources/Audio/Lobby/White/Spac_Stac.ogg similarity index 100% rename from Resources/Audio/Lobby/Spac_Stac.ogg rename to Resources/Audio/Lobby/White/Spac_Stac.ogg diff --git a/Resources/Audio/Lobby/atomicamnesiammx.ogg b/Resources/Audio/Lobby/White/atomicamnesiammx.ogg similarity index 100% rename from Resources/Audio/Lobby/atomicamnesiammx.ogg rename to Resources/Audio/Lobby/White/atomicamnesiammx.ogg diff --git a/Resources/Audio/Lobby/comet_haley.ogg b/Resources/Audio/Lobby/White/comet_haley.ogg similarity index 100% rename from Resources/Audio/Lobby/comet_haley.ogg rename to Resources/Audio/Lobby/White/comet_haley.ogg diff --git a/Resources/Audio/Lobby/every_light_is_blinking_at_once.ogg b/Resources/Audio/Lobby/White/every_light_is_blinking_at_once.ogg similarity index 100% rename from Resources/Audio/Lobby/every_light_is_blinking_at_once.ogg rename to Resources/Audio/Lobby/White/every_light_is_blinking_at_once.ogg diff --git a/Resources/Audio/Lobby/lasers_rip_apart_the_bulkhead.ogg b/Resources/Audio/Lobby/White/lasers_rip_apart_the_bulkhead.ogg similarity index 100% rename from Resources/Audio/Lobby/lasers_rip_apart_the_bulkhead.ogg rename to Resources/Audio/Lobby/White/lasers_rip_apart_the_bulkhead.ogg diff --git a/Resources/Audio/Lobby/singuloose.ogg b/Resources/Audio/Lobby/White/singuloose.ogg similarity index 100% rename from Resources/Audio/Lobby/singuloose.ogg rename to Resources/Audio/Lobby/White/singuloose.ogg diff --git a/Resources/Audio/Lobby/thunderdome.ogg b/Resources/Audio/Lobby/White/thunderdome.ogg similarity index 100% rename from Resources/Audio/Lobby/thunderdome.ogg rename to Resources/Audio/Lobby/White/thunderdome.ogg diff --git a/Resources/Audio/Lobby/bobby.ogg b/Resources/Audio/Lobby/bobby.ogg deleted file mode 100644 index 8120e85823..0000000000 Binary files a/Resources/Audio/Lobby/bobby.ogg and /dev/null differ diff --git a/Resources/Audio/Lobby/itachi.ogg b/Resources/Audio/Lobby/itachi.ogg deleted file mode 100644 index 74733274d3..0000000000 Binary files a/Resources/Audio/Lobby/itachi.ogg and /dev/null differ diff --git a/Resources/Audio/Lobby/lolimou.ogg b/Resources/Audio/Lobby/lolimou.ogg deleted file mode 100644 index 3f65191cd4..0000000000 Binary files a/Resources/Audio/Lobby/lolimou.ogg and /dev/null differ diff --git a/Resources/Audio/Lobby/nevergonna.ogg b/Resources/Audio/Lobby/nevergonna.ogg deleted file mode 100644 index 947d3e9f04..0000000000 Binary files a/Resources/Audio/Lobby/nevergonna.ogg and /dev/null differ diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index adcdcd8fff..bdf7e9fbd2 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -237,7 +237,7 @@ - type: entity - parent: ClothingOuterBaseMedium + parent: ClothingOuterBase id: ClothingOuterArmorCaptainCarapace name: captain's carapace description: An armored chestpiece that provides protection whilst still offering maximum mobility and flexibility. Issued only to the station's finest. diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml index 33dc6c6b50..a366a5373f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml @@ -123,6 +123,8 @@ magState: mag steps: 5 zeroVisible: false + - type: Item + storedRotation: 90 - type: Appearance - type: ContainerContainer containers: diff --git a/Resources/Prototypes/SoundCollections/lobby.yml b/Resources/Prototypes/SoundCollections/lobby.yml index 287783fc93..6bb137a633 100644 --- a/Resources/Prototypes/SoundCollections/lobby.yml +++ b/Resources/Prototypes/SoundCollections/lobby.yml @@ -5,34 +5,39 @@ - type: soundCollection id: LobbyMusicMeme files: - - /Audio/Lobby/govnovoz.ogg - - /Audio/Lobby/govnovoz2.ogg - - /Audio/Lobby/govnovoz3.ogg - - /Audio/Lobby/govnovoz4.ogg + - /Audio/Lobby/Meme/Govnovoz1.ogg + - /Audio/Lobby/Meme/Govnovoz2.ogg + - /Audio/Lobby/Meme/Govnovoz3.ogg + - /Audio/Lobby/Meme/Govnovoz.ogg - type: soundCollection id: LobbyMusicSongs files: - - /Audio/Lobby/spaceoddity.ogg - - /Audio/Lobby/space_asshole.ogg + - /Audio/Lobby/Songs/SpaceOddity.ogg + - /Audio/Lobby/Songs/SpaceAsshole.ogg + - /Audio/Lobby/Songs/SpaceShuttle.ogg + - /Audio/Lobby/Songs/TheSettler.ogg + - /Audio/Lobby/Songs/TheWizard.ogg + - /Audio/Lobby/Songs/CircleAroundTheSun.ogg + - /Audio/Lobby/Songs/RetroFilk.ogg - type: soundCollection id: LobbyMusicWhite files: - - /Audio/Lobby/thunderdome.ogg - - /Audio/Lobby/singuloose.ogg - - /Audio/Lobby/lasers_rip_apart_the_bulkhead.ogg - - /Audio/Lobby/every_light_is_blinking_at_once.ogg - - /Audio/Lobby/atomicamnesiammx.ogg - - /Audio/Lobby/Spac_Stac.ogg - - /Audio/Lobby/comet_haley.ogg + - /Audio/Lobby/White/thunderdome.ogg + - /Audio/Lobby/White/singuloose.ogg + - /Audio/Lobby/White/lasers_rip_apart_the_bulkhead.ogg + - /Audio/Lobby/White/every_light_is_blinking_at_once.ogg + - /Audio/Lobby/White/atomicamnesiammx.ogg + - /Audio/Lobby/White/Spac_Stac.ogg + - /Audio/Lobby/White/comet_haley.ogg - type: soundCollection id: LobbyMusicSS13 files: - - /Audio/Lobby/title2.ogg - - /Audio/Lobby/title3.ogg - - /Audio/Lobby/absconditus.ogg - - /Audio/Lobby/endless_space.ogg - - /Audio/Lobby/mod.flip-flap.ogg - - /Audio/Lobby/pwmur.ogg + - /Audio/Lobby/SS13/title2.ogg + - /Audio/Lobby/SS13/title3.ogg + - /Audio/Lobby/SS13/absconditus.ogg + - /Audio/Lobby/SS13/endless_space.ogg + - /Audio/Lobby/SS13/mod.flip-flap.ogg + - /Audio/Lobby/SS13/pwmur.ogg