* Mind Role Entities wip * headrev count fix * silicon stuff, cleanup * exclusive antag config, cleanup * jobroleadd overwerite * logging stuff * MindHasRole cleanup, admin log stuff * last second cleanup * ocd * minor cleanup * remove createdTime datafield * now actually using the event replacement I made for role time tracking * weh
51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
using Content.Server.Antag;
|
|
using Content.Server.GameTicking.Rules.Components;
|
|
using Content.Server.Roles;
|
|
using Content.Shared.Humanoid;
|
|
|
|
namespace Content.Server.GameTicking.Rules;
|
|
|
|
public sealed class ThiefRuleSystem : GameRuleSystem<ThiefRuleComponent>
|
|
{
|
|
[Dependency] private readonly AntagSelectionSystem _antag = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
SubscribeLocalEvent<ThiefRuleComponent, AfterAntagEntitySelectedEvent>(AfterAntagSelected);
|
|
|
|
SubscribeLocalEvent<ThiefRoleComponent, GetBriefingEvent>(OnGetBriefing);
|
|
}
|
|
|
|
// Greeting upon thief activation
|
|
private void AfterAntagSelected(Entity<ThiefRuleComponent> mindId, ref AfterAntagEntitySelectedEvent args)
|
|
{
|
|
var ent = args.EntityUid;
|
|
_antag.SendBriefing(ent, MakeBriefing(ent), null, null);
|
|
}
|
|
|
|
// Character screen briefing
|
|
private void OnGetBriefing(Entity<ThiefRoleComponent> role, ref GetBriefingEvent args)
|
|
{
|
|
var ent = args.Mind.Comp.OwnedEntity;
|
|
|
|
if (ent is null)
|
|
return;
|
|
args.Append(MakeBriefing(ent.Value));
|
|
}
|
|
|
|
private string MakeBriefing(EntityUid ent)
|
|
{
|
|
var isHuman = HasComp<HumanoidAppearanceComponent>(ent);
|
|
var briefing = isHuman
|
|
? Loc.GetString("thief-role-greeting-human")
|
|
: Loc.GetString("thief-role-greeting-animal");
|
|
|
|
if (isHuman)
|
|
briefing += "\n \n" + Loc.GetString("thief-role-greeting-equipment") + "\n";
|
|
|
|
return briefing;
|
|
}
|
|
}
|