Make wearing an Ushanka also apply accent to your name (#29111)

This commit is contained in:
Tayrtahn
2024-06-17 14:03:55 -04:00
committed by GitHub
parent efbcce21bd
commit e5a85e2a13
4 changed files with 52 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
using Content.Server.Speech.EntitySystems;
namespace Content.Server.Speech.Components;
/// <summary>
/// Applies any accent components on this item to the name of the wearer while worn.
/// </summary>
[RegisterComponent]
[Access(typeof(AccentWearerNameClothingSystem))]
public sealed partial class AccentWearerNameClothingComponent : Component;

View File

@@ -0,0 +1,39 @@
using Content.Server.Speech.Components;
using Content.Shared.Clothing;
using Content.Shared.Inventory;
using Content.Shared.NameModifier.EntitySystems;
namespace Content.Server.Speech.EntitySystems;
/// <inheritdoc cref="AccentWearerNameClothingComponent"/>
public sealed class AccentWearerNameClothingSystem : EntitySystem
{
[Dependency] private readonly NameModifierSystem _nameMod = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<AccentWearerNameClothingComponent, ClothingGotEquippedEvent>(OnGotEquipped);
SubscribeLocalEvent<AccentWearerNameClothingComponent, ClothingGotUnequippedEvent>(OnGotUnequipped);
SubscribeLocalEvent<AccentWearerNameClothingComponent, InventoryRelayedEvent<RefreshNameModifiersEvent>>(OnRefreshNameModifiers);
}
private void OnGotEquipped(Entity<AccentWearerNameClothingComponent> ent, ref ClothingGotEquippedEvent args)
{
_nameMod.RefreshNameModifiers(args.Wearer);
}
private void OnGotUnequipped(Entity<AccentWearerNameClothingComponent> ent, ref ClothingGotUnequippedEvent args)
{
_nameMod.RefreshNameModifiers(args.Wearer);
}
private void OnRefreshNameModifiers(Entity<AccentWearerNameClothingComponent> ent, ref InventoryRelayedEvent<RefreshNameModifiersEvent> args)
{
var ev = new AccentGetEvent(ent, args.Args.BaseName);
RaiseLocalEvent(ent, ev);
// Use a negative priority since we're going to bulldoze any earlier changes
args.Args.AddModifier("comp-accent-wearer-name-clothing-format", -1, ("accentedName", ev.Message));
}
}

View File

@@ -0,0 +1 @@
comp-accent-wearer-name-clothing-format = {$accentedName}

View File

@@ -489,6 +489,8 @@
- type: Appearance
- type: AddAccentClothing
accent: RussianAccent
- type: RussianAccent
- type: AccentWearerNameClothing
- type: Foldable
canFoldInsideContainer: true
- type: FoldableClothing