From: Tayrtahn Date: Mon, 14 Apr 2025 17:38:21 +0000 (-0400) Subject: Convert spam letters to a LocalizedDataset (#36393) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=110ed2736f5d801b00a27e2caec3ef83107dd058;p=space-station-14.git Convert spam letters to a LocalizedDataset (#36393) * Convert spam letters to a LocalizedDataset * Error -> warning * Comments * Add migrations for old spam mail entities --- diff --git a/Content.Shared/Paper/PaperSystem.cs b/Content.Shared/Paper/PaperSystem.cs index 6fda16b1f3..5e89e77682 100644 --- a/Content.Shared/Paper/PaperSystem.cs +++ b/Content.Shared/Paper/PaperSystem.cs @@ -4,18 +4,22 @@ using Content.Shared.UserInterface; using Content.Shared.Database; using Content.Shared.Examine; using Content.Shared.Interaction; +using Content.Shared.Random.Helpers; using Content.Shared.Popups; using Content.Shared.Tag; using Robust.Shared.Player; using Robust.Shared.Audio.Systems; using static Content.Shared.Paper.PaperComponent; using Robust.Shared.Prototypes; +using Robust.Shared.Random; namespace Content.Shared.Paper; public sealed class PaperSystem : EntitySystem { [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly IPrototypeManager _protoMan = default!; + [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; @@ -27,6 +31,8 @@ public sealed class PaperSystem : EntitySystem private static readonly ProtoId WriteIgnoreStampsTag = "WriteIgnoreStamps"; private static readonly ProtoId WriteTag = "Write"; + private EntityQuery _paperQuery; + public override void Initialize() { base.Initialize(); @@ -38,7 +44,11 @@ public sealed class PaperSystem : EntitySystem SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnInputTextMessage); + SubscribeLocalEvent(OnRandomPaperContentMapInit); + SubscribeLocalEvent(OnPaperWrite); + + _paperQuery = GetEntityQuery(); } private void OnMapInit(Entity entity, ref MapInitEvent args) @@ -203,6 +213,30 @@ public sealed class PaperSystem : EntitySystem UpdateUserInterface(entity); } + private void OnRandomPaperContentMapInit(Entity ent, ref MapInitEvent args) + { + if (!_paperQuery.TryComp(ent, out var paperComp)) + { + Log.Warning($"{EntityManager.ToPrettyString(ent)} has a {nameof(RandomPaperContentComponent)} but no {nameof(PaperComponent)}!"); + RemCompDeferred(ent, ent.Comp); + return; + } + var dataset = _protoMan.Index(ent.Comp.Dataset); + // Intentionally not using the Pick overload that directly takes a LocalizedDataset, + // because we want to get multiple attributes from the same pick. + var pick = _random.Pick(dataset.Values); + + // Name + _metaSystem.SetEntityName(ent, Loc.GetString(pick)); + // Description + _metaSystem.SetEntityDescription(ent, Loc.GetString($"{pick}.desc")); + // Content + SetContent((ent, paperComp), Loc.GetString($"{pick}.content")); + + // Our work here is done + RemCompDeferred(ent, ent.Comp); + } + private void OnPaperWrite(Entity entity, ref PaperWriteEvent args) { _interaction.UseInHandInteraction(args.User, entity); diff --git a/Content.Shared/Paper/RandomPaperContentComponent.cs b/Content.Shared/Paper/RandomPaperContentComponent.cs new file mode 100644 index 0000000000..2176c33fe8 --- /dev/null +++ b/Content.Shared/Paper/RandomPaperContentComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Dataset; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Paper; + +/// +/// If added to an entity that has a , the name, +/// description and contents of the paper will be replaced with a random +/// entry from the specified . +/// Requires . +/// +[RegisterComponent] +public sealed partial class RandomPaperContentComponent : Component +{ + [DataField(required: true)] + public ProtoId Dataset; +} diff --git a/Resources/Locale/en-US/delivery/delivery-spam.ftl b/Resources/Locale/en-US/delivery/delivery-spam.ftl index 3659397552..11bee52929 100644 --- a/Resources/Locale/en-US/delivery/delivery-spam.ftl +++ b/Resources/Locale/en-US/delivery/delivery-spam.ftl @@ -1,6 +1,8 @@ # All spelling mistakes and broken english are intentional! # I hate saving paper contents in ftl files +## Headers and reusable elements + -delivery-header-nanotrasen = [color=blue] ╔══════════════════╗ ║███░███░░░░██░░░░░║ @@ -28,215 +30,239 @@ ║░░░░░████████░░░░░║ ╚══════════════════╝[/color] +## Spam letters -delivery-spam-robust-toolboxes = [color=blue][head=1] - ░░▄▀░░ - ░▄█▄▄▀ [head=3]ROBUST - TOOLBOXES AND TOOLS[/head] - ██▀░░░ [/head][/color] - - {"[bold]BUY ONE TOOLBOX, GET ONE SET OF TOOLS FOR FREE![/bold]"} +delivery-spam-1 = Robust Toolbox - Special Offer! + .desc = An advertisement for robust toolboxes. + .content = [color=blue][head=1] + ░░▄▀░░ + ░▄█▄▄▀ [head=3]ROBUST - TOOLBOXES AND TOOLS[/head] + ██▀░░░ [/head][/color] - AS YOU ARE ONE OF OUR VALUED CUSTOMERS, YOU GET A CUSTOMER BONUS, YOUR TOOLS COME RUST AND LEAD-FREE!!! ISN'T THAT AMAZING? THE TOOLBOX ON THE OTHER HAND, COMES WITH EXTRA LEAD! AMAZING FOR SMASHING SKULLS AND STOPPING RADIATION ALIKE! + {"[bold]BUY ONE TOOLBOX, GET ONE SET OF TOOLS FOR FREE![/bold]"} - {"[bold]ALL THIS AND POSSIBLY MORE FOR ONLY ONE ORGAN![/bold]"} + AS YOU ARE ONE OF OUR VALUED CUSTOMERS, YOU GET A CUSTOMER BONUS, YOUR TOOLS COME RUST AND LEAD-FREE!!! ISN'T THAT AMAZING? THE TOOLBOX ON THE OTHER HAND, COMES WITH EXTRA LEAD! AMAZING FOR SMASHING SKULLS AND STOPPING RADIATION ALIKE! - ROBUST - TOOLBOXES AND TOOLS: - -LEAD AND ASBESTOS FREE! - -OR WITH LEAD AND ASBESTOS, IF YOU PREFER! - -CHEAP! ONLY ONE ORGAN! THAT'S LESS THAN TWO ORGANS! - -DOESN'T HAVE TO BE YOUR ORGAN! WE DON'T JUDGE! + {"[bold]ALL THIS AND POSSIBLY MORE FOR ONLY ONE ORGAN![/bold]"} -delivery-spam-reasons-to-chose-nanotrasen = {-delivery-header-nanotrasen} + ROBUST - TOOLBOXES AND TOOLS:% + -LEAD AND ASBESTOS FREE! + -OR WITH LEAD AND ASBESTOS, IF YOU PREFER! + -CHEAP! ONLY ONE ORGAN! THAT'S LESS THAN TWO ORGANS! + -DOESN'T HAVE TO BE YOUR ORGAN! WE DON'T JUDGE! - {"[head=2]TOP THREE REASONS WHY THE SYNDICATE IS INCOMPETENT[/head]"} +delivery-spam-2 = Reasons to choose Nanotrasen! + .desc = An advertisement for Nanotrasen. + .content = {-delivery-header-nanotrasen} - {"[bold]NUMBER ONE[/bold]"} - THEIR SLEEPER AGENTS ARE INCOMPETENT! THEY CAN'T EVEN KILL A PASSENGER WITH A DEATHWISH! + {"[head=2]TOP THREE REASONS WHY THE SYNDICATE IS INCOMPETENT[/head]"} - {"[bold]NUMBER TWO[/bold]"} - THEIR CIVILIANS ARE WEAK TO BULLETS! TRUST ME, WE TRIED! UNLIKE THE NANOTRASEN CIVILIANS, SYNDICATE CIVILIANS DIE FROM A BULLET TO THE SKULL! BULLETS WE HAVE! + {"[bold]NUMBER ONE[/bold]"} + THEIR SLEEPER AGENTS ARE INCOMPETENT! THEY CAN'T EVEN KILL A PASSENGER WITH A DEATHWISH! - {"[bold]NUMBER THREE[/bold]"} - THEIR LOGO IS HORRIBLE! THEY THINK THEY'RE COOL WITH THEIR LOGO! OOH, LOOK AT ME, I'M SO COOL! OOH, SNAKE THAT'S ALSO AN S! HOW CREATIVE! MY THREE YEAR OLD SON COULD DRAW A BETTER LOGO! + {"[bold]NUMBER TWO[/bold]"} + THEIR CIVILIANS ARE WEAK TO BULLETS! TRUST ME, WE TRIED! UNLIKE THE NANOTRASEN CIVILIANS, SYNDICATE CIVILIANS DIE FROM A BULLET TO THE SKULL! BULLETS WE HAVE! -delivery-spam-reasons-to-choose-syndicate = {-delivery-header-syndicate} + {"[bold]NUMBER THREE[/bold]"} + THEIR LOGO IS HORRIBLE! THEY THINK THEY'RE COOL WITH THEIR LOGO! OOH, LOOK AT ME, I'M SO COOL! OOH, SNAKE THAT'S ALSO AN S! HOW CREATIVE! MY THREE YEAR OLD SON COULD DRAW A BETTER LOGO! - {"[head=2]TOP THREE REASONS WHY NANOTRASEN IS INCOMPETENT[/head]"} +delivery-spam-3 = Reasons to choose The Syndicate! + .desc = An advertisement for The Syndicate. + .content = {-delivery-header-syndicate} - {"[bold]NUMBER ONE[/bold]"} - THEIR GUNS SUCK! THEY DON'T EVEN HAVE SNIPER RIFLES! THEIR SECURITY FORCES CAN'T EVEN CARRY BIG GUNS IN MOST SITUATIONS! + {"[head=2]TOP THREE REASONS WHY NANOTRASEN IS INCOMPETENT[/head]"} - {"[bold]NUMBER TWO[/bold]"} - THEIR COMMANDERS? THEY DIE FROM A SINGLE SHOT! NO COOL ARMOR! JUST BANG, DEAD! LAME! OUR COMMANDERS GET COOL HARDSUITS! + {"[bold]NUMBER ONE[/bold]"} + THEIR GUNS SUCK! THEY DON'T EVEN HAVE SNIPER RIFLES! THEIR SECURITY FORCES CAN'T EVEN CARRY BIG GUNS IN MOST SITUATIONS! - {"[bold]NUMBER THREE[/bold]"} - THEIR MURDER METHODS ARE UNINSPIRED! IT'S JUST GUN! THERE'S NO THROWING PEOPLE INTO DEEP SPACE, NO FEEDING PEOPLE INTO RECYCLERS WITH SAFETY MODE DISENGAGED, NO SLIPPING BOMBS INTO POCKETS! SO BORING! + {"[bold]NUMBER TWO[/bold]"} + THEIR COMMANDERS? THEY DIE FROM A SINGLE SHOT! NO COOL ARMOR! JUST BANG, DEAD! LAME! OUR COMMANDERS GET COOL HARDSUITS! -delivery-spam-tired-of-science = [head=3]Science will LOVE you for this!! + {"[bold]NUMBER THREE[/bold]"} + THEIR MURDER METHODS ARE UNINSPIRED! IT'S JUST GUN! THERE'S NO THROWING PEOPLE INTO DEEP SPACE, NO FEEDING PEOPLE INTO RECYCLERS WITH SAFETY MODE DISENGAGED, NO SLIPPING BOMBS INTO POCKETS! SO BORING! - are [bold]YOU[/bold] Tired of your Station's Science Department blowing up withoutdoing any actual science? - Well Your in luck![/head] +delivery-spam-4 = Tired of science blowing up? + .desc = Follow these simple steps to ensure it never happens again! + .content = [head=3]Science will LOVE you for this!! - Folow this simple guide, and we'll ensure your Science [italic]Never Works Again![/italic] + are [bold]YOU[/bold] Tired of your Station's Science Department blowing up withoutdoing any actual science? + Well Your in luck![/head] - Simply do the following: - - Step One: Locate your Science Department's Research Server - - Step Two: Un-anchor the Research Server from the ground - - Step Three: Hurl the Research Server into space, preferably in the direction of the Spider Clan Super Secret Space Dojo - - Step Four: Wait appproximately 3-5 Business Shifts - - Step Five: Our Workers at Spid-ex Inc will provide your station with one (1) techdisk per week. + Folow this simple guide, and we'll ensure your Science [italic]Never Works Again![/italic] - {"[color=lightgray]Note: Spider Clan is not responsible for any punishment issued by your supervisors.[/color]"} + Simply do the following: + - Step One: Locate your Science Department's Research Server + - Step Two: Un-anchor the Research Server from the ground + - Step Three: Hurl the Research Server into space, preferably in the direction of the Spider Clan Super Secret Space Dojo + - Step Four: Wait appproximately 3-5 Business Shifts + - Step Five: Our Workers at Spid-ex Inc will provide your station with one (1) techdisk per week. -delivery-spam-free-all-access = [head=3]Have You ever wanted to have [italic][color=green]Free [bold]All Axcess!?!?[/bold][/color][/italic][/head] - {"[head=2]Well NOW YOU CAN!![/head]!"} + {"[color=lightgray]Note: Spider Clan is not responsible for any punishment issued by your supervisors.[/color]"} - All you need to do is call [color=blue]555-GOUR-LECKSSS[/color] and state your Staton ID# !!! - Once youve done that, we can simply remotely query the wallet of Yourstation's Cargo department, extacting our required fees of three [italic] EASY[/italic] payments, allowing you to claim your - {"[head=2][color=green] [bolditalic] FREE AA!!!!!!!!!![/bolditalic][/color][/head]"} +delivery-spam-5 = FREE ALL AXCESS!! + .desc = Did you ever want free all access?! + .content = [head=3]Have You ever wanted to have [italic][color=green]Free [bold]All Axcess!?!?[/bold][/color][/italic][/head] + {"[head=2]Well NOW YOU CAN!![/head]!"} + All you need to do is call [color=blue]555-GOUR-LECKSSS[/color] and state your Staton ID# !!! + Once youve done that, we can simply remotely query the wallet of Yourstation's Cargo department, extacting our required fees of three [italic] EASY[/italic] payments, allowing you to claim your + {"[head=2][color=green] [bolditalic] FREE AA!!!!!!!!!![/bolditalic][/color][/head]"} - {"[color=gray]"} - {"[bullet/]Note: station ID must be stated in the format of \"NT/NX - ###\""} - {"[bullet/]Note: Payments lodged to the client's station's cargo department amount to roughly $5000 spesos per transaction, not including individual processing fees"} - {"[bullet/]Note: We at Gour-Lecksss LMT. are not responsible if your station's HoP forces you to fill out an ACTUAL Free AA form if they find out about this letter"} - {"[/color]"} -delivery-spam-centcomm-retribution = [color=red] THIS IS AN OFICAL NOTICE FROM THE HEAD OF [color=blue]NANOTRASN[/color][/color] + {"[color=gray]"} + {"[bullet/]Note: station ID must be stated in the format of \"NT/NX - ###\""} + {"[bullet/]Note: Payments lodged to the client's station's cargo department amount to roughly $5000 spesos per transaction, not including individual processing fees"} + {"[bullet/]Note: We at Gour-Lecksss LMT. are not responsible if your station's HoP forces you to fill out an ACTUAL Free AA form if they find out about this letter"} + {"[/color]"} - Dear Sir, Madam, or Other Insignificat station personell +delivery-spam-6 = NOTICE FROM NANOTRASN!! + .desc = An official notice from the CEO of Nanotrasn?! + .content = [color=red] THIS IS AN OFICAL NOTICE FROM THE HEAD OF [color=blue]NANOTRASN[/color][/color] - If you do not wish for this station to be declared Unprofitable in the eyes of - {"[head=2][italic] Our Great and Glorious [color=blue]Nanotransen[[/color][/head]"} - Then you must organize for three [color=blue]Nt[/color] Standard Stacks of [color=blue]nt[/color] Standard Gold Ingots to be sent to your station's Away Trade Outpots within 5 [color=blue]nT[/color] Standard work shifts. + Dear Sir, Madam, or Other Insignificat station personell - {"[head=2][color=red]IGNORE THIS ORDER AT RISK OF RETRIBUTON FROM [color=green]CENTCO[/color]!!!!![/head][/color]"} + If you do not wish for this station to be declared Unprofitable in the eyes of + {"[head=2][italic] Our Great and Glorious [color=blue]Nanotransen[[/color][/head]"} + Then you must organize for three [color=blue]Nt[/color] Standard Stacks of [color=blue]nt[/color] Standard Gold Ingots to be sent to your station's Away Trade Outpots within 5 [color=blue]nT[/color] Standard work shifts. -delivery-spam-alternate-timeline = {-delivery-header-nanotrasen-alternate-timeline} - {"[head=2]This is an official notice from the [color=red]Chief Security Officer[/color] at a Nanotrasen's Space Station 15.[/head]"} + {"[head=2][color=red]IGNORE THIS ORDER AT RISK OF RETRIBUTON FROM [color=green]CENTCO[/color]!!!!![/head][/color]"} - To whoever receives this letter. I am Sergeant Rigel. My occupation is the CSO. We need immediate assistance. +delivery-spam-7 = Send reinforcements! + .desc = An official notice from... an alternate timeline? + .content = {-delivery-header-nanotrasen-alternate-timeline} + {"[head=2]This is an official notice from the [color=red]Chief Security Officer[/color] at a Nanotrasen's Space Station 15.[/head]"} - Our station is currently under attack by Atomic Agents, this letter is being thrown into a destabilized bluespace anomaly created by our [color=purple]Head of Research[/color]. + To whoever receives this letter. I am Sergeant Rigel. My occupation is the CSO. We need immediate assistance. - I am currently bolted in the Bridge, if you receive this message, please send aid immediately. I don't know how much longer we can last. + Our station is currently under attack by Atomic Agents, this letter is being thrown into a destabilized bluespace anomaly created by our [color=purple]Head of Research[/color]. - Glory to Nanotrasen. + I am currently bolted in the Bridge, if you receive this message, please send aid immediately. I don't know how much longer we can last. -delivery-spam-narsie-cult = [color=#134975][head=2]The Children of Nar'Sie[/head][/color] - The Beginning of a New Era - {"[bold]══──══──══──══──══──══──══──══──══──══──══[/bold]"} + Glory to Nanotrasen. - {"[head=3]Do you feel lost in the vastness of our cosmos?[/head]"} - In the modern era, it's easy for wayward souls to feel like cogs in the machine of vast corporations. +delivery-spam-8 = The Children of Nar'Sie + .desc = A local cult is looking for recruits. + .content = [color=#134975][head=2]The Children of Nar'Sie[/head][/color] + The Beginning of a New Era + {"[bold]══──══──══──══──══──══──══──══──══──══──══[/bold]"} - {"[head=3]Do you feel as if you're made for a better purpose?[/head]"} - Do you tire of the life of mundanity forced upon you? Mopping floors, delivering boxes, or filling out endless paperwork? + {"[head=3]Do you feel lost in the vastness of our cosmos?[/head]"} + In the modern era, it's easy for wayward souls to feel like cogs in the machine of vast corporations. - {"[head=3]Do you want to make the galaxy a better place?[/head]"} + {"[head=3]Do you feel as if you're made for a better purpose?[/head]"} + Do you tire of the life of mundanity forced upon you? Mopping floors, delivering boxes, or filling out endless paperwork? + {"[head=3]Do you want to make the galaxy a better place?[/head]"} - If you answered "Yes" to any of these questions, then contact one of our representatives today! We have members across stations all over the galaxy eager to welcome new members into our flock. Be one of the blades that helps welcome the Geometer of Blood into our universe so that all may know his bliss! - All you have to do is say [color=#FF0000][italic]"Sas'so c'arta forbici!"[/italic][/color] + If you answered "Yes" to any of these questions, then contact one of our representatives today! We have members across stations all over the galaxy eager to welcome new members into our flock. Be one of the blades that helps welcome the Geometer of Blood into our universe so that all may know his bliss! -delivery-spam-rage-cage = [color=#aaaaaa]▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[/color] - {"[bold][head=1]THE RAGE CAGE[/head][/bold]"} - {"[color=#aaaaaa]▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬[/color]"} - {"[bold][color=#FF0000][head=3]DO YOU WANT TO FIGHT?[/head][/color][/bold]"} - {"[bold][color=#FF0000][head=3]DO YOU WANT TO WIN?[/head][/color][/bold]"} - {"[bold][color=#FF0000][head=3]DO YOU WANT TO DOMINATE?![/head][/color][/bold]"} + All you have to do is say [color=#FF0000][italic]"Sas'so c'arta forbici!"[/italic][/color] +delivery-spam-9 = Do you want to fight?! + .desc = Advertisement for a local fighting club. + .content = [color=#aaaaaa]▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[/color] + {"[bold][head=1]THE RAGE CAGE[/head][/bold]"} + {"[color=#aaaaaa]▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬[/color]"} + {"[bold][color=#FF0000][head=3]DO YOU WANT TO FIGHT?[/head][/color][/bold]"} + {"[bold][color=#FF0000][head=3]DO YOU WANT TO WIN?[/head][/color][/bold]"} + {"[bold][color=#FF0000][head=3]DO YOU WANT TO DOMINATE?![/head][/color][/bold]"} - Then come on down to... [color=#FF0000][bold][head=2]THE RAGE CAGE[/head][/bold][/color] + Then come on down to... [color=#FF0000][bold][head=2]THE RAGE CAGE[/head][/bold][/color] - Hidden in the depths of your local Nanotrasen station is the patented [color=#FF0000][bold]RAGE CAGE[/bold][/color]. An electrified fighting arena designed for only the strongest of fighters, the [color=#FF0000][bold]RAGE CAGE[/bold][/color] seperates the Wimps from the Warriors, the Scrubs from the Soldiers, and the Losers from the Winners. - ────────────────────────────────────────── - In the [color=#FF0000][bold]RAGE CAGE[/bold][/color] there is only one rule: [italic]Two fighters enter. One fighter leaves. [/italic] - ────────────────────────────────────────── - No weapons, no armor, just pure unadulterated [bold]COMBAT[/bold]. Don't lose out and be a [bold]WIMP[/bold]. Win the glory of being your station's most robust fighter in the [color=#FF0000][bold]RAGE CAGE[/bold][/color] today! -delivery-spam-evil-lizard = [color=#FF0000][bold][head=2]STOP[/head][/bold][/color] + Hidden in the depths of your local Nanotrasen station is the patented [color=#FF0000][bold]RAGE CAGE[/bold][/color]. An electrified fighting arena designed for only the strongest of fighters, the [color=#FF0000][bold]RAGE CAGE[/bold][/color] seperates the Wimps from the Warriors, the Scrubs from the Soldiers, and the Losers from the Winners. + ────────────────────────────────────────── + In the [color=#FF0000][bold]RAGE CAGE[/bold][/color] there is only one rule: [italic]Two fighters enter. One fighter leaves. [/italic] + ────────────────────────────────────────── + No weapons, no armor, just pure unadulterated [bold]COMBAT[/bold]. Don't lose out and be a [bold]WIMP[/bold]. Win the glory of being your station's most robust fighter in the [color=#FF0000][bold]RAGE CAGE[/bold][/color] today! - If yore reading this letter...[color=#FF0000][head=3]YOUR ALRAEDY CURSED!!![/head][/color] +delivery-spam-10 = DO NOT OPEN THIS MAIL + .desc = You have been cursed! + .content = [color=#FF0000][bold][head=2]STOP[/head][/bold][/color] - Im sorry to do this to you but I have to warn you about: + If yore reading this letter...[color=#FF0000][head=3]YOUR ALRAEDY CURSED!!![/head][/color] - {"[color=#FF0000][head=1]The Ghost of The Bloody Lizardd[/head][/color]"} + Im sorry to do this to you but I have to warn you about: - It all started when i to got a letter in the mail: it was a scary image of a lizard plushie with BLOODY EYES staring RIGHT AT ME. the letter said I was cursed...and if I didn't send this letter to 30 people within 30 days then the Blood Lizard would come in the middle of the night... + {"[color=#FF0000][head=1]The Ghost of The Bloody Lizardd[/head][/color]"} - {"[italic]and KILL ME.[/italic]"} + It all started when i to got a letter in the mail: it was a scary image of a lizard plushie with BLOODY EYES staring RIGHT AT ME. the letter said I was cursed...and if I didn't send this letter to 30 people within 30 days then the Blood Lizard would come in the middle of the night... - im sorry......but your one of the 30 people i have to send this too..and now yoor cursed too... + {"[italic]and KILL ME.[/italic]"} - please send this letter to 30 other people to stop the curse! you can still save yorself! theres still time! don't let the bloody lizard get you too, and take this thingie! it will keep you safe from dark spiirts...[head=3]FOR NOW[/head] + im sorry......but your one of the 30 people i have to send this too..and now yoor cursed too... + please send this letter to 30 other people to stop the curse! you can still save yorself! theres still time! don't let the bloody lizard get you too, and take this thingie! it will keep you safe from dark spiirts...[head=3]FOR NOW[/head] - {"[head=1]OH NO THERE IT IS!!!!!!!![/head]"} - ░░░░░░░░░█░░[color=#67CC40]████████[/color]█[color=#67CC40]███[/color]░░░░░░░░░░ - ░░░░░░[color=#FF0000]████[/color]█[color=#6EC543]█[/color][color=#67CC40]███████[/color]█[color=#FF0000]██████[/color]░░░░░░░░ - ░░░░[color=#FF0000]████[/color][color=#6EC543]██[/color][color=#67CC40]████████[/color][color=#FF0000]██████[/color][color=#FFFFFF]██[/color][color=#FF0000]█[/color][color=#B53737]█[/color]░░░░░░ - ░░░░[color=#FF0000]██[/color][color=#6EC543]██[/color][color=#67CC40]██████████[color=#FF0000]████████[/color][color=#B53737]██[/color]░░░░░░ - ░░[color=#6EC543]██████[/color][color=#67CC40]██████████[/color][color=#FF0000]███████[/color][color=#B53737]███[/color]░░░░░░ - {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]███[/color][color=#B53737]███[/color]░░░░░░░░"} - {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]█[/color][color=#6EC543]█████[/color]░░░░░░░░"} - {"[color=#6EC543]██████████[/color][color=#67CC40]██████████[/color][color=#FF0000]█[/color][color=#67CC40]███[/color]░░░░░░░░░░"} - ░░[color=#6EC543]██[/color][color=#FF2020]██[/color][color=#FF3D3D]██[/color][color=#6EC543]████████[/color][color=#67CC40]████[/color][color=#86E158]██[/color]░░░░░░░░░░░░ - ░░░░[color=#FF2020]██[/color][color=#FF3D3D]██[/color]░░░░[color=#86E158]████████[/color][color=#6EC543]██[/color][color=#61D034]██[/color]░░░░░░░░[color=#56B037]██[/color] - ░░░░[color=#FF2020]██[/color]░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#61D034]██[/color]░░░░[color=#56B037]██[/color][color=#48A926]██[/color] - ░░░░░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#56B037]██[/color][color=#48A926]██████[/color] - ░░░░[color=#6EC543]██[/color][color=#61D034]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#48A926]████████████[/color] - ░░░░[color=#6EC543]████[/color][color=#86E158]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]████[/color][color=#A8EB7A]██[/color][color=#86E158]██[/color][color=#61D034]████[/color][color=#6EC543]██[/color][color=#48A926]████[/color][color=#52A037]██[/color]░░ - ░░░░[color=#6EC543]████[/color][color=#61D034]██[/color][color=#86E158]████████[/color][color=#61D034]██[/color][color=#6EC543]██████[/color][color=#52A037]████[/color]░░░░ - ░░░░░░[color=#6EC543]████[/color]░░░░░░░░[color=#6EC543]████████[/color]░░░░░░░░ - ░░░░░░░░░░░░░░░░░░░░[color=#6EC543]████[/color]░░░░░░░░░░ + {"[head=1]OH NO THERE IT IS!!!!!!!![/head]"} -delivery-spam-parents-need-money = [bold]Hello Child,[/bold] + ░░░░░░░░░█░░[color=#67CC40]████████[/color]█[color=#67CC40]███[/color]░░░░░░░░░░ + ░░░░░░[color=#FF0000]████[/color]█[color=#6EC543]█[/color][color=#67CC40]███████[/color]█[color=#FF0000]██████[/color]░░░░░░░░ + ░░░░[color=#FF0000]████[/color][color=#6EC543]██[/color][color=#67CC40]████████[/color][color=#FF0000]██████[/color][color=#FFFFFF]██[/color][color=#FF0000]█[/color][color=#B53737]█[/color]░░░░░░ + ░░░░[color=#FF0000]██[/color][color=#6EC543]██[/color][color=#67CC40]██████████[color=#FF0000]████████[/color][color=#B53737]██[/color]░░░░░░ + ░░[color=#6EC543]██████[/color][color=#67CC40]██████████[/color][color=#FF0000]███████[/color][color=#B53737]███[/color]░░░░░░ + {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]███[/color][color=#B53737]███[/color]░░░░░░░░"} + {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]█[/color][color=#6EC543]█████[/color]░░░░░░░░"} + {"[color=#6EC543]██████████[/color][color=#67CC40]██████████[/color][color=#FF0000]█[/color][color=#67CC40]███[/color]░░░░░░░░░░"} + ░░[color=#6EC543]██[/color][color=#FF2020]██[/color][color=#FF3D3D]██[/color][color=#6EC543]████████[/color][color=#67CC40]████[/color][color=#86E158]██[/color]░░░░░░░░░░░░ + ░░░░[color=#FF2020]██[/color][color=#FF3D3D]██[/color]░░░░[color=#86E158]████████[/color][color=#6EC543]██[/color][color=#61D034]██[/color]░░░░░░░░[color=#56B037]██[/color] + ░░░░[color=#FF2020]██[/color]░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#61D034]██[/color]░░░░[color=#56B037]██[/color][color=#48A926]██[/color] + ░░░░░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#56B037]██[/color][color=#48A926]██████[/color] + ░░░░[color=#6EC543]██[/color][color=#61D034]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#48A926]████████████[/color] + ░░░░[color=#6EC543]████[/color][color=#86E158]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]████[/color][color=#A8EB7A]██[/color][color=#86E158]██[/color][color=#61D034]████[/color][color=#6EC543]██[/color][color=#48A926]████[/color][color=#52A037]██[/color]░░ + ░░░░[color=#6EC543]████[/color][color=#61D034]██[/color][color=#86E158]████████[/color][color=#61D034]██[/color][color=#6EC543]██████[/color][color=#52A037]████[/color]░░░░ + ░░░░░░[color=#6EC543]████[/color]░░░░░░░░[color=#6EC543]████████[/color]░░░░░░░░ + ░░░░░░░░░░░░░░░░░░░░[color=#6EC543]████[/color]░░░░░░░░░░ - This is your Parents writing to you: we are in need of money! Our taxes have been audited and we owe $100,000 in spesos to governnment! please help! they only want gift cards so you will need to send us 100 $1000 spesos Bisa gift cards. +delivery-spam-11 = Help mom and dad! + .desc = Parents in need of financial support. + .content = [bold]Hello Child,[/bold] + This is your Parents writing to you: we are in need of money! Our taxes have been audited and we owe $100,000 in spesos to governnment! please help! they only want gift cards so you will need to send us 100 $1000 spesos Bisa gift cards. - please mail to: - 50192 Spess Lane - Station City, Ignius 40195-243 - Gamma Quadrant - Guilimin System + please mail to: + 50192 Spess Lane + Station City, Ignius 40195-243 + Gamma Quadrant + Guilimin System - if we do not get this money in 10 days then the govertment will come to take away childhood home and we will be homeless. + if we do not get this money in 10 days then the govertment will come to take away childhood home and we will be homeless. - {"[bold]thank you and we love you,[/bold]"} - {"[italic]parents[/italics]"} + {"[bold]thank you and we love you,[/bold]"} + {"[italic]parents[/italics]"} -delivery-spam-voyage-advertisement = [head=2]Join us on the maiden voyage of the...[/head] +delivery-spam-12 = Join us on the maiden voyage! + .desc = Advertisement for a relaxing voyage. + .content = [head=2]Join us on the maiden voyage of the...[/head] - ░█▀▀░█▀▀░░░█▀▄░█▀▀░█░░░█▀█░█░█░█▀█░█▀▄ - ░▀▀█░▀▀█░░░█▀▄░█▀▀░█░░░█▀█░▄▀▄░█░█░█▀▄ - ░▀▀▀░▀▀▀░░░▀░▀░▀▀▀░▀▀▀░▀░▀░▀░▀░▀▀▀░▀░▀ + ░█▀▀░█▀▀░░░█▀▄░█▀▀░█░░░█▀█░█░█░█▀█░█▀▄ + ░▀▀█░▀▀█░░░█▀▄░█▀▀░█░░░█▀█░▄▀▄░█░█░█▀▄ + ░▀▀▀░▀▀▀░░░▀░▀░▀▀▀░▀▀▀░▀░▀░▀░▀░▀▀▀░▀░▀ - {"[bold]══════════════════════════════════════════[/bold]"} + {"[bold]══════════════════════════════════════════[/bold]"} - The latest in Comfortech™ and the most beautiful sights this side of the Iraxsi System! The [italic]SS Relaxor[/italic] is a state of the art luxury Cruiser taking you on the journey of a lifetime! + The latest in Comfortech™ and the most beautiful sights this side of the Iraxsi System! The [italic]SS Relaxor[/italic] is a state of the art luxury Cruiser taking you on the journey of a lifetime! - {"[head=3]Experience the phosphorous lakes of Galimar* from the comfort of our LuxuCabins™ with the all the modern amenities you could ever wish for![/head]"} + {"[head=3]Experience the phosphorous lakes of Galimar* from the comfort of our LuxuCabins™ with the all the modern amenities you could ever wish for![/head]"} - {"[head=3]Gaze in awe at the Eye of the Cosmos** while enjoying meals from our Five Star Galaxy class chefs![/head]"} + {"[head=3]Gaze in awe at the Eye of the Cosmos** while enjoying meals from our Five Star Galaxy class chefs![/head]"} - {"[head=3]Explore the ruins of Agathar***, now open to the public with the assistance of Nanotrasen's top Scientists. All the mysteries of the old Agatharian civilization are excavated and displayed for your viewing pleasure![/head]"} + {"[head=3]Explore the ruins of Agathar***, now open to the public with the assistance of Nanotrasen's top Scientists. All the mysteries of the old Agatharian civilization are excavated and displayed for your viewing pleasure![/head]"} - For the low, low cost of $5,000 spesos a night, the six month luxury cruise could be yours for the vacation of your dreams! Call us today at [color=#00FF00]RELAX-NOW[/color] to book your cruise. Don't wait! Act now! + For the low, low cost of $5,000 spesos a night, the six month luxury cruise could be yours for the vacation of your dreams! Call us today at [color=#00FF00]RELAX-NOW[/color] to book your cruise. Don't wait! Act now! - {"[italic]*Phosphorus lakes are not for swimming, you waive all rights to legal representations with Relaxination Destinations upon landing on Galimar.[/italic]"} - {"[italic]**Eye of the Cosmos must not be looked at for longer than five seconds at a time. You do not hear the call of the Eye.[/italic]"} - {"[italic]***Must sign safety waiver before landing, Relaxination Destinations does not guarantee the safety of the Agatharian ruins. Disappearances of tour groups are down to an acceptable margin of 0.23% of all tour groups that visit the ruins.[/italic]"} + {"[italic]*Phosphorus lakes are not for swimming, you waive all rights to legal representations with Relaxination Destinations upon landing on Galimar.[/italic]"} + {"[italic]**Eye of the Cosmos must not be looked at for longer than five seconds at a time. You do not hear the call of the Eye.[/italic]"} + {"[italic]***Must sign safety waiver before landing, Relaxination Destinations does not guarantee the safety of the Agatharian ruins. Disappearances of tour groups are down to an acceptable margin of 0.23% of all tour groups that visit the ruins.[/italic]"} diff --git a/Resources/Prototypes/Datasets/deliveries.yml b/Resources/Prototypes/Datasets/deliveries.yml new file mode 100644 index 0000000000..10584f219b --- /dev/null +++ b/Resources/Prototypes/Datasets/deliveries.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: DeliverySpamLetters + values: + prefix: delivery-spam- + count: 12 diff --git a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml index e0b0e0906b..db5c97a676 100644 --- a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml +++ b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml @@ -1,113 +1,11 @@ ### Spam Mail -## TODO: They all should be a localized dataset for PaperComponent - -# Advertisements -- type: entity - id: MailRobustToolsSpam - name: Robust Toolbox - Special Offer! - description: An advertisement for the robust toolboxes. - parent: Paper - components: - - type: Paper - content: delivery-spam-robust-toolboxes - -- type: entity - id: MailNanotrasenSpam - name: Reasons to choose Nanotrasen! - description: An advertisement for the Nanotrasen. - parent: Paper - components: - - type: Paper - content: delivery-spam-reasons-to-chose-nanotrasen - -- type: entity - id: MailSyndicateSpam - name: Reasons to choose The Syndicate! - description: An advertisement for the The Syndicate. - parent: Paper - components: - - type: Paper - content: delivery-spam-reasons-to-choose-syndicate - -- type: entity - id: MailAlternativeDimensionSpam - name: Send reinforcements! - description: An official notice from... an alternate timeline? - parent: Paper - components: - - type: Paper - content: delivery-spam-alternate-timeline - -- type: entity - id: MailNarsieCultSpam - name: The Children of Nar'Sie - description: A local cult is looking for recruits. - parent: Paper - components: - - type: Paper - content: delivery-spam-narsie-cult - -- type: entity - id: MailRageCageSpam - name: Do you want to fight?! - description: Advertisement for a local fighting club. - parent: Paper - components: - - type: Paper - content: delivery-spam-rage-cage - -- type: entity - id: MailVoyageAdvertisementSpam - name: Join us on the maiden voyage! - description: Advertisement for a relaxing voyage. - parent: Paper - components: - - type: Paper - content: delivery-spam-voyage-advertisement - -# Scam Mail -- type: entity - id: MailScienceSpiderClanSpam - name: Tired of science blowing up? - description: Follow these simple steps to ensure it never happens again! - parent: Paper - components: - - type: Paper - content: delivery-spam-tired-of-science - -- type: entity - id: MailAllAccessSpam - name: FREE ALL AXCESS!! # Spelling mistake intentional - description: Did you ever want free all access?! - parent: Paper - components: - - type: Paper - content: delivery-spam-free-all-access - -- type: entity - id: MailCentcommRetributionSpam - name: NOTICE FROM NANOTRASN!! # Spelling mistake intentional - description: An official notice from the CEO of Nanotrasn?! - parent: Paper - components: - - type: Paper - content: delivery-spam-centcomm-retribution - -- type: entity - id: MailEvilLizardSpam - name: DO NOT OPEN THIS MAIL - description: You have been cursed! - parent: Paper - components: - - type: Paper - content: delivery-spam-evil-lizard - - type: entity - id: MailParentsNeedMoneySpam - name: Help mom and dad! - description: Parents in need of financial support. + id: MailSpamLetter + name: spam letter + description: Even space isn't safe from junk mail. parent: Paper components: - type: Paper - content: delivery-spam-parents-need-money + - type: RandomPaperContent + dataset: DeliverySpamLetters diff --git a/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml b/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml index 1bfa4e1d31..2b182f2bdb 100644 --- a/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml +++ b/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml @@ -5,18 +5,7 @@ id: SpamMailTable table: !type:GroupSelector children: - - id: MailAllAccessSpam - - id: MailAlternativeDimensionSpam - - id: MailCentcommRetributionSpam - - id: MailEvilLizardSpam - - id: MailNanotrasenSpam - - id: MailNarsieCultSpam - - id: MailParentsNeedMoneySpam - - id: MailRageCageSpam - - id: MailRobustToolsSpam - - id: MailScienceSpiderClanSpam - - id: MailSyndicateSpam - - id: MailVoyageAdvertisementSpam + - id: MailSpamLetter # Letter Bundles ## Basically items that should always spawn together, specific to letters diff --git a/Resources/migration.yml b/Resources/migration.yml index 88cfc72c3d..f505db5268 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -575,6 +575,20 @@ PaxChemistryBottle: ChemistryBottlePax MuteToxinChemistryBottle: ChemistryBottleMuteToxin LeadChemistryBottle: ChemistryBottleLead ToxinChemistryBottle: ChemistryBottleToxin - + # 2025-03-29 ClothingBackpackDuffelSyndicateRaidBundle: ClothingBackpackSyndicateRaidBundle + +# 2025-04-14 +MailRobustToolsSpam: MailSpamLetter +MailNanotrasenSpam: MailSpamLetter +MailSyndicateSpam: MailSpamLetter +MailAlternativeDimensionSpam: MailSpamLetter +MailNarsieCultSpam: MailSpamLetter +MailRageCageSpam: MailSpamLetter +MailVoyageAdvertisementSpam: MailSpamLetter +MailScienceSpiderClanSpam: MailSpamLetter +MailAllAccessSpam: MailSpamLetter +MailCentcommRetributionSpam: MailSpamLetter +MailEvilLizardSpam: MailSpamLetter +MailParentsNeedMoneySpam: MailSpamLetter