]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
SpeakOnUseSystem and phrases for figurines (#30455)
authorlzk <124214523+lzk228@users.noreply.github.com>
Sat, 3 Aug 2024 14:06:04 +0000 (16:06 +0200)
committerGitHub <noreply@github.com>
Sat, 3 Aug 2024 14:06:04 +0000 (10:06 -0400)
* 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>
Content.Server/Chat/SpeakOnUseComponent.cs [new file with mode: 0644]
Content.Server/Chat/Systems/SpeakOnUseSystem.cs [new file with mode: 0644]
Resources/Locale/en-US/datasets/figurines.ftl [new file with mode: 0644]
Resources/Prototypes/Datasets/figurines.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Objects/Fun/figurines.yml

diff --git a/Content.Server/Chat/SpeakOnUseComponent.cs b/Content.Server/Chat/SpeakOnUseComponent.cs
new file mode 100644 (file)
index 0000000..f8953ae
--- /dev/null
@@ -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; }
+
+}
diff --git a/Content.Server/Chat/Systems/SpeakOnUseSystem.cs b/Content.Server/Chat/Systems/SpeakOnUseSystem.cs
new file mode 100644 (file)
index 0000000..addec79
--- /dev/null
@@ -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));
+    }
+}
diff --git a/Resources/Locale/en-US/datasets/figurines.ftl b/Resources/Locale/en-US/datasets/figurines.ftl
new file mode 100644 (file)
index 0000000..0de2d91
--- /dev/null
@@ -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!
diff --git a/Resources/Prototypes/Datasets/figurines.yml b/Resources/Prototypes/Datasets/figurines.yml
new file mode 100644 (file)
index 0000000..8ad651c
--- /dev/null
@@ -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
index ce83f66cb37c8a97a7b6fcb08b7f104eaa089c70..0ab95ce04301e25aecbf29c4fd775d3464b172cf 100644 (file)
     - 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
   components:
   - type: Sprite
     state: boxer
+  # - type: SpeakOnUse # TODO add something
+  #   pack: FigurinesBoxer
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: captain
+  - type: SpeakOnUse
+    pack: FigurinesCaptain
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: hos
+  - type: SpeakOnUse
+    pack: FigurinesHoS
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: warden
+  - type: SpeakOnUse
+    pack: FigurinesWarden
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: detective
+  - type: SpeakOnUse
+    pack: FigurinesDetective
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: security
+  - type: SpeakOnUse
+    pack: FigurinesSecurity
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: lawyer
+  - type: SpeakOnUse
+    pack: FigurinesLawyer
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: cargotech
+  - type: SpeakOnUse
+    pack: FigurinesCargoTech
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: salvage
+  - type: SpeakOnUse
+    pack: FigurinesSalvage
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: qm
+  - type: SpeakOnUse
+    pack: FigurinesQM
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: ce
+  - type: SpeakOnUse
+    pack: FigurinesCE
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: engineer
+  - type: SpeakOnUse
+    pack: FigurinesEngineer
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: atmos
+  - type: SpeakOnUse
+    pack: FigurinesAtmosTech
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: rd
+  - type: SpeakOnUse
+    pack: FigurinesRD
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: scientist
+  - type: SpeakOnUse
+    pack: FigurinesScientist
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: cmo
+  - type: SpeakOnUse
+    pack: FigurinesCMO
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: chemist
+  - type: SpeakOnUse
+    pack: FigurinesChemist
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: paramedic
+  - type: SpeakOnUse
+    pack: FigurinesParamedic
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: medical
+  - type: SpeakOnUse
+    pack: FigurinesDoctor
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: librarian
+  - type: SpeakOnUse
+    pack: FigurinesLibrarian
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: chaplain
+  - type: SpeakOnUse
+    pack: FigurinesChaplain
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: chef
+  - type: SpeakOnUse
+    pack: FigurinesChef
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: bartender
+  - type: SpeakOnUse
+    pack: FigurinesBartender
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: botanist
+  - type: SpeakOnUse
+    pack: FigurinesBotanist
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: janitor
+  - type: SpeakOnUse
+    pack: FigurinesJanitor
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: nukie
+  - type: SpeakOnUse
+    pack: FigurinesNukie
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: nukie_elite
+  - type: SpeakOnUse
+    pack: FigurinesNukieElite
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: nukie_commander
+  - type: SpeakOnUse
+    pack: FigurinesNukieCommander
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: footsoldier
+  - type: SpeakOnUse
+    pack: FigurinesFootsoldier
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: wizard
+  - type: SpeakOnUse
+    pack: FigurinesWizard
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: wizard_fake
+  - type: SpeakOnUse
+    pack: FigurinesWizard
 
 #Nonhuman Figurines
 
   components:
   - type: Sprite
     state: spacedragon
+  - type: SpeakOnUse
+    pack: FigurinesSpaceDragon
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: queen
+  # - type: SpeakOnUse # TODO add something
+  #   pack: FigurinesQueen
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: ratking
+  - type: SpeakOnUse
+    pack: FigurinesRatKing
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: ratservant
+  - type: SpeakOnUse
+    pack: FigurinesRatServant
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: mouse
+  - type: SpeakOnUse
+    pack: FigurinesMouse
 
 - type: entity
   parent: BaseFigurine
   components:
   - type: Sprite
     state: slime
+  - type: SpeakOnUse
+    pack: FigurinesSlime
 
 - type: entity
   parent: BaseFigurine
   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.