From a0c5359cfe6772464c45274e96681c603105d55a Mon Sep 17 00:00:00 2001 From: ZoNeSRuS Date: Sun, 10 Mar 2024 04:58:02 +0700 Subject: [PATCH 01/13] arahFix --- Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs | 2 +- Content.Shared/Roles/JobRequirements.cs | 2 +- Resources/Prototypes/SS220/spo9k/Species/felinid.yml | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs index dd4ac482fd00..e6bd59be32de 100644 --- a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs +++ b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs @@ -136,7 +136,7 @@ public sealed partial class SpeciesPrototype : IPrototype //SS220 Species-Job-Requirement [DataField("blockedJobs", required: false, customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List BlockedJobs { get; } = new(); + public Dictionary> BlockedJobsByAccessor { get; } = new(); } public enum SpeciesNaming : byte diff --git a/Content.Shared/Roles/JobRequirements.cs b/Content.Shared/Roles/JobRequirements.cs index e209e0110165..5d00a3de2452 100644 --- a/Content.Shared/Roles/JobRequirements.cs +++ b/Content.Shared/Roles/JobRequirements.cs @@ -181,7 +181,7 @@ public static bool TryRequirementMet( return true; reason = FormattedMessage.FromMarkup(Loc.GetString( - "role-timer-overall-insufficient", + "role-timer-overall-insufficient", ("time", Math.Ceiling(overallDiff)))); return false; } diff --git a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml index 9c71a299365c..57e40fb984bd 100644 --- a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml +++ b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml @@ -10,8 +10,8 @@ youngAge: 20 oldAge: 40 maxAge: 40 - blockedJobs: - - Captain + blockedJobsByAccessor: + - Captain: [ female ] - BlueShield - HeadOfPersonnel - Quartermaster @@ -27,6 +27,7 @@ - SecurityOfficer - Warden - Boxer + - type: markingPoints id: MobFelinidMarkingLimits points: From 6a45a611d2f0732558c4b7de9a9aafc54d093a95 Mon Sep 17 00:00:00 2001 From: Alan Wake Date: Sun, 10 Mar 2024 03:10:05 +0300 Subject: [PATCH 02/13] requirements refactor --- .../JobRequirementsManager.cs | 2 +- .../RoleSpeciesRestrictSystem.cs | 3 +- .../Humanoid/Prototypes/SpeciesPrototype.cs | 5 +-- Content.Shared/Roles/JobRequirements.cs | 32 ++++++++++++++++- .../SS220/spo9k/Species/felinid.yml | 34 +++++++++---------- 5 files changed, 54 insertions(+), 22 deletions(-) diff --git a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs index 2c6352244f3f..66cd13a9ad8f 100644 --- a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs +++ b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs @@ -157,7 +157,7 @@ public bool CheckSpeciesRestrict(JobPrototype job, HumanoidCharacterProfile prof if (species is not null) { - if (JobRequirements.TryRequirementsSpeciesMet(job, species, out var reason, _prototypeManager)) + if (JobRequirements.TryRequirementsSpeciesMet(job, species, profile.Sex, out var reason, _prototypeManager)) return true; reasons.Add(reason.ToMarkup()); diff --git a/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs b/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs index a38812374e92..829596cdf0fd 100644 --- a/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs +++ b/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs @@ -1,5 +1,6 @@ // © SS220, An EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt // Created specially for SS200 with love by Alan Wake (https://github.com/aw-c) + using Content.Shared.Roles; using Robust.Shared.Prototypes; using Content.Shared.Humanoid.Prototypes; @@ -21,7 +22,7 @@ public bool IsAllowed(ICommonSession player, string jobId) { var profile = (_serverPreferences.GetPreferences(player.UserId).SelectedCharacter as HumanoidCharacterProfile)!; var species = _prototypes.Index(profile.Species); - if (JobRequirements.TryRequirementsSpeciesMet(job, species, out _, _prototypes)) + if (JobRequirements.TryRequirementsSpeciesMet(job, species, profile.Sex, out _, _prototypes)) return true; } return false; diff --git a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs index e6bd59be32de..e56459818326 100644 --- a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs +++ b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs @@ -1,6 +1,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Generic; using Content.Shared.Roles; namespace Content.Shared.Humanoid.Prototypes; @@ -135,8 +136,8 @@ public sealed partial class SpeciesPrototype : IPrototype public string ButtScanTexture = "/Textures/SS220/Interface/Butts/human.png"; //SS220 Species-Job-Requirement - [DataField("blockedJobs", required: false, customTypeSerializer: typeof(PrototypeIdListSerializer))] - public Dictionary> BlockedJobsByAccessor { get; } = new(); + [DataField(customTypeSerializer: typeof(DictionarySerializer))] + public Dictionary BlockedJobsByAccessor { get; } = new(); } public enum SpeciesNaming : byte diff --git a/Content.Shared/Roles/JobRequirements.cs b/Content.Shared/Roles/JobRequirements.cs index 5d00a3de2452..981b3a42d634 100644 --- a/Content.Shared/Roles/JobRequirements.cs +++ b/Content.Shared/Roles/JobRequirements.cs @@ -7,6 +7,7 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Utility; using Content.Shared.Humanoid.Prototypes; +using Content.Shared.Humanoid; namespace Content.Shared.Roles { @@ -76,16 +77,45 @@ public static class JobRequirements public static bool TryRequirementsSpeciesMet( JobPrototype job, SpeciesPrototype species, + Sex selected_sex, [NotNullWhen(false)] out FormattedMessage? reason, IPrototypeManager prototypes) { reason = null; - if (species.BlockedJobs is not null && species.BlockedJobs.Contains(job.ID)) + if (species.BlockedJobsByAccessor.ContainsKey(job.ID)) { + if (species.BlockedJobsByAccessor[job.ID] is null || species.BlockedJobsByAccessor[job.ID].Length == 0) + goto not_allowed; + + foreach (var looking_sex in species.BlockedJobsByAccessor[job.ID]) + { + Sex sex = 0; + switch (looking_sex) + { + case "female": + sex = Sex.Female; + break; + case "male": + sex = Sex.Male; + break; + case "unsexed": + sex = Sex.Unsexed; + break; + } + + if (selected_sex == sex) + goto not_allowed; + } + + return true; + + not_allowed: + reason = FormattedMessage.FromMarkup(Loc.GetString("role-restrict-specie")); return false; } + return true; } //SS220 Species-Job-Requirement end diff --git a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml index 57e40fb984bd..52db7e30ee38 100644 --- a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml +++ b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml @@ -10,23 +10,23 @@ youngAge: 20 oldAge: 40 maxAge: 40 - blockedJobsByAccessor: - - Captain: [ female ] - - BlueShield - - HeadOfPersonnel - - Quartermaster - - ChiefEngineer - - Chemist - - ChiefMedicalOfficer - - Paramedic - - ResearchDirector - - Brigmedic - - Detective - - HeadOfSecurity - - SecurityCadet - - SecurityOfficer - - Warden - - Boxer + blockedJobsByAccessor: # we are deny all sex if don't put anytihng inside the [], but when we put something inside, we deny just this sex + Captain: [ ] + BlueShield: [ ] + HeadOfPersonnel: [ ] + Quartermaster: [ ] + ChiefEngineer: [ ] + Chemist: [ ] + ChiefMedicalOfficer: [ ] + Paramedic: [ ] + ResearchDirector: [ ] + Brigmedic: [ ] + Detective: [ ] + HeadOfSecurity: [ ] + SecurityCadet: [ ] + SecurityOfficer: [ ] + Warden: [ ] + Boxer: [ ] - type: markingPoints id: MobFelinidMarkingLimits From bdff079179256ac9d512c59ad2897d1940a7a15e Mon Sep 17 00:00:00 2001 From: Kit0vras Date: Sat, 9 Mar 2024 23:23:59 +0300 Subject: [PATCH 03/13] Species Job Restrictions --- Resources/Prototypes/Species/arachnid.yml | 11 ++++++++++ Resources/Prototypes/Species/diona.yml | 25 ++++++++++++++++++++++ Resources/Prototypes/Species/dwarf.yml | 11 ++++++++++ Resources/Prototypes/Species/moth.yml | 12 +++++++++++ Resources/Prototypes/Species/reptilian.yml | 14 ++++++++++++ Resources/Prototypes/Species/slime.yml | 11 ++++++++++ 6 files changed, 84 insertions(+) diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 92bce581d0de..03b1a0c64412 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -14,6 +14,17 @@ femaleLastNames: names_arachnid_last # Corvax-LastnameGender sexes: - Unsexed + blockedJobs: #SS220-Job-Restrictions-start +#Командование + - Captain +#ЦК + - IAA +#Медицинский отдел + - Psychologist +#Сервис + - Clown + - Mime +#SS220-Job-Restrictions-end - type: speciesBaseSprites id: MobArachnidSprites diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index a854a0833e00..2d2c8eddc0ec 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -14,6 +14,31 @@ femaleLastNames: DionaLast # Corvax-LastnameGender naming: TheFirstofLast buttScanTexture: /Textures/SS220/Interface/Butts/diona.png + blockedJobs: #SS220-Job-Restrictions-start +#Командование + - Captain + - HeadOfSecurity + - Quartermaster +#ЦК + - BlueShield + - IAA +#Служба Безопасности + - Warden + - SecurityOfficer + - SecurityPilot + - SecurityCadet + - Brigmedic +#Медицинский отдел + - Paramedic +#Отдел снабжения + - Quartermaster + - CargoTechnician + - SalvageSpecialist +#Сервис + - Detective + - Chef + - Boxer +#SS220-Job-Restrictions-end - type: speciesBaseSprites id: MobDionaSprites diff --git a/Resources/Prototypes/Species/dwarf.yml b/Resources/Prototypes/Species/dwarf.yml index fc800213c19f..17e7a32cfa75 100644 --- a/Resources/Prototypes/Species/dwarf.yml +++ b/Resources/Prototypes/Species/dwarf.yml @@ -7,3 +7,14 @@ markingLimits: MobHumanMarkingLimits dollPrototype: MobDwarfDummy skinColoration: HumanToned + blockedJobs: #SS220-Job-Restrictions-start +#Командование + - Captain + - HeadOfPersonnel + - HeadOfSecurity + - ResearchDirector +#ЦК + - IAA +#Сервис + - Chaplain +#SS220-Job-Restrictions-end diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 1dd80d4f5d2e..05b605d4528e 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -12,6 +12,18 @@ femaleFirstNames: names_moth_first_female maleLastNames: names_moth_last_male femaleLastNames: names_moth_last_female + blockedJobs: #SS220-Job-Restrictions-start +#Командование + - Captain + - HeadOfSecurity + - ChiefEngineer +#ЦК + - BlueShield + - IAA +#Инженерный отдел + - StationEngineer + - TechnicalAssistant +#SS220-Job-Restrictions-end - type: speciesBaseSprites id: MobMothSprites diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index d5a776bbf6fb..6796cc4b12bf 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -12,6 +12,20 @@ femaleFirstNames: names_reptilian_female naming: FirstDashFirst buttScanTexture: /Textures/SS220/Interface/Butts/unathi.png + blockedJobs: #SS220-Job-Restrictions-start +#Командование + - Captain +#ЦК + - IAA +#Служба Безопасности + - Brigmedic +#Медицинский отдел + - Psychologist +#Сервис + - Chef + - Bartender + - Botanist +#SS220-Job-Restrictions-end - type: speciesBaseSprites id: MobReptilianSprites diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index ae60a9d427cd..17d49a237602 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -9,6 +9,17 @@ dollPrototype: MobSlimePersonDummy skinColoration: Hues buttScanTexture: /Textures/SS220/Interface/Butts/slime.png + blockedJobs: #SS220-Job-Restrictions-start +#Командование + - Captain +#ЦК + - IAA +#Сервис + - Janitor + - Chef + - Bartender + - Botanist +#SS220-Job-Restrictions-end - type: speciesBaseSprites id: MobSlimeSprites From 2da706b6d37b0b3333ed4a2a71b39904f21a084c Mon Sep 17 00:00:00 2001 From: Kit0vras Date: Sun, 10 Mar 2024 00:01:21 +0300 Subject: [PATCH 04/13] arachnid sexes --- Resources/Prototypes/Species/arachnid.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 03b1a0c64412..6ed4fb014f97 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -12,8 +12,6 @@ femaleFirstNames: names_arachnid_first maleLastNames: names_arachnid_last # Corvax-LastnameGender femaleLastNames: names_arachnid_last # Corvax-LastnameGender - sexes: - - Unsexed blockedJobs: #SS220-Job-Restrictions-start #Командование - Captain From d9330dae16ca0a70d28c42647fe6d9ffb495f088 Mon Sep 17 00:00:00 2001 From: Kit0vras Date: Sun, 10 Mar 2024 01:35:13 +0300 Subject: [PATCH 05/13] no chemist slime --- Resources/Prototypes/Species/slime.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index 17d49a237602..889929071865 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -14,6 +14,8 @@ - Captain #ЦК - IAA +#Медицинский отдел + - Chemist #Сервис - Janitor - Chef From d10ee0d327ad5e1b029faea2b4062a653079867d Mon Sep 17 00:00:00 2001 From: ZoNeSRuS Date: Sun, 10 Mar 2024 23:10:06 +0700 Subject: [PATCH 06/13] arahFirst --- .../SS220/spo9k/Species/felinid.yml | 14 +++--- Resources/Prototypes/Species/arachnid.yml | 45 ++++++++++++++++--- 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml index 52db7e30ee38..2d675c9d9e7d 100644 --- a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml +++ b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml @@ -11,22 +11,20 @@ oldAge: 40 maxAge: 40 blockedJobsByAccessor: # we are deny all sex if don't put anytihng inside the [], but when we put something inside, we deny just this sex +#Командование Captain: [ ] - BlueShield: [ ] HeadOfPersonnel: [ ] - Quartermaster: [ ] ChiefEngineer: [ ] - Chemist: [ ] - ChiefMedicalOfficer: [ ] - Paramedic: [ ] ResearchDirector: [ ] - Brigmedic: [ ] - Detective: [ ] HeadOfSecurity: [ ] + ChiefMedicalOfficer: [ ] +#ЦК + IAA: [ ] + BlueShield: [ ] +#Служба Безопасности SecurityCadet: [ ] SecurityOfficer: [ ] Warden: [ ] - Boxer: [ ] - type: markingPoints id: MobFelinidMarkingLimits diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 6ed4fb014f97..1a1fa3acdae0 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -12,16 +12,49 @@ femaleFirstNames: names_arachnid_first maleLastNames: names_arachnid_last # Corvax-LastnameGender femaleLastNames: names_arachnid_last # Corvax-LastnameGender - blockedJobs: #SS220-Job-Restrictions-start + blockedJobsByAccessor: #SS220-Job-Restrictions-start #Командование - - Captain + Captain: [ ] + HeadOfPersonnel: [ male ] + HeadOfSecurity: [ male ] + ChiefEngineer: [ male ] + Quartermaster: [ male ] + ChiefMedicalOfficer: [ male ] #ЦК - - IAA + IAA: [ ] + BlueShield: [ male ] +#Служба Безопасности + Warden: [ male ] + SecurityOfficer: [ male ] + SecurityPilot: [ male ] + SecurityCadet: [ male ] + Brigmedic: [ famele ] +#Инженерный отдел + AtmosphericTechnician: [ famele ] + StationEngineer: [ female ] + TechnicalAssistant: [ female ] #Медицинский отдел - - Psychologist + Psychologist: [ female ] + Chemist: [ female ] + MedicalDoctor: [ female ] + MedicalIntern: [ female ] + Paramedic: [ female ] +#Научный отдел + Scientist: [ female ] + ResearchAssistant: [ female ] +#Отдел снабжения + CargoTechnician: [ female ] + SalvageSpecialist: [ female ] #Сервис - - Clown - - Mime + Janitor: [ female ] + Chef: [ female ] + Bartender: [ female ] + Detective: [ male ] + Librarian: [ female ] + Janitor: [ female ] + Botanist: [ female ] + Clown: [ ] + Mime: [ ] #SS220-Job-Restrictions-end - type: speciesBaseSprites From ecd119e8282d7cd5b8e33b8f2036b514b0dc4467 Mon Sep 17 00:00:00 2001 From: ZoNeSRuS <42711621+ZoNeSRuS@users.noreply.github.com> Date: Sun, 24 Mar 2024 12:44:14 +0700 Subject: [PATCH 07/13] Update Resources/Prototypes/Species/arachnid.yml Co-authored-by: Kit0vras <123590995+Kit0vras@users.noreply.github.com> --- Resources/Prototypes/Species/arachnid.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 1a1fa3acdae0..e6f06d268dc4 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -30,7 +30,7 @@ SecurityCadet: [ male ] Brigmedic: [ famele ] #Инженерный отдел - AtmosphericTechnician: [ famele ] + AtmosphericTechnician: [ female ] StationEngineer: [ female ] TechnicalAssistant: [ female ] #Медицинский отдел From bd0631fa3317d7fb6a9bffaae43222a94e56a888 Mon Sep 17 00:00:00 2001 From: ZoNeSRuS <42711621+ZoNeSRuS@users.noreply.github.com> Date: Sun, 24 Mar 2024 12:44:20 +0700 Subject: [PATCH 08/13] Update Resources/Prototypes/Species/arachnid.yml Co-authored-by: Kit0vras <123590995+Kit0vras@users.noreply.github.com> --- Resources/Prototypes/Species/arachnid.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index e6f06d268dc4..b272b98ac6bd 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -28,7 +28,7 @@ SecurityOfficer: [ male ] SecurityPilot: [ male ] SecurityCadet: [ male ] - Brigmedic: [ famele ] + Brigmedic: [ female ] #Инженерный отдел AtmosphericTechnician: [ female ] StationEngineer: [ female ] From fdd3366fbea40268464dfb2da5531ecadbeabb7b Mon Sep 17 00:00:00 2001 From: ZoNeSRuS Date: Sun, 24 Mar 2024 17:04:09 +0700 Subject: [PATCH 09/13] addBlockedJobs --- .../SS220/spo9k/Species/felinid.yml | 1 + Resources/Prototypes/Species/diona.yml | 36 +++++++++---------- Resources/Prototypes/Species/dwarf.yml | 12 +++---- Resources/Prototypes/Species/moth.yml | 14 ++++---- Resources/Prototypes/Species/reptilian.yml | 14 ++++---- Resources/Prototypes/Species/slime.yml | 14 ++++---- 6 files changed, 46 insertions(+), 45 deletions(-) diff --git a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml index 2d675c9d9e7d..379ea77f7011 100644 --- a/Resources/Prototypes/SS220/spo9k/Species/felinid.yml +++ b/Resources/Prototypes/SS220/spo9k/Species/felinid.yml @@ -24,6 +24,7 @@ #Служба Безопасности SecurityCadet: [ ] SecurityOfficer: [ ] + SecurityPilot: [ ] Warden: [ ] - type: markingPoints diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index 2d2c8eddc0ec..43754f2bd87a 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -16,28 +16,28 @@ buttScanTexture: /Textures/SS220/Interface/Butts/diona.png blockedJobs: #SS220-Job-Restrictions-start #Командование - - Captain - - HeadOfSecurity - - Quartermaster + Captain: [ ] + HeadOfSecurity: [ ] + Quartermaster: [ ] #ЦК - - BlueShield - - IAA + BlueShield: [ ] + IAA: [ ] #Служба Безопасности - - Warden - - SecurityOfficer - - SecurityPilot - - SecurityCadet - - Brigmedic -#Медицинский отдел - - Paramedic + Warden: [ ] + SecurityOfficer: [ ] + SecurityPilot: [ ] + SecurityCadet: [ ] + Brigmedic: [ ] +#Мединский отдел + Paramedic: [ ] #Отдел снабжения - - Quartermaster - - CargoTechnician - - SalvageSpecialist + Quartermaster: [ ] + CargoTechnician: [ ] + SalvageSpecialist: [ ] #Сервис - - Detective - - Chef - - Boxer + Detective: [ ] + Chef: [ ] + Boxer: [ ] #SS220-Job-Restrictions-end - type: speciesBaseSprites diff --git a/Resources/Prototypes/Species/dwarf.yml b/Resources/Prototypes/Species/dwarf.yml index 17e7a32cfa75..b878c68cb620 100644 --- a/Resources/Prototypes/Species/dwarf.yml +++ b/Resources/Prototypes/Species/dwarf.yml @@ -9,12 +9,12 @@ skinColoration: HumanToned blockedJobs: #SS220-Job-Restrictions-start #Командование - - Captain - - HeadOfPersonnel - - HeadOfSecurity - - ResearchDirector + Captain: [ ] + HeadOfPersonnel: [ ] + HeadOfSecurity: [ ] + ResearchDirector: [ ] #ЦК - - IAA + IAA: [ ] #Сервис - - Chaplain + Chaplain: [ ] #SS220-Job-Restrictions-end diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 05b605d4528e..2f03d4257311 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -14,15 +14,15 @@ femaleLastNames: names_moth_last_female blockedJobs: #SS220-Job-Restrictions-start #Командование - - Captain - - HeadOfSecurity - - ChiefEngineer + Captain: [ ] + HeadOfSecurity: [ ] + ChiefEngineer: [ ] #ЦК - - BlueShield - - IAA + BlueShield: [ ] + IAA: [ ] #Инженерный отдел - - StationEngineer - - TechnicalAssistant + StationEngineer: [ ] + TechnicalAssistant: [ ] #SS220-Job-Restrictions-end - type: speciesBaseSprites diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 6796cc4b12bf..522f48869765 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -14,17 +14,17 @@ buttScanTexture: /Textures/SS220/Interface/Butts/unathi.png blockedJobs: #SS220-Job-Restrictions-start #Командование - - Captain + Captain: [ ] #ЦК - - IAA + IAA: [ ] #Служба Безопасности - - Brigmedic + Brigmedic: [ ] #Медицинский отдел - - Psychologist + Psychologist: [ ] #Сервис - - Chef - - Bartender - - Botanist + Chef: [ ] + Bartender: [ ] + Botanist: [ ] #SS220-Job-Restrictions-end - type: speciesBaseSprites diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index 889929071865..727d23bb3e76 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -11,16 +11,16 @@ buttScanTexture: /Textures/SS220/Interface/Butts/slime.png blockedJobs: #SS220-Job-Restrictions-start #Командование - - Captain + Captain: [ ] #ЦК - - IAA + IAA: [ ] #Медицинский отдел - - Chemist + Chemist: [ ] #Сервис - - Janitor - - Chef - - Bartender - - Botanist + Janitor: [ ] + Chef: [ ] + Bartender: [ ] + Botanist: [ ] #SS220-Job-Restrictions-end - type: speciesBaseSprites From ce15842caeaac3e52ad8a82ac073319009178cf5 Mon Sep 17 00:00:00 2001 From: ZoNeSRuS Date: Sun, 24 Mar 2024 21:38:41 +0700 Subject: [PATCH 10/13] jobBlockFix --- .../Managers/ServerPreferencesManager.cs | 25 +++++++++++++++++++ Resources/Prototypes/Species/arachnid.yml | 1 - Resources/Prototypes/Species/diona.yml | 1 - 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index a5d66b8fae53..bfb1c8ca91c6 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -13,6 +13,7 @@ using Robust.Shared.Network; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Content.Server.SS220.RoleSpeciesRestrict; namespace Content.Server.Preferences.Managers @@ -28,6 +29,8 @@ public sealed class ServerPreferencesManager : IServerPreferencesManager [Dependency] private readonly IServerDbManager _db = default!; [Dependency] private readonly IPrototypeManager _protos = default!; [Dependency] private readonly SponsorsManager _sponsors = default!; + [Dependency] private readonly IEntitySystemManager _iEntitySystemManager = default!; + [Dependency] private readonly ISharedPlayerManager _iSharedPlayerManager = default!; // Cache player prefs on the server so we don't need as much async hell related to them. private readonly Dictionary _cachedPlayerPrefs = @@ -106,6 +109,28 @@ private async void HandleUpdateCharacterMessage(MsgUpdateCharacter message) var allowedMarkings = _sponsors.TryGetInfo(message.MsgChannel.UserId, out var sponsor) ? sponsor.AllowedMarkings : new string[]{}; profile.EnsureValid(allowedMarkings); // Corvax-Sponsors-End + + if (!_iSharedPlayerManager.TryGetSessionById(userId, out var session)) + return; + + if (profile is HumanoidCharacterProfile human){ + + foreach (var (k,v) in human.JobPriorities) + { + //Logger.Info($"{k} {v}"); + //Logger.Info(JobPriority.Never.ToString()); + if(session == null) + continue; + if(!_iEntitySystemManager.GetEntitySystem().IsAllowed(session, k)) + { + //human.JobPriorities[k] = JobPriority.Never; + human = human.WithJobPriority(k, JobPriority.Never); + } + } + profile = human; + message.Profile = human; + } + var profiles = new Dictionary(curPrefs.Characters) { [slot] = profile diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index b272b98ac6bd..dc6b27ea26f7 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -46,7 +46,6 @@ CargoTechnician: [ female ] SalvageSpecialist: [ female ] #Сервис - Janitor: [ female ] Chef: [ female ] Bartender: [ female ] Detective: [ male ] diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index 43754f2bd87a..4baa6f0f3540 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -31,7 +31,6 @@ #Мединский отдел Paramedic: [ ] #Отдел снабжения - Quartermaster: [ ] CargoTechnician: [ ] SalvageSpecialist: [ ] #Сервис From bb409c397d26ac730203c7aebd4791fa1b33335f Mon Sep 17 00:00:00 2001 From: ZoNeSRuS Date: Sun, 24 Mar 2024 21:54:21 +0700 Subject: [PATCH 11/13] addLic --- .../Players/PlayTimeTracking/JobRequirementsManager.cs | 2 +- Content.Server/Preferences/Managers/ServerPreferencesManager.cs | 2 ++ .../SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs index 66cd13a9ad8f..ee5bff095818 100644 --- a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs +++ b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs @@ -157,7 +157,7 @@ public bool CheckSpeciesRestrict(JobPrototype job, HumanoidCharacterProfile prof if (species is not null) { - if (JobRequirements.TryRequirementsSpeciesMet(job, species, profile.Sex, out var reason, _prototypeManager)) + if (JobRequirements.TryRequirementsSpeciesMet(job, species, profile.Sex, out var reason, _prototypeManager)) //ss220-arahFix return true; reasons.Add(reason.ToMarkup()); diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index bfb1c8ca91c6..d4e7b006b657 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -110,6 +110,7 @@ private async void HandleUpdateCharacterMessage(MsgUpdateCharacter message) profile.EnsureValid(allowedMarkings); // Corvax-Sponsors-End + //ss-220 arahFix if (!_iSharedPlayerManager.TryGetSessionById(userId, out var session)) return; @@ -130,6 +131,7 @@ private async void HandleUpdateCharacterMessage(MsgUpdateCharacter message) profile = human; message.Profile = human; } + //ss-220 arahFixend var profiles = new Dictionary(curPrefs.Characters) { diff --git a/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs b/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs index 829596cdf0fd..56bf01327e57 100644 --- a/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs +++ b/Content.Server/SS220/RoleSpeciesRestrict/RoleSpeciesRestrictSystem.cs @@ -22,7 +22,7 @@ public bool IsAllowed(ICommonSession player, string jobId) { var profile = (_serverPreferences.GetPreferences(player.UserId).SelectedCharacter as HumanoidCharacterProfile)!; var species = _prototypes.Index(profile.Species); - if (JobRequirements.TryRequirementsSpeciesMet(job, species, profile.Sex, out _, _prototypes)) + if (JobRequirements.TryRequirementsSpeciesMet(job, species, profile.Sex, out _, _prototypes)) //ss220-arahFix return true; } return false; From d6d17b6d419da1993e38d14b8ed83f8632f3a85b Mon Sep 17 00:00:00 2001 From: ZoNeSRuS Date: Sun, 24 Mar 2024 22:07:12 +0700 Subject: [PATCH 12/13] fixComent --- .../Preferences/Managers/ServerPreferencesManager.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index d4e7b006b657..91f6b6bb6f75 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -118,13 +118,10 @@ private async void HandleUpdateCharacterMessage(MsgUpdateCharacter message) foreach (var (k,v) in human.JobPriorities) { - //Logger.Info($"{k} {v}"); - //Logger.Info(JobPriority.Never.ToString()); if(session == null) continue; if(!_iEntitySystemManager.GetEntitySystem().IsAllowed(session, k)) { - //human.JobPriorities[k] = JobPriority.Never; human = human.WithJobPriority(k, JobPriority.Never); } } From 81569f9ee444e796e911935bb66657d069e77622 Mon Sep 17 00:00:00 2001 From: ZoNeSRuS Date: Thu, 28 Mar 2024 20:41:25 +0700 Subject: [PATCH 13/13] fixMerge --- Resources/Prototypes/Species/arachnid.yml | 3 ++- Resources/Prototypes/Species/diona.yml | 2 +- Resources/Prototypes/Species/dwarf.yml | 2 +- Resources/Prototypes/Species/moth.yml | 2 +- Resources/Prototypes/Species/reptilian.yml | 2 +- Resources/Prototypes/Species/slime.yml | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index dc6b27ea26f7..4f8c275744c8 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -20,6 +20,7 @@ ChiefEngineer: [ male ] Quartermaster: [ male ] ChiefMedicalOfficer: [ male ] + ResearchDirector: [ male ] #ЦК IAA: [ ] BlueShield: [ male ] @@ -34,7 +35,7 @@ StationEngineer: [ female ] TechnicalAssistant: [ female ] #Медицинский отдел - Psychologist: [ female ] + Psychologist: [ ] Chemist: [ female ] MedicalDoctor: [ female ] MedicalIntern: [ female ] diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index 4baa6f0f3540..bd837b507726 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -14,7 +14,7 @@ femaleLastNames: DionaLast # Corvax-LastnameGender naming: TheFirstofLast buttScanTexture: /Textures/SS220/Interface/Butts/diona.png - blockedJobs: #SS220-Job-Restrictions-start + blockedJobsByAccessor: #SS220-Job-Restrictions-start #Командование Captain: [ ] HeadOfSecurity: [ ] diff --git a/Resources/Prototypes/Species/dwarf.yml b/Resources/Prototypes/Species/dwarf.yml index b878c68cb620..d3e2b49daf0a 100644 --- a/Resources/Prototypes/Species/dwarf.yml +++ b/Resources/Prototypes/Species/dwarf.yml @@ -7,7 +7,7 @@ markingLimits: MobHumanMarkingLimits dollPrototype: MobDwarfDummy skinColoration: HumanToned - blockedJobs: #SS220-Job-Restrictions-start + blockedJobsByAccessor: #SS220-Job-Restrictions-start #Командование Captain: [ ] HeadOfPersonnel: [ ] diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 2f03d4257311..71eccc3e92ce 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -12,7 +12,7 @@ femaleFirstNames: names_moth_first_female maleLastNames: names_moth_last_male femaleLastNames: names_moth_last_female - blockedJobs: #SS220-Job-Restrictions-start + blockedJobsByAccessor: #SS220-Job-Restrictions-start #Командование Captain: [ ] HeadOfSecurity: [ ] diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 522f48869765..d8522f857d05 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -12,7 +12,7 @@ femaleFirstNames: names_reptilian_female naming: FirstDashFirst buttScanTexture: /Textures/SS220/Interface/Butts/unathi.png - blockedJobs: #SS220-Job-Restrictions-start + blockedJobsByAccessor: #SS220-Job-Restrictions-start #Командование Captain: [ ] #ЦК diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index 727d23bb3e76..d0666828ff4d 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -9,7 +9,7 @@ dollPrototype: MobSlimePersonDummy skinColoration: Hues buttScanTexture: /Textures/SS220/Interface/Butts/slime.png - blockedJobs: #SS220-Job-Restrictions-start + blockedJobsByAccessor: #SS220-Job-Restrictions-start #Командование Captain: [ ] #ЦК