Разрешаю дать мне денег
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
namespace Content.Server._Amour.StationEvents.Components;
|
||||
|
||||
[RegisterComponent, Access(typeof(SpaceLawChangeRule))]
|
||||
public sealed partial class SpaceLawChangeRuleComponent : Component
|
||||
{
|
||||
|
||||
}
|
||||
110
Content.Server/_Amour/StationEvents/SpaceLawChange.cs
Normal file
110
Content.Server/_Amour/StationEvents/SpaceLawChange.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
11
Resources/Locale/ru-RU/_amour/events/space-law-change.ftl
Normal file
11
Resources/Locale/ru-RU/_amour/events/space-law-change.ftl
Normal 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 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user