From b8a270f196c1abe9262e8c7fdaa941b392ca027a Mon Sep 17 00:00:00 2001
From: Piggy3 <98598467+Piggy3@users.noreply.github.com>
Date: Mon, 6 Apr 2026 19:26:38 -0700
Subject: [PATCH 01/45] Linkable thrusters and gyro
---
.../Shuttles/Components/ThrusterComponent.cs | 19 ++++++++
.../Shuttles/Systems/ThrusterSystem.cs | 48 ++++++++++++++++++-
.../Structures/Shuttles/thrusters.yml | 22 +++++++++
3 files changed, 88 insertions(+), 1 deletion(-)
diff --git a/Content.Server/Shuttles/Components/ThrusterComponent.cs b/Content.Server/Shuttles/Components/ThrusterComponent.cs
index 572ab11bb72..ccb10d15921 100644
--- a/Content.Server/Shuttles/Components/ThrusterComponent.cs
+++ b/Content.Server/Shuttles/Components/ThrusterComponent.cs
@@ -1,7 +1,9 @@
using Content.Server.Shuttles.Systems;
using Content.Shared.Damage;
+using Content.Shared.DeviceLinking;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using System.Numerics;
namespace Content.Server.Shuttles.Components
@@ -68,6 +70,23 @@ public sealed partial class ThrusterComponent : Component
///
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
public TimeSpan NextFire = TimeSpan.Zero;
+
+ ///
+ /// Load on the power network, in watts.
+ ///
+ public float OriginalLoad { get; set; } = 0;
+
+ ///
+ /// Togglable thrusters
+ ///
+ [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))]
+ public string OnPort = "On";
+
+ [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))]
+ public string OffPort = "Off";
+
+ [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))]
+ public string TogglePort = "Toggle";
}
public enum ThrusterType
diff --git a/Content.Server/Shuttles/Systems/ThrusterSystem.cs b/Content.Server/Shuttles/Systems/ThrusterSystem.cs
index be3a5c8f276..93e02bd9b28 100644
--- a/Content.Server/Shuttles/Systems/ThrusterSystem.cs
+++ b/Content.Server/Shuttles/Systems/ThrusterSystem.cs
@@ -8,8 +8,14 @@
using Content.Shared.Maps;
using Content.Shared.Physics;
using Content.Shared.Power;
+using Content.Shared.Power.Components;
using Content.Shared.Shuttles.Components;
using Content.Shared.Temperature;
+using Content.Server.Power.Components;
+using Content.Server.Construction; // Frontier
+using Content.Server.Construction.Components; // Frontier
+using Content.Shared.Construction.Components; // Frontier
+using Content.Shared.DeviceLinking.Events; // Frontier
using Robust.Shared.Map.Components;
using Robust.Shared.Physics.Collision.Shapes;
using Robust.Shared.Physics.Components;
@@ -30,6 +36,8 @@ public sealed class ThrusterSystem : EntitySystem
[Dependency] private readonly DamageableSystem _damageable = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
+ [Dependency] private readonly ConstructionSystem _construction = default!; // Frontier
+ [Dependency] private readonly SharedTransformSystem _transform = default!; // Frontier
[Dependency] private readonly TurfSystem _turf = default!;
// Essentially whenever thruster enables we update the shuttle's available impulses which are used for movement.
@@ -54,8 +62,35 @@ public override void Initialize()
SubscribeLocalEvent(OnThrusterExamine);
SubscribeLocalEvent(OnShuttleTileChange);
+ SubscribeLocalEvent(OnSignalReceived); // Frontier
}
+ // Frontier: signal handler
+ private void OnSignalReceived(EntityUid uid, ThrusterComponent component, ref SignalReceivedEvent args)
+ {
+ if (args.Port == component.OffPort)
+ component.Enabled = false;
+ else if (args.Port == component.OnPort)
+ component.Enabled = true;
+ else if (args.Port == component.TogglePort)
+ component.Enabled ^= true;
+ else
+ return; // Invalid port, don't change the thruster.
+
+ if (!component.Enabled)
+ {
+ if (TryComp(uid, out var apcPower) && component.OriginalLoad != 0 && apcPower.Load != 1)
+ apcPower.Load = 1;
+ DisableThruster(uid, component);
+ }
+ else if (CanEnable(uid, component))
+ {
+ if (TryComp(uid, out var apcPower) && component.OriginalLoad != apcPower.Load)
+ apcPower.Load = component.OriginalLoad;
+ EnableThruster(uid, component);
+ }
+ }
+ // End Frontier: signal handler
private void OnThrusterExamine(EntityUid uid, ThrusterComponent component, ExaminedEvent args)
{
// Powered is already handled by other power components
@@ -142,11 +177,15 @@ private void OnActivateThruster(EntityUid uid, ThrusterComponent component, Acti
if (!component.Enabled)
{
+ if (TryComp(uid, out var apcPower) && component.OriginalLoad != 0 && apcPower.Load != 1) // Frontier
+ apcPower.Load = 1; // Frontier
DisableThruster(uid, component);
args.Handled = true;
}
else if (CanEnable(uid, component))
{
+ if (TryComp(uid, out var apcPower) && component.OriginalLoad != apcPower.Load) // Frontier
+ apcPower.Load = component.OriginalLoad; // Frontier
EnableThruster(uid, component);
args.Handled = true;
}
@@ -235,6 +274,12 @@ private void OnAnchorChange(EntityUid uid, ThrusterComponent component, ref Anch
private void OnThrusterInit(EntityUid uid, ThrusterComponent component, ComponentInit args)
{
+ // Frontier: togglable thrusters
+ if (TryComp(uid, out var apcPower) && component.OriginalLoad == 0)
+ {
+ component.OriginalLoad = apcPower.Load;
+ }
+ // End Frontier: togglable thrusters
_ambient.SetAmbience(uid, false);
if (!component.Enabled)
@@ -467,7 +512,7 @@ public override void Update(float frameTime)
var query = EntityQueryEnumerator();
var curTime = _timing.CurTime;
- while (query.MoveNext(out var comp))
+ while (query.MoveNext(out var ent, out var comp)) // Frontier: add out var ent
{
if (comp.NextFire > curTime)
continue;
@@ -597,4 +642,5 @@ private int GetFlagIndex(DirectionFlag flag)
{
return (int)Math.Log2((int)flag);
}
+
}
diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
index 54d9248044f..ff14b4defbb 100644
--- a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
+++ b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
@@ -100,6 +100,17 @@
shader: unshaded
visible: false
offset: 0, 1
+ # Frontier: linkable thrusters, pirate bounties
+ - type: DeviceNetwork
+ deviceNetId: Wireless
+ receiveFrequencyId: BasicDevice
+ - type: WirelessNetworkConnection
+ range: 200
+ - type: DeviceLinkSink
+ ports:
+ - On
+ - Off
+ - Toggle
- type: entity
parent: Thruster
@@ -277,6 +288,17 @@
damageModifierSet: Electronic
- type: StaticPrice
price: 150
+ # Frontier: linkable thrusters, pirate bounties
+ - type: DeviceNetwork
+ deviceNetId: Wireless
+ receiveFrequencyId: BasicDevice
+ - type: WirelessNetworkConnection
+ range: 200
+ - type: DeviceLinkSink
+ ports:
+ - On
+ - Off
+ - Toggle
- type: entity
id: GyroscopeUnanchored
From fda8c7f7fc315c7b4fbe49a09c21e3a2466374de Mon Sep 17 00:00:00 2001
From: Piggy3 <98598467+Piggy3@users.noreply.github.com>
Date: Mon, 6 Apr 2026 19:29:07 -0700
Subject: [PATCH 02/45] Update thrusters.yml
---
.../Prototypes/Entities/Structures/Shuttles/thrusters.yml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
index ff14b4defbb..1414e6d5d15 100644
--- a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
+++ b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
@@ -288,7 +288,10 @@
damageModifierSet: Electronic
- type: StaticPrice
price: 150
+<<<<<<< Updated upstream
# Frontier: linkable thrusters, pirate bounties
+=======
+>>>>>>> Stashed changes
- type: DeviceNetwork
deviceNetId: Wireless
receiveFrequencyId: BasicDevice
From 58b82f07ff6f8a86a105c1ede7501ffdb96224d8 Mon Sep 17 00:00:00 2001
From: Piggy3 <98598467+Piggy3@users.noreply.github.com>
Date: Mon, 6 Apr 2026 19:30:01 -0700
Subject: [PATCH 03/45] Update thrusters.yml
---
.../Prototypes/Entities/Structures/Shuttles/thrusters.yml | 4 ----
1 file changed, 4 deletions(-)
diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
index 1414e6d5d15..c861f4e5162 100644
--- a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
+++ b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
@@ -288,10 +288,6 @@
damageModifierSet: Electronic
- type: StaticPrice
price: 150
-<<<<<<< Updated upstream
- # Frontier: linkable thrusters, pirate bounties
-=======
->>>>>>> Stashed changes
- type: DeviceNetwork
deviceNetId: Wireless
receiveFrequencyId: BasicDevice
From b7f4564f6ef677b243741fa93f92ba0f31e1960a Mon Sep 17 00:00:00 2001
From: SeniorCaution
Date: Wed, 8 Apr 2026 19:08:41 -0400
Subject: [PATCH 04/45] Intial addition of Goblin
---
.../Components/GoblinAccentComponent.cs | 7 +
.../EntitySystems/GoblinAccentSystem.cs | 31 +
.../_NF/Goblin/Components/GoblinComponent.cs | 7 +
.../Audio/_NF/Voice/Goblin/attributions.yml | 32 +
.../_NF/Voice/Goblin/goblin-cackle-01.ogg | Bin 0 -> 43071 bytes
.../_NF/Voice/Goblin/goblin-cackle-02.ogg | Bin 0 -> 41463 bytes
.../_NF/Voice/Goblin/goblin-cackle-03.ogg | Bin 0 -> 45495 bytes
.../_NF/Voice/Goblin/goblin-cackle-04.ogg | Bin 0 -> 53382 bytes
.../_NF/Voice/Goblin/goblin-cackle-05.ogg | Bin 0 -> 122580 bytes
.../_NF/Voice/Goblin/goblin-chatter-01.ogg | Bin 0 -> 882191 bytes
.../Audio/_NF/Voice/Goblin/goblin-cry-01.ogg | Bin 0 -> 62483 bytes
.../Audio/_NF/Voice/Goblin/goblin-cry-02.ogg | Bin 0 -> 45909 bytes
.../Audio/_NF/Voice/Goblin/goblin-hiss-01.ogg | Bin 0 -> 41060 bytes
.../_NF/Voice/Goblin/goblin-scream-01.ogg | Bin 0 -> 17304 bytes
.../_NF/Voice/Goblin/goblin-scream-02.ogg | Bin 0 -> 36052 bytes
.../_NF/Voice/Goblin/goblin-scream-03.ogg | Bin 0 -> 40535 bytes
.../_NF/Voice/Goblin/goblin-scream-04.ogg | Bin 0 -> 41529 bytes
Resources/Audio/_NF/Voice/Goblin/license.txt | 32 +
.../Locale/en-US/_NF/accent/goblin_accent.ftl | 737 ++++++++++++++++++
.../en-US/_NF/chat/managers/chat_manager.ftl | 6 +
.../Locale/en-US/_NF/species/species.ftl | 1 +
Resources/Locale/en-US/_NF/traits/traits.ftl | 2 +
.../en-US/datasets/names/goblin_female.ftl | 208 +++++
.../en-US/datasets/names/goblin_last.ftl | 210 +++++
.../en-US/datasets/names/goblin_male.ftl | 209 +++++
.../Locale/en-US/markings/goblin_markings.ftl | 15 +
Resources/Prototypes/Body/Species/goblin.yml | 229 ++++++
.../Datasets/Names/goblin_female.yml | 5 +
.../Prototypes/Datasets/Names/goblin_last.yml | 5 +
.../Prototypes/Datasets/Names/goblin_male.yml | 5 +
.../Mobs/Customization/Markings/gauze.yml | 34 +-
Resources/Prototypes/Species/goblin.yml | 11 +
.../_NF/Accents/word_replacements.yml | 369 +++++++++
.../Markings/goblin_markings.yml | 82 ++
.../Objects/Consumable/Food/meat_goblin.yml | 11 +
.../goblin_soundcollection.yml | 32 +
.../_NF/Voice/speech_emote_sounds.yml | 64 ++
.../Prototypes/_NF/Voice/speech_verbs.yml | 9 +
.../goblin_ears.rsi/goblin_ears_default.png | Bin 0 -> 799 bytes
.../goblin_ears_default_alt.png | Bin 0 -> 780 bytes
.../goblin_ears.rsi/goblin_ears_long_01.png | Bin 0 -> 793 bytes
.../goblin_ears.rsi/goblin_ears_long_02.png | Bin 0 -> 783 bytes
.../Customization/goblin_ears.rsi/meta.json | 27 +
.../goblin_noses.rsi/goblin_nose_crooked.png | Bin 0 -> 683 bytes
.../goblin_noses.rsi/goblin_nose_default.png | Bin 0 -> 635 bytes
.../goblin_noses.rsi/goblin_nose_long.png | Bin 0 -> 694 bytes
.../Customization/goblin_noses.rsi/meta.json | 23 +
.../goblin_tusks.rsi/goblin_tusks_big.png | Bin 0 -> 617 bytes
.../goblin_tusks.rsi/goblin_tusks_none.png | Bin 0 -> 7430 bytes
.../goblin_tusks.rsi/goblin_tusks_small.png | Bin 0 -> 607 bytes
.../Customization/goblin_tusks.rsi/meta.json | 23 +
.../Goblin/organs.rsi/appendix-inflamed.png | Bin 0 -> 857 bytes
.../Species/Goblin/organs.rsi/appendix.png | Bin 0 -> 733 bytes
.../Goblin/organs.rsi/brain-inhand-left.png | Bin 0 -> 696 bytes
.../Goblin/organs.rsi/brain-inhand-right.png | Bin 0 -> 703 bytes
.../Mobs/Species/Goblin/organs.rsi/brain.png | Bin 0 -> 939 bytes
.../Mobs/Species/Goblin/organs.rsi/ears.png | Bin 0 -> 1140 bytes
.../Species/Goblin/organs.rsi/eyeball-l.png | Bin 0 -> 845 bytes
.../Species/Goblin/organs.rsi/eyeball-r.png | Bin 0 -> 821 bytes
.../Species/Goblin/organs.rsi/heart-off.png | Bin 0 -> 734 bytes
.../Species/Goblin/organs.rsi/heart-on.png | Bin 0 -> 921 bytes
.../Species/Goblin/organs.rsi/kidney-l.png | Bin 0 -> 758 bytes
.../Species/Goblin/organs.rsi/kidney-r.png | Bin 0 -> 741 bytes
.../Mobs/Species/Goblin/organs.rsi/liver.png | Bin 0 -> 773 bytes
.../Mobs/Species/Goblin/organs.rsi/lung-l.png | Bin 0 -> 783 bytes
.../Mobs/Species/Goblin/organs.rsi/lung-r.png | Bin 0 -> 786 bytes
.../Mobs/Species/Goblin/organs.rsi/meta.json | 80 ++
.../Mobs/Species/Goblin/organs.rsi/muscle.png | Bin 0 -> 953 bytes
.../Mobs/Species/Goblin/organs.rsi/nerve.png | Bin 0 -> 802 bytes
.../Species/Goblin/organs.rsi/stomach.png | Bin 0 -> 841 bytes
.../Mobs/Species/Goblin/organs.rsi/tongue.png | Bin 0 -> 864 bytes
.../Mobs/Species/Goblin/organs.rsi/vessel.png | Bin 0 -> 812 bytes
.../Mobs/Species/Goblin/parts.rsi/eyes.png | Bin 0 -> 112 bytes
.../Mobs/Species/Goblin/parts.rsi/full.png | Bin 0 -> 947 bytes
.../Mobs/Species/Goblin/parts.rsi/head_f.png | Bin 0 -> 999 bytes
.../Mobs/Species/Goblin/parts.rsi/head_m.png | Bin 0 -> 983 bytes
.../Mobs/Species/Goblin/parts.rsi/l_arm.png | Bin 0 -> 756 bytes
.../Mobs/Species/Goblin/parts.rsi/l_foot.png | Bin 0 -> 779 bytes
.../Mobs/Species/Goblin/parts.rsi/l_hand.png | Bin 0 -> 779 bytes
.../Mobs/Species/Goblin/parts.rsi/l_leg.png | Bin 0 -> 750 bytes
.../Mobs/Species/Goblin/parts.rsi/meta.json | 66 ++
.../Mobs/Species/Goblin/parts.rsi/r_arm.png | Bin 0 -> 762 bytes
.../Mobs/Species/Goblin/parts.rsi/r_foot.png | Bin 0 -> 775 bytes
.../Mobs/Species/Goblin/parts.rsi/r_hand.png | Bin 0 -> 768 bytes
.../Mobs/Species/Goblin/parts.rsi/r_leg.png | Bin 0 -> 748 bytes
.../Mobs/Species/Goblin/parts.rsi/torso_f.png | Bin 0 -> 1311 bytes
.../Mobs/Species/Goblin/parts.rsi/torso_m.png | Bin 0 -> 1167 bytes
87 files changed, 2555 insertions(+), 17 deletions(-)
create mode 100644 Content.Server/Speech/Components/GoblinAccentComponent.cs
create mode 100644 Content.Server/Speech/EntitySystems/GoblinAccentSystem.cs
create mode 100644 Content.Server/_NF/Goblin/Components/GoblinComponent.cs
create mode 100644 Resources/Audio/_NF/Voice/Goblin/attributions.yml
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-cackle-01.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-cackle-02.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-cackle-03.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-cackle-04.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-cackle-05.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-chatter-01.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-cry-01.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-cry-02.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-hiss-01.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-scream-01.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-scream-02.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-scream-03.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/goblin-scream-04.ogg
create mode 100644 Resources/Audio/_NF/Voice/Goblin/license.txt
create mode 100644 Resources/Locale/en-US/_NF/accent/goblin_accent.ftl
create mode 100644 Resources/Locale/en-US/_NF/chat/managers/chat_manager.ftl
create mode 100644 Resources/Locale/en-US/_NF/species/species.ftl
create mode 100644 Resources/Locale/en-US/_NF/traits/traits.ftl
create mode 100644 Resources/Locale/en-US/datasets/names/goblin_female.ftl
create mode 100644 Resources/Locale/en-US/datasets/names/goblin_last.ftl
create mode 100644 Resources/Locale/en-US/datasets/names/goblin_male.ftl
create mode 100644 Resources/Locale/en-US/markings/goblin_markings.ftl
create mode 100644 Resources/Prototypes/Body/Species/goblin.yml
create mode 100644 Resources/Prototypes/Datasets/Names/goblin_female.yml
create mode 100644 Resources/Prototypes/Datasets/Names/goblin_last.yml
create mode 100644 Resources/Prototypes/Datasets/Names/goblin_male.yml
create mode 100644 Resources/Prototypes/Species/goblin.yml
create mode 100644 Resources/Prototypes/_NF/Accents/word_replacements.yml
create mode 100644 Resources/Prototypes/_NF/Entities/Mobs/Customization/Markings/goblin_markings.yml
create mode 100644 Resources/Prototypes/_NF/Objects/Consumable/Food/meat_goblin.yml
create mode 100644 Resources/Prototypes/_NF/SoundCollections/goblin_soundcollection.yml
create mode 100644 Resources/Prototypes/_NF/Voice/speech_emote_sounds.yml
create mode 100644 Resources/Prototypes/_NF/Voice/speech_verbs.yml
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_ears.rsi/goblin_ears_default.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_ears.rsi/goblin_ears_default_alt.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_ears.rsi/goblin_ears_long_01.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_ears.rsi/goblin_ears_long_02.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_ears.rsi/meta.json
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_noses.rsi/goblin_nose_crooked.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_noses.rsi/goblin_nose_default.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_noses.rsi/goblin_nose_long.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_noses.rsi/meta.json
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_big.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_none.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_small.png
create mode 100644 Resources/Textures/_NF/Mobs/Customization/goblin_tusks.rsi/meta.json
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/appendix-inflamed.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/appendix.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/brain-inhand-left.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/brain-inhand-right.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/brain.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/ears.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/eyeball-l.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/eyeball-r.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/heart-off.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/heart-on.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/kidney-l.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/kidney-r.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/liver.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/lung-l.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/lung-r.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/meta.json
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/muscle.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/nerve.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/stomach.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/tongue.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/organs.rsi/vessel.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/eyes.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/full.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/head_f.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/head_m.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/l_arm.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/l_foot.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/l_hand.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/l_leg.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/meta.json
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/r_arm.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/r_foot.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/r_hand.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/r_leg.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/torso_f.png
create mode 100644 Resources/Textures/_NF/Mobs/Species/Goblin/parts.rsi/torso_m.png
diff --git a/Content.Server/Speech/Components/GoblinAccentComponent.cs b/Content.Server/Speech/Components/GoblinAccentComponent.cs
new file mode 100644
index 00000000000..062392cb9aa
--- /dev/null
+++ b/Content.Server/Speech/Components/GoblinAccentComponent.cs
@@ -0,0 +1,7 @@
+namespace Content.Server.Speech.Components;
+
+[RegisterComponent]
+public sealed partial class GoblinAccentComponent : Component
+{
+
+}
diff --git a/Content.Server/Speech/EntitySystems/GoblinAccentSystem.cs b/Content.Server/Speech/EntitySystems/GoblinAccentSystem.cs
new file mode 100644
index 00000000000..6bc8b43affe
--- /dev/null
+++ b/Content.Server/Speech/EntitySystems/GoblinAccentSystem.cs
@@ -0,0 +1,31 @@
+using Content.Server.Speech.Components;
+using Content.Shared.Speech;
+using System.Text.RegularExpressions;
+
+namespace Content.Server.Speech.EntitySystems;
+
+public sealed class GoblinAccentSystem : EntitySystem
+{
+ [Dependency] private readonly ReplacementAccentSystem _replacement = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnAccent);;
+ }
+
+ // converts left word when typed into the right word. For example typing you becomes ye.
+ public string Accentuate(string message, GoblinAccentComponent component)
+ {
+ var msg = message;
+
+ msg = _replacement.ApplyReplacements(msg, "goblin");
+ return msg;
+ }
+
+ private void OnAccent(EntityUid uid, GoblinAccentComponent component, AccentGetEvent args)
+ {
+ args.Message = Accentuate(args.Message, component);
+ }
+}
diff --git a/Content.Server/_NF/Goblin/Components/GoblinComponent.cs b/Content.Server/_NF/Goblin/Components/GoblinComponent.cs
new file mode 100644
index 00000000000..35533e98cc3
--- /dev/null
+++ b/Content.Server/_NF/Goblin/Components/GoblinComponent.cs
@@ -0,0 +1,7 @@
+namespace Content.Server._NF.Goblin.Components;
+
+[RegisterComponent]
+public sealed partial class GoblinComponent : Component
+{
+
+}
diff --git a/Resources/Audio/_NF/Voice/Goblin/attributions.yml b/Resources/Audio/_NF/Voice/Goblin/attributions.yml
new file mode 100644
index 00000000000..5da1cf34088
--- /dev/null
+++ b/Resources/Audio/_NF/Voice/Goblin/attributions.yml
@@ -0,0 +1,32 @@
+- files: ["goblin-cackle-01.ogg, goblin-cackle-02.ogg, goblin-cackle-03.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original file made by SnowFightStudios (https://freesound.org/people/SnowFightStudios/), edited (cropped) by erhardsteinhauer (discord/github)"
+ source: "https://freesound.org/people/SnowFightStudios/sounds/643664/"
+- files: ["goblin-cackle-04.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original file made by spookymodem (https://freesound.org/people/spookymodem/), edited (cropped) by erhardsteinhauer (discord/github)"
+ source: "https://freesound.org/people/spookymodem/sounds/202096/"
+- files: ["goblin-cackle-05.ogg"]
+ license: "CC-BY-4.0"
+ copyright: "Original file made by Nanakisan (https://freesound.org/people/Nanakisan/)"
+ source: "https://freesound.org/people/Nanakisan/sounds/253532/"
+- files: ["goblin-scream-01.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original file made by SnowFightStudios (https://freesound.org/people/SnowFightStudios/), edited (cropped) by erhardsteinhauer (discord/github)"
+ source: "https://freesound.org/people/SnowFightStudios/sounds/643655/"
+- files: ["goblin-scream-02.ogg, goblin-scream-03.ogg, goblin-scream-04.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original file made by Duisterwho (https://freesound.org/people/Duisterwho/), edited (cropped) by erhardsteinhauer (discord/github)"
+ source: "https://freesound.org/people/Duisterwho/sounds/643497/"
+- files: ["goblin-cry-01.ogg, goblin-cry-02.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original file made by SnowFightStudios (https://freesound.org/people/SnowFightStudios/), edited (cropped) by erhardsteinhauer (discord/github)"
+ source: https://freesound.org/people/SnowFightStudios/sounds/643657/
+- files: ["goblin-chatter-01.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original file made by Fenodyrie (https://freesound.org/people/Fenodyrie/)"
+ source: https://freesound.org/people/Fenodyrie/sounds/565923/
+- files: ["goblin-hiss-01.ogg"]
+ license: "CC-BY-4.0"
+ copyright: "Original file made by LittleRobotSoundFactory (https://freesound.org/people/LittleRobotSoundFactory/)"
+ source: https://freesound.org/people/LittleRobotSoundFactory/sounds/270389/
diff --git a/Resources/Audio/_NF/Voice/Goblin/goblin-cackle-01.ogg b/Resources/Audio/_NF/Voice/Goblin/goblin-cackle-01.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..74d3e2e05557aab133d875e9bb247f7e444eb523
GIT binary patch
literal 43071
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
t&9FV4&goa-O%zV8
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
n%Zuj*fbvFD>COKGT@RQb
literal 0
HcmV?d00001
diff --git a/Resources/Audio/_NF/Voice/Goblin/goblin-cackle-02.ogg b/Resources/Audio/_NF/Voice/Goblin/goblin-cackle-02.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..42587638db5d334eb34e11cd10340c4ba034e0a7
GIT binary patch
literal 41463
zcmb@tbzGFs_cy#4fJ&)IODG{N-Ko@4N_QiY3oPAADP7Vb!h*EK(xFn)v9NRtE46gT
z-WT}!e1G5PexBET|MOh0VO}$H&YYP!=e*C%Ud*LxWu*?f0s80h)csp9r7^mLMUCYK
zaW=DtUNvF8EdEP*UU2ieP>ZE{)$>2kRZlFSCKNa)bYBGX|9nPo{*}ZEFz8r2zU5GL
zwxYGOHq*M6Ppd%7{hW*YIrnoO+Gncv4%Uv&mQYIv7v?MBShxS_D*ZwW3xo@_a4FHY
z2Moq&f`Y@GtcA%`Kwa<^N-01AKS^yBe**L&1iWo9)Uo&KmpJ0
zMCGg~*z^lokugO%e-^S<5zME>341*+bm!**qq##~Ri3RwKQjX^zV2-hpcqMcx?p0p
ztIX^JT?iSFg;F{HqRUTrzRU9U^ZUEpzi0!MxL0%IRfJc+=0pjvJ*yg&zQ$-(-yzPh!+`s2ZdN5Q6KA^)Uf
z-?^i!biH(1EYRntLWxVvU!G8WSrqzmGbp6^2FT({CA4?qo-oJdDCE7dDYZ_kep^&+
z-&4WXQ-OEQ0vPqy)oehYtyA;v`f*C#}f
zy8O9-I1TaRqedE2T|si%wFT|^$(I0IGIyu6e@+=ph4w4prNaJ}JRhXtloSjDZRDtQ
zf(~+1fX{k36{lcA2k5Iin7Z<{juy^`jKtV*;Ui@!%?aF_>I5#egrTbZBFLw{yRaV^EFTDP(mFNW?7vRNge1I26
z!dEh(r9$$yFgQ|=6_%g|W`_Mm6kt?Zix??v@@tTUBs+IA=L4wtZ^LcV58Qt|^j~RU
zhwAkM1|SV_v#axnX=-R{yV>g|xlYvt8;-lqjrq=vMH-Wa{O^wSALM`l&;(s$GQli@
zt1~@NMf%QP1OJO0C*sans;*di#R_`mVYa?qUe!I`p@%ZBd6m^484f*iMUYsk^BW@g
zED@TPqi&WH)t34-zPi=_0Ol`j=EhwA3prO1c_I|GBp-L{e~|O}S=6Fn)Ki5xdfhli
z&qS+_sRb#Ss|8=~{%^>68