mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-10 02:41:18 +03:00
* Scope creep my ass * why was this shit not pushed???? * gone... * fix that * review plus buildd * asfsafsafsafsafas * grug * burber * I'll fix this later * shrimply die * also this * it's snerf or snuthin * assaads * round snend * aaaa * fix this shit for real * actually, don't start GameRules until MapInit now that I think aboot it. * forgot u * don't actually need this part nullable * Deffer comp removal * one liner * do that too * chungus * Honestly makes more sense here, plus WHY are we doing all that shit on "GameRuleAdded" rather than GameRuleStarted(?) * deferred removal :V * aaaaaaaaaaaaaaa * whhop * Whoop * better * landmine that I placed for myself then forgot about lmao * cleanup * FUCKING `!` * gotovo * amogus * please don't check by metadata I beg * waawsasfdfsasfa * sfafsasfafsas * fdsaasffsasfa * code * fix * fasasffasfasfsad * chungaas * I may be stupid * gra * graaaaaaaaaaaaaaaaa * comment * gra * clearing is not predicted and would require major refactors, so don't cache on client. * lame shit :P * last holes * nukeopsfsafsasafsfafsa * why was that shit public bruh * bubrbgwahrghfaka * dynamic * revert change that did nothing lmao
79 lines
2.4 KiB
C#
79 lines
2.4 KiB
C#
using System.Diagnostics.CodeAnalysis;
|
|
using System.Linq;
|
|
using Content.Server.Traitor.Components;
|
|
using Content.Shared.Codewords;
|
|
using Content.Shared.Paper;
|
|
using Robust.Shared.Random;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Content.Server.Traitor.Systems;
|
|
|
|
public sealed partial class TraitorCodePaperSystem : EntitySystem
|
|
{
|
|
[Dependency] private IRobustRandom _random = default!;
|
|
[Dependency] private PaperSystem _paper = default!;
|
|
[Dependency] private CodewordSystem _codewordSystem = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
SubscribeLocalEvent<TraitorCodePaperComponent, MapInitEvent>(OnMapInit);
|
|
}
|
|
|
|
private void OnMapInit(EntityUid uid, TraitorCodePaperComponent component, MapInitEvent args)
|
|
{
|
|
SetupPaper(uid, component);
|
|
}
|
|
|
|
private void SetupPaper(EntityUid uid, TraitorCodePaperComponent? component = null)
|
|
{
|
|
if (!Resolve(uid, ref component))
|
|
return;
|
|
|
|
if (TryComp(uid, out PaperComponent? paperComp))
|
|
{
|
|
if (TryGetTraitorCode(out var paperContent, component))
|
|
{
|
|
_paper.SetContent((uid, paperComp), paperContent);
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool TryGetTraitorCode([NotNullWhen(true)] out string? traitorCode, TraitorCodePaperComponent component)
|
|
{
|
|
traitorCode = null;
|
|
|
|
var codesMessage = new FormattedMessage();
|
|
var codeList = _codewordSystem.GetCodewords(component.CodewordFaction).ToList();
|
|
|
|
if (codeList.Count == 0)
|
|
{
|
|
if (component.FakeCodewords)
|
|
codeList = _codewordSystem.GenerateCodewords(component.CodewordGenerator).ToList();
|
|
else
|
|
codeList = [Loc.GetString("traitor-codes-none")];
|
|
}
|
|
|
|
_random.Shuffle(codeList);
|
|
|
|
int i = 0;
|
|
foreach (var code in codeList)
|
|
{
|
|
i++;
|
|
if (i > component.CodewordAmount && !component.CodewordShowAll)
|
|
break;
|
|
|
|
codesMessage.PushNewline();
|
|
codesMessage.AddMarkupOrThrow(code);
|
|
}
|
|
|
|
if (!codesMessage.IsEmpty)
|
|
{
|
|
if (i == 1)
|
|
traitorCode = Loc.GetString("traitor-codes-message-singular") + codesMessage;
|
|
else
|
|
traitorCode = Loc.GetString("traitor-codes-message-plural") + codesMessage;
|
|
}
|
|
return !codesMessage.IsEmpty;
|
|
}
|
|
}
|