From e8b50897a17806dd5df697655e3807f6845262ad Mon Sep 17 00:00:00 2001 From: ShatteredSwords <135023515+ShatteredSwords@users.noreply.github.com> Date: Fri, 6 Sep 2024 16:08:38 -0400 Subject: [PATCH 01/21] Ports Trait Rebalance From Floof (#842) # Description This PR ports my trait balance changes from Floof. You can find the PR for that repo at https://github.com/Fansana/floofstation1/pull/170. --- # Changelog :cl: - tweak: The cost of many traits have been updated - tweak: A few traits have been tweaked --------- Signed-off-by: ShatteredSwords <135023515+ShatteredSwords@users.noreply.github.com> Co-authored-by: Fansana <116083121+Fansana@users.noreply.github.com> Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- Resources/Prototypes/Traits/disabilities.yml | 10 +++++----- Resources/Prototypes/Traits/physical.yml | 16 ++++++++-------- Resources/Prototypes/Traits/skills.yml | 12 ++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Resources/Prototypes/Traits/disabilities.yml b/Resources/Prototypes/Traits/disabilities.yml index 5f729f7a570..c0b942ea665 100644 --- a/Resources/Prototypes/Traits/disabilities.yml +++ b/Resources/Prototypes/Traits/disabilities.yml @@ -1,7 +1,7 @@ - type: trait id: Blindness category: Visual - points: 4 + points: 6 requirements: - !type:CharacterJobRequirement inverted: true @@ -52,7 +52,7 @@ - type: trait id: Muted category: Speech - points: 2 + points: 4 requirements: - !type:CharacterJobRequirement inverted: true @@ -110,7 +110,7 @@ - type: trait id: Sluggish category: Physical - points: 2 + points: 3 requirements: - !type:CharacterTraitRequirement inverted: true @@ -133,7 +133,7 @@ - type: trait id: SnailPaced category: Physical - points: 4 + points: 5 requirements: - !type:CharacterTraitRequirement inverted: true @@ -156,7 +156,7 @@ - type: trait id: BloodDeficiency category: Physical - points: 4 + points: 5 requirements: - !type:CharacterJobRequirement inverted: true diff --git a/Resources/Prototypes/Traits/physical.yml b/Resources/Prototypes/Traits/physical.yml index fa0033588b1..cfc15d4ee25 100644 --- a/Resources/Prototypes/Traits/physical.yml +++ b/Resources/Prototypes/Traits/physical.yml @@ -1,7 +1,7 @@ - type: trait id: WillToLive category: Physical - points: -4 + points: -1 requirements: - !type:CharacterJobRequirement inverted: true @@ -45,7 +45,7 @@ - type: trait id: Tenacity category: Physical - points: -4 + points: -3 requirements: - !type:CharacterJobRequirement inverted: true @@ -112,7 +112,7 @@ - type: trait id: Lethargy category: Physical - points: 2 + points: 4 requirements: - !type:CharacterJobRequirement inverted: true @@ -134,7 +134,7 @@ - type: trait id: HighAdrenaline category: Physical - points: -6 + points: -5 requirements: - !type:CharacterJobRequirement inverted: true @@ -157,7 +157,7 @@ - type: trait id: AdrenalDysfunction category: Physical - points: 2 + points: 3 requirements: - !type:CharacterJobRequirement inverted: true @@ -179,7 +179,7 @@ - type: trait id: Masochism category: Physical - points: -6 + points: -5 requirements: - !type:CharacterJobRequirement inverted: true @@ -198,7 +198,7 @@ - type: trait id: LowPainTolerance category: Physical - points: 2 + points: 3 requirements: - !type:CharacterJobRequirement inverted: true @@ -216,7 +216,7 @@ - type: trait id: MartialArtist category: Physical - points: -4 + points: -3 requirements: - !type:CharacterJobRequirement inverted: true diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml index 8c49d95752b..d0b6968f18d 100644 --- a/Resources/Prototypes/Traits/skills.yml +++ b/Resources/Prototypes/Traits/skills.yml @@ -36,7 +36,7 @@ - type: trait id: HeavyweightDrunk category: Physical - points: -2 + points: -1 requirements: - !type:CharacterJobRequirement inverted: true @@ -127,7 +127,7 @@ - type: trait id: ParkourTraining category: Physical - points: -6 + points: -5 requirements: - !type:CharacterTraitRequirement inverted: true @@ -140,10 +140,10 @@ - Diona components: - type: ClimbDelayModifier - climbDelayMultiplier: 0.70 + climbDelayMultiplier: 0.35 - type: LayingDownModifier - layingDownCooldownMultiplier: 0.8 - downedSpeedMultiplierMultiplier: 1.25 + layingDownCooldownMultiplier: 0.5 + downedSpeedMultiplierMultiplier: 1.65 - type: trait id: LightStep @@ -200,7 +200,7 @@ - type: trait id: PsionicInsulation category: Mental - points: -14 #Buy a significant disability to get this. + points: -10 #Buy a significant disability to get this. components: - type: PsionicInsulation - type: Mindbroken From 835c890bde337cbf7a7c2756360905c85a85dfef Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Fri, 6 Sep 2024 20:09:14 +0000 Subject: [PATCH 02/21] Automatic Changelog Update (#842) --- Resources/Changelog/Changelog.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2865f548ee7..da48c989077 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5889,3 +5889,12 @@ Entries: id: 6317 time: '2024-09-05T00:19:49.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/848 +- author: ShatteredSwords + changes: + - type: Tweak + message: The cost of many traits have been updated + - type: Tweak + message: A few traits have been tweaked + id: 6318 + time: '2024-09-06T20:08:38.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/842 From 0f048687e87e0b561e5737625febadddbd582eb2 Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Fri, 6 Sep 2024 23:17:30 +0300 Subject: [PATCH 03/21] Roboticist (#801) # Description By a (somewhat) popular request from floofstation, this adds the roboticist job (each existing map gets 1 job slot, since robotics on each of them is just one tiny room that's more similar to a broom closet than a subdepartament). The job is purely cosmetical and does not offer any new accesses since that would require changing a lot of maps and would probably make being a scientist in the absense of a roboticist miserable. If needed, roboticists can always build blast doors on the entrance to robotics, as someone has done before in my experience. This also adds the robotics PDA, robotics ID card, robotics satchel, backpack, and duffel (duffel icon taken from paradise station, rest of the sprites is respective science bags recolored by me to match the palette of the icon). This also increases the capacity of mystagogue's science PDA box to incorporate the new PDA type.

Media

![image](https://github.com/user-attachments/assets/cb086058-8257-4281-82ad-0f59873a1308) ![image](https://github.com/user-attachments/assets/f9e9e1dd-567c-4d47-a778-5704b3a72265) ![image](https://github.com/user-attachments/assets/60bd6769-026e-4fdc-b5f3-825f99dd92a7) ![image](https://github.com/user-attachments/assets/54a27d9c-b91d-4115-b2d6-258a320d8093) ![image](https://github.com/user-attachments/assets/7168edd5-465a-49a7-99e6-5b1592beb3eb)

--- # Changelog :cl: - add: A new Roboticist job has been added. The job does not offer any new accesses, but lets you distinguish yourself from scientists. Existing maps will need to be updated to support the new job. - add: Added new PDA, ID, and bag variants for roboticists. The mystagogue will now also find a roboticist PDA in their office. --------- Signed-off-by: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> --- .../Locale/en-US/job/job-description.ftl | 1 + Resources/Locale/en-US/job/job-names.ftl | 2 ++ .../Fills/Backpacks/StarterGear/backpack.yml | 5 ++++ .../Fills/Backpacks/StarterGear/duffelbag.yml | 5 ++++ .../Fills/Backpacks/StarterGear/satchel.yml | 5 ++++ .../VendingMachines/Inventories/robodrobe.yml | 3 ++ .../DeltaV/Catalog/Fills/Boxes/pda.yml | 7 +++++ .../Entities/Clothing/Back/backpacks.yml | 9 ++++++ .../Entities/Clothing/Back/duffel.yml | 9 ++++++ .../Entities/Clothing/Back/satchel.yml | 9 ++++++ .../Entities/Markers/Spawners/jobs.yml | 12 ++++++++ .../Entities/Objects/Devices/pda.yml | 15 ++++++++++ .../Objects/Misc/identification_cards.yml | 16 ++++++++++ .../Roles/Jobs/Science/roboticist.yml | 28 ++++++++++++++++++ .../Prototypes/Roles/Jobs/departments.yml | 1 + .../Prototypes/Roles/play_time_trackers.yml | 3 ++ .../robotics.rsi/equipped-BACKPACK.png | Bin 0 -> 335 bytes .../Back/Backpacks/robotics.rsi/icon.png | Bin 0 -> 285 bytes .../Backpacks/robotics.rsi/inhand-left.png | Bin 0 -> 309 bytes .../Backpacks/robotics.rsi/inhand-right.png | Bin 0 -> 315 bytes .../Back/Backpacks/robotics.rsi/meta.json | 26 ++++++++++++++++ .../robotics.rsi/equipped-BACKPACK.png | Bin 0 -> 1538 bytes .../Back/Duffels/robotics.rsi/icon.png | Bin 0 -> 487 bytes .../Back/Duffels/robotics.rsi/inhand-left.png | Bin 0 -> 1443 bytes .../Duffels/robotics.rsi/inhand-right.png | Bin 0 -> 1324 bytes .../Back/Duffels/robotics.rsi/meta.json | 26 ++++++++++++++++ .../robotics.rsi/equipped-BACKPACK.png | Bin 0 -> 687 bytes .../Back/Satchels/robotics.rsi/icon.png | Bin 0 -> 742 bytes .../Satchels/robotics.rsi/inhand-left.png | Bin 0 -> 631 bytes .../Satchels/robotics.rsi/inhand-right.png | Bin 0 -> 607 bytes .../Back/Satchels/robotics.rsi/meta.json | 26 ++++++++++++++++ .../Objects/Devices/pda.rsi/meta.json | 2 +- .../{pda-roboticist.png => pda-robotics.png} | Bin 33 files changed, 209 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/Roles/Jobs/Science/roboticist.yml create mode 100644 Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Back/Duffels/robotics.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/robotics.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/robotics.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/robotics.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Duffels/robotics.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Back/Satchels/robotics.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/robotics.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/robotics.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/robotics.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Back/Satchels/robotics.rsi/meta.json rename Resources/Textures/Objects/Devices/pda.rsi/{pda-roboticist.png => pda-robotics.png} (100%) diff --git a/Resources/Locale/en-US/job/job-description.ftl b/Resources/Locale/en-US/job/job-description.ftl index 94ff7c98bd5..801e402eae1 100644 --- a/Resources/Locale/en-US/job/job-description.ftl +++ b/Resources/Locale/en-US/job/job-description.ftl @@ -39,6 +39,7 @@ job-description-qm = Manage the supplies of the station & the logistics departme job-description-rd = Manage the epistemics department, unlocking technologies, acquiring & researching artifacts, and performing experiments. job-description-research-assistant = Learn the basics of how to research various artifacts, anomalies and robotics. job-description-reporter = Entertain & inform the crew with your vibrant journalism through wireless cameras, the radio and the news. +job-description-roboticist = Build a makeshift workshop in epistemics closet and create your own cyborg army. job-description-salvagespec = Use the salvage magnet to draw in detatched scraps & asteroids to loot and enrich the station, build a salvage ship and then travel to new planets, while fighting off any space fauna along the way. job-description-scientist = Research alien artifacts, unlock new technologies, build newer and better machines around the station, and make everything run more efficiently. job-description-security = Catch criminals and enemies of the station, enforce the law, and ensure that the station does not fall into disarray. diff --git a/Resources/Locale/en-US/job/job-names.ftl b/Resources/Locale/en-US/job/job-names.ftl index 39955d7f977..534620f0f20 100644 --- a/Resources/Locale/en-US/job/job-names.ftl +++ b/Resources/Locale/en-US/job/job-names.ftl @@ -8,6 +8,7 @@ job-name-borg = Cyborg job-name-scientist = Scientist job-name-research-assistant = Research Assistant job-name-rd = Mystagogue +job-name-roboticist = Roboticist job-name-psychologist = Psychologist job-name-intern = Medical Intern job-name-doctor = Medical Doctor @@ -87,6 +88,7 @@ JobQuartermaster = Logistics Officer JobReporter = Reporter JobResearchAssistant = Research Assistant JobResearchDirector = Mystagogue +JobRoboticist = Roboticist JobSalvageSpecialist = Salvage Specialist JobScientist = Scientist JobSecurityCadet = Security Cadet diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml index 5faab3d7ad2..95f8cf87f29 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml @@ -150,6 +150,11 @@ parent: ClothingBackpackScience id: ClothingBackpackScienceFilled +- type: entity + noSpawn: true + parent: ClothingBackpackRobotics + id: ClothingBackpackRoboticsFilled + - type: entity noSpawn: true parent: ClothingBackpackHydroponics diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml index 0dfcf774584..07cbbeb6caa 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml @@ -147,6 +147,11 @@ parent: ClothingBackpackDuffelScience id: ClothingBackpackDuffelScienceFilled +- type: entity + noSpawn: true + parent: ClothingBackpackDuffelRobotics + id: ClothingBackpackDuffelRoboticsFilled + - type: entity noSpawn: true parent: ClothingBackpackDuffelHydroponics diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml index f74207ca18e..e20e27e55ca 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml @@ -160,6 +160,11 @@ parent: ClothingBackpackSatchelScience id: ClothingBackpackSatchelScienceFilled +- type: entity + noSpawn: true + parent: ClothingBackpackSatchelRobotics + id: ClothingBackpackSatchelRoboticsFilled + - type: entity noSpawn: true parent: ClothingBackpackSatchelHydroponics diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/robodrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/robodrobe.yml index 4aa4ce6972d..a8178b71967 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/robodrobe.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/robodrobe.yml @@ -11,3 +11,6 @@ ClothingHeadsetRobotics: 2 ClothingOuterWinterRobo: 2 ClothingShoesBootsWinterRobo: 2 #Delta V: Add departmental winter boots + ClothingBackpackRobotics: 2 + ClothingBackpackSatchelRobotics: 2 + ClothingBackpackDuffelRobotics: 2 diff --git a/Resources/Prototypes/DeltaV/Catalog/Fills/Boxes/pda.yml b/Resources/Prototypes/DeltaV/Catalog/Fills/Boxes/pda.yml index b8aff63ece5..6ca3338e8d1 100644 --- a/Resources/Prototypes/DeltaV/Catalog/Fills/Boxes/pda.yml +++ b/Resources/Prototypes/DeltaV/Catalog/Fills/Boxes/pda.yml @@ -41,12 +41,19 @@ id: BoxPDAScience description: A box of spare PDA microcomputers for the epistemics department. components: + - type: Item + shape: + - 0,0,4,3 + - type: Storage + grid: + - 0,0,3,2 # Increased storage space for more PDA types - type: StorageFill contents: - id: SciencePDA amount: 2 - id: ForensicMantisPDA - id: ChaplainPDA + - id: RoboticsPDA - type: entity name: engineering PDA box diff --git a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml index 605cb61c434..6cf94fd1ed3 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml @@ -146,6 +146,15 @@ - type: Sprite sprite: Clothing/Back/Backpacks/science.rsi +- type: entity + parent: ClothingBackpack + id: ClothingBackpackRobotics + name: robotics backpack + description: A sturdy backpack to store all the tools and parts. + components: + - type: Sprite + sprite: Clothing/Back/Backpacks/robotics.rsi + - type: entity parent: ClothingBackpack id: ClothingBackpackVirology diff --git a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml index 46d7ae45380..969d9a6fdeb 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml @@ -130,6 +130,15 @@ - type: Sprite sprite: Clothing/Back/Duffels/science.rsi +- type: entity + parent: ClothingBackpackDuffel + id: ClothingBackpackDuffelRobotics + name: robotics duffel bag + description: A large and sturdy duffel bag to fit everything needed to build a cyborg. + components: + - type: Sprite + sprite: Clothing/Back/Duffels/robotics.rsi + - type: entity parent: ClothingBackpackDuffel id: ClothingBackpackDuffelHydroponics diff --git a/Resources/Prototypes/Entities/Clothing/Back/satchel.yml b/Resources/Prototypes/Entities/Clothing/Back/satchel.yml index bf52477340d..0aa6fc5730b 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/satchel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/satchel.yml @@ -105,6 +105,15 @@ - type: Sprite sprite: Clothing/Back/Satchels/science.rsi +- type: entity + parent: ClothingBackpackSatchel + id: ClothingBackpackSatchelRobotics + name: robotics satchel + description: A sturdy satchel to store the various tools and duct tape. + components: + - type: Sprite + sprite: Clothing/Back/Satchels/robotics.rsi + - type: entity parent: ClothingBackpackSatchel id: ClothingBackpackSatchelSecurity diff --git a/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml b/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml index 27852ff1b5b..25514e31621 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml @@ -475,6 +475,18 @@ - sprite: DeltaV/Markers/jobs.rsi # DeltaV - Epistemics new labcoats state: scientist +- type: entity + id: SpawnPointRoboticist + parent: SpawnPointJobBase + name: roboticist + components: + - type: SpawnPoint + job_id: Roboticist + - type: Sprite + layers: + - state: green + - state: roboticist + # Security - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index 3e0947f7e1e..f0d07f9434a 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -668,6 +668,21 @@ - NewsReaderCartridge - GlimmerMonitorCartridge +- type: entity + parent: SciencePDA + name: robotics PDA + id: RoboticsPDA + description: It has its back panel covered in duct tape. + components: + - type: Pda + id: RoboticsIDCard + state: pda-robotics + - type: PdaBorderColor + borderColor: "#d7d7d0" + accentVColor: "#952004" + - type: Icon + state: pda-robotics + - type: entity parent: BasePDA id: HoSPDA diff --git a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml index 7041be7b206..4af517bc528 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml @@ -310,6 +310,22 @@ - type: PresetIdCard job: Scientist +- type: entity + parent: IDCardStandard + id: RoboticsIDCard + name: robotics ID card + components: + - type: Sprite + layers: + - state: default + - state: department + color: "#C96DBF" + - state: subdepartment + color: "#952004" + - state: scientist + - type: PresetIdCard + job: Roboticist + - type: entity parent: IDCardStandard id: ClownIDCard diff --git a/Resources/Prototypes/Roles/Jobs/Science/roboticist.yml b/Resources/Prototypes/Roles/Jobs/Science/roboticist.yml new file mode 100644 index 00000000000..1d2434a4e0c --- /dev/null +++ b/Resources/Prototypes/Roles/Jobs/Science/roboticist.yml @@ -0,0 +1,28 @@ +- type: job + id: Roboticist + name: job-name-roboticist + description: job-description-roboticist + playTimeTracker: JobRoboticist + requirements: + - !type:CharacterDepartmentTimeRequirement + department: Epistemics + min: 14400 # 4 hours - same as scientist + startingGear: RoboticistGear + icon: "JobIconRoboticist" + supervisors: job-supervisors-rd + access: + - Research + - Maintenance + +- type: startingGear + id: RoboticistGear + equipment: + jumpsuit: ClothingUniformJumpsuitRoboticist + back: ClothingBackpackRoboticsFilled + shoes: ClothingShoesColorBlack + outerClothing: ClothingOuterCoatRobo + id: RoboticsPDA + ears: ClothingHeadsetRobotics + innerClothingSkirt: ClothingUniformJumpskirtRoboticist + satchel: ClothingBackpackSatchelRoboticsFilled + duffelbag: ClothingBackpackDuffelRoboticsFilled diff --git a/Resources/Prototypes/Roles/Jobs/departments.yml b/Resources/Prototypes/Roles/Jobs/departments.yml index e6a5354844d..55aeafde6d8 100644 --- a/Resources/Prototypes/Roles/Jobs/departments.yml +++ b/Resources/Prototypes/Roles/Jobs/departments.yml @@ -103,6 +103,7 @@ - Chaplain # DeltaV - Move Chaplain into Epistemics - ForensicMantis # Nyanotrasen - ForensicMantis, see Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml - Librarian + - Roboticist - type: department id: Specific diff --git a/Resources/Prototypes/Roles/play_time_trackers.yml b/Resources/Prototypes/Roles/play_time_trackers.yml index 27043cfbfe4..a0abb1a1070 100644 --- a/Resources/Prototypes/Roles/play_time_trackers.yml +++ b/Resources/Prototypes/Roles/play_time_trackers.yml @@ -121,6 +121,9 @@ - type: playTimeTracker id: JobResearchDirector +- type: playTimeTracker + id: JobRoboticist + - type: playTimeTracker id: JobSalvageSpecialist diff --git a/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/equipped-BACKPACK.png b/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..45e4d346aaa2e1481fc21c32428063df3d751117 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!qyv0HT!D1A3WJ@UU9c#_+_`g8 zQc?~dK77cC!PeHcME^|`P@1zO$S;`TKNOfV&AtK@yyfZQ7!q;#?KDQN!wNjEzWXlT z`G2I__1LmyvAYeAooG&4`D@F8?w=_tJg;!77$Qr*o2>w$Ae_#Cthb zOmPzUF8bbP0l+XkK|2>Za literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/icon.png b/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4b6b00387498180ff0e0eb7cb82aa419e1b139 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyiUB?$t_KbrNJ&ZQR$-VsckVI+ z&TH4M9X@5cK`9OT`QZuc+V8MU&DNg}&amBI~_u=!!S|#?r}GyA%q& z8AZ}m4ekarwEouNeW)k-U4v(e!x zxpNO6KD^6-Atfb+V@K>MpfqPmkY6yve<(0#ntcT*c)-)eF(l&f+iBi>hYdJbKOacA z|Nn^Ut5a;tD?+y>O%dG`|3Up!On9Kk(fQ3Kh0GJ>&*|FFcbyT_YiTRL>OpCpyII49 zQ0rx4H@McVlx?=YZM=*@`{W6>6MNY|e@I+f!q6>s=(A9W%5L@wcAw`R)(X{v4%gOQ zka5U&z7S;E)XK0g6S@;zlP<+yigyRX|Tfwc+QOcSjt w!pwgx;7erSyP_D;#K8XQLFU^4*?niYpI&9ow*LE(6X+KPPgg&ebxsLQ0J?K}M*si- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/inhand-right.png b/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..d043e56cc195af06d022914a688d33d9d739f791 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!qyv0HT>t<7->t%6Yiny~XBRBW zFn8|U!-o%V(Pv0WNm-mFya=d_vn0qbm;tB`49uBkUjYgp^K@|xi8%arS|Imf1)i3@ zGhF`v*N;o_zcndEjGdtRVxB?e23uosgVdSl6|I>)*=JOK-?T!ry62mr?Y4$;hfi7wtZ(8b zto726T~Jl!xa>>p5%ulsLbRrO-EV05CL)v&U*}+H$Y{Jg~QBKPK1lz0{V!-)78&q Iol`;+04c_U1poj5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/meta.json new file mode 100644 index 00000000000..d5706092962 --- /dev/null +++ b/Resources/Textures/Clothing/Back/Backpacks/robotics.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites sprites taken from tgstation at commit https://github.com/tgstation/tgstation/commit/547852588166c8e091b441e4e67169e156bb09c1 and recolored by Mnemotechnician.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/equipped-BACKPACK.png b/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..a365df4ab0982b3d8b8853dae77f7a50e5b76a5b GIT binary patch literal 1538 zcmZuv3s99s6h2%@5m7IOfhHq3f4)W`b&NZpyu`Xo==iw43KPX~H0LYaOiXeTEo7y~1vMWNA{zN1m&Arf93Da;irs;2FHR0fJNr1hbIyL>`OeufZ|+-z z9Y;C>z+h$!S)k59+j8iy_T%fK?gI3Kd10p6>MFaJ>^`KrN!t)YaL$Pc5gB8erU?KJ zKmZ8905lcV=Sc|Q9EboB7z6G9oCF9CoPZFJ0n^k^eZu;}OU?xmMg(!HE+RGGrRlxa1@VIWl4zY9t8-GR`#8P$Cn`Lt~O@-SI-afW|oQ z35Z0`F_k{gU=tXMCCz3Am@xo*(ikiUl~jYwQI5ud B!I2Xq zRD4Ma6r6EVd7u4~QVd=9CK`wUf4QNZ2seUyXV%BgG5RBT0- z#03&(NE$=X#0y%3BHBZ4KrUX0V8kVoV5n+9pkeQHZ9PJgqaemrK@l7>g)k@78Vj@ioMgEU6wvF$mMcb`H6^`or}BR zkjs(_ZyFXD16u4#+_efh>6X4<_&dGHdLWRoP=URxUbYfAplEo0CazUv73E?(;NP8&I9O=TkjD zBR{e_!Fbp6O@p+~&?;+?-YsL0XT|iP?Oj2s*SXQSu+=+Y^P#mJ?O#RJq*2N-`aWvH zYx(=`Pm6TQSTZB#en6ak^{B|Ol(xL^nu_)RL>`$m;oQJv4~PHe_A{aRG4y+Kd2L46 zX#eI7t#3s8C6z{>dOxP(uf3 zZ#zFKZZ@9Ao#*G;Jt|pWRfsv3T7OTU6}|_zU!NRw^+4sN%NxI0nw9yqG;?{>Ph>Wu@8u=H%3gC-Ms{Wq6XXt!}N0 zbUx)1Jmu0^w}eg3pEvW|Xw$G9@7xo$?Rh`l_~4v>OH0vo4!#G&YiDY{9W#dKm^URp zIkm>><;CM}nB9xxJ#~d0mE${H*ZjO;admy?oPpMRmR)&`S-J<|j-M5zW_oQO@?L+t zh?`A;p#v|uy;BG6hYgLFx0nkXW_^6i0Fh1$%8RQEkEdqc2=ix6mgM>T>cy^U(GS~V h@Aw7UnkvN9r5llL-uCSUyWO^qX0zvp6b45m{|lik-0uJY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/icon.png b/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..66f43801ddac59bb1868e728b2eaf8c1b8719b22 GIT binary patch literal 487 zcmVb6Z*!+PiRKZ!O<+2M-l39={S=uoUnkL1&OIiXh_dv*z`|f)ma^V6px^JWgcc1~AjYz+ z!b8(AzkxjTdOeg%CCuk@=6x_26fZEF&6Z=wafG#t#iAI2$t3ykd~=^E!y;WPf_o0w zHAH?0R15-DRk1rf|7pD8Iq)@har^N%FV_|XL4f*ic*P)~lnU$PQ!}nLO%qpRH&4_m zb`4RhinY#m7Og5GyT~*=CrR~!)BD8Wc=7r}L;K_&( dg-Rr8z5&UJrC;p?NOu4L002ovPDHLkV1lmX&6WTF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/inhand-left.png b/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7838e90df42581f957c20e85d783424cc3f736d3 GIT binary patch literal 1443 zcmZuv4NTQl6hC~#fXN`4xZ)X*e@Pi1l7g@Rfq{C#$DRyLlc-oxUkt8?sm^T_y0fV{(k3oPQE5) ztDWtOwg6y9wnfCsGt{`Pt)%@iIlTwK0yNv>BIQ-gZZUfZc@xIPIcJPfN)eF|q9_Un zU;q>V0SJI1vrIm54vYb%fCz+u@_#`bI0Ht3A|L^x$d^pgOyLD%oKl8J2|+~>lyXEy z2$en}Cxl6d5H78xDmdeeGKv%l5``#CFv=-1B$OzqP(hI+VML({3M5=cC`1rtHlOn) zXoRtafJo^)rqpK+R&p^SOMFxDgkYRg#$+Nvlo6D3WQYl? zDaIxX$~aO+kSYX0;Y+jzNpykSfQ&E6Ae0HDoS^Ih1qBzEYn%}(7;;LO>>L4Lab{s5KeiYrMie+z$@6gnjAi6_Dx8 z8g}IlWNd9tD2g8OPU!t7XVZg~lh^crAM&Zqt#JvpcFT1LpEDKs@{>KQNzB;ag-cQO}%1;DZXq9$*{rv|+=C|$j08ge@!*89#&y|+G z*=raqXxP$qCRul`sV%(<_fB1NslY!qPiEqk@wA||sms;fQv(@!Sw|b&6Mwba5MSi_ zxOlg^+w)xJt0DRy>eeq?W@Rx}HLhtrlYja`huzV%%ggzJ4{N5YM?TEDUVvIv5p+P3o-9sh%m=)9xAW zVX-{9rzie9=SQXeh6C@rgl0IEAJo;KEKYiP^(FUT@P(Apo3E_vNiQ{I*1i|HJ+B~o z-I4zC;g14T2_NivG}ajw8&zdH`$=kk*o*@e3fRPO(5 kcOjWrnXJ^i9S-dC84cPI-0+vf*T#_}kueb!;csjI16+i#xc~qF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/inhand-right.png b/Resources/Textures/Clothing/Back/Duffels/robotics.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f418d85e1b09b70f85553b2e15e1ac6f93c5a3 GIT binary patch literal 1324 zcmZuveN2{B6hD9>AmTd|Bbi_8F+Ow*w5Z$)BnVHz8z^D6oS7~XJP@K=#UD6cGCwNk zLBlj8Y2}81`~k;g!;BfS(8)&2jf0GGBgt@;O)9M0ePJ^`dbWG+xzEnIzmIeGWxCU5 z1lWbnQcz0_I{h7s*R4B!rq8cRv}?zvV7Snsi3gcK}J!< z>O-Sex3_yDn0016o;C13q#f=Us-E0Uc7gF_SLdfx~eA!QUhIRvsgC%y)RiSw}}K^cU=mKzWS79h6IRt&IO z3SfaozpF96(*S&a#FW+9Z}towOU!Re3U9AIn(hwyAuVe9l8St)j18&jpW!-IAM*9= z{;pQ{gA00tQoCMzV{q-q&lZISUvD{({BY#ct2Q1AH_h?qI_`Lu|5-fTTT)rFiDxV> zcO?fb84J_0I`jIT$a|s8J%7*lKD$@mta)rxbj?@kpM}89ovZf$>`BZ%9s0;Gox`y^ zYG>x3^o50KbKpW_-9x8Z!Z%*Whyaz=Elqj1JcS9zznnequXS_3E9l+PR}mj@>Gh1i zn=5j%p1=H0^K++VsI9v*;(XefHK)2?jIE4Xy0!8BXKqB*_cR>%d|Sct`l3eq_QSe(F%+jsC0c zcsKaoGFb7JfBA=TBVBiQMR{^BBnDQw)csEM?{iQ1#0TC=+YKb=km*8^)(AW^4<}7#kZ)$zwEt;>a)Xf z87o_wBF^R}H5G>MiTt2r=E*Of^m}z_drsgtId6C0bA={u&I@b5cqTK-J9|uZr!*wL GQuZ$mUAc_e`sOz50!|!?EdrCgFKql8diq%`ep`L`xb|*V zl&ry47K;)JF@SKluCI{q&QjRsksnx%~8u{nD~-3^V+e zU%RQS@UUw0=DcgSqm&YDB(XdCd2}U;HZLp(*Hk zQPHYr$pP=yjGf|7=P>cGF`r2@K2peYy_ElPhDp2Tvs#84S3Ar5wyrtX^P;=g6y1`AJ3Fbub8P=bzx)l>0*s_Q%=P!@MLW2 ziS^LDT2&Fy+Fg>za^`og?Vlok&D3Yr=4`j0ME=wp{Aw`Yo}aFlz64YF3>b;4#!v;PgZNAT6VKmCtW0$| SE6)HE8H1;*pUXO@geCyu;x0P? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/icon.png b/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4fe210ec6c2eb594e6bbbdc56d68d4449975f47 GIT binary patch literal 742 zcmVL1+^}6o$V@DHIPymoOfsl&vgy?+T$gTEx20led*D7QA~9JPICq7a{?3 z^CYYmNsp0$)4Q;^iv*8N$|^lbA(wb)X1bf~w24&okpB{9XXgF?%zN+8z#MbT@sCmZ z8$q|r471~RM`oU>1q4B$gWml77J%<}9u|%P*4mAU7*D@V@|C6~cU>3PbxG5dgGUtr z?tO>=__*Z&u>PilWm!lmky5hOZg6mX7U%wrMf@*=9OuHUxrsP~>Tv&a~#d{LdsHNfJ$9f+A0ngz+NWI~-76I=zKg zFJIr9NhqmzLq1o$x;Ump>-S}oMx^8_0OY?m3XFGD;U`@RpLg=~$!*J?EYc2~*GtMx^` zFy4wKBY8E@-&R&u01!f8+cuwe?(#hPMYUQ5pxtis!nw*ueV-&rbjrHju8#3@)D7cB zxnLq!t(VQO3cOL@$JyD@bB^P%QLk%qA;iR92{amw(jRp}7>1hMwr$-B{eGW*zpp#M zwryR2VHnQ#U!YE}5LW|z^`7Suh9Q+oMYoz|SvbzA14dDl^MFpLqxYy(6rJ991FBGj z5O|(fXf}#CilUqcWZ`)pLI^I!h{nyv- zCF^8BuDVTbSa6W(9wa6a+4*Y^f^!92M0nwQU|d8I)|ZPP7nk}Z+g+W^|7DTRF~@&} Y-@$G^9Q83bI{*Lx07*qoM6N<$g6DNnWdHyG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/inhand-left.png b/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..df00ce112d7c709ea24ec58c4c9a7b4a943d92fd GIT binary patch literal 631 zcmV--0*L*IP)Z&d7101B7!tx-+ zf>UfSWbp#2Bwj)S=Q*l%@*;xXeO5bex7!U?fZ99Y;cA4l^$P8-lyeRb zS0i9LRgHU81(;5!4FDbh%Cda&t}IJD-eoFrd&hpB4&MLyn0oGc-MA-H1dRkj7NHTM z2>rLeKY#uXu)d4eaPgs#%O9z ztSAbv zU^WXP}>2{Ieh#039~?}zMV>+Ey8NBCpvGuul;}^dr#!;ukBeE8aS4 RK#%|c002ovPDHLkV1h?`7?1z} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/inhand-right.png b/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..b1010e3ce9641eeba96ffa87833505d1b415d9fd GIT binary patch literal 607 zcmV-l0-*hgP)IS(ot>SAhK4FCDpV8%R1^ddIUVT$00Hw!L_t(|+U?rC zY8yci2k<#_h01{Z0IF2DFu2@e3WFXXh1wt$OJ2a8AWaH&E>#HbK#=x|Jb*#P6jusT z2(-mLK@Jjd8JHB-2`NUl&N*pU=Krho!S2kCc6G%L5dZ)H00000008VW>BMTS)%Ucf zi@E~_g8_wHgh?k>B04z77Yo45n@N_-rOqFToO85Vt%CklMMRA;JNegUtyK|GX4Z98 zb<&BInN>uBJqrEHSVctBG}SasU(GXqrIIurkEz{m(^bDuw^>HlWl16u^bT;&QMcPY zD9^n|;O1dQ%uFIeWm!^|WmK*g&&+i5FblQ-)#4Ayb8i6_y&*a0HWkhDeCPe5Hw=0Q z9GYkJ(pmcOasS{XNup4n0^5szbDsUnSnGTq;-6vT6THX8M|CF3e*THhVe#jXCjbBd z00000006*wI#tg=b?x1>izX&HcF(}16YKT2`B92cy8u3V2C5kI$ETRyw!4p>0c-8E zSWV6!*B#)aXQ1_EN>}&y)VjN)@zd3}jz**C+F8#h?HH002ovPDHLkV1fdg55@oh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/meta.json new file mode 100644 index 00000000000..d5706092962 --- /dev/null +++ b/Resources/Textures/Clothing/Back/Satchels/robotics.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites sprites taken from tgstation at commit https://github.com/tgstation/tgstation/commit/547852588166c8e091b441e4e67169e156bb09c1 and recolored by Mnemotechnician.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Devices/pda.rsi/meta.json b/Resources/Textures/Objects/Devices/pda.rsi/meta.json index f77f8c0e711..37355b77a1d 100644 --- a/Resources/Textures/Objects/Devices/pda.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/pda.rsi/meta.json @@ -142,7 +142,7 @@ "name": "pda-rd" }, { - "name": "pda-roboticist" + "name": "pda-robotics" }, { "name": "pda-science" diff --git a/Resources/Textures/Objects/Devices/pda.rsi/pda-roboticist.png b/Resources/Textures/Objects/Devices/pda.rsi/pda-robotics.png similarity index 100% rename from Resources/Textures/Objects/Devices/pda.rsi/pda-roboticist.png rename to Resources/Textures/Objects/Devices/pda.rsi/pda-robotics.png From 1d7fe82148998c3623cb9bd707e7a68907ed9af6 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Fri, 6 Sep 2024 20:17:54 +0000 Subject: [PATCH 04/21] Automatic Changelog Update (#801) --- Resources/Changelog/Changelog.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index da48c989077..aeff9324f28 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5898,3 +5898,17 @@ Entries: id: 6318 time: '2024-09-06T20:08:38.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/842 +- author: Mnemotechnician + changes: + - type: Add + message: >- + A new Roboticist job has been added. The job does not offer any new + accesses, but lets you distinguish yourself from scientists. Existing + maps will need to be updated to support the new job. + - type: Add + message: >- + Added new PDA, ID, and bag variants for roboticists. The mystagogue will + now also find a roboticist PDA in their office. + id: 6319 + time: '2024-09-06T20:17:31.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/801 From fa1d3d36cd65f379eba053062718564a486f181c Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Fri, 6 Sep 2024 14:59:51 -0700 Subject: [PATCH 05/21] Loadouts V3 (#736) # Description Resolves #723 Resolves #708 Resolves #691 Resolves #671 Resolves #643 Adding/removing loadouts and categories (and trait stuff) will require disconnecting and reconnecting to the server (or anything that will reload the lobby UI) due to how I've done my caching. --- # TODO - [x] Test entity IDs from loadouts - [x] Better Tab Container - [x] Scroll props - [x] Margin props - [x] Make vertical work - [x] Merge buttons - [x] Subcategories - [x] Allow the same for traits (their tab is completely broken) - [x] Give the Job Picker tab a BoxContainer - [x] Different selected unusable color - [x] Deselect unusable button - Sort menu/Reverse sort direction button - [x] Fix scroll resetting on updating - [x] Cache loadouts - [x] Ensure everything that can affect reqs updates everything that checks reqs - [x] More Requirements - [x] Height - [x] Width - [x] Weight - [x] Gender - [x] Sex - Markings - [x] Logic - [x] And - [x] Or - [x] Xor - [x] Item groups - [x] #643 - Something better than `Exclusive` - Allow picking slots for things to go in (hands and inventories too) - [x] Add a background to the loadout spriteView - [x] Get better style colors --- - [ ] More PRs - [ ] Remove duplicate command loadouts that are outside the command folders/categories - [ ] Categorize job loadouts (By dept?) - [ ] Fix [every loadout](https://discord.com/channels/1218698320155906090/1218698321053356060/1279260210208440361)'s IDs (who reviewed them??) - [ ] Make loadout ID migrations? ---

Media

## New loadouts/traits UI ![image](https://github.com/user-attachments/assets/9a9c3f64-6ba4-40ea-a89e-d5f57efcf7c0) ![image](https://github.com/user-attachments/assets/3b6f0a36-a474-4ca6-a7c8-90c13e3faa0b) ## NeoTabContainer allows changing the tab orientation ### https://youtu.be/krg8TJoQG3I ![image](https://github.com/user-attachments/assets/81491ad9-45bd-41ed-833e-7295a2216a04) ![image](https://github.com/user-attachments/assets/deb72919-7efe-4be9-a661-b12aa7dc6976)

--- # Changelog :cl: - fix: The loadout/trait editors' performance has been improved by 100~1000x - tweak: The character editor's tabs look, feel, and function much better - fix: Unusable loadouts/traits have an orange color when selected - tweak: Loadout previews are now inside the button - add: Added a button to remove any unusable loadouts (or traits) you have selected - add: Loadouts and traits can have subcategories, though only Command loadouts use them at the moment - fix: Fixed empty loadout categories not hiding - fix: Fixed spacing on some loadout requirements' reason text - fix: Fixed traits not updating after saving --- .../Administration/UI/AdminUIHelpers.cs | 2 +- Content.Client/Changelog/ChangelogButton.cs | 4 +- Content.Client/FlavorText/FlavorText.xaml | 2 +- .../Gateway/UI/GatewayWindow.xaml.cs | 2 +- Content.Client/LateJoin/LateJoinGui.cs | 3 +- .../Options/UI/Tabs/KeyRebindTab.xaml.cs | 2 +- .../Preferences/UI/AntagPreferenceSelector.cs | 1 + .../Preferences/UI/CharacterSetupGui.xaml.cs | 2 +- .../Preferences/UI/HumanoidProfileEditor.xaml | 79 +- .../UI/HumanoidProfileEditor.xaml.cs | 805 ++++++++------ .../UI/LoadoutPreferenceSelector.cs | 99 +- .../Preferences/UI/TraitPreferenceSelector.cs | 43 +- .../Salvage/UI/OfferingWindowOption.xaml.cs | 4 +- Content.Client/Stylesheets/StyleBase.cs | 1 + Content.Client/Stylesheets/StyleNano.cs | 48 +- Content.Client/Stylesheets/StyleSpace.cs | 8 +- .../Controls/NeoTabContainer.Props.xaml.cs | 163 +++ .../Controls/NeoTabContainer.xaml | 30 + .../Controls/NeoTabContainer.xaml.cs | 299 ++++++ .../Ghost/Controls/Roles/GhostRolesEui.cs | 20 +- .../Systems/Ghost/Widgets/GhostGui.xaml.cs | 4 +- .../PlayTimeTrackingSystem.cs | 21 +- Content.Server/Traits/TraitSystem.cs | 5 +- .../Prototypes/LoadoutCategoryPrototype.cs | 8 +- .../Loadouts/Prototypes/LoadoutPrototype.cs | 19 +- .../Loadouts/Systems/LoadoutSystem.cs | 10 +- .../Systems/CharacterRequirements.Job.cs | 20 +- .../Systems/CharacterRequirements.Logic.cs | 147 +++ .../Systems/CharacterRequirements.Profile.cs | 224 +++- .../CharacterRequirements.Whitelist.cs | 4 +- .../Systems/CharacterRequirements.cs | 6 +- .../Systems/CharacterRequirementsSystem.cs | 31 +- .../Prototypes/CharacterItemGroupPrototype.cs | 55 + .../Prototypes/TraitCategoryPrototype.cs | 6 + .../Traits/Prototypes/TraitPrototype.cs | 4 +- .../customization/character-requirements.ftl | 152 ++- .../Locale/en-US/loadouts/categories.ftl | 10 + .../ui/humanoid-profile-editor.ftl | 22 +- .../CharacterItemGroups/itemGroups.yml | 67 ++ .../Loadouts/Categories/categories.yml | 95 ++ .../Loadouts/Jobs/Heads/captain.yml | 31 +- .../Loadouts/Jobs/Heads/chiefEngineer.yml | 13 +- .../Jobs/Heads/chiefMedicalOfficer.yml | 17 +- .../Loadouts/Jobs/Heads/command.yml | 2 +- .../Loadouts/Jobs/Heads/headOfPersonnel.yml | 25 +- .../Loadouts/Jobs/Heads/headOfSecurity.yml | 35 +- .../Loadouts/Jobs/Heads/quarterMaster.yml | 17 +- .../Loadouts/Jobs/Heads/researchDirector.yml | 15 +- Resources/Prototypes/Loadouts/Jobs/cargo.yml | 13 +- .../Prototypes/Loadouts/Jobs/engineering.yml | 32 +- .../Prototypes/Loadouts/Jobs/medical.yml | 121 +-- .../Prototypes/Loadouts/Jobs/science.yml | 22 +- .../Prototypes/Loadouts/Jobs/security.yml | 142 +-- .../Prototypes/Loadouts/Jobs/service.yml | 128 +-- Resources/Prototypes/Loadouts/categories.yml | 37 - Resources/Prototypes/Loadouts/shoes.yml | 149 --- Resources/Prototypes/Loadouts/uniform.yml | 989 ++++++++---------- Resources/Prototypes/Traits/categories.yml | 6 + 58 files changed, 2691 insertions(+), 1630 deletions(-) create mode 100644 Content.Client/UserInterface/Controls/NeoTabContainer.Props.xaml.cs create mode 100644 Content.Client/UserInterface/Controls/NeoTabContainer.xaml create mode 100644 Content.Client/UserInterface/Controls/NeoTabContainer.xaml.cs create mode 100644 Content.Shared/Customization/Systems/CharacterRequirements.Logic.cs create mode 100644 Content.Shared/Prototypes/CharacterItemGroupPrototype.cs create mode 100644 Resources/Prototypes/CharacterItemGroups/itemGroups.yml create mode 100644 Resources/Prototypes/Loadouts/Categories/categories.yml delete mode 100644 Resources/Prototypes/Loadouts/categories.yml diff --git a/Content.Client/Administration/UI/AdminUIHelpers.cs b/Content.Client/Administration/UI/AdminUIHelpers.cs index 89ab33e931d..7fa81728910 100644 --- a/Content.Client/Administration/UI/AdminUIHelpers.cs +++ b/Content.Client/Administration/UI/AdminUIHelpers.cs @@ -50,7 +50,7 @@ public static bool TryConfirm(Button button, Dictionary + diff --git a/Content.Client/Gateway/UI/GatewayWindow.xaml.cs b/Content.Client/Gateway/UI/GatewayWindow.xaml.cs index 889dd6e1759..b3e1333a7a9 100644 --- a/Content.Client/Gateway/UI/GatewayWindow.xaml.cs +++ b/Content.Client/Gateway/UI/GatewayWindow.xaml.cs @@ -155,7 +155,7 @@ public void UpdateState(GatewayBoundUserInterfaceState state) if (Pressable()) { - openButton.AddStyleClass(StyleBase.ButtonCaution); + openButton.AddStyleClass(StyleBase.ButtonDanger); } var buttonContainer = new BoxContainer() diff --git a/Content.Client/LateJoin/LateJoinGui.cs b/Content.Client/LateJoin/LateJoinGui.cs index 92e1ee2aaf1..1351aa9e86a 100644 --- a/Content.Client/LateJoin/LateJoinGui.cs +++ b/Content.Client/LateJoin/LateJoinGui.cs @@ -266,9 +266,10 @@ private void RebuildUI() prototype.Requirements ?? new(), prototype, (HumanoidCharacterProfile) (_prefs.Preferences?.SelectedCharacter - ?? HumanoidCharacterProfile.DefaultWithSpecies()), + ?? HumanoidCharacterProfile.DefaultWithSpecies()), _jobRequirements.GetRawPlayTimeTrackers(), _jobRequirements.IsWhitelisted(), + prototype, _entityManager, _prototypeManager, _configManager, diff --git a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs index 13e456985a7..3d8ae50748c 100644 --- a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs @@ -478,7 +478,7 @@ public KeyControl(KeyRebindTab parent, BoundKeyFunction function) BindButton1 = new BindButton(parent, this, StyleBase.ButtonOpenRight); BindButton2 = new BindButton(parent, this, StyleBase.ButtonOpenLeft); - ResetButton = new Button { Text = Loc.GetString("ui-options-bind-reset"), StyleClasses = { StyleBase.ButtonCaution } }; + ResetButton = new Button { Text = Loc.GetString("ui-options-bind-reset"), StyleClasses = { StyleBase.ButtonDanger } }; var hBox = new BoxContainer { diff --git a/Content.Client/Preferences/UI/AntagPreferenceSelector.cs b/Content.Client/Preferences/UI/AntagPreferenceSelector.cs index 4a339d3f659..f4975a6090c 100644 --- a/Content.Client/Preferences/UI/AntagPreferenceSelector.cs +++ b/Content.Client/Preferences/UI/AntagPreferenceSelector.cs @@ -47,6 +47,7 @@ public AntagPreferenceSelector(AntagPrototype proto, JobPrototype highJob) : bas (HumanoidCharacterProfile) (prefs.Preferences?.SelectedCharacter ?? HumanoidCharacterProfile.DefaultWithSpecies()), requirements.GetRawPlayTimeTrackers(), requirements.IsWhitelisted(), + proto, entMan, protoMan, configMan, diff --git a/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs b/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs index 5165db54799..3ac13f96e7a 100644 --- a/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs +++ b/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs @@ -213,7 +213,7 @@ public CharacterPickerButton( Text = Loc.GetString("character-setup-gui-character-picker-button-confirm-delete-button"), Visible = false, }; - confirmDeleteButton.ModulateSelfOverride = StyleNano.ButtonColorCautionDefault; + confirmDeleteButton.ModulateSelfOverride = StyleNano.ButtonColorDangerDefault; confirmDeleteButton.OnPressed += _ => { Parent?.RemoveChild(this); diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml index ebf794954e3..e7fecf81f43 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml @@ -3,6 +3,7 @@ xmlns:prefUi="clr-namespace:Content.Client.Preferences.UI" xmlns:humanoid="clr-namespace:Content.Client.Humanoid" xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls" + xmlns:ui="clr-namespace:Content.Client.UserInterface.Controls" HorizontalExpand="True"> @@ -45,12 +46,12 @@ - - - - - - + + + + + + @@ -108,7 +109,7 @@ - + - + - - - + + + + + - - + + - + - +