Files
Delta-v/Content.Server/DeltaV/Recruiter/RecruiterPenSystem.cs
T
deltanedasanddeltanedas 4237fc9a2b add syndicate recruiter midround event (#1345)
* add SignAttemptEvent and minor signature refactor

* add recruiter pen

* add the recruiter ship

* add recruiter antag and event

* fixes

* real

* bad popup spam

* more fix

* fix blood visual maybe

* fix greentext

* more fixy

* fix fill state not being coloured

* give btamp instead of paper in pocket 2

* f

* brighter filled state

* fix greentext

* fix error on spawn

* pro

* prevent using a syringe to inject anything into the pen

* update stuff after upstream merge

---------

Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-09 12:48:03 +02:00

55 lines
2.0 KiB
C#

using Content.Server.Body.Components;
using Content.Server.Forensics;
using Content.Server.Objectives.Components;
using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.DeltaV.Recruiter;
using Content.Shared.Popups;
namespace Content.Server.DeltaV.Recruiter;
/// <summary>
/// Handles bloodstream related code since that isn't in shared.
/// </summary>
public sealed class RecruiterPenSystem : SharedRecruiterPenSystem
{
[Dependency] private readonly ForensicsSystem _forensics = default!;
[Dependency] private readonly SolutionTransferSystem _transfer = default!;
protected override void DrawBlood(EntityUid uid, Entity<SolutionComponent> dest, EntityUid user)
{
// how did you even use this mr plushie...
if (CompOrNull<BloodstreamComponent>(user)?.BloodSolution is not {} blood)
return;
var desired = dest.Comp.Solution.AvailableVolume;
// TODO: when bloodstream is shared put the transfer in shared so PopupClient is actually used, and this popup isnt needed
if (desired == 0)
{
Popup.PopupEntity(Loc.GetString("recruiter-pen-prick-full", ("pen", uid)), user, user);
return;
}
if (_transfer.Transfer(user, user, blood, uid, dest, desired) != desired)
return;
// this is why you have to keep the pen safe, it has the dna of everyone you recruited!
_forensics.TransferDna(uid, user, canDnaBeCleaned: false);
Popup.PopupEntity(Loc.GetString("recruiter-pen-pricked", ("pen", uid)), user, user, PopupType.LargeCaution);
}
protected override void Recruit(Entity<RecruiterPenComponent> ent, EntityUid user)
{
// only increment count once if 1 person signs multiple papers
if (!ent.Comp.Recruited.Add(user))
return;
if (ent.Comp.RecruiterMind is {} mindId &&
Mind.TryGetObjectiveComp<RecruitingConditionComponent>(mindId, out var obj, null))
{
obj.Recruited++;
}
}
}