Invalid species fallback on spawn/profile validation (#14675)

* if a player's profile has an invalid species, station spawning will always try to fallback to the default humanoid species

* validation always ensures that if a species can't be indexed, the species falls back to the default species
This commit is contained in:
Flipp Syder
2023-03-14 21:47:40 -07:00
committed by GitHub
parent dfcf3c28e7
commit eb04c43db4
2 changed files with 11 additions and 4 deletions

View File

@@ -105,9 +105,12 @@ public sealed class StationSpawningSystem : EntitySystem
return jobEntity;
}
var entity = EntityManager.SpawnEntity(
_prototypeManager.Index<SpeciesPrototype>(profile?.Species ?? HumanoidAppearanceSystem.DefaultSpecies).Prototype,
coordinates);
if (!_prototypeManager.TryIndex(profile?.Species ?? HumanoidAppearanceSystem.DefaultSpecies, out SpeciesPrototype? species))
{
species = _prototypeManager.Index<SpeciesPrototype>(HumanoidAppearanceSystem.DefaultSpecies);
}
var entity = EntityManager.SpawnEntity(species.Prototype, coordinates);
if (job?.StartingGear != null)
{

View File

@@ -354,7 +354,11 @@ namespace Content.Shared.Preferences
{
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
prototypeManager.TryIndex<SpeciesPrototype>(Species, out var speciesPrototype);
if (!prototypeManager.TryIndex<SpeciesPrototype>(Species, out var speciesPrototype))
{
Species = SharedHumanoidAppearanceSystem.DefaultSpecies;
speciesPrototype = prototypeManager.Index<SpeciesPrototype>(Species);
}
var sex = Sex switch
{