diff --git a/Content.Server/Access/Components/PresetIdCardComponent.cs b/Content.Server/Access/Components/PresetIdCardComponent.cs index 8fd0e10d423..7f2201da5c3 100644 --- a/Content.Server/Access/Components/PresetIdCardComponent.cs +++ b/Content.Server/Access/Components/PresetIdCardComponent.cs @@ -6,15 +6,23 @@ namespace Content.Server.Access.Components; [RegisterComponent] public sealed partial class PresetIdCardComponent : Component { - [DataField("job")] + [DataField] public ProtoId? JobName; - [DataField("name")] + [DataField] public string? IdName; /// /// DeltaV: Allow changing the job title, even if it'd be otherwise set by the JobPrototype /// - [DataField("customJob")] - public string? CustomJobName; + [DataField] + public string? VirtualJobName; + + [ViewVariables(VVAccess.ReadOnly)] + public string? VirtualJobLocalizedName => (VirtualJobName != null) ? Loc.GetString(VirtualJobName) : null; + /// + /// DeltaV: Allow changing the job icon, even if it'd be otherwise set by the JobPrototype + /// + [DataField] + public string? VirtualJobIcon; } diff --git a/Content.Server/Access/Systems/PresetIdCardSystem.cs b/Content.Server/Access/Systems/PresetIdCardSystem.cs index 7aed03b74a8..bfbbbbd257a 100644 --- a/Content.Server/Access/Systems/PresetIdCardSystem.cs +++ b/Content.Server/Access/Systems/PresetIdCardSystem.cs @@ -2,10 +2,8 @@ using Content.Server.GameTicking; using Content.Server.Station.Components; using Content.Server.Station.Systems; -using Content.Server.StationRecords.Systems; using Content.Shared.Access.Systems; using Content.Shared.Roles; -using Content.Shared.StationRecords; using Content.Shared.StatusIcon; using Robust.Shared.Prototypes; @@ -17,8 +15,6 @@ public sealed class PresetIdCardSystem : EntitySystem [Dependency] private readonly IdCardSystem _cardSystem = default!; [Dependency] private readonly SharedAccessSystem _accessSystem = default!; [Dependency] private readonly StationSystem _stationSystem = default!; - [Dependency] private readonly StationRecordsSystem _record = default!; // DeltaV - Allow changing the job title within the prototype - public override void Initialize() { SubscribeLocalEvent(OnMapInit); @@ -41,7 +37,6 @@ private void PlayerJobsAssigned(RulePlayerJobsAssignedEvent ev) SetupIdAccess(uid, card, true); SetupIdName(uid, card); - SetupIdJob(uid, card); // DeltaV - Allow changing the job title within the prototype } } @@ -61,7 +56,6 @@ private void OnMapInit(EntityUid uid, PresetIdCardComponent id, MapInitEvent arg SetupIdAccess(uid, id, extended); SetupIdName(uid, id); - SetupIdJob(uid, id); // DeltaV - Allow changing the job title within the prototype } private void SetupIdName(EntityUid uid, PresetIdCardComponent id) @@ -71,25 +65,6 @@ private void SetupIdName(EntityUid uid, PresetIdCardComponent id) _cardSystem.TryChangeFullName(uid, id.IdName); } - // DeltaV - Allow changing the job title within the prototype - private void SetupIdJob(EntityUid uid, PresetIdCardComponent id) - { - if (id.CustomJobName == null) - return; - _cardSystem.TryChangeJobTitle(uid, id.CustomJobName); - - // The following code is taken from IdCardConsoleSystem - if (!TryComp(uid, out var keyStorage) - || keyStorage.Key is not { } key - || !_record.TryGetRecord(key, out var record)) - { - return; - } - record.JobTitle = id.CustomJobName; - _record.Synchronize(key); - } - // End of DeltaV code - private void SetupIdAccess(EntityUid uid, PresetIdCardComponent id, bool extended) { if (id.JobName == null) @@ -103,10 +78,14 @@ private void SetupIdAccess(EntityUid uid, PresetIdCardComponent id, bool extende _accessSystem.SetAccessToJob(uid, job, extended); - _cardSystem.TryChangeJobTitle(uid, job.LocalizedName); + //flag + _cardSystem.TryChangeJobTitle(uid, !string.IsNullOrEmpty(id.VirtualJobLocalizedName) ? id.VirtualJobLocalizedName : job.LocalizedName); // DeltaV #1425 - Attempt to use virtual job information before using job information _cardSystem.TryChangeJobDepartment(uid, job); + // DeltaV #1425 - Attempt to use virtual job information before using job information + _prototypeManager.TryIndex(id.VirtualJobIcon ?? string.Empty, out var virtualJobIcon); if (_prototypeManager.TryIndex(job.Icon, out var jobIcon)) - _cardSystem.TryChangeJobIcon(uid, jobIcon); + _cardSystem.TryChangeJobIcon(uid, virtualJobIcon ?? jobIcon); + // End of DeltaV code } } diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 5f20feee754..5122fe7fd8e 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -7,12 +7,16 @@ using Content.Server.Spawners.Components; using Content.Server.Speech.Components; using Content.Server.Station.Components; +using Content.Server.Access.Components; using Content.Shared.Database; using Content.Shared.Mind; using Content.Shared.Players; using Content.Shared.Preferences; +using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; +using Content.Shared.Clothing; +using Content.Shared.PDA; using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -21,13 +25,13 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; - namespace Content.Server.GameTicking { public sealed partial class GameTicker { [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly SharedJobSystem _jobs = default!; + [Dependency] private readonly IComponentFactory _componentFactory = default!; // DeltaV #1425 [ValidatePrototypeId] public const string ObserverPrototypeName = "MobObserver"; @@ -224,6 +228,30 @@ private void SpawnPlayer(ICommonSession player, var jobPrototype = _prototypeManager.Index(jobId); var job = new JobComponent {Prototype = jobId}; + // DeltaV #1425 - Loadout stuff to get Senior ID + // Get the PresetIdCardComponent and its VirtualJobName/Icon vars; + var jobLoadout = LoadoutSystem.GetJobPrototype(jobPrototype.ID); + + if (_prototypeManager.TryIndex(jobLoadout, out RoleLoadoutPrototype? roleProto)) + { + RoleLoadout? loadout = null; + character.Loadouts.TryGetValue(jobLoadout, out loadout); + + // Set to default if not present + if (loadout == null) + { + loadout = new RoleLoadout(jobLoadout); + loadout.SetDefault(character, player, _prototypeManager); + } + + // Get the ID + if (GetPresetIdFromLoadout(loadout, roleProto, character, out var presetId)) + { + job.VirtualJobName = presetId?.VirtualJobName; + job.VirtualJobIcon = presetId?.VirtualJobIcon; + } + } + // End of DeltaV code _roles.MindAddRole(newMind, job, silent: silent); var jobName = _jobs.MindTryGetJobName(newMind); @@ -302,7 +330,7 @@ private void SpawnPlayer(ICommonSession player, PlayersJoinedRoundNormally++; var aev = new PlayerSpawnCompleteEvent(mob, player, - jobId, + job, // DeltaV #1425 - Use Job instead of JobId to pass VirtualJobLocalizedName/Icon. lateJoin, PlayersJoinedRoundNormally, station, @@ -310,6 +338,57 @@ private void SpawnPlayer(ICommonSession player, RaiseLocalEvent(mob, aev, true); } + // DeltaV #1425 - Go through loadout items to find ID card and its attached job + private bool GetPresetIdFromLoadout(RoleLoadout loadout, RoleLoadoutPrototype roleProto, HumanoidCharacterProfile character, out PresetIdCardComponent? presetId) + { + presetId = null; + // Use to read job loadout and find an ID card + foreach (var group in loadout.SelectedLoadouts.OrderBy(x => roleProto.Groups.FindIndex(e => e == x.Key))) + { + foreach (var items in group.Value) + { + if (!_prototypeManager.TryIndex(items.Prototype, out var loadoutProto)) + { + Log.Debug($"Unable to find loadout prototype for {items.Prototype}"); + continue; + } + if (!_prototypeManager.TryIndex(loadoutProto.Equipment, out var startingGear)) + { + Log.Debug($"Unable to find starting gear {loadoutProto.Equipment} for loadout {loadoutProto}"); + continue; + } + var entProtoId = startingGear.GetGear("id"); + if (!_prototypeManager.TryIndex(entProtoId, out var idProto)) + { + Log.Debug($"Unable to find prototype for {startingGear} for starting gear {loadoutProto.Equipment} for loadout {loadoutProto}"); + continue; + } + if (idProto.TryGetComponent(out var pdaComponent, _componentFactory) && pdaComponent.IdCard != null) + { + ProtoId idProtoId = pdaComponent.IdCard; + if (!_prototypeManager.TryIndex(idProtoId, out idProto)) + { + Log.Warning($"Unable to find an idCard in {idProto}"); + return false; + } + } + + if (!idProto.TryGetComponent(out var idComponent, _componentFactory)) + { + Log.Debug($"Unable to find presetIdCard for {idProto}"); + continue; + } + + presetId = idComponent; + Log.Debug($"Successfully outputted {presetId} from {idProto}"); + return true; + } + } + Log.Warning($"All other options exhausted"); + return false; + } + // End of DeltaV code + public void Respawn(ICommonSession player) { _mind.WipeMind(player); @@ -500,7 +579,7 @@ public sealed class PlayerSpawnCompleteEvent : EntityEventArgs { public EntityUid Mob { get; } public ICommonSession Player { get; } - public string? JobId { get; } + public JobComponent? Job { get; } // DeltaV #1425 - Replace JobId with Job to parse VirtualJob public bool LateJoin { get; } public EntityUid Station { get; } public HumanoidCharacterProfile Profile { get; } @@ -510,7 +589,7 @@ public sealed class PlayerSpawnCompleteEvent : EntityEventArgs public PlayerSpawnCompleteEvent(EntityUid mob, ICommonSession player, - string? jobId, + JobComponent? job, // DeltaV #1425 bool lateJoin, int joinOrder, EntityUid station, @@ -518,7 +597,7 @@ public PlayerSpawnCompleteEvent(EntityUid mob, { Mob = mob; Player = player; - JobId = jobId; + Job = job; // DeltaV #1425 LateJoin = lateJoin; Station = station; Profile = profile; diff --git a/Content.Server/Station/Systems/StationSpawningSystem.cs b/Content.Server/Station/Systems/StationSpawningSystem.cs index 1ea8bf8d470..885791197d5 100644 --- a/Content.Server/Station/Systems/StationSpawningSystem.cs +++ b/Content.Server/Station/Systems/StationSpawningSystem.cs @@ -220,8 +220,8 @@ public EntityUid SpawnPlayerMob( if (profile != null) { - if (prototype != null) - SetPdaAndIdCardData(entity.Value, profile.Name, prototype, station); + if (job != null) + SetPdaAndIdCardData(entity.Value, profile.Name, job, station); // DeltaV #1425 - Inherit job data from a VirtualJob if one exists _humanoidSystem.LoadProfile(entity.Value, profile); _metaSystem.SetEntityName(entity.Value, profile.Name); @@ -254,8 +254,11 @@ private void DoJobSpecials(JobComponent? job, EntityUid entity) /// Character name to use for the ID. /// Job prototype to use for the PDA and ID. /// The station this player is being spawned on. - public void SetPdaAndIdCardData(EntityUid entity, string characterName, JobPrototype jobPrototype, EntityUid? station) + public void SetPdaAndIdCardData(EntityUid entity, string characterName, JobComponent job, EntityUid? station) // DeltaV #1425 - Use Job instead of JobId to pass VirtualJobLocalizedName/Icon { + if (!_prototypeManager.TryIndex(job.Prototype, out var jobPrototype)) // DeltaV #1425 - Get jobPrototype separately as a result + return; + if (!InventorySystem.TryGetSlotEntity(entity, "id", out var idUid)) return; @@ -267,10 +270,11 @@ public void SetPdaAndIdCardData(EntityUid entity, string characterName, JobProto return; _cardSystem.TryChangeFullName(cardId, characterName, card); - _cardSystem.TryChangeJobTitle(cardId, jobPrototype.LocalizedName, card); + _cardSystem.TryChangeJobTitle(cardId, job.VirtualJobLocalizedName ?? jobPrototype.LocalizedName, card); // DeltaV #1425 - Use VirtualJobLocalizedName if possible + _prototypeManager.TryIndex(job.VirtualJobIcon ?? string.Empty, out var virtualJobIcon); if (_prototypeManager.TryIndex(jobPrototype.Icon, out var jobIcon)) - _cardSystem.TryChangeJobIcon(cardId, jobIcon, card); + _cardSystem.TryChangeJobIcon(cardId, virtualJobIcon ?? jobIcon, card); // DeltaV #1425 - Use VirtualJobIcon if possible var extendedAccess = false; if (station != null) diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs index 8c8ba7132bb..fa89b26946b 100644 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.PDA; using Content.Shared.Preferences; using Content.Shared.Roles; +using Content.Shared.Roles.Jobs; using Content.Shared.StationRecords; using Robust.Shared.Enums; using Robust.Shared.Prototypes; @@ -48,15 +49,19 @@ private void OnPlayerSpawn(PlayerSpawnCompleteEvent args) if (!TryComp(args.Station, out var stationRecords)) return; - CreateGeneralRecord(args.Station, args.Mob, args.Profile, args.JobId, stationRecords); + CreateGeneralRecord(args.Station, args.Mob, args.Profile, args.Job, stationRecords); // DeltaV #1425 - JobId replaced with Job to parse VirtualJob } private void CreateGeneralRecord(EntityUid station, EntityUid player, HumanoidCharacterProfile profile, - string? jobId, StationRecordsComponent records) + JobComponent? job, StationRecordsComponent records) // DeltaV #1425 { - // TODO make PlayerSpawnCompleteEvent.JobId a ProtoId - if (string.IsNullOrEmpty(jobId) - || !_prototypeManager.HasIndex(jobId)) + // DeltaV #1425 - Inherit from VirtualJob if possible + if (!_prototypeManager.TryIndex(job?.Prototype, out var jobProto)) + return; + // End of DeltaV code + + if (string.IsNullOrEmpty(job?.Prototype) + || !_prototypeManager.HasIndex(jobProto)) return; if (!_inventory.TryGetSlotEntity(player, "id", out var idUid)) @@ -65,7 +70,7 @@ private void CreateGeneralRecord(EntityUid station, EntityUid player, HumanoidCh TryComp(player, out var fingerprintComponent); TryComp(player, out var dnaComponent); - CreateGeneralRecord(station, idUid.Value, profile.Name, profile.Age, profile.Species, profile.Gender, jobId, fingerprintComponent?.Fingerprint, dnaComponent?.DNA, profile, records); + CreateGeneralRecord(station, idUid.Value, profile.Name, profile.Age, profile.Species, profile.Gender, job, fingerprintComponent?.Fingerprint, dnaComponent?.DNA, profile, records); } @@ -103,14 +108,17 @@ public void CreateGeneralRecord( int age, string species, Gender gender, - string jobId, + JobComponent job, // DeltaV #1425 - Use Job instead of JobId to pass VirtualJobLocalizedName/Icon string? mobFingerprint, string? dna, HumanoidCharacterProfile profile, StationRecordsComponent records) { - if (!_prototypeManager.TryIndex(jobId, out var jobPrototype)) + // DeltaV #1425 - Get jobId separately as a result + string? jobId = job.Prototype; + if (string.IsNullOrEmpty(jobId) || !_prototypeManager.TryIndex(job.Prototype, out var jobPrototype)) throw new ArgumentException($"Invalid job prototype ID: {jobId}"); + // End of DeltaV code // when adding a record that already exists use the old one // this happens when respawning as the same character @@ -124,8 +132,8 @@ public void CreateGeneralRecord( { Name = name, Age = age, - JobTitle = jobPrototype.LocalizedName, - JobIcon = jobPrototype.Icon, + JobTitle = job.VirtualJobLocalizedName ?? jobPrototype.LocalizedName,// DeltaV #1425 - Use VirtualJobLocalizedName if possible + JobIcon = job.VirtualJobIcon ?? jobPrototype.Icon, // DeltaV #1425 - Use VirtualJobIcon if possible JobPrototype = jobId, Species = species, Gender = gender, diff --git a/Content.Shared/Roles/Jobs/JobComponent.cs b/Content.Shared/Roles/Jobs/JobComponent.cs index 7191e8b3971..11caf31c20d 100644 --- a/Content.Shared/Roles/Jobs/JobComponent.cs +++ b/Content.Shared/Roles/Jobs/JobComponent.cs @@ -1,4 +1,5 @@ -using Robust.Shared.GameStates; +using Content.Shared.Chat.V2.Repository; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Roles.Jobs; @@ -11,4 +12,15 @@ public sealed partial class JobComponent : Component { [DataField(required: true), AutoNetworkedField] public ProtoId? Prototype; + + // DeltaV #1425 - Pass VirtualJobLocalizedName/Icon with the JobComponent to override job information + [DataField] + public string? VirtualJobName; + + [ViewVariables(VVAccess.ReadOnly)] + public string? VirtualJobLocalizedName => (VirtualJobName != null) ? Loc.GetString(VirtualJobName) : null; + + [DataField] + public string? VirtualJobIcon; + // End of DeltaV code } diff --git a/Content.Shared/Roles/Jobs/SharedJobSystem.cs b/Content.Shared/Roles/Jobs/SharedJobSystem.cs index ce4428d9fea..f5d60bd97e7 100644 --- a/Content.Shared/Roles/Jobs/SharedJobSystem.cs +++ b/Content.Shared/Roles/Jobs/SharedJobSystem.cs @@ -136,9 +136,9 @@ public bool MindTryGetJobId([NotNullWhen(true)] EntityUid? mindId, out ProtoId public bool MindTryGetJobName([NotNullWhen(true)] EntityUid? mindId, out string name) { - if (MindTryGetJob(mindId, out _, out var prototype)) + if (MindTryGetJob(mindId, out var comp, out var prototype)) // DeltaV #1425 - Override with the VirtualJobLocalizedName if possible { - name = prototype.LocalizedName; + name = comp.VirtualJobLocalizedName ?? prototype.LocalizedName; // DeltaV #1425 - Override with the VirtualJobLocalizedName if possible return true; } diff --git a/Resources/Locale/en-US/job/job-names.ftl b/Resources/Locale/en-US/job/job-names.ftl index 4b7b5ccc421..c3c1a86937d 100644 --- a/Resources/Locale/en-US/job/job-names.ftl +++ b/Resources/Locale/en-US/job/job-names.ftl @@ -48,6 +48,12 @@ job-name-boxer = Boxer job-name-zookeeper = Zookeeper job-name-visitor = Visitor +# DeltaV #1418 - Define senior job names for use in virtual jobs +job-name-seniorengineer = Senior Engineer +job-name-seniorphysician = Senior Physician +job-name-seniorresearcher = Senior Researcher +job-name-seniorofficer = Senior Officer + # Role timers - Make these alphabetical or I cut you JobAtmosphericTechnician = Atmospheric Technician JobBartender = Bartender diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Misc/identification_cards.yml index 1d1f1bad178..4992a9e180c 100644 --- a/Resources/Prototypes/DeltaV/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Misc/identification_cards.yml @@ -4,7 +4,7 @@ name: chief justice ID card components: - type: PresetIdCard - job: ChiefJustice + jobName: ChiefJustice - type: Sprite layers: - state: default @@ -17,7 +17,7 @@ name: clerk ID card components: - type: PresetIdCard - job: Clerk + jobName: Clerk - type: Sprite layers: - state: default @@ -30,7 +30,7 @@ name: presecutor ID card components: - type: PresetIdCard - job: Prosecutor + jobName: Prosecutor - type: Sprite layers: - state: default @@ -48,4 +48,4 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi state: nyanomailcarrier - type: PresetIdCard - job: Courier + jobName: Courier diff --git a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml index 2f232c566a3..00c49ba934c 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml @@ -37,7 +37,7 @@ - state: default - state: idpassenger - type: PresetIdCard - job: Passenger + jobName: Passenger - type: entity parent: PassengerIDCard @@ -45,7 +45,7 @@ name: technical assistant ID card components: - type: PresetIdCard - job: TechnicalAssistant + jobName: TechnicalAssistant - type: Sprite layers: - state: default @@ -57,7 +57,7 @@ name: medical intern ID card components: - type: PresetIdCard - job: MedicalIntern + jobName: MedicalIntern - type: Sprite layers: - state: default @@ -69,7 +69,7 @@ name: research assistant ID card components: - type: PresetIdCard - job: ResearchAssistant + jobName: ResearchAssistant - type: Sprite layers: - state: default @@ -81,7 +81,7 @@ name: security cadet ID card components: - type: PresetIdCard - job: SecurityCadet + jobName: SecurityCadet - type: Sprite layers: - state: default @@ -93,7 +93,7 @@ name: service worker ID card components: - type: PresetIdCard - job: ServiceWorker + jobName: ServiceWorker - type: Sprite layers: - state: default @@ -111,7 +111,7 @@ - type: Item heldPrefix: gold - type: PresetIdCard - job: Captain + jobName: Captain - type: Tag tags: - DoorBumpOpener @@ -130,7 +130,7 @@ - state: default - state: idsecurityofficer - type: PresetIdCard - job: SecurityOfficer + jobName: SecurityOfficer - type: entity parent: IDCardStandard @@ -142,7 +142,7 @@ - state: default - state: idwarden - type: PresetIdCard - job: Warden + jobName: Warden - type: entity parent: IDCardStandard @@ -154,7 +154,7 @@ - state: default - state: idstationengineer - type: PresetIdCard - job: StationEngineer + jobName: StationEngineer - type: entity parent: IDCardStandard @@ -166,7 +166,7 @@ - state: default - state: idmedicaldoctor - type: PresetIdCard - job: MedicalDoctor + jobName: MedicalDoctor - type: entity parent: IDCardStandard @@ -178,7 +178,7 @@ - state: default - state: idparamedic - type: PresetIdCard - job: Paramedic + jobName: Paramedic - type: entity parent: IDCardStandard @@ -190,7 +190,7 @@ - state: default - state: idchemist - type: PresetIdCard - job: Chemist + jobName: Chemist - type: entity parent: IDCardStandard @@ -202,7 +202,7 @@ - state: default - state: idcargotechnician - type: PresetIdCard - job: CargoTechnician + jobName: CargoTechnician - type: entity parent: IDCardStandard @@ -214,7 +214,7 @@ - state: default - state: idshaftminer - type: PresetIdCard - job: SalvageSpecialist + jobName: SalvageSpecialist - type: entity parent: IDCardStandard @@ -228,7 +228,7 @@ - type: Item heldPrefix: silver - type: PresetIdCard - job: Quartermaster + jobName: Quartermaster - type: entity parent: IDCardStandard @@ -240,7 +240,7 @@ - state: default - state: idscientist - type: PresetIdCard - job: Scientist + jobName: Scientist - type: entity parent: IDCardStandard @@ -252,7 +252,7 @@ - state: default - state: idclown - type: PresetIdCard - job: Clown + jobName: Clown - type: entity parent: IDCardStandard @@ -264,7 +264,7 @@ - state: default - state: idmime - type: PresetIdCard - job: Mime + jobName: Mime - type: entity parent: IDCardStandard @@ -277,7 +277,7 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi # DeltaV - Give Chaplain ID Epistemics colors state: idchaplain - type: PresetIdCard - job: Chaplain + jobName: Chaplain - type: entity parent: IDCardStandard @@ -289,7 +289,7 @@ - state: default - state: idjanitor - type: PresetIdCard - job: Janitor + jobName: Janitor - type: entity parent: IDCardStandard @@ -301,7 +301,7 @@ - state: default - state: idbartender - type: PresetIdCard - job: Bartender + jobName: Bartender - type: entity parent: IDCardStandard @@ -313,8 +313,8 @@ - state: default - state: idbartender - type: PresetIdCard - job: Bartender - name: Pun Pun + jobName: Bartender + idName: Pun Pun - type: entity parent: IDCardStandard @@ -326,7 +326,7 @@ - state: default - state: idcook - type: PresetIdCard - job: Chef + jobName: Chef - type: entity parent: IDCardStandard @@ -338,7 +338,7 @@ - state: default - state: idbotanist - type: PresetIdCard - job: Botanist + jobName: Botanist - type: entity parent: IDCardStandard @@ -350,7 +350,7 @@ - state: default - state: idcurator - type: PresetIdCard - job: Librarian + jobName: Librarian - type: entity parent: IDCardStandard @@ -363,7 +363,7 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi # DeltaV - Give Lawyer ID Justice colors state: idlawyer - type: PresetIdCard - job: Lawyer + jobName: Lawyer - type: entity parent: IDCardStandard @@ -377,7 +377,7 @@ - type: Item heldPrefix: silver - type: PresetIdCard - job: HeadOfPersonnel + jobName: HeadOfPersonnel - type: entity parent: IDCardStandard @@ -391,7 +391,7 @@ - type: Item heldPrefix: silver - type: PresetIdCard - job: ChiefEngineer + jobName: ChiefEngineer - type: entity parent: IDCardStandard @@ -405,7 +405,7 @@ - type: Item heldPrefix: silver - type: PresetIdCard - job: ChiefMedicalOfficer + jobName: ChiefMedicalOfficer - type: entity parent: IDCardStandard @@ -419,7 +419,7 @@ - type: Item heldPrefix: silver - type: PresetIdCard - job: ResearchDirector + jobName: ResearchDirector - type: entity parent: IDCardStandard @@ -433,7 +433,7 @@ - type: Item heldPrefix: silver - type: PresetIdCard - job: HeadOfSecurity + jobName: HeadOfSecurity - type: entity parent: IDCardStandard @@ -445,7 +445,7 @@ - state: default - state: idbrigmedic - type: PresetIdCard # Delta V - Brigmedic, see Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml - job: Brigmedic + jobName: Brigmedic - type: entity parent: IDCardStandard @@ -571,7 +571,7 @@ - state: default - state: idmusician - type: PresetIdCard - job: Musician + jobName: Musician - type: entity parent: CentcomIDCard @@ -593,7 +593,7 @@ suffix: Agent components: - type: PresetIdCard - job: Passenger + jobName: Passenger - type: Access tags: - Maintenance @@ -697,7 +697,7 @@ - state: orange - state: idatmospherictechnician - type: PresetIdCard - job: AtmosphericTechnician + jobName: AtmosphericTechnician - type: entity parent: IDCardStandard @@ -735,7 +735,7 @@ - state: default - state: idpsychologist - type: PresetIdCard - job: Psychologist + jobName: Psychologist - type: entity parent: IDCardStandard @@ -747,7 +747,7 @@ - state: default - state: idreporter - type: PresetIdCard - job: Reporter + jobName: Reporter - type: entity parent: IDCardStandard @@ -759,7 +759,7 @@ - state: default - state: idboxer - type: PresetIdCard - job: Boxer + jobName: Boxer - type: entity parent: IDCardStandard @@ -771,7 +771,7 @@ - state: default - state: idzookeeper - type: PresetIdCard - job: Zookeeper + jobName: Zookeeper - type: entity parent: IDCardStandard @@ -783,7 +783,7 @@ - state: default - state: iddetective - type: PresetIdCard - job: Detective + jobName: Detective - type: entity parent: CentcomIDCard @@ -823,7 +823,8 @@ - state: default - state: idseniorengineer - type: PresetIdCard # DeltaV - Change senior job titles - customJob: Senior Engineer + virtualJobName: "job-name-seniorengineer" + virtualJobIcon: "JobIconSeniorEngineer" - type: entity parent: ResearchIDCard @@ -835,7 +836,8 @@ - state: default - state: idseniorresearcher - type: PresetIdCard # DeltaV - Change senior job titles - customJob: Senior Researcher + virtualJobName: "job-name-seniorresearcher" + virtualJobIcon: "JobIconSeniorResearcher" - type: entity parent: MedicalIDCard @@ -847,7 +849,8 @@ - state: default - state: idseniorphysician - type: PresetIdCard # DeltaV - Change senior job titles - customJob: Senior Physician + virtualJobName: "job-name-seniorphysician" + virtualJobIcon: "JobIconSeniorPhysician" - type: entity parent: SecurityIDCard @@ -859,7 +862,8 @@ - state: default - state: idseniorofficer - type: PresetIdCard # DeltaV - Change senior job titles - customJob: Senior Officer + virtualJobName: "job-name-seniorofficer" + virtualJobIcon: "JobIconSeniorOfficer" - type: entity parent: IDCardStandard diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/Misc/identification_cards.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/Misc/identification_cards.yml index 0c0db8febc5..c0107881687 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/Misc/identification_cards.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/Misc/identification_cards.yml @@ -9,7 +9,7 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi state: nyanoprisoner - type: PresetIdCard - job: Prisoner + jobName: Prisoner - type: entity parent: IDCardStandard @@ -22,7 +22,7 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi state: nyanogladiator - type: PresetIdCard - job: Gladiator + jobName: Gladiator - type: entity parent: IDCardStandard @@ -35,7 +35,7 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi state: nyanoprisonguard - type: PresetIdCard - job: PrisonGuard + jobName: PrisonGuard - type: entity parent: IDCardStandard @@ -48,7 +48,7 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi state: nyanomailcarrier - type: PresetIdCard - job: MailCarrier + jobName: MailCarrier - type: entity parent: IDCardStandard @@ -61,7 +61,7 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi state: nyanomartialartist - type: PresetIdCard - job: MartialArtist + jobName: MartialArtist - type: entity parent: IDCardStandard @@ -74,4 +74,4 @@ - sprite: DeltaV/Objects/Misc/id_cards.rsi state: nyanomantis - type: PresetIdCard - job: ForensicMantis + jobName: ForensicMantis