Make wearing an Ushanka also apply accent to your name (#29111)
This commit is contained in:
@@ -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;
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
comp-accent-wearer-name-clothing-format = {$accentedName}
|
||||
@@ -489,6 +489,8 @@
|
||||
- type: Appearance
|
||||
- type: AddAccentClothing
|
||||
accent: RussianAccent
|
||||
- type: RussianAccent
|
||||
- type: AccentWearerNameClothing
|
||||
- type: Foldable
|
||||
canFoldInsideContainer: true
|
||||
- type: FoldableClothing
|
||||
|
||||
Reference in New Issue
Block a user