SpeakOnUseSystem and phrases for figurines (#30455)

* commit 1

* 2

* add more text

* apply review

* apply review 2

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
This commit is contained in:
lzk
2024-08-03 16:06:04 +02:00
committed by GitHub
parent b432dc6125
commit a9693322be
5 changed files with 583 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
using Content.Shared.Dataset;
using Robust.Shared.Prototypes;
namespace Content.Server.Chat;
/// <summary>
/// Entity will say the things when activated
/// </summary>
[RegisterComponent]
public sealed partial class SpeakOnUseComponent : Component
{
/// <summary>
/// The identifier for the dataset prototype containing messages to be spoken by this entity.
/// </summary>
[DataField(required: true)]
public ProtoId<LocalizedDatasetPrototype> Pack { get; private set; }
}

View File

@@ -0,0 +1,42 @@
using Content.Server.Chat;
using Content.Shared.Dataset;
using Content.Shared.Interaction.Events;
using Content.Shared.Timing;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Server.Chat.Systems;
/// <summary>
/// Handles the speech on activating an entity
/// </summary>
public sealed partial class SpeakOnUIClosedSystem : EntitySystem
{
[Dependency] private readonly UseDelaySystem _useDelay = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ChatSystem _chat = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SpeakOnUseComponent, UseInHandEvent>(OnUseInHand);
}
public void OnUseInHand(EntityUid uid, SpeakOnUseComponent? component, UseInHandEvent args)
{
if (!Resolve(uid, ref component))
return;
// Yes it won't work without UseDelayComponent, but we don't want any kind of spam
if (!TryComp(uid, out UseDelayComponent? useDelay) || _useDelay.IsDelayed((uid, useDelay)))
return;
if (!_prototypeManager.TryIndex(component.Pack, out var messagePack))
return;
var message = Loc.GetString(_random.Pick(messagePack.Values));
_chat.TrySendInGameICMessage(uid, message, InGameICChatType.Speak, true);
_useDelay.TryResetDelay((uid, useDelay));
}
}

View File

@@ -0,0 +1,166 @@
figurines-hop-1 = Papers, please.
figurines-hop-2 = You are fired.
figurines-passenger-1 = How to change hands?
figurines-passenger-2 = Call evac.
figurines-greytider-1 = Man, this party stinks. I fucking hate these people.
figurines-greytider-2 = Uh-oh, who's lost their stunbaton?
figurines-greytider-3 = Robust.
figurines-greytider-4 = I'm not me without a toolbox.
figurines-greytider-5 = Grey tide station wide!
figurines-clown-1 = Honk!
figurines-clown-2 = Banana!
figurines-clown-3 = Soap!
figurines-clown-4 = HoP has one clown, HoS has the whole department.
figurines-clown-5 = Do I annoy you?
figurines-holoclown-1 = I'm helping my older brother.
figurines-mime-1 = ...
figurines-mime-2 = ...
figurines-mime-3 = ....
figurines-mime-4 = .......
figurines-mime-5 = ................
figurines-musician-1 = Never gonna give you up!
figurines-musician-2 = Never gonna let you down!
# figurines-boxer-
figurines-captain-1 = Crew, the Nuke Disk is safely up my ass.
figurines-captain-2 = Glory to NT!
figurines-hos-1 = Space law? What?
figurines-hos-2 = Shot the clown.
figurines-warden-1 = Execute him for breaking in!
figurines-detective-1 = The butler did it.
figurines-security-1 = I am the law!
figurines-security-2 = You have violated article 1984.
figurines-lawyer-1 = Better Call Saul!
figurines-lawyer-2 = Objection!
figurines-cargotech-1 = DRAGON ON ATS!
figurines-cargotech-2 = I sold the station!
figurines-cargotech-3 = Brain bounty? I don't have a brain.
figurines-salvage-1 = Megafauna? It was mega easy.
figurines-qm-1 = Who stole the shuttle?
figurines-qm-2 = I won't approve the guns.
figurines-qm-3 = I didn't buy those guns!
figurines-qm-4 = One toys crate for ma fellow clown!
figurines-qm-5 = Time to spent all money on gambling.
figurines-qm-6 = Viva La Cargonia!
figurines-qm-7 = Fill the form.
figurines-ce-1 = Everyone to the briefing!
figurines-ce-2 = Wire the solars!
figurines-ce-3 = How to setup the TEG?
figurines-ce-4 = SINGULOOSE!
figurines-ce-5 = TESLOOSE!
figurines-engineer-1 = SINGULOOSE!
figurines-engineer-2 = TESLOOSE!
figurines-engineer-3 = What is AME?
figurines-atmostech-1 = I put plasma in distro.
figurines-atmostech-2 = I will burn you in a burn chamber.
figurines-atmostech-3 = Frezon...
figurines-atmostech-4 = Tritium...
figurines-atmostech-5 = Glory to Atmosia!
figurines-rd-1 = Blowing all of the borgs!
figurines-rd-2 = Tier 3 arsenal? No way.
figurines-scientist-1 = Someone else must have made those bombs!
figurines-scientist-2 = He asked to be borged!
figurines-scientist-3 = Carp at sci!
figurines-scientist-4 = Explosion at sci.
figurines-scientist-5 = The anomaly has exploded.
figurines-cmo-1 = Suit sensors!
figurines-cmo-2 = Why do we have meth?
figurines-chemist-1 = Get your pills!
figurines-paramedic-1 = Insuls and tools!
figurines-paramedic-2 = I need AA for saving people!
figurines-doctor-1 = The patient is already dead!
figurines-doctor-2 = CLEAR!
figurines-doctor-3 = Saw makes BRRR.
figurines-librarian-1 = One day while...
figurines-librarian-2 = Silence!
figurines-chaplain-1 = Would you like to join my cul- I mean religion.
figurines-chaplain-2 = Gods make me a killing machine please!
figurines-chaplain-3 = God exists!
figurines-chef-1 = I swear it's not human meat.
figurines-bartender-1 = Where's my monkey?
figurines-bartender-2 = Sec won't drink.
figurines-botanist-1 = I don't have any weed, officer!
figurines-botanist-2 = Dude, I see colors...
figurines-janitor-1 = Clown stole my soap. Again.
figurines-janitor-2 = Look at the signs, you idiot.
figurines-nukie-1 = I got the disk!
figurines-nukie-2 = Whiskey, Echo, Whiskey.
figurines-nukie-3 = The nuke makes boom.
figurines-nukie-4 = What's the code?
figurines-nukie-elite-1 = Not a word in nanotrasen.
figurines-nukie-elite-2 = THAT'S A KEG!
figurines-nukie-elite-3 = Guys are you alive?
figurines-nukie-commander-1 = GET DAT FUKKEN DISK!
figurines-footsoldier-1 = I'm an evil boy. Less boy every day, more evil every day.
figurines-footsoldier-2 = Who will you choose? Them or us? Us or them?
figurines-wizard-1 = Ei Nath!
figurines-wizard-2 = Wehgardium Leviosa!
figurines-wizard-3 = Skidaddle skadoodle!
figurines-wizard-4 = FIREBALL!
figurines-space-dragon-1 = Fish will consume the station.
# figurines-queen
figurines-rat-king-1 = Gimme some food, capiche?
figurines-rat-king-2 = Fugeddaboutit.
figurines-rat-king-3 = Whack 'em!
figurines-rat-servant-1 = Capiche!
figurines-rat-servant-2 = Boss says!
figurines-mouse-1 = Piep!
figurines-mouse-2 = Squeak!
figurines-mouse-3 = Chuu!
figurines-mouse-4 = Eeee!
figurines-mouse-5 = Pip!
figurines-mouse-6 = Fwiep!
figurines-mouse-7 = Heep!
figurines-slime-1 = Blyump.
figurines-slime-2 = Blimpuf?
figurines-slime-3 = Blump!
figurines-hamlet-1 = Piep!
figurines-hamlet-2 = Squeak!
figurines-hamlet-3 = Chuu!
figurines-hamlet-4 = Eeee!
figurines-hamlet-5 = Pip!
figurines-hamlet-6 = Fwiep!
figurines-hamlet-7 = Heep!
figurines-hamlet-8 = NOT THE MICROWAVE!

View File

@@ -0,0 +1,263 @@
- type: localizedDataset
id: FigurinesHoP
values:
prefix: figurines-hop-
count: 2
- type: localizedDataset
id: FigurinesPassenger
values:
prefix: figurines-passenger-
count: 2
- type: localizedDataset
id: FigurinesGreytider
values:
prefix: figurines-greytider-
count: 5
- type: localizedDataset
id: FigurinesClown
values:
prefix: figurines-clown-
count: 5
- type: localizedDataset
id: FigurinesHoloClown
values:
prefix: figurines-holoclown-
count: 1
- type: localizedDataset
id: FigurinesMime
values:
prefix: figurines-mime-
count: 5
- type: localizedDataset
id: FigurinesMusician
values:
prefix: figurines-musician-
count: 2
# - type: localizedDataset # TODO add something
# id: FigurinesBoxer
# values:
# prefix: figurines-boxer-
# count: 0
- type: localizedDataset
id: FigurinesCaptain
values:
prefix: figurines-captain-
count: 2
- type: localizedDataset
id: FigurinesHoS
values:
prefix: figurines-hos-
count: 2
- type: localizedDataset
id: FigurinesWarden
values:
prefix: figurines-warden-
count: 1
- type: localizedDataset
id: FigurinesDetective
values:
prefix: figurines-detective-
count: 1
- type: localizedDataset
id: FigurinesSecurity
values:
prefix: figurines-security-
count: 2
- type: localizedDataset
id: FigurinesLawyer
values:
prefix: figurines-lawyer-
count: 2
- type: localizedDataset
id: FigurinesCargoTech
values:
prefix: figurines-cargotech-
count: 3
- type: localizedDataset
id: FigurinesSalvage
values:
prefix: figurines-salvage-
count: 1
- type: localizedDataset
id: FigurinesQM
values:
prefix: figurines-qm-
count: 7
- type: localizedDataset
id: FigurinesCE
values:
prefix: figurines-ce-
count: 5
- type: localizedDataset
id: FigurinesEngineer
values:
prefix: figurines-engineer-
count: 3
- type: localizedDataset
id: FigurinesAtmosTech
values:
prefix: figurines-atmostech-
count: 5
- type: localizedDataset
id: FigurinesRD
values:
prefix: figurines-rd-
count: 2
- type: localizedDataset
id: FigurinesScientist
values:
prefix: figurines-scientist-
count: 5
- type: localizedDataset
id: FigurinesCMO
values:
prefix: figurines-cmo-
count: 2
- type: localizedDataset
id: FigurinesChemist
values:
prefix: figurines-chemist-
count: 1
- type: localizedDataset
id: FigurinesParamedic
values:
prefix: figurines-paramedic-
count: 2
- type: localizedDataset
id: FigurinesDoctor
values:
prefix: figurines-doctor-
count: 3
- type: localizedDataset
id: FigurinesLibrarian
values:
prefix: figurines-librarian-
count: 2
- type: localizedDataset
id: FigurinesChaplain
values:
prefix: figurines-chaplain-
count: 3
- type: localizedDataset
id: FigurinesChef
values:
prefix: figurines-chef-
count: 1
- type: localizedDataset
id: FigurinesBartender
values:
prefix: figurines-bartender-
count: 2
- type: localizedDataset
id: FigurinesBotanist
values:
prefix: figurines-botanist-
count: 2
- type: localizedDataset
id: FigurinesJanitor
values:
prefix: figurines-janitor-
count: 2
- type: localizedDataset
id: FigurinesNukie
values:
prefix: figurines-nukie-
count: 4
- type: localizedDataset
id: FigurinesNukieElite
values:
prefix: figurines-nukie-elite-
count: 3
- type: localizedDataset
id: FigurinesNukieCommander
values:
prefix: figurines-nukie-commander-
count: 1
- type: localizedDataset
id: FigurinesFootsoldier
values:
prefix: figurines-footsoldier-
count: 2
- type: localizedDataset
id: FigurinesWizard
values:
prefix: figurines-wizard-
count: 1
- type: localizedDataset
id: FigurinesSpaceDragon
values:
prefix: figurines-space-dragon-
count: 1
# - type: localizedDataset # TODO add something
# id: FigurinesQueen
# values:
# prefix: figurines-queen-
# count: 0
- type: localizedDataset
id: FigurinesRatKing
values:
prefix: figurines-rat-king-
count: 3
- type: localizedDataset
id: FigurinesRatServant
values:
prefix: figurines-rat-servant-
count: 2
- type: localizedDataset
id: FigurinesMouse
values:
prefix: figurines-mouse-
count: 7
- type: localizedDataset
id: FigurinesSlime
values:
prefix: figurines-slime-
count: 3
- type: localizedDataset
id: FigurinesHamlet
values:
prefix: figurines-hamlet-
count: 8

View File

@@ -19,6 +19,10 @@
- Figurine
- type: StealTarget
stealGroup: Figurines
- type: UseDelay
delay: 10
- type: Speech
speechSounds: Pai # it just sounds better
- type: entity
parent: BaseFigurine
@@ -28,6 +32,8 @@
components:
- type: Sprite
state: hop
- type: SpeakOnUse
pack: FigurinesHoP
- type: entity
parent: BaseFigurine
@@ -37,6 +43,8 @@
components:
- type: Sprite
state: passenger
- type: SpeakOnUse
pack: FigurinesPassenger
- type: entity
parent: BaseFigurine
@@ -46,6 +54,8 @@
components:
- type: Sprite
state: passenger_greytide
- type: SpeakOnUse
pack: FigurinesGreytider
- type: entity
parent: BaseFigurine
@@ -55,6 +65,8 @@
components:
- type: Sprite
state: clown
- type: SpeakOnUse
pack: FigurinesClown
- type: entity
parent: BaseFigurine
@@ -64,7 +76,8 @@
components:
- type: Sprite
state: holoclown
- type: SpeakOnUse
pack: FigurinesHoloClown
- type: entity
parent: BaseFigurine
@@ -74,6 +87,8 @@
components:
- type: Sprite
state: mime
- type: SpeakOnUse
pack: FigurinesMime
- type: entity
parent: BaseFigurine
@@ -83,6 +98,8 @@
components:
- type: Sprite
state: musician
- type: SpeakOnUse
pack: FigurinesMusician
- type: entity
parent: BaseFigurine
@@ -92,6 +109,8 @@
components:
- type: Sprite
state: boxer
# - type: SpeakOnUse # TODO add something
# pack: FigurinesBoxer
- type: entity
parent: BaseFigurine
@@ -101,6 +120,8 @@
components:
- type: Sprite
state: captain
- type: SpeakOnUse
pack: FigurinesCaptain
- type: entity
parent: BaseFigurine
@@ -110,6 +131,8 @@
components:
- type: Sprite
state: hos
- type: SpeakOnUse
pack: FigurinesHoS
- type: entity
parent: BaseFigurine
@@ -119,6 +142,8 @@
components:
- type: Sprite
state: warden
- type: SpeakOnUse
pack: FigurinesWarden
- type: entity
parent: BaseFigurine
@@ -128,6 +153,8 @@
components:
- type: Sprite
state: detective
- type: SpeakOnUse
pack: FigurinesDetective
- type: entity
parent: BaseFigurine
@@ -137,6 +164,8 @@
components:
- type: Sprite
state: security
- type: SpeakOnUse
pack: FigurinesSecurity
- type: entity
parent: BaseFigurine
@@ -146,6 +175,8 @@
components:
- type: Sprite
state: lawyer
- type: SpeakOnUse
pack: FigurinesLawyer
- type: entity
parent: BaseFigurine
@@ -155,6 +186,8 @@
components:
- type: Sprite
state: cargotech
- type: SpeakOnUse
pack: FigurinesCargoTech
- type: entity
parent: BaseFigurine
@@ -164,6 +197,8 @@
components:
- type: Sprite
state: salvage
- type: SpeakOnUse
pack: FigurinesSalvage
- type: entity
parent: BaseFigurine
@@ -173,6 +208,8 @@
components:
- type: Sprite
state: qm
- type: SpeakOnUse
pack: FigurinesQM
- type: entity
parent: BaseFigurine
@@ -182,6 +219,8 @@
components:
- type: Sprite
state: ce
- type: SpeakOnUse
pack: FigurinesCE
- type: entity
parent: BaseFigurine
@@ -191,6 +230,8 @@
components:
- type: Sprite
state: engineer
- type: SpeakOnUse
pack: FigurinesEngineer
- type: entity
parent: BaseFigurine
@@ -200,6 +241,8 @@
components:
- type: Sprite
state: atmos
- type: SpeakOnUse
pack: FigurinesAtmosTech
- type: entity
parent: BaseFigurine
@@ -209,6 +252,8 @@
components:
- type: Sprite
state: rd
- type: SpeakOnUse
pack: FigurinesRD
- type: entity
parent: BaseFigurine
@@ -218,6 +263,8 @@
components:
- type: Sprite
state: scientist
- type: SpeakOnUse
pack: FigurinesScientist
- type: entity
parent: BaseFigurine
@@ -227,6 +274,8 @@
components:
- type: Sprite
state: cmo
- type: SpeakOnUse
pack: FigurinesCMO
- type: entity
parent: BaseFigurine
@@ -236,6 +285,8 @@
components:
- type: Sprite
state: chemist
- type: SpeakOnUse
pack: FigurinesChemist
- type: entity
parent: BaseFigurine
@@ -245,6 +296,8 @@
components:
- type: Sprite
state: paramedic
- type: SpeakOnUse
pack: FigurinesParamedic
- type: entity
parent: BaseFigurine
@@ -254,6 +307,8 @@
components:
- type: Sprite
state: medical
- type: SpeakOnUse
pack: FigurinesDoctor
- type: entity
parent: BaseFigurine
@@ -263,6 +318,8 @@
components:
- type: Sprite
state: librarian
- type: SpeakOnUse
pack: FigurinesLibrarian
- type: entity
parent: BaseFigurine
@@ -272,6 +329,8 @@
components:
- type: Sprite
state: chaplain
- type: SpeakOnUse
pack: FigurinesChaplain
- type: entity
parent: BaseFigurine
@@ -281,6 +340,8 @@
components:
- type: Sprite
state: chef
- type: SpeakOnUse
pack: FigurinesChef
- type: entity
parent: BaseFigurine
@@ -290,6 +351,8 @@
components:
- type: Sprite
state: bartender
- type: SpeakOnUse
pack: FigurinesBartender
- type: entity
parent: BaseFigurine
@@ -299,6 +362,8 @@
components:
- type: Sprite
state: botanist
- type: SpeakOnUse
pack: FigurinesBotanist
- type: entity
parent: BaseFigurine
@@ -308,6 +373,8 @@
components:
- type: Sprite
state: janitor
- type: SpeakOnUse
pack: FigurinesJanitor
- type: entity
parent: BaseFigurine
@@ -317,6 +384,8 @@
components:
- type: Sprite
state: nukie
- type: SpeakOnUse
pack: FigurinesNukie
- type: entity
parent: BaseFigurine
@@ -326,6 +395,8 @@
components:
- type: Sprite
state: nukie_elite
- type: SpeakOnUse
pack: FigurinesNukieElite
- type: entity
parent: BaseFigurine
@@ -335,6 +406,8 @@
components:
- type: Sprite
state: nukie_commander
- type: SpeakOnUse
pack: FigurinesNukieCommander
- type: entity
parent: BaseFigurine
@@ -344,6 +417,8 @@
components:
- type: Sprite
state: footsoldier
- type: SpeakOnUse
pack: FigurinesFootsoldier
- type: entity
parent: BaseFigurine
@@ -353,6 +428,8 @@
components:
- type: Sprite
state: wizard
- type: SpeakOnUse
pack: FigurinesWizard
- type: entity
parent: BaseFigurine
@@ -362,6 +439,8 @@
components:
- type: Sprite
state: wizard_fake
- type: SpeakOnUse
pack: FigurinesWizard
#Nonhuman Figurines
@@ -373,6 +452,8 @@
components:
- type: Sprite
state: spacedragon
- type: SpeakOnUse
pack: FigurinesSpaceDragon
- type: entity
parent: BaseFigurine
@@ -382,6 +463,8 @@
components:
- type: Sprite
state: queen
# - type: SpeakOnUse # TODO add something
# pack: FigurinesQueen
- type: entity
parent: BaseFigurine
@@ -391,6 +474,8 @@
components:
- type: Sprite
state: ratking
- type: SpeakOnUse
pack: FigurinesRatKing
- type: entity
parent: BaseFigurine
@@ -400,6 +485,8 @@
components:
- type: Sprite
state: ratservant
- type: SpeakOnUse
pack: FigurinesRatServant
- type: entity
parent: BaseFigurine
@@ -409,6 +496,8 @@
components:
- type: Sprite
state: mouse
- type: SpeakOnUse
pack: FigurinesMouse
- type: entity
parent: BaseFigurine
@@ -418,6 +507,8 @@
components:
- type: Sprite
state: slime
- type: SpeakOnUse
pack: FigurinesSlime
- type: entity
parent: BaseFigurine
@@ -427,6 +518,8 @@
components:
- type: Sprite
state: hamlet
- type: SpeakOnUse
pack: FigurinesHamlet
#TODO: Convert these to the new figurine sprite template and rename their sprite name.
#Yes, these are humanoids, but they need to be updated first.