new List<ProtoId<AccessLevelPrototype>>());
var jobIndex = _jobPrototypeIds.IndexOf(state.TargetIdJobPrototype);
- // If the job index is < 0 that means they don't have a job registered in the station records.
+ // If the job index is < 0 that means they don't have a job registered in the station records
+ // or the IdCardComponent's JobPrototype field.
// For example, a new ID from a box would have no job index.
if (jobIndex < 0)
{
var targetIdComponent = EntityManager.GetComponent<IdCardComponent>(targetId);
var targetAccessComponent = EntityManager.GetComponent<AccessComponent>(targetId);
- var jobProto = new ProtoId<AccessLevelPrototype>(string.Empty);
+ var jobProto = targetIdComponent.JobPrototype ?? new ProtoId<AccessLevelPrototype>(string.Empty);
if (TryComp<StationRecordKeyStorageComponent>(targetId, out var keyStorage)
- && keyStorage.Key is {} key
+ && keyStorage.Key is { } key
&& _record.TryGetRecord<GeneralStationRecord>(key, out var record))
{
jobProto = record.JobPrototype;
}
UpdateStationRecord(uid, targetId, newFullName, newJobTitle, job);
+ if ((!TryComp<StationRecordKeyStorageComponent>(targetId, out var keyStorage)
+ || keyStorage.Key is not { } key
+ || !_record.TryGetRecord<GeneralStationRecord>(key, out _))
+ && newJobProto != string.Empty)
+ {
+ Comp<IdCardComponent>(targetId).JobPrototype = newJobProto;
+ }
if (!newAccessList.TrueForAll(x => component.AccessLevels.Contains(x)))
{
[AutoNetworkedField]
public ProtoId<JobIconPrototype> JobIcon = "JobIconUnknown";
+ /// <summary>
+ /// Holds the job prototype when the ID card has no associated station record
+ /// </summary>
+ [DataField]
+ [AutoNetworkedField]
+ public ProtoId<AccessLevelPrototype>? JobPrototype;
+
/// <summary>
/// The proto IDs of the departments associated with the job
/// </summary>