1
0

ScrambleDnaEffectSystem.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
  2. // SPDX-FileCopyrightText: 2025 Piras314 <p1r4s@proton.me>
  3. // SPDX-FileCopyrightText: 2025 SX_7 <sn1.test.preria.2002@gmail.com>
  4. // SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
  5. //
  6. // SPDX-License-Identifier: AGPL-3.0-or-later
  7. using Content.Server.Forensics;
  8. using Content.Server.Humanoid;
  9. using Content.Shared._Shitmed.StatusEffects;
  10. using Content.Shared.Forensics;
  11. using Content.Shared.Humanoid;
  12. using Content.Shared.Preferences;
  13. using Content.Shared.Popups;
  14. using Content.Shared.Forensics.Components;
  15. namespace Content.Server._Shitmed.StatusEffects;
  16. public sealed class ScrambleDnaEffectSystem : EntitySystem
  17. {
  18. [Dependency] private readonly HumanoidAppearanceSystem _humanoidAppearance = default!;
  19. [Dependency] private readonly ForensicsSystem _forensicsSystem = default!;
  20. [Dependency] private readonly MetaDataSystem _metaData = default!;
  21. [Dependency] private readonly SharedPopupSystem _popup = default!;
  22. public override void Initialize()
  23. {
  24. SubscribeLocalEvent<ScrambleDnaEffectComponent, ComponentInit>(OnInit);
  25. }
  26. private void OnInit(EntityUid uid, ScrambleDnaEffectComponent component, ComponentInit args)
  27. {
  28. if (TryComp<HumanoidAppearanceComponent>(uid, out var humanoid))
  29. {
  30. var newProfile = HumanoidCharacterProfile.RandomWithSpecies(humanoid.Species);
  31. _humanoidAppearance.LoadProfile(uid, newProfile, humanoid);
  32. _metaData.SetEntityName(uid, newProfile.Name);
  33. if (TryComp<DnaComponent>(uid, out var dna))
  34. {
  35. dna.DNA = _forensicsSystem.GenerateDNA();
  36. var ev = new GenerateDnaEvent { Owner = uid, DNA = dna.DNA };
  37. RaiseLocalEvent(uid, ref ev);
  38. }
  39. if (TryComp<FingerprintComponent>(uid, out var fingerprint))
  40. {
  41. fingerprint.Fingerprint = _forensicsSystem.GenerateFingerprint();
  42. }
  43. _popup.PopupEntity(Loc.GetString("scramble-implant-activated-popup"), uid, uid);
  44. }
  45. }
  46. }