CatStation/Content.Server/Objectives/Systems/HijackTradeStationConditionSystem.cs
alexalexmax 17ccf1dc70
Hijack the Automated Trade Station objective (#42135)
* predict TradeStationComponent

* hijack beacon first pass

* add Objective uplink category

* add HijackTradeStationCondition, objective, and uplink entry

* add sprite and cleanups

* fix + make cooldown sane

* use TimeSpans and update logic accordingly + private state-related fields

* remove temporary reward

* tiny loc changes

* buncha changes

* Change success message, beacon physics properties, formatting

---------

Co-authored-by: seanpimble <149889301+seanpimble@users.noreply.github.com>
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2026-04-03 10:21:04 +00:00

35 lines
1 KiB
C#

using Content.Server.Objectives.Components;
using Content.Shared.Cargo.Components;
using Content.Shared.Mind;
using Content.Shared.Objectives.Components;
using NetCord;
namespace Content.Server.Objectives.Systems;
/// <summary>
/// Handles the Hijack Trade Station objective.
/// </summary>
public sealed class HijackTradeStationConditionSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HijackTradeStationConditionComponent, ObjectiveGetProgressEvent>(OnGetProgress);
}
private void OnGetProgress(Entity<HijackTradeStationConditionComponent> ent, ref ObjectiveGetProgressEvent args)
{
var enumerator = EntityQueryEnumerator<TradeStationComponent>();
args.Progress = 0f;
// If there's any hacked trade station, succeed.
while (enumerator.MoveNext(out var comp))
{
if (!comp.Hacked)
continue;
args.Progress = 1f;
return;
}
}
}