AtmosPlaqueSystem.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using Content.Server.Atmos.Components;
  2. using Content.Shared.Atmos.Visuals;
  3. using Robust.Server.GameObjects;
  4. using Robust.Shared.Random;
  5. namespace Content.Server.Atmos.EntitySystems;
  6. public sealed class AtmosPlaqueSystem : EntitySystem
  7. {
  8. [Dependency] private readonly IRobustRandom _random = default!;
  9. [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
  10. [Dependency] private readonly MetaDataSystem _metaData = default!;
  11. public override void Initialize()
  12. {
  13. base.Initialize();
  14. SubscribeLocalEvent<AtmosPlaqueComponent, MapInitEvent>(OnPlaqueMapInit);
  15. }
  16. private void OnPlaqueMapInit(EntityUid uid, AtmosPlaqueComponent component, MapInitEvent args)
  17. {
  18. var rand = _random.Next(100);
  19. // Let's not pat ourselves on the back too hard.
  20. // 1% chance of zumos
  21. if (rand == 0) component.Type = PlaqueType.Zumos;
  22. // 9% FEA
  23. else if (rand <= 10) component.Type = PlaqueType.Fea;
  24. // 45% ZAS
  25. else if (rand <= 55) component.Type = PlaqueType.Zas;
  26. // 45% LINDA
  27. else component.Type = PlaqueType.Linda;
  28. UpdateSign(uid, component);
  29. }
  30. public void UpdateSign(EntityUid uid, AtmosPlaqueComponent component)
  31. {
  32. var metaData = MetaData(uid);
  33. var val = component.Type switch
  34. {
  35. PlaqueType.Zumos =>
  36. Loc.GetString("atmos-plaque-component-desc-zum"),
  37. PlaqueType.Fea =>
  38. Loc.GetString("atmos-plaque-component-desc-fea"),
  39. PlaqueType.Linda =>
  40. Loc.GetString("atmos-plaque-component-desc-linda"),
  41. PlaqueType.Zas =>
  42. Loc.GetString("atmos-plaque-component-desc-zas"),
  43. PlaqueType.Unset => Loc.GetString("atmos-plaque-component-desc-unset"),
  44. _ => Loc.GetString("atmos-plaque-component-desc-unset"),
  45. };
  46. _metaData.SetEntityDescription(uid, val, metaData);
  47. var val1 = component.Type switch
  48. {
  49. PlaqueType.Zumos =>
  50. Loc.GetString("atmos-plaque-component-name-zum"),
  51. PlaqueType.Fea =>
  52. Loc.GetString("atmos-plaque-component-name-fea"),
  53. PlaqueType.Linda =>
  54. Loc.GetString("atmos-plaque-component-name-linda"),
  55. PlaqueType.Zas =>
  56. Loc.GetString("atmos-plaque-component-name-zas"),
  57. PlaqueType.Unset => Loc.GetString("atmos-plaque-component-name-unset"),
  58. _ => Loc.GetString("atmos-plaque-component-name-unset"),
  59. };
  60. _metaData.SetEntityName(uid, val1, metaData);
  61. if (TryComp<AppearanceComponent>(uid, out var appearance))
  62. {
  63. var state = component.Type == PlaqueType.Zumos ? "zumosplaque" : "atmosplaque";
  64. _appearance.SetData(uid, AtmosPlaqueVisuals.State, state, appearance);
  65. }
  66. }
  67. }
  68. // If you get the ZUM plaque it means your round will be blessed with good engineering luck.
  69. public enum PlaqueType : byte
  70. {
  71. Unset = 0,
  72. Zumos,
  73. Fea,
  74. Linda,
  75. Zas
  76. }