From 63bd8615be657b6c63cc9a1e0a999d4b5cfb8763 Mon Sep 17 00:00:00 2001 From: chavonadelal Date: Fri, 29 Nov 2024 16:33:43 +0300 Subject: [PATCH 1/6] Adding a new SpaceLawChange station event --- .../Components/SpaceLawChangeRuleComponent.cs | 32 ++++ .../StationEvents/Events/SpaceLawChange.cs | 143 ++++++++++++++++++ .../events/space-law-change.ftl | 62 ++++++++ .../_CorvaxNext/Datasets/space_law_change.yml | 5 + .../_CorvaxNext/GameRules/events.yml | 14 ++ 5 files changed, 256 insertions(+) create mode 100644 Content.Server/_CorvaxNext/StationEvents/Components/SpaceLawChangeRuleComponent.cs create mode 100644 Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs create mode 100644 Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl create mode 100644 Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml create mode 100644 Resources/Prototypes/_CorvaxNext/GameRules/events.yml diff --git a/Content.Server/_CorvaxNext/StationEvents/Components/SpaceLawChangeRuleComponent.cs b/Content.Server/_CorvaxNext/StationEvents/Components/SpaceLawChangeRuleComponent.cs new file mode 100644 index 00000000000..b8cbb2ddd9a --- /dev/null +++ b/Content.Server/_CorvaxNext/StationEvents/Components/SpaceLawChangeRuleComponent.cs @@ -0,0 +1,32 @@ +using Content.Server._CorvaxNext.StationEvents.Events; +using Content.Shared.Dataset; +using Robust.Shared.Prototypes; + +namespace Content.Server._CorvaxNext.StationEvents.Components +{ + [RegisterComponent, Access(typeof(SpaceLawChangeRule))] + public sealed partial class SpaceLawChangeRuleComponent : Component + { + /// + /// Localization key of a random message selected for the current event + /// + /// + /// Do not set an initial value for this field! + /// + [DataField] + public string? RandomMessage { get; set; } + + /// + /// A localized dataset containing the initial list of all laws for the event + /// + [DataField] + public ProtoId LawLocalizedDataset { get; set; } + + /// + /// Time before changes to the law come into force. + /// Necessary for establish the delay in sending information about the law coming into force + /// + [DataField] + public int AdaptationTime { get; set; } = 10; + } +} diff --git a/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs b/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs new file mode 100644 index 00000000000..baaf73b62ce --- /dev/null +++ b/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs @@ -0,0 +1,143 @@ +using System.Linq; +using Content.Server.Chat.Systems; +using Content.Server.Fax; +using Content.Shared.GameTicking.Components; +using Content.Server.GameTicking; +using Content.Shared.Paper; +using Content.Shared.Dataset; +using Robust.Shared.Random; +using Content.Shared.Fax.Components; +using Content.Server.StationEvents.Events; +using Robust.Shared.Timing; +using Robust.Shared.Prototypes; +using Content.Server._CorvaxNext.StationEvents.Components; + +namespace Content.Server._CorvaxNext.StationEvents.Events +{ + public sealed class SpaceLawChangeRule : StationEventSystem + { + [Dependency] private readonly ChatSystem _chat = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly FaxSystem _faxSystem = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly GameTicker _gameTicker = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + + /// + /// Sequence of laws to be used for the current event + /// + private List _sequenceLaws = new(); + + protected override void Started(EntityUid uid, SpaceLawChangeRuleComponent component, + GameRuleComponent gameRule, GameRuleStartedEvent args) + { + base.Started(uid, component, gameRule, args); + + // Loading a prototype dataset + if (!_prototypeManager.TryIndex(component.LawLocalizedDataset, out var dataset)) + { + Logger.Error($"LocalizedDatasetPrototype not found: {component.LawLocalizedDataset}"); + return; + } + + + // Initializing the list of laws if it is empty + if (_sequenceLaws.Count == 0) + { + _sequenceLaws.AddRange(dataset.Values); + } + // Getting active laws from currently active rules + var activeLaws = GetActiveSpaceLaws(); + + // Excluding active laws from selection + var availableLaws = _sequenceLaws.Except(activeLaws).ToList(); + if (availableLaws.Count == 0) + { + availableLaws = _sequenceLaws; + } + + // Selecting a random law from the available ones + var randomLaw = _robustRandom.Pick(availableLaws); + component.RandomMessage = randomLaw; + + var stationTime = _gameTiming.CurTime.Subtract(_gameTicker.RoundStartTimeSpan); + + var message = Loc.GetString("station-event-space-law-change-announcement", + ("essence", Loc.GetString(component.RandomMessage)), + ("time", component.AdaptationTime)); + + var faxMessage = Loc.GetString("station-event-space-law-change-fax-announcement", + ("faxEssence", message), + ("stationTime", stationTime.ToString("hh\\:mm\\:ss"))); + + // Sending a global announcement + _chat.DispatchGlobalAnnouncement(message, playSound: true, colorOverride: Color.Gold); + SendSpaceLawChangeFax(faxMessage); + + // Start a timer to send a confirmation message after AdaptationTime minutes + Timer.Spawn(TimeSpan.FromMinutes(component.AdaptationTime), () => SendConfirmationMessage(uid)); + } + + /// + /// Getting active laws from currently active rules + /// + private List GetActiveSpaceLaws() + { + var activeLaws = new List(); + foreach (var rule in _gameTicker.GetActiveGameRules()) + { + if (_entityManager.TryGetComponent(rule, out SpaceLawChangeRuleComponent? spaceLawComponent)) + { + if (!string.IsNullOrEmpty(spaceLawComponent.RandomMessage)) + { + activeLaws.Add(spaceLawComponent.RandomMessage); + } + } + } + return activeLaws; + } + + /// + /// Sending a confirmation message about the entry into force of changes in Space Law + /// + private void SendConfirmationMessage(EntityUid uid) + { + if (!_entityManager.TryGetComponent(uid, out SpaceLawChangeRuleComponent? component) || component.RandomMessage == null) + { + Logger.Error($"Failed to send confirmation message for SpaceLawChangeRule for entity {uid}: Component or RandomMessage is null."); + return; + } + + var confirmationMessage = Loc.GetString("station-event-space-law-change-announcement-confirmation", ("essence", Loc.GetString(component.RandomMessage))); + var faxConfirmationMessage = Loc.GetString("station-event-space-law-change-announcement-fax-confirmation", ("faxEssence", confirmationMessage)); + _chat.DispatchGlobalAnnouncement(confirmationMessage, playSound: true, colorOverride: Color.Gold); + SendSpaceLawChangeFax(faxConfirmationMessage); + } + + /// + /// Sending a fax announcing changes in Space Law + /// + private void SendSpaceLawChangeFax(string message) + { + var printout = new FaxPrintout( + message, + Loc.GetString("materials-paper"), + null, + null, + "paper_stamp-centcom", + new List + { + new() { StampedName = Loc.GetString("stamp-component-stamped-name-centcom"), StampedColor = Color.FromHex("#006600") } + }); + + var faxes = _entityManager.EntityQuery(); + foreach (var fax in faxes) + { + if (!fax.ReceiveStationGoal) + continue; + _faxSystem.Receive(fax.Owner, printout, Loc.GetString("station-event-space-law-change-fax-sender"), fax); + } + } + } +} diff --git a/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl b/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl new file mode 100644 index 00000000000..77a8f41b488 --- /dev/null +++ b/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl @@ -0,0 +1,62 @@ +station-event-space-law-change-fax-start = [color=#b8972d]███[/color][color=#1d7a1d]░███░░░░██░░░░[/color][color=#b8972d] ★ ★ ★[/color][color=#1d7a1d] + ░██░████░░░██░░░░ [head=3]Бланк документа[/head] + ░░█░██░██░░██░█░░ [head=3]NanoTrasen[/head] + ░░░░██░░██░██░██░ [bold]ЦК-КОМ[/bold] + ░░░░██░░░████░[/color][color=#b8972d]███[/color][color=#b8972d] ★ ★ ★[/color] + ==================================================[bold] + УВЕДОМЛЕНИЕ О ИЗМЕНЕНИИ КОРПОРАТИВНОГО ЗАКОНА[/bold] + ================================================== +station-event-space-law-change-fax-end = + Слава NanoTrasen! + ==================================================[italic] + Место для печати[/italic] + +station-event-space-law-change-fax-sender = Центральное Командование + + +# Уведомление о начале переходного периода +station-event-space-law-change-fax-announcement = + { station-event-space-law-change-fax-start } + { $faxEssence } + Продолжительность смены на момент отправки факса: { $stationTime } + { station-event-space-law-change-fax-end } + +station-event-space-law-change-announcement = В связи с последними изменениями в корпоративной политике, { $essence } теперь признается (или признаются) незаконным(-ыми) по кодовому номеру «XX1» Корпоративного закона. В ваших интересах незамедлительно исправить ситуацию до вступления изменений в силу через { $time } минут. Служба безопасности и Командование обязаны приложить все возможные усилия для обеспечения полного соответствия станции требованиям закона к моменту окончания периода адаптации. + + +# Уведомление о завершении переходного периода +station-event-space-law-change-announcement-fax-confirmation = + { station-event-space-law-change-fax-start } + { $faxEssence } + { station-event-space-law-change-fax-end } + +station-event-space-law-change-announcement-confirmation = Уведомляем вас о вступлении в силу изменений в Корпоративном законе, связанных с недавними изменениями в корпоративной политике. Теперь { $essence } признается (или признаются) незаконным(-ыми) по кодовому номеру «XX1» Корпоративного закона. + + +# spaceLawChangeLaws localizedDataset +station-event-space-law-change-essence-1 = юбки и шорты +station-event-space-law-change-essence-2 = кухонные ножи +station-event-space-law-change-essence-3 = шляпы и береты +station-event-space-law-change-essence-4 = зимние куртки +station-event-space-law-change-essence-5 = алкогольные напитки +station-event-space-law-change-essence-6 = сигареты +station-event-space-law-change-essence-7 = острая пища +station-event-space-law-change-essence-8 = деятельность руководителей отделов, которые не уделяют должного внимания патриотическому воспитанию своих сотрудников во славу NanoTrasen +station-event-space-law-change-essence-9 = не ношение головного убора +station-event-space-law-change-essence-10 = неисполнение главой отдела личного приветствия каждого члена экипажа, посещающего его отдел +station-event-space-law-change-essence-11 = смерть +station-event-space-law-change-essence-12 = сон +station-event-space-law-change-essence-13 = безработица +station-event-space-law-change-essence-14 = не ношение сотрудниками отдела Службы безопаности униформы клоуна +station-event-space-law-change-essence-15 = обувь +station-event-space-law-change-essence-16 = ведение бумажной документации +station-event-space-law-change-essence-17 = общение не шепотом вне каналов связи +station-event-space-law-change-essence-18 = попытки убедить Капитана станции в существовании мировых заговоров +station-event-space-law-change-essence-19 = введение в оборот фруктов и овощей нового урожая без предварительной дегустации каждого вида Главой персонала +station-event-space-law-change-essence-20 = общение с ИИ без предварительного соблюдения ритуала "Трижды назови свои законы" +station-event-space-law-change-essence-21 = попытки объяснить Капитану станции, как работает станция +station-event-space-law-change-essence-22 = отказ реже чем раз в 5 минут танцевать в присутствии клоуна, если он объявил "Танцевальное безумие" +station-event-space-law-change-essence-23 = неисполнение приветствия "Привет, товарищи" при входе в Бриг +station-event-space-law-change-essence-24 = рассказы о событиях, которые противоречат официальным отчетам отдела Службы безопасности +station-event-space-law-change-essence-25 = отказ участвовать в поедании любого блюда с заявленным шеф-поваром "секретным NanoTrasen-ингредиентом" +station-event-space-law-change-essence-26 = обращение к утилизатору не как "Джентльмен глубин" при каждом личном обращении diff --git a/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml b/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml new file mode 100644 index 00000000000..7b3fd1c7a24 --- /dev/null +++ b/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: spaceLawChangeLaws + values: + prefix: station-event-space-law-change-essence- + count: 26 diff --git a/Resources/Prototypes/_CorvaxNext/GameRules/events.yml b/Resources/Prototypes/_CorvaxNext/GameRules/events.yml new file mode 100644 index 00000000000..df43b79fc3e --- /dev/null +++ b/Resources/Prototypes/_CorvaxNext/GameRules/events.yml @@ -0,0 +1,14 @@ +- type: entity + id: SpaceLawChange + parent: BaseGameRule + noSpawn: true + components: + - type: StationEvent + weight: 5 + maxOccurrences: 1 # can only happen 1 time per round + duration: null # the rule has to last the whole round + - type: GameRule + minPlayers: 20 + - type: SpaceLawChangeRule + lawLocalizedDataset: spaceLawChangeLaws + adaptationTime: 10 From 247af5948e82fc7676684e57071bcdb2b1ee9a74 Mon Sep 17 00:00:00 2001 From: AwareFoxy Date: Sat, 30 Nov 2024 00:16:33 +0100 Subject: [PATCH 2/6] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=87=D1=83=D1=82-=D1=87=D1=83=D1=82=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B7=D0=B0=D0=BA=D0=BE=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_CorvaxNext/station-events/events/space-law-change.ftl | 4 ++++ .../Prototypes/_CorvaxNext/Datasets/space_law_change.yml | 2 +- Resources/Prototypes/_CorvaxNext/GameRules/events.yml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl b/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl index 77a8f41b488..8f66cfaca98 100644 --- a/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl +++ b/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl @@ -60,3 +60,7 @@ station-event-space-law-change-essence-23 = неисполнение приве station-event-space-law-change-essence-24 = рассказы о событиях, которые противоречат официальным отчетам отдела Службы безопасности station-event-space-law-change-essence-25 = отказ участвовать в поедании любого блюда с заявленным шеф-поваром "секретным NanoTrasen-ингредиентом" station-event-space-law-change-essence-26 = обращение к утилизатору не как "Джентльмен глубин" при каждом личном обращении +station-event-space-law-change-essence-27 = перерывы +station-event-space-law-change-essence-28 = проведение хирургических операций +station-event-space-law-change-essence-29 = лечение при помощи лекарственных средств +station-event-space-law-change-essence-30 = использование оглушающего оружия diff --git a/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml b/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml index 7b3fd1c7a24..9122a6f3d3e 100644 --- a/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml +++ b/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml @@ -2,4 +2,4 @@ id: spaceLawChangeLaws values: prefix: station-event-space-law-change-essence- - count: 26 + count: 30 diff --git a/Resources/Prototypes/_CorvaxNext/GameRules/events.yml b/Resources/Prototypes/_CorvaxNext/GameRules/events.yml index df43b79fc3e..e908b55b864 100644 --- a/Resources/Prototypes/_CorvaxNext/GameRules/events.yml +++ b/Resources/Prototypes/_CorvaxNext/GameRules/events.yml @@ -8,7 +8,7 @@ maxOccurrences: 1 # can only happen 1 time per round duration: null # the rule has to last the whole round - type: GameRule - minPlayers: 20 + minPlayers: 50 - type: SpaceLawChangeRule lawLocalizedDataset: spaceLawChangeLaws adaptationTime: 10 From 0720f8aef999e0091948a667c1c3ecd4d97c2930 Mon Sep 17 00:00:00 2001 From: AwareFoxy Date: Sat, 30 Nov 2024 00:51:50 +0100 Subject: [PATCH 3/6] noSpawn >>> abstract --- Resources/Prototypes/_CorvaxNext/GameRules/events.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_CorvaxNext/GameRules/events.yml b/Resources/Prototypes/_CorvaxNext/GameRules/events.yml index e908b55b864..bfde4a88eee 100644 --- a/Resources/Prototypes/_CorvaxNext/GameRules/events.yml +++ b/Resources/Prototypes/_CorvaxNext/GameRules/events.yml @@ -1,7 +1,7 @@ - type: entity id: SpaceLawChange parent: BaseGameRule - noSpawn: true + abstract: true components: - type: StationEvent weight: 5 From 3032c9bf33527be9e48b18140e33c11a89a2a6bd Mon Sep 17 00:00:00 2001 From: AwareFoxy Date: Sun, 1 Dec 2024 13:00:35 +0100 Subject: [PATCH 4/6] remove lrp laws --- .../events/space-law-change.ftl | 30 +++++++------------ .../_CorvaxNext/Datasets/space_law_change.yml | 2 +- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl b/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl index 8f66cfaca98..dafed049c31 100644 --- a/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl +++ b/Resources/Locale/ru-RU/_CorvaxNext/station-events/events/space-law-change.ftl @@ -44,23 +44,13 @@ station-event-space-law-change-essence-7 = острая пища station-event-space-law-change-essence-8 = деятельность руководителей отделов, которые не уделяют должного внимания патриотическому воспитанию своих сотрудников во славу NanoTrasen station-event-space-law-change-essence-9 = не ношение головного убора station-event-space-law-change-essence-10 = неисполнение главой отдела личного приветствия каждого члена экипажа, посещающего его отдел -station-event-space-law-change-essence-11 = смерть -station-event-space-law-change-essence-12 = сон -station-event-space-law-change-essence-13 = безработица -station-event-space-law-change-essence-14 = не ношение сотрудниками отдела Службы безопаности униформы клоуна -station-event-space-law-change-essence-15 = обувь -station-event-space-law-change-essence-16 = ведение бумажной документации -station-event-space-law-change-essence-17 = общение не шепотом вне каналов связи -station-event-space-law-change-essence-18 = попытки убедить Капитана станции в существовании мировых заговоров -station-event-space-law-change-essence-19 = введение в оборот фруктов и овощей нового урожая без предварительной дегустации каждого вида Главой персонала -station-event-space-law-change-essence-20 = общение с ИИ без предварительного соблюдения ритуала "Трижды назови свои законы" -station-event-space-law-change-essence-21 = попытки объяснить Капитану станции, как работает станция -station-event-space-law-change-essence-22 = отказ реже чем раз в 5 минут танцевать в присутствии клоуна, если он объявил "Танцевальное безумие" -station-event-space-law-change-essence-23 = неисполнение приветствия "Привет, товарищи" при входе в Бриг -station-event-space-law-change-essence-24 = рассказы о событиях, которые противоречат официальным отчетам отдела Службы безопасности -station-event-space-law-change-essence-25 = отказ участвовать в поедании любого блюда с заявленным шеф-поваром "секретным NanoTrasen-ингредиентом" -station-event-space-law-change-essence-26 = обращение к утилизатору не как "Джентльмен глубин" при каждом личном обращении -station-event-space-law-change-essence-27 = перерывы -station-event-space-law-change-essence-28 = проведение хирургических операций -station-event-space-law-change-essence-29 = лечение при помощи лекарственных средств -station-event-space-law-change-essence-30 = использование оглушающего оружия +station-event-space-law-change-essence-11 = безработица +station-event-space-law-change-essence-12 = обувь +station-event-space-law-change-essence-13 = ведение бумажной документации +station-event-space-law-change-essence-14 = общение не шепотом вне каналов связи +station-event-space-law-change-essence-15 = попытки убедить Капитана станции в существовании мировых заговоров +station-event-space-law-change-essence-16 = введение в оборот фруктов и овощей нового урожая без предварительной дегустации каждого вида Главой персонала +station-event-space-law-change-essence-17 = неисполнение приветствия "Привет, товарищи" при входе в Бриг +station-event-space-law-change-essence-18 = рассказы о событиях, которые противоречат официальным отчетам отдела Службы безопасности +station-event-space-law-change-essence-19 = перерывы +station-event-space-law-change-essence-20 = проведение хирургических операций diff --git a/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml b/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml index 9122a6f3d3e..257317676ec 100644 --- a/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml +++ b/Resources/Prototypes/_CorvaxNext/Datasets/space_law_change.yml @@ -2,4 +2,4 @@ id: spaceLawChangeLaws values: prefix: station-event-space-law-change-essence- - count: 30 + count: 20 From d9d2e34f214fdeb1a2a06be198223c97754ae532 Mon Sep 17 00:00:00 2001 From: AwareFoxy Date: Tue, 3 Dec 2024 18:28:57 +0100 Subject: [PATCH 5/6] =?UTF-8?q?=D0=BB=D1=80=D0=BF=20=D1=86=D0=B2=D0=B0?= =?UTF-8?q?=D1=80=D0=BD=D0=B8=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_CorvaxNext/StationEvents/Events/SpaceLawChange.cs | 6 ++++++ Content.Shared/_CorvaxNext/NextVars.cs | 6 ++++++ Resources/ConfigPresets/Corvax/main.toml | 3 +++ 3 files changed, 15 insertions(+) diff --git a/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs b/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs index baaf73b62ce..a2fde5ec715 100644 --- a/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs +++ b/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs @@ -3,6 +3,7 @@ using Content.Server.Fax; using Content.Shared.GameTicking.Components; using Content.Server.GameTicking; +using Content.Shared._CorvaxNext.NextVars; using Content.Shared.Paper; using Content.Shared.Dataset; using Robust.Shared.Random; @@ -10,6 +11,7 @@ using Content.Server.StationEvents.Events; using Robust.Shared.Timing; using Robust.Shared.Prototypes; +using Robust.Shared.Configuration; using Content.Server._CorvaxNext.StationEvents.Components; namespace Content.Server._CorvaxNext.StationEvents.Events @@ -23,6 +25,7 @@ public sealed class SpaceLawChangeRule : StationEventSystem /// Sequence of laws to be used for the current event @@ -34,6 +37,9 @@ protected override void Started(EntityUid uid, SpaceLawChangeRuleComponent compo { base.Started(uid, component, gameRule, args); + if (!_cfg.GetCVar(NextVars.LRPEnabled)) + return; + // Loading a prototype dataset if (!_prototypeManager.TryIndex(component.LawLocalizedDataset, out var dataset)) { diff --git a/Content.Shared/_CorvaxNext/NextVars.cs b/Content.Shared/_CorvaxNext/NextVars.cs index 9f355adbfec..8d2780dc8ea 100644 --- a/Content.Shared/_CorvaxNext/NextVars.cs +++ b/Content.Shared/_CorvaxNext/NextVars.cs @@ -41,4 +41,10 @@ public sealed class NextVars // public static readonly CVarDef OfferModeIndicatorsPointShow = // CVarDef.Create("hud.offer_mode_indicators_point_show", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + /// + /// LRP CVar + /// + public static readonly CVarDef LRPEnabled = + CVarDef.Create("lrp.enabled", false, CVar.SERVERONLY); } diff --git a/Resources/ConfigPresets/Corvax/main.toml b/Resources/ConfigPresets/Corvax/main.toml index 4b91f6fbc92..bda7655b27a 100644 --- a/Resources/ConfigPresets/Corvax/main.toml +++ b/Resources/ConfigPresets/Corvax/main.toml @@ -25,3 +25,6 @@ time = 180.0 [hub] advertise = true tags = "lang:ru,rp:low,rp:med,region:eu_e,tts" + +[lrp] # Corvax-Next-LRP +enabled = true From 0223e54d761dc49dfdfd2ee6b23b4556397b31c0 Mon Sep 17 00:00:00 2001 From: AwareFoxy <135021509+AwareFoxy@users.noreply.github.com> Date: Fri, 6 Dec 2024 23:36:12 +0100 Subject: [PATCH 6/6] Apply suggestions from code review Co-authored-by: FN <37689533+FireNameFN@users.noreply.github.com> --- .../_CorvaxNext/StationEvents/Events/SpaceLawChange.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs b/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs index a2fde5ec715..e8a1960ff8d 100644 --- a/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs +++ b/Content.Server/_CorvaxNext/StationEvents/Events/SpaceLawChange.cs @@ -38,7 +38,7 @@ protected override void Started(EntityUid uid, SpaceLawChangeRuleComponent compo base.Started(uid, component, gameRule, args); if (!_cfg.GetCVar(NextVars.LRPEnabled)) - return; + return; // Loading a prototype dataset if (!_prototypeManager.TryIndex(component.LawLocalizedDataset, out var dataset)) @@ -57,7 +57,7 @@ protected override void Started(EntityUid uid, SpaceLawChangeRuleComponent compo var activeLaws = GetActiveSpaceLaws(); // Excluding active laws from selection - var availableLaws = _sequenceLaws.Except(activeLaws).ToList(); + var availableLaws = _sequenceLaws.Except(activeLaws).ToArray(); if (availableLaws.Count == 0) { availableLaws = _sequenceLaws;