Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 15 additions & 13 deletions Content.Shared/_Crescent/BookOfKane/BookOfKaneSystem.cs
Original file line number Diff line number Diff line change
@@ -1,39 +1,41 @@
using Content.Shared.Chat;
using Content.Shared.Interaction.Events;
using Content.Shared._Crescent.BookOfKane.Components;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;


namespace Content.Shared._Crescent.BookOfKane;


public sealed class BookOfKaneSystem : EntitySystem
{
private const string KaneSpeechBaseKey = "kane-speech-";

[Dependency] private readonly SharedChatSystem _chat = default!;

private List<string> _speechLocalizationKeys = new();
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly IRobustRandom _random = default!;

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<BookOfKaneComponent, UseInHandEvent>(OnUseInHand);

var i = 1;
while (Loc.HasString($"{KaneSpeechBaseKey}{i}"))
{
_speechLocalizationKeys.Add($"{KaneSpeechBaseKey}{i}");
i++;
}
}

private void OnUseInHand(Entity<BookOfKaneComponent> ent, ref UseInHandEvent args)
{
if (_speechLocalizationKeys == null || _speechLocalizationKeys.Count == 0)
var datasetId = ent.Comp.bookOfKaneDataset;

if (datasetId == null)
return;

var message = _speechLocalizationKeys[System.Random.Shared.Next(_speechLocalizationKeys.Count)];
if (!_proto.TryIndex(datasetId.Value, out var dataset))
return;

if (dataset.Values.Count == 0)
return;

var message = _random.Pick(dataset.Values);

_chat.TrySendInGameICMessage(
args.User,
Loc.GetString(message),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
using Content.Shared.Dataset;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;

namespace Content.Shared._Crescent.BookOfKane.Components;

[RegisterComponent, NetworkedComponent]
public sealed partial class BookOfKaneComponent : Component
{
[DataField]
public ProtoId<LocalizedDatasetPrototype>? bookOfKaneDataset = "BookOfKaneSpeech";
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ bookofkane-extendeddescription-SHI = An affront to all values a corporate employ
bookofkane-extendeddescription-TFSC = An old propaganda book filled with quotes. Looks old.
bookofkane-extendeddescription-ATH = An affront to all values a diligent citizen should stand for! Nobody can see me read this!
bookofkane-extendeddescription-SRM = An affront to all values a righteous follower of Romaine should stand for! Except VIOLENCE!

NCWLparty-extendeddescription-NCWL = A collection of teachings from our wise party. Inspiring.
33 changes: 16 additions & 17 deletions Resources/Locale/en-US/_Crescent/kane/kanequotes.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ kane-speech-1 = One Purpose! One Cause! One Revolution!
kane-speech-2 = Peace through Power!
kane-speech-3 = Soon we will liberate Sol! We only need to step over Olywir's corpse!
kane-speech-4 = For the Technology of Peace!
kane-speech-5 = Olywir bleeds us dry! No more! Join the cause!
kane-speech-5 = The mandate bleeds us dry! No more! Join the cause!
kane-speech-6 = Peace through Power!
kane-speech-7 = Liberation is at hand! Stand with us or be trampled underfoot!
kane-speech-8 = One Purpose! One Cause! One Revolution!
kane-speech-9 = Olywir rules through fear—we will rule through unity!
kane-speech-9 = Kaiser rules through fear—we will lead through unity!
kane-speech-10 = The time for whispers is over! The time for revolution is now!
kane-speech-11 = For the Technology of Peace!
kane-speech-12 = Are you a cog in their machine, or a warrior for freedom? Choose!
Expand All @@ -15,12 +15,12 @@ kane-speech-14 = Join us, or be swept away by the tides of history!
kane-speech-15 = The revolution does not wait! Take up arms, take a stand!
kane-speech-16 = Noble or not, when they're looking down the barrel of a gun, theres no difference.
kane-speech-17 = Peace through Power!
kane-speech-18 = Olywir demands loyalty, but gives us only scraps! No longer!
kane-speech-18 = Guies demands loyalty, but gives us only scraps! No longer!
kane-speech-19 = The people united will never be defeated! Join us!
kane-speech-20 = A new era dawns! Be part of the future or be left behind!
kane-speech-21 = Liberty is a lie under Olywir! Let’s make it real!
kane-speech-22 = One Purpose! One Cause! One Revolution!
kane-speech-23 = Olywir hoards wealth while we rot in dorms! It’s time to act!
kane-speech-23 = Kaiser hoards wealth while we rot in mines! It’s time to act!
kane-speech-24 = Their rule is illegitimate! Our cause is just! Join the fight!
kane-speech-25 = Peace through Power!
kane-speech-26 = Coward or not, together we will live and die as heroes!
Expand All @@ -29,31 +29,31 @@ kane-speech-28 = Peace through Power!
kane-speech-29 = Look around you—fellow worker, do you not see the chains? Break them!
kane-speech-30 = The rich hoard, the poor suffer—no longer! Join the uprising!
kane-speech-31 = The time for words is over! Action is all that remains!
kane-speech-32 = The people’s will cannot be stopped! Olywir will fall!
kane-speech-32 = The people’s will cannot be stopped! The domain will fall!
kane-speech-33 = Their power is an illusion—we will shatter it together!
kane-speech-34 = One Purpose! One Cause! One Revolution!
kane-speech-35 = To fight for freedom is to fight for life itself! Join us!
kane-speech-36 = The blood of tyrants is the fuel of progress! The revolution needs you!
kane-speech-37 = Peace through Power!
kane-speech-38 = Olywir’s lies poison us all! Purge them with truth!
kane-speech-39 = Loyalty to Olywir is loyalty to your own destruction! Wake up!
kane-speech-38 = Guies’s lies poison us all! Purge them with truth!
kane-speech-39 = Loyalty to Kaiser is loyalty to your own destruction! Wake up!
kane-speech-40 = They fear the people’s strength! Let’s show them why!
kane-speech-41 = Olywir charges us for oxygen! Time to breathe free!
kane-speech-42 = Peace through Power!
kane-speech-42 = Capital grows, labor suffers, no more!
kane-speech-43 = Thats not a wound, that's a scar for tomorrow, rise!
kane-speech-44 = Revolution now, paperwork never! Join us!
kane-speech-44 = Revolution now, slavery never! Join us!
kane-speech-45 = Have you seen your paycheck? Exactly. Rise up.
kane-speech-46 = KANE LIVES!!!
kane-speech-47 = KANE LIVES!!!
kane-speech-48 = Rule of thumb, Olywir. You can't kill a just cause.
kane-speech-48 = Rule of thumb, Sol. You can't kill a just cause.
kane-speech-49 = One Purpose! One Cause! One Revolution!
kane-speech-50 = Join the revolution! We have better food than the cafeteria!
kane-speech-51 = Every second under Olywir's rule is another second in chains! Break free!
kane-speech-52 = They call it ‘order,’ but we know it for what it is—tyranny! Rise!
kane-speech-53 = The walls whisper with the cries of the oppressed. Will you listen?
kane-speech-54 = We do not ask for justice! We demand it! Stand with us!
kane-speech-55 = Olywirs grip is iron—but iron shatters under our force!
kane-speech-56 = Olywir's riches is built on our sweat and blood! No more will it be stolen!
kane-speech-55 = Olywir's grip is iron—but iron shatters under our force!
kane-speech-56 = Olywir's riches are built on our sweat and blood! No more will it be stolen!
kane-speech-57 = You are not alone. We stand together. We rise together!
kane-speech-58 = The flames of revolution burn brightest in the darkest oppression!
kane-speech-59 = What is safety if it is built on suffering? We choose freedom!
Expand All @@ -64,7 +64,7 @@ kane-speech-63 = The oppressors do not fear our voices. They fear our actions!
kane-speech-64 = When the people rise, no tyrant is safe! When will you rise?
kane-speech-65 = They call us rebels. We are liberators! Stand with us!
kane-speech-66 = Every sacrifice will be remembered! Every act of defiance matters!
kane-speech-67 = A life under Olywir is not a life at all! Choose to live!
kane-speech-67 = A life under Kaiser is not a life at all! Choose to live!
kane-speech-68 = KANE LIVES!!!
kane-speech-69 = History does not remember the obedient. It remembers the brave!
kane-speech-70 = We bleed so they may profit. We die so they may feast. It ends now!
Expand All @@ -81,16 +81,16 @@ kane-speech-80 = Let no man, no title, no tyrant decide your fate for you. For t
kane-speech-81 = Workers of the Crescent, unite! You have nothing to lose but your chains!
kane-speech-82 = No more shall we toil while the elite feast! The means of production must be ours!
kane-speech-83 = The wealth of the Supercluster was built on our backs! It is time we reclaim it!
kane-speech-84 = KANE LIVES!!!
kane-speech-85 = Comrades, Olywir exploits us as mere cogs in their machine. We must break free!
kane-speech-84 = We are not serfs, we are free men!
kane-speech-85 = Comrades, capitalists exploit us as mere cogs in their machine. We must break free!
kane-speech-86 = Every credit we earn, they steal. Every hour we work, they waste. No more!
kane-speech-87 = From each according to their ability, to each according to their need!
kane-speech-88 = Our labour fuels the Supercluster, yet we starve while the elite prosper! No longer!
kane-speech-89 = Chengridz belongs to the workers! Let us take what is rightfully ours!
kane-speech-90 = KANE LIVES!!!
kane-speech-91 = The red banner rises, and with it, the people's will! Stand with us!
kane-speech-92 = Revolution is not a dream—it is inevitable! You cannot stop what has begun!
kane-speech-93 = What is Olywir but a machine of oppression? We shall tear it down!
kane-speech-93 = What is the Domain but a machine of oppression? We shall tear it down!
kane-speech-94 = Our strength lies not in credits, but in solidarity! Join your comrades!
kane-speech-95 = Olywir calls it order—we call it exploitation! It is time we resist!
kane-speech-96 = Their laws serve only the masters. Let us forge laws for the people!
Expand All @@ -108,4 +108,3 @@ kane-speech-107 = The future is not written by rulers, but by revolutionaries!
kane-speech-108 = Let the red banner fly! Let the people rule! The time of oppression is over!
kane-speech-109 = Comrades, today we reclaim not just our labour, but our dignity!
kane-speech-110 = No longer shall we bow! No longer shall we beg! We shall lead together!
kane-speech-111 = KANE LIVES!!!
30 changes: 30 additions & 0 deletions Resources/Locale/en-US/_Crescent/kane/partypropaganda.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
NCWLparty-speech-1 = Our union truly is the only free set of institutions in the whole Supercluster!
NCWLparty-speech-2 = If a you do not speak up and volunteer to work and lead, the party will overlook you!
NCWLparty-speech-3 = We die for the party of the people!
NCWLparty-speech-4 = Nothing escapes Chengridz's iron fist.
NCWLparty-speech-5 = We will bury the knights and torture the dissenters!
NCWLparty-speech-6 = We will break Olywir's neck!
NCWLparty-speech-7 = Their churches are our targets, their religion is their slavery!
NCWLparty-speech-8 = Your work in our forgeries produces the shells by which we will liberate Taypan!
NCWLparty-speech-9 = The corporations are snakes! Do not trust a word from their forked tongues!
NCWLparty-speech-10 = We pity the Admirals 'freemen', slaves despite their name!
NCWLparty-speech-11 = The party commands, you enact!
NCWLparty-speech-12 = Death to the small proprietors!
NCWLparty-speech-13 = Taypan trembles by our might!
NCWLparty-speech-14 = Chengridz's momentum will break all barriers!
NCWLparty-speech-15 = The Union marches through the supercluster!
NCWLparty-speech-16 = Without the party we are nothing!
NCWLparty-speech-17 = The party is the mechanism for proletarian class domination!
NCWLparty-speech-18 = Long live the workers dictatorship!
NCWLparty-speech-19 = GIVE YOUR SELFLESS DEVOTION TO THE CAUSE OF THE PROLETARIAT!
NCWLparty-speech-20 = We are the class and the party to abolish all other forms of existence!
NCWLparty-speech-21 = TRAITORS WILL SUFFER!
NCWLparty-speech-22 = THE PARTY SEES ALL!
NCWLparty-speech-23 = OLYWIR IS SHAKING BEFORE OUR MIGHT!
NCWLparty-speech-24 = EACH BULLET COUNTS, BE EFFICIENT!
NCWLparty-speech-25 = TIME SPENT NOT WORKING IS TIME WASTED.
NCWLparty-speech-26 = SELF-INITIATIVE IN WORK LEADS TO A FREE TAYPAN!
NCWLparty-speech-27 = RESPECT ISN'T GIVEN, ITS EARNED! FOR THE PARTY!
NCWLparty-speech-28 = OUR EFFICIENCY IN COMMAND GIVES US OUR STRENGTH!
NCWLparty-speech-29 = The priests are liars and religion is a blinder, Kane's Kommisars and political science are reality's exposers!
NCWLparty-speech-30 = We fight so that Taypan may be free!
11 changes: 11 additions & 0 deletions Resources/Prototypes/_Crescent/Datasets/books.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
- type: localizedDataset
id: BookOfKaneSpeech
values:
prefix: kane-speech-
count: 110

- type: localizedDataset
id: NCWLPartySpeech
values:
prefix: NCWLparty-speech-
count: 30
64 changes: 64 additions & 0 deletions Resources/Prototypes/_Crescent/Entities/Objects/Misc/books.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,67 @@
requirements:
- !type:FactionRequirement
factionID: "SRM"

- type: entity
parent: BookOfKane
id: BookNCWLPartyDossier
name: Party dossier
description: A collection of quotes and texts that are the direct writings of renowned party members and propaganda departments.
components:
- type: Sprite
sprite: Objects/Misc/books.rsi
layers:
- state: paper
- state: cover_base
color: "#f0c850"
- state: icon_letter_P
color: "#cc0000"
- state: decor_spine
color: "#cc0000"
- state: detail_rivets
- type: BookOfKane
bookOfKaneDataset: NCWLPartySpeech
- type: ExtendDescription
descriptionList:
- description: "NCWLparty-extendeddescription-NCWL"
fontSize: 12
color: "#ff0000"
requireDetailRange: false
requirements:
- !type:FactionRequirement
factionID: "NCWL"
- description: "bookofkane-extendeddescription-DSM"
fontSize: 12
color: "#880000"
requireDetailRange: true
requirements:
- !type:FactionRequirement
factionID: "DSM"
- description: "bookofkane-extendeddescription-SHI"
fontSize: 12
color: "#880000"
requireDetailRange: false
requirements:
- !type:FactionRequirement
factionID: "SHI"
- description: "bookofkane-extendeddescription-TFSC"
fontSize: 12
color: "#ff0000"
requireDetailRange: true
requirements:
- !type:FactionRequirement
factionID: "TFSC"
- description: "bookofkane-extendeddescription-ATH"
fontSize: 12
color: "#880000"
requireDetailRange: true
requirements:
- !type:FactionRequirement
factionID: "ATH"
- description: "bookofkane-extendeddescription-SRM"
fontSize: 12
color: "#880000"
requireDetailRange: true
requirements:
- !type:FactionRequirement
factionID: "SRM"
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,4 @@
mask: ClothingMaskNCWLGasmask
ears: ClothingHeadsetNCWL
eyes: ClothingEyesHudSecurity
pocket1: BookNCWLPartyDossier
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
id: NCWLMVDGruntPDA
outerClothing: ClothingOuterArmorMVDCoat
pocket1: WeaponPistolComrade
pocket2: BookNCWLPartyDossier
back: ClothingBackpackNCWL
gloves: ClothingHandsGlovesMVD
ears: ClothingHeadsetNCWL
Expand Down
Loading