1
0

ThiefRuleSystem.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Content.Server.Antag;
  2. using Content.Server.GameTicking.Rules.Components;
  3. using Content.Server.Roles;
  4. using Content.Shared.Humanoid;
  5. namespace Content.Server.GameTicking.Rules;
  6. public sealed class ThiefRuleSystem : GameRuleSystem<ThiefRuleComponent>
  7. {
  8. [Dependency] private readonly AntagSelectionSystem _antag = default!;
  9. public override void Initialize()
  10. {
  11. base.Initialize();
  12. SubscribeLocalEvent<ThiefRuleComponent, AfterAntagEntitySelectedEvent>(AfterAntagSelected);
  13. SubscribeLocalEvent<ThiefRoleComponent, GetBriefingEvent>(OnGetBriefing);
  14. }
  15. // Greeting upon thief activation
  16. private void AfterAntagSelected(Entity<ThiefRuleComponent> mindId, ref AfterAntagEntitySelectedEvent args)
  17. {
  18. var ent = args.EntityUid;
  19. _antag.SendBriefing(ent, MakeBriefing(ent), null, null);
  20. }
  21. // Character screen briefing
  22. private void OnGetBriefing(Entity<ThiefRoleComponent> role, ref GetBriefingEvent args)
  23. {
  24. var ent = args.Mind.Comp.OwnedEntity;
  25. if (ent is null)
  26. return;
  27. args.Append(MakeBriefing(ent.Value));
  28. }
  29. private string MakeBriefing(EntityUid ent)
  30. {
  31. var isHuman = HasComp<HumanoidAppearanceComponent>(ent);
  32. var briefing = isHuman
  33. ? Loc.GetString("thief-role-greeting-human")
  34. : Loc.GetString("thief-role-greeting-animal");
  35. if (isHuman)
  36. briefing += "\n \n" + Loc.GetString("thief-role-greeting-equipment") + "\n";
  37. return briefing;
  38. }
  39. }