diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index 92c89b58bcf..0d8c1653d7e 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -633,12 +633,12 @@ private void AddSmiteVerbs(GetVerbsEvent args) }; args.Verbs.Add(nyanify); - var killSignName = Loc.GetString("admin-smite-fuck-sign-name").ToLowerInvariant(); // Lust-edit + var killSignName = Loc.GetString("admin-smite-kill-sign-name").ToLowerInvariant(); Verb killSign = new() { Text = killSignName, Category = VerbCategory.Smite, - Icon = new SpriteSpecifier.Rsi(new("_Lust/Objects/Misc/fuck_sign.rsi"), "icon"), // Lust-edit + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/killsign.rsi"), "icon"), Act = () => { EnsureComp(args.Target, out var comp); @@ -646,7 +646,7 @@ private void AddSmiteVerbs(GetVerbsEvent args) Dirty(args.Target, comp); }, Impact = LogImpact.Extreme, - Message = string.Join(": ", killSignName, Loc.GetString("admin-smite-fuck-sign-description")) // Lust-edit + Message = string.Join(": ", killSignName, Loc.GetString("admin-smite-kill-sign-description")) }; args.Verbs.Add(killSign); diff --git a/Content.Server/_Lust/Administration/Systems/AdminVerbSystem.cs b/Content.Server/_Lust/Administration/Systems/AdminVerbSystem.cs new file mode 100644 index 00000000000..ed149dea840 --- /dev/null +++ b/Content.Server/_Lust/Administration/Systems/AdminVerbSystem.cs @@ -0,0 +1,81 @@ + + +using Content.Server.Administration.Managers; +using Content.Shared.Administration; +using Content.Shared.Administration.Components; +using Content.Shared.Database; +using Content.Shared.Verbs; +using Robust.Shared.Map.Components; +using Robust.Shared.Player; +using Robust.Shared.Utility; + +namespace Content.Server._Lust.Administration.Systems; + +public sealed partial class AdminVerbSystem : EntitySystem +{ + [Dependency] private readonly IAdminManager _adminManager = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(GetSmiteVerbs); + } + + private void GetSmiteVerbs(GetVerbsEvent args) + { + if (!TryComp(args.User, out ActorComponent? actor)) + return; + + var player = actor.PlayerSession; + + if (!_adminManager.HasAdminFlag(player, AdminFlags.Fun)) + return; + + // 1984. + if (HasComp(args.Target) || HasComp(args.Target)) + return; + + AddSmiteSign( + "admin-smite-fuck-sign-name", + "admin-smite-fuck-sign-description", + new SpriteSpecifier.Rsi(new("_Lust/Objects/Misc/fucksign.rsi"), "icon"), + new SpriteSpecifier.Rsi(new("_Lust/Objects/Misc/fucksign.rsi"), "sign"), + args + ); + + string[] defaultSmiteNames = ["bald", "cat", "dog", "furry", "nerd", "peak", "raider", "stinky"]; + foreach (var name in defaultSmiteNames) + { + AddSmiteSign( + $"admin-smite-{name}-sign-name", + $"admin-smite-{name}-sign-description", + new SpriteSpecifier.Rsi(new($"/Textures/Objects/Misc/killsign.rsi"), name), + new SpriteSpecifier.Rsi(new($"/Textures/Objects/Misc/killsign.rsi"), name), + args + ); + } + } + + private void AddSmiteSign(string nameLoc, string descLoc, SpriteSpecifier icon, SpriteSpecifier sign, GetVerbsEvent args) + { + var name = Loc.GetString(nameLoc).ToLowerInvariant(); + var description = Loc.GetString(descLoc); + Verb signVerb = new() + { + Text = name, + Category = VerbCategory.Smite, + Icon = icon, + Act = () => + { + EnsureComp(args.Target, out var comp); + comp.Sprite = sign; + comp.HideFromOwner = false; // We set it to false anyway, in case the hidden smite was used beforehand. + Dirty(args.Target, comp); + }, + Impact = LogImpact.Extreme, + Message = string.Join(": ", name, description) + }; + args.Verbs.Add(signVerb); + } +} diff --git a/Resources/Locale/en-US/_strings/_lust/administration/smites.ftl b/Resources/Locale/en-US/_strings/_lust/administration/smites.ftl new file mode 100644 index 00000000000..07b56488877 --- /dev/null +++ b/Resources/Locale/en-US/_strings/_lust/administration/smites.ftl @@ -0,0 +1,26 @@ +admin-smite-fuck-sign-name = FUCK IT +admin-smite-fuck-sign-description = Marks a player with the FUCK IT sign, visible to everyone. + +admin-smite-bald-sign-name = BALD +admin-smite-bald-sign-description = Marks a player with the BALD sign, visible to everyone. + +admin-smite-cat-sign-name = CAT +admin-smite-cat-sign-description = Marks a player with the CAT sign, visible to everyone. + +admin-smite-dog-sign-name = DOG +admin-smite-dog-sign-description = Marks a player with the DOG sign, visible to everyone. + +admin-smite-furry-sign-name = FURRY +admin-smite-furry-sign-description = Marks a player with the FURRY sign, visible to everyone. + +admin-smite-nerd-sign-name = NERD +admin-smite-nerd-sign-description = Marks a player with the NERD sign, visible to everyone. + +admin-smite-peak-sign-name = PEAK +admin-smite-peak-sign-description = Marks a player with the PEAK sign, visible to everyone. + +admin-smite-raider-sign-name = RAIDER +admin-smite-raider-sign-description = Marks a player with the RAIDER sign, visible to everyone. + +admin-smite-stinky-sign-name = STINKY +admin-smite-stinky-sign-description = Marks a player with the STINKY sign, visible to everyone. diff --git a/Resources/Locale/ru-RU/_strings/_lust/fucksign/fucksign.ftl b/Resources/Locale/ru-RU/_strings/_lust/fucksign/fucksign.ftl index 2c6f18a4dc5..78f67c20aa6 100644 --- a/Resources/Locale/ru-RU/_strings/_lust/fucksign/fucksign.ftl +++ b/Resources/Locale/ru-RU/_strings/_lust/fucksign/fucksign.ftl @@ -1,2 +1,26 @@ admin-smite-fuck-sign-name = Грехопадение admin-smite-fuck-sign-description = Накладывает на игрока метку ТРАХНИ ЭТО. + +admin-smite-bald-sign-name = Лысый +admin-smite-bald-sign-description = Накладывает на игрока метку ЛЫСЫЙ. + +admin-smite-cat-sign-name = Кот +admin-smite-cat-sign-description = Накладывает на игрока метку КОТ. + +admin-smite-dog-sign-name = Собака +admin-smite-dog-sign-description = Накладывает на игрока метку СОБАКА. + +admin-smite-furry-sign-name = Фурри +admin-smite-furry-sign-description = Накладывает на игрока метку ФУРРИ. + +admin-smite-nerd-sign-name = Задрот +admin-smite-nerd-sign-description = Накладывает на игрока метку ЗАДРОТ. + +admin-smite-peak-sign-name = ПИК +admin-smite-peak-sign-description = Накладывает на игрока метку ПИК. + +admin-smite-raider-sign-name = Рейдер +admin-smite-raider-sign-description = Накладывает на игрока метку РЕЙДЕР. + +admin-smite-stinky-sign-name = Вонючий +admin-smite-stinky-sign-description = Накладывает на игрока метку ВОНЮЧИЙ.