using Content.Server.Atmos.Components; using Content.Shared.Atmos.Visuals; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Random; namespace Content.Server.Atmos.EntitySystems; public sealed class AtmosPlaqueSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnPlaqueMapInit); } private void OnPlaqueMapInit(EntityUid uid, AtmosPlaqueComponent component, MapInitEvent args) { var rand = _random.Next(100); // Let's not pat ourselves on the back too hard. // 1% chance of zumos if (rand == 0) component.Type = PlaqueType.Zumos; // 9% FEA else if (rand <= 10) component.Type = PlaqueType.Fea; // 45% ZAS else if (rand <= 55) component.Type = PlaqueType.Zas; // 45% LINDA else component.Type = PlaqueType.Linda; UpdateSign(component); } public void UpdateSign(AtmosPlaqueComponent component) { var metaData = MetaData(component.Owner); var val = component.Type switch { PlaqueType.Zumos => Loc.GetString("atmos-plaque-component-desc-zum"), PlaqueType.Fea => Loc.GetString("atmos-plaque-component-desc-fea"), PlaqueType.Linda => Loc.GetString("atmos-plaque-component-desc-linda"), PlaqueType.Zas => Loc.GetString("atmos-plaque-component-desc-zas"), PlaqueType.Unset => Loc.GetString("atmos-plaque-component-desc-unset"), _ => Loc.GetString("atmos-plaque-component-desc-unset"), }; metaData.EntityDescription = val; var val1 = component.Type switch { PlaqueType.Zumos => Loc.GetString("atmos-plaque-component-name-zum"), PlaqueType.Fea => Loc.GetString("atmos-plaque-component-name-fea"), PlaqueType.Linda => Loc.GetString("atmos-plaque-component-name-linda"), PlaqueType.Zas => Loc.GetString("atmos-plaque-component-name-zas"), PlaqueType.Unset => Loc.GetString("atmos-plaque-component-name-unset"), _ => Loc.GetString("atmos-plaque-component-name-unset"), }; metaData.EntityName = val1; if (TryComp(component.Owner, out var appearance)) { var state = component.Type == PlaqueType.Zumos ? "zumosplaque" : "atmosplaque"; appearance.SetData(AtmosPlaqueVisuals.State, state); } } } // If you get the ZUM plaque it means your round will be blessed with good engineering luck. public enum PlaqueType : byte { Unset = 0, Zumos, Fea, Linda, Zas }