Разрешаю дать мне денег

This commit is contained in:
Jabak
2024-07-11 14:39:34 +03:00
parent be09ecfdb4
commit 81eff24084
4 changed files with 139 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
namespace Content.Server._Amour.StationEvents.Components;
[RegisterComponent, Access(typeof(SpaceLawChangeRule))]
public sealed partial class SpaceLawChangeRuleComponent : Component
{
}

View File

@@ -0,0 +1,110 @@
using System.Linq;
using Content.Server._Amour.StationEvents.Components;
using Content.Server.Chat.Systems;
using Content.Server.Fax;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.StationEvents.Events;
using Content.Shared.Paper;
using Robust.Shared.Random;
namespace Content.Server._Amour.StationEvents
{
public sealed class SpaceLawChangeRule : StationEventSystem<SpaceLawChangeRuleComponent>
{
[Dependency] private readonly ChatSystem _chat = default!;
[Dependency] private readonly IRobustRandom _robustRandom = default!;
[Dependency] private readonly FaxSystem _faxSystem = default!;
private readonly RandomSelector _randomSelector = default!;
public SpaceLawChangeRule()
{
var options = new List<string>
{
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11"
// Add other message options here if necessary
};
_randomSelector = new RandomSelector(options);
}
protected override void Started(EntityUid uid, SpaceLawChangeRuleComponent component,
GameRuleComponent gameRule, GameRuleStartedEvent args)
{
base.Started(uid, component, gameRule, args);
var randomMessage = _randomSelector.GetRandom(_robustRandom);
var message = Loc.GetString($"station-event-space-law-change-announcement-{randomMessage}");
_chat.DispatchGlobalAnnouncement(message, playSound: true, colorOverride: Color.Gold);
SendSpaceLawChangeFax(message);
}
/// <summary>
/// Sending a fax announcing changes in Space Law
/// </summary>
private void SendSpaceLawChangeFax(string message)
{
var printout = new FaxPrintout(
message,
Loc.GetString("materials-paper"),
stampedBy: new List<StampDisplayInfo>
{
new() { StampedName = Loc.GetString("stamp-component-stamped-name-centcom"), StampedColor = Color.FromHex("#006600") }
},
prototypeId: null!,
stampState: null);
var faxes = EntityManager.EntityQuery<FaxMachineComponent>();
foreach (var fax in faxes)
{
_faxSystem.Receive(fax.Owner, printout, null, fax);
}
}
}
/// <summary>
/// Randomly selects an option from the list. Selected options cannot be selected again until all unselected options are exhausted.
/// </summary>
public class RandomSelector
{
private readonly List<string> _options;
private readonly List<string> _exclusions;
public RandomSelector(List<string> options)
{
_options = options;
_exclusions = new List<string>();
}
public string GetRandom(IRobustRandom robustRandom)
{
if (_exclusions.Count >= _options.Count)
_exclusions.Clear();
var availableOptions = _options.Except(_exclusions).ToList();
if (availableOptions.Count == 0)
{
_exclusions.Clear();
availableOptions = _options.ToList();
}
var selectedOption = robustRandom.PickAndTake(availableOptions);
_exclusions.Add(selectedOption);
return selectedOption;
}
}
}

View File

@@ -0,0 +1,11 @@
station-event-space-law-change-announcement-1 = В связи с недавними изменениями корпоративной политики, юбки и шорты теперь запрещены законом о космосе под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-2 = В связи с недавними изменениями корпоративной политики, кухонные ножи теперь запрещены законом под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-3 = В связи с недавними изменениями в корпоративной политике, головные уборы и береты теперь запрещены законом о космосе под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-4 = В связи с недавними изменениями корпоративной политики зимние куртки теперь запрещены законом о космосе под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-5 = В связи с недавними изменениями в корпоративной политике, алкогольные напитки теперь запрещены законом о космосе под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-6 = В связи с недавними изменениями в корпоративной политике, несмешные клоуны теперь запрещены законом под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-7 = В связи с недавними изменениями в корпоративной политике, продукты со специями теперь запрещены законом о космосе под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-8 = В связи с недавними изменениями в корпоративной политике деятельность руководителей отделов, которые не уделяют должного внимания патриотическому воспитанию своих сотрудников во славу NanoTrasen, теперь считается незаконной под кодовым номером “1XX” Космического закона. Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-9 = В связи с недавними изменениями в корпоративной политике, ношение головного убора теперь запрещено космическим законодательством под кодовым номером "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-10 = В связи с недавними изменениями в корпоративной политике, отказ руководителей отделов лично поприветствовать каждого члена экипажа, посещающего отдел, теперь является незаконным в соответствии с кодом космического права "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
station-event-space-law-change-announcement-11 = В связи с недавними изменениями в корпоративной политике, нецензурная лексика руководителей подразделений в каналах связи теперь считается незаконной в соответствии с кодом космического права "1XX". Вы обязаны немедленно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.

View File

@@ -503,3 +503,14 @@
minimumPlayers: 20
weight: 5
- type: MobReplacementRule
- type: entity
id: SpaceLawChange
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
weight: 8
reoccurrenceDelay: 20
duration: 1
- type: SpaceLawChangeRule