diff --git a/Resources/Locale/en-US/preferences/loadout-groups.ftl b/Resources/Locale/en-US/preferences/loadout-groups.ftl index 1c28509b2d..28785e305c 100644 --- a/Resources/Locale/en-US/preferences/loadout-groups.ftl +++ b/Resources/Locale/en-US/preferences/loadout-groups.ftl @@ -1,3 +1,6 @@ +# Errors +loadout-group-species-restriction = This item is not available for your current species. + # Miscellaneous loadout-group-trinkets = Trinkets loadout-group-glasses = Glasses @@ -9,6 +12,8 @@ loadout-group-survival-clown = Clown Survival Box loadout-group-survival-medical = Medical Survival Box loadout-group-survival-security = Security Survival Box loadout-group-survival-syndicate = Github is forcing me to write text that is literally twice-impossible for the player to ever see, send help +loadout-group-breath-tool = Species-dependent breath tools +loadout-group-tank-harness = Species-specific survival equipment # Command loadout-group-captain-head = Captain head diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml index 74b6ec74fb..1fd46e8e76 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml @@ -78,3 +78,15 @@ sprite: Clothing/OuterClothing/Vests/vest.rsi - type: Clothing sprite: Clothing/OuterClothing/Vests/vest.rsi + +#Tank Harness +- type: entity + parent: [ClothingOuterBase, AllowSuitStorageClothingGasTanks] + id: ClothingOuterVestTank + name: tank harness + description: A simple harness that can hold a gas tank. + components: + - type: Sprite + sprite: Clothing/OuterClothing/Vests/tankharness.rsi + - type: Clothing + sprite: Clothing/OuterClothing/Vests/tankharness.rsi diff --git a/Resources/Prototypes/Entities/Clothing/base_clothing.yml b/Resources/Prototypes/Entities/Clothing/base_clothing.yml index 55bc2fd3e6..a96ca2d23c 100644 --- a/Resources/Prototypes/Entities/Clothing/base_clothing.yml +++ b/Resources/Prototypes/Entities/Clothing/base_clothing.yml @@ -25,6 +25,15 @@ components: - type: AllowSuitStorage +- type: entity + abstract: true + id: AllowSuitStorageClothingGasTanks + components: + - type: AllowSuitStorage + whitelist: + tags: + - GasTank + # for clothing that has a single item slot to insert and alt click out. # inheritors add a whitelisted slot named item - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml b/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml index 53423e84a4..b825647ac1 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml @@ -9,6 +9,9 @@ - type: Item size: Normal sprite: Objects/Tanks/generic.rsi + - type: Tag + tags: + - GasTank - type: Clothing quickEquip: false sprite: Objects/Tanks/generic.rsi diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index 5a9f6a0d07..7b2cb5d6ff 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -19,6 +19,13 @@ - Moth - Reptilian +- type: loadoutEffectGroup + id: EffectSpeciesVox + effects: + - !type:SpeciesLoadoutEffect + species: + - Vox + # Basic - type: loadout id: EmergencyOxygen @@ -180,3 +187,68 @@ storage: back: - BoxSurvivalSyndicateNitrogen + +# Pre-equipped species gear + +# Full Tank Equipped +- type: loadout + id: LoadoutSpeciesEVANitrogen + equipment: GearEVANitrogen + effects: + - !type:GroupLoadoutEffect + proto: EffectSpeciesVox + +- type: startingGear + id: GearEVANitrogen + equipment: + suitstorage: NitrogenTankFilled + +# Tank Harness +- type: loadout + id: LoadoutTankHarness + equipment: GearTankHarness + effects: + - !type:GroupLoadoutEffect + proto: EffectSpeciesVox + +- type: startingGear + id: GearTankHarness + equipment: + outerClothing: ClothingOuterVestTank + +# Breaths Tool On Face +- type: loadout + id: LoadoutSpeciesBreathTool + equipment: GearSpeciesBreathTool + effects: + - !type:GroupLoadoutEffect + proto: EffectSpeciesVox + +- type: startingGear + id: GearSpeciesBreathTool + equipment: + mask: ClothingMaskBreath + +- type: loadout + id: LoadoutSpeciesBreathToolMedical + equipment: GearSpeciesBreathToolMedical + effects: + - !type:GroupLoadoutEffect + proto: EffectSpeciesVox + +- type: startingGear + id: GearSpeciesBreathToolMedical + equipment: + mask: ClothingMaskBreathMedical + +- type: loadout + id: LoadoutSpeciesBreathToolSecurity + equipment: GearSpeciesBreathToolSecurity + effects: + - !type:GroupLoadoutEffect + proto: EffectSpeciesVox + +- type: startingGear + id: GearSpeciesBreathToolSecurity + equipment: + mask: ClothingMaskGasSecurity diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index 57d2e5827d..b1d267cc00 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -35,13 +35,23 @@ - GlassesJamjar - GlassesJensen +- type: loadoutGroup + id: GroupTankHarness + name: loadout-group-tank-harness + minLimit: 1 + hidden: true + loadouts: + - LoadoutTankHarness + - type: loadoutGroup id: Survival name: loadout-group-survival-basic + minLimit: 3 hidden: true loadouts: - EmergencyNitrogen - EmergencyOxygen + - LoadoutSpeciesEVANitrogen # Command - type: loadoutGroup @@ -408,10 +418,12 @@ - type: loadoutGroup id: SurvivalClown name: loadout-group-survival-clown + minLimit: 2 hidden: true loadouts: - EmergencyNitrogenClown - EmergencyOxygenClown + - LoadoutSpeciesEVANitrogen - type: loadoutGroup id: MimeHead @@ -729,10 +741,12 @@ - type: loadoutGroup id: SurvivalExtended name: loadout-group-survival-extended + minLimit: 2 hidden: true loadouts: - EmergencyNitrogenExtended - EmergencyOxygenExtended + - LoadoutSpeciesEVANitrogen # Science - type: loadoutGroup @@ -1007,10 +1021,12 @@ - type: loadoutGroup id: SurvivalSecurity name: loadout-group-survival-security + minLimit: 2 hidden: true loadouts: - EmergencyNitrogenSecurity - EmergencyOxygenSecurity + - LoadoutSpeciesEVANitrogen # Medical - type: loadoutGroup @@ -1187,10 +1203,12 @@ - type: loadoutGroup id: SurvivalMedical name: loadout-group-survival-medical + minLimit: 2 hidden: true loadouts: - EmergencyNitrogenMedical - EmergencyOxygenMedical + - LoadoutSpeciesEVANitrogen # Wildcards - type: loadoutGroup @@ -1220,7 +1238,36 @@ - type: loadoutGroup id: SurvivalSyndicate name: loadout-group-survival-syndicate + minLimit: 2 hidden: true loadouts: - EmergencyNitrogenSyndicate - EmergencyOxygenSyndicate + - LoadoutSpeciesEVANitrogen + +- type: loadoutGroup + id: GroupSpeciesBreathTool + name: loadout-group-breath-tool + minLimit: 1 + maxLimit: 1 + hidden: true + loadouts: + - LoadoutSpeciesBreathTool + +- type: loadoutGroup + id: GroupSpeciesBreathToolMedical + name: loadout-group-breath-tool + minLimit: 1 + maxLimit: 1 + hidden: true + loadouts: + - LoadoutSpeciesBreathToolMedical + +- type: loadoutGroup + id: GroupSpeciesBreathToolSecurity + name: loadout-group-breath-tool + minLimit: 1 + maxLimit: 1 + hidden: true + loadouts: + - LoadoutSpeciesBreathToolSecurity diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/role_loadouts.yml index 4f27c6949b..bb30cc182a 100644 --- a/Resources/Prototypes/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/role_loadouts.yml @@ -9,11 +9,12 @@ - CaptainOuterClothing - Survival - Trinkets - + - GroupSpeciesBreathTool - type: roleLoadout id: JobHeadOfPersonnel groups: + - GroupTankHarness - HoPHead - HoPNeck - HoPJumpsuit @@ -22,11 +23,13 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool # Civilian - type: roleLoadout id: JobPassenger groups: + - GroupTankHarness - PassengerJumpsuit - CommonBackpack - PassengerFace @@ -36,10 +39,12 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobBartender groups: + - GroupTankHarness - BartenderHead - BartenderJumpsuit - CommonBackpack @@ -47,19 +52,23 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobServiceWorker groups: + - GroupTankHarness - BartenderJumpsuit - CommonBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobChef groups: + - GroupTankHarness - ChefHead - ChefMask - ChefJumpsuit @@ -68,29 +77,35 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobLibrarian groups: + - GroupTankHarness - LibrarianJumpsuit - CommonBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobLawyer groups: + - GroupTankHarness - LawyerNeck - LawyerJumpsuit - CommonBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobChaplain groups: + - GroupTankHarness - ChaplainHead - ChaplainMask - ChaplainNeck @@ -100,10 +115,12 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobJanitor groups: + - GroupTankHarness - JanitorHead - JanitorJumpsuit - JanitorGloves @@ -113,10 +130,12 @@ - Survival - Trinkets - JanitorPlunger + - GroupSpeciesBreathTool - type: roleLoadout id: JobBotanist groups: + - GroupTankHarness - BotanistHead - BotanistJumpsuit - BotanistBackpack @@ -124,10 +143,12 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobClown groups: + - GroupTankHarness - ClownHead - ClownJumpsuit - ClownBackpack @@ -140,6 +161,7 @@ - type: roleLoadout id: JobMime groups: + - GroupTankHarness - MimeHead - MimeMask - MimeJumpsuit @@ -152,6 +174,7 @@ - type: roleLoadout id: JobMusician groups: + - GroupTankHarness - MusicianJumpsuit - CommonBackpack - MusicianOuterClothing @@ -159,11 +182,13 @@ - Survival - Trinkets - Instruments + - GroupSpeciesBreathTool # Cargo - type: roleLoadout id: JobQuartermaster groups: + - GroupTankHarness - QuartermasterHead - QuartermasterNeck - QuartermasterJumpsuit @@ -173,10 +198,12 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobCargoTechnician groups: + - GroupTankHarness - CargoTechnicianHead - CargoTechnicianJumpsuit - CargoTechnicianBackpack @@ -185,21 +212,25 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobSalvageSpecialist groups: + - GroupTankHarness - SalvageSpecialistBackpack - SalvageSpecialistOuterClothing - SalvageSpecialistShoes - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool # Engineering - type: roleLoadout id: JobChiefEngineer groups: + - GroupTankHarness - ChiefEngineerHead - ChiefEngineerJumpsuit - StationEngineerBackpack @@ -208,18 +239,22 @@ - ChiefEngineerShoes - SurvivalExtended - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobTechnicalAssistant groups: + - GroupTankHarness - TechnicalAssistantJumpsuit - StationEngineerBackpack - SurvivalExtended - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobStationEngineer groups: + - GroupTankHarness - StationEngineerHead - StationEngineerJumpsuit - StationEngineerBackpack @@ -228,21 +263,25 @@ - StationEngineerID - SurvivalExtended - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobAtmosphericTechnician groups: + - GroupTankHarness - AtmosphericTechnicianJumpsuit - AtmosphericTechnicianBackpack - AtmosphericTechnicianOuterClothing - AtmosphericTechnicianShoes - SurvivalExtended - Trinkets + - GroupSpeciesBreathTool # Science - type: roleLoadout id: JobResearchDirector groups: + - GroupTankHarness - ResearchDirectorHead - ResearchDirectorNeck - ResearchDirectorJumpsuit @@ -253,10 +292,12 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobScientist groups: + - GroupTankHarness - ScientistHead - ScientistNeck - ScientistJumpsuit @@ -268,15 +309,18 @@ - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobResearchAssistant groups: + - GroupTankHarness - ResearchAssistantJumpsuit - ScientistBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool # Security - type: roleLoadout @@ -291,6 +335,7 @@ - SecurityShoes - SurvivalSecurity - Trinkets + - GroupSpeciesBreathToolSecurity - type: roleLoadout id: JobWarden @@ -303,6 +348,7 @@ - SecurityShoes - SurvivalSecurity - Trinkets + - GroupSpeciesBreathToolSecurity - type: roleLoadout id: JobSecurityOfficer @@ -316,10 +362,12 @@ - SecurityBelt - SurvivalSecurity - Trinkets + - GroupSpeciesBreathToolSecurity - type: roleLoadout id: JobDetective groups: + - GroupTankHarness - DetectiveHead - DetectiveNeck - DetectiveJumpsuit @@ -328,6 +376,7 @@ - SecurityShoes - SurvivalSecurity - Trinkets + - GroupSpeciesBreathToolSecurity - type: roleLoadout id: JobSecurityCadet @@ -336,11 +385,13 @@ - SecurityBackpack - SurvivalSecurity - Trinkets + - GroupSpeciesBreathToolSecurity # Medical - type: roleLoadout id: JobChiefMedicalOfficer groups: + - GroupTankHarness - ChiefMedicalOfficerHead - MedicalMask - ChiefMedicalOfficerJumpsuit @@ -352,10 +403,12 @@ - Glasses - SurvivalMedical - Trinkets + - GroupSpeciesBreathToolMedical - type: roleLoadout id: JobMedicalDoctor groups: + - GroupTankHarness - MedicalDoctorHead - MedicalMask - MedicalDoctorJumpsuit @@ -367,19 +420,23 @@ - Glasses - SurvivalMedical - Trinkets + - GroupSpeciesBreathToolMedical - type: roleLoadout id: JobMedicalIntern groups: + - GroupTankHarness - MedicalInternJumpsuit - MedicalBackpack - Glasses - SurvivalMedical - Trinkets + - GroupSpeciesBreathToolMedical - type: roleLoadout id: JobChemist groups: + - GroupTankHarness - MedicalMask - ChemistJumpsuit - MedicalGloves @@ -388,10 +445,12 @@ - MedicalShoes - SurvivalMedical - Trinkets + - GroupSpeciesBreathToolMedical - type: roleLoadout id: JobParamedic groups: + - GroupTankHarness - ParamedicHead - MedicalMask - ParamedicJumpsuit @@ -402,71 +461,92 @@ - Glasses - SurvivalMedical - Trinkets + - GroupSpeciesBreathToolMedical # Wildcards - type: roleLoadout id: JobZookeeper groups: + - GroupTankHarness - CommonBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobReporter groups: + - GroupTankHarness - ReporterJumpsuit - CommonBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobPsychologist groups: + - GroupTankHarness - MedicalBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool - type: roleLoadout id: JobBoxer groups: + - GroupTankHarness - BoxerJumpsuit - BoxerGloves - CommonBackpack - Glasses - Survival - Trinkets + - GroupSpeciesBreathTool -# These loadouts will be used without player configuration, thus they must be designed to work without manual selection +# These loadouts are used for non-crew spawns, like off-station antags and event mobs +# They will be used without player configuration, thus they will only ever apply what is forced by MinLimit - type: roleLoadout - id: LoadoutSurvivalStandard + id: RoleSurvivalStandard groups: - Survival + - GroupSpeciesBreathTool + - GroupTankHarness - type: roleLoadout - id: LoadoutSurvivalClown + id: RoleSurvivalClown groups: - SurvivalClown + - GroupTankHarness - type: roleLoadout - id: LoadoutSurvivalExtended + id: RoleSurvivalExtended groups: - SurvivalExtended + - GroupSpeciesBreathTool + - GroupTankHarness - type: roleLoadout - id: LoadoutSurvivalMedical + id: RoleSurvivalMedical groups: - SurvivalMedical + - GroupSpeciesBreathToolMedical + - GroupTankHarness - type: roleLoadout - id: LoadoutSurvivalSecurity + id: RoleSurvivalSecurity groups: - SurvivalSecurity + - GroupSpeciesBreathToolSecurity + - GroupTankHarness - type: roleLoadout - id: LoadoutSurvivalSyndicate + id: RoleSurvivalSyndicate groups: - SurvivalSyndicate + - GroupSpeciesBreathTool + - GroupTankHarness diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index ca593e8631..bc12ea0af2 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -623,6 +623,9 @@ - type: Tag id: GasScrubber +- type: Tag + id: GasTank + - type: Tag id: GasVent diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/equipped-OUTERCLOTHING-vox.png new file mode 100644 index 0000000000..712a04c614 Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..51708c386a Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/icon.png new file mode 100644 index 0000000000..7e7ff0f64e Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/inhand-left.png b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/inhand-left.png new file mode 100644 index 0000000000..e31fe4b59b Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/inhand-right.png b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/inhand-right.png new file mode 100644 index 0000000000..56e13c98e6 Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/meta.json new file mode 100644 index 0000000000..80cd5e0bd8 --- /dev/null +++ b/Resources/Textures/Clothing/OuterClothing/Vests/tankharness.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Modified from tgstation vest sprite at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e by Errant for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +}