Fix: Make `IdBindComponent change ID card on MapInitEvent` (#37300)

Fix
This commit is contained in:
Winkarst 2025-05-09 18:46:10 +03:00 committed by GitHub
parent 9bdc150602
commit 239c71d7b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,9 +1,8 @@
using Content.Server.Access.Components;
using Content.Server.Humanoid.Systems;
using Content.Server.PDA;
using Content.Shared.Inventory;
using Content.Shared.Mind.Components;
using Content.Shared.PDA;
using Content.Shared.Roles;
namespace Content.Server.Access.Systems;
@ -17,10 +16,10 @@ public sealed class IdBindSystem : EntitySystem
{
base.Initialize();
//Activate on mind being added
SubscribeLocalEvent<IdBindComponent, MindAddedMessage>(TryBind);
SubscribeLocalEvent<IdBindComponent, MapInitEvent>(TryBind, after: [typeof(RandomHumanoidSystem)]);
}
private void TryBind(Entity<IdBindComponent> ent, ref MindAddedMessage args)
private void TryBind(Entity<IdBindComponent> ent, ref MapInitEvent args)
{
if (!_cardSystem.TryFindIdCard(ent, out var cardId))
return;
@ -31,9 +30,9 @@ public sealed class IdBindSystem : EntitySystem
if (!ent.Comp.BindPDAOwner)
{
//Remove after running once
RemCompDeferred<IdBindComponent>(ent);
return;
//Remove after running once
RemCompDeferred<IdBindComponent>(ent);
return;
}
//Get PDA from main slot and set us as owner