Random metadata component (#7894)
Co-authored-by: Moony <moonheart08@users.noreply.github.com>
This commit is contained in:
@@ -50,6 +50,7 @@ namespace Content.Client.Entry
|
|||||||
"ZombieTransfer",
|
"ZombieTransfer",
|
||||||
"Mineable",
|
"Mineable",
|
||||||
"RangedMagazine",
|
"RangedMagazine",
|
||||||
|
"RandomMetadata",
|
||||||
"Ammo",
|
"Ammo",
|
||||||
"AiController",
|
"AiController",
|
||||||
"Computer",
|
"Computer",
|
||||||
|
|||||||
17
Content.Server/RandomMetadata/RandomMetadataComponent.cs
Normal file
17
Content.Server/RandomMetadata/RandomMetadataComponent.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using Content.Shared.Dataset;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
|
|
||||||
|
namespace Content.Server.RandomMetadata;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Randomizes the description and/or the name for an entity by pulling from a dataset prototype.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class RandomMetadataComponent : Component
|
||||||
|
{
|
||||||
|
[DataField("descriptionSet", customTypeSerializer:typeof(PrototypeIdSerializer<DatasetPrototype>))]
|
||||||
|
public string? DescriptionSet;
|
||||||
|
|
||||||
|
[DataField("nameSet", customTypeSerializer:typeof(PrototypeIdSerializer<DatasetPrototype>))]
|
||||||
|
public string? NameSet;
|
||||||
|
}
|
||||||
36
Content.Server/RandomMetadata/RandomMetadataSystem.cs
Normal file
36
Content.Server/RandomMetadata/RandomMetadataSystem.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using Content.Shared.Dataset;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.Random;
|
||||||
|
|
||||||
|
namespace Content.Server.RandomMetadata;
|
||||||
|
|
||||||
|
public sealed class RandomMetadataSystem : EntitySystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||||
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<RandomMetadataComponent, MapInitEvent>(OnMapInit);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is done on map init so that map-placed entities have it randomized each time the map loads, for fun.
|
||||||
|
private void OnMapInit(EntityUid uid, RandomMetadataComponent component, MapInitEvent args)
|
||||||
|
{
|
||||||
|
var meta = MetaData(uid);
|
||||||
|
|
||||||
|
if (component.NameSet != null)
|
||||||
|
{
|
||||||
|
var nameProto = _prototype.Index<DatasetPrototype>(component.NameSet);
|
||||||
|
meta.EntityName = _random.Pick(nameProto.Values);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (component.DescriptionSet != null)
|
||||||
|
{
|
||||||
|
var descProto = _prototype.Index<DatasetPrototype>(component.DescriptionSet);
|
||||||
|
meta.EntityDescription = _random.Pick(descProto.Values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
19
Resources/Prototypes/Datasets/Names/atv.yml
Normal file
19
Resources/Prototypes/Datasets/Names/atv.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
- type: dataset
|
||||||
|
id: ATVDescriptions
|
||||||
|
values:
|
||||||
|
- All-Tile Vehicle.
|
||||||
|
- Ant-Thwarting Vehicle.
|
||||||
|
- Any-Time Vegetable.
|
||||||
|
- Actually-Two Vehicles.
|
||||||
|
- Any-Typed Variable.
|
||||||
|
- Assisted-Trauma Vehicle.
|
||||||
|
- Algorithm-Transmitted Virus.
|
||||||
|
- Alcoholic-Toddler Vacancy.
|
||||||
|
- Asshole-Tearing Volcano.
|
||||||
|
- A-Tele Vision.
|
||||||
|
- Awkward-Tweaking Vagabond.
|
||||||
|
- Art-Tragedy Volunteer.
|
||||||
|
- Automatic-Taco Vacancy.
|
||||||
|
- Another-Terrific View.
|
||||||
|
- All-The Virgins.
|
||||||
|
- A-Terrible Vehicle.
|
||||||
@@ -226,6 +226,8 @@
|
|||||||
tags:
|
tags:
|
||||||
- Cargo
|
- Cargo
|
||||||
- Maintenance
|
- Maintenance
|
||||||
|
- type: RandomMetadata
|
||||||
|
descriptionSet: ATVDescriptions
|
||||||
- type: MovementSpeedModifier
|
- type: MovementSpeedModifier
|
||||||
baseWalkSpeed : 8
|
baseWalkSpeed : 8
|
||||||
baseSprintSpeed : 8
|
baseSprintSpeed : 8
|
||||||
|
|||||||
Reference in New Issue
Block a user