[BOUNTY] Port subtype switchable + Tallborgs#1083
[BOUNTY] Port subtype switchable + Tallborgs#1083fenndragon merged 48 commits intoHardLightSector:masterfrom
Conversation
* Borg type switching. This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything. New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis. These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI. The modules that each borg type starts with: * Generic: tools * Engineering: advanced tools, construction, RCD, cable * Salvage: Grappling gun, appraisal, mining * Janitor: cleaning, light replacer * Medical: treatment * Service: music, service, clowning Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5. Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire. The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs. Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those. The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future. There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code. * Fix sandbox failure due to collection expression. * Module tweak Fix salvage borg modules still having research/lathe recipes Engie borg has regular tool module, not advanced. * Fix inventory system breakage * Fix migrations Some things were missing * Guidebook rewordings & review * MinWidth on confirm selection button
* Borg type switching. This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything. New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis. These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI. The modules that each borg type starts with: * Generic: tools * Engineering: advanced tools, construction, RCD, cable * Salvage: Grappling gun, appraisal, mining * Janitor: cleaning, light replacer * Medical: treatment * Service: music, service, clowning Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5. Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire. The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs. Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those. The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future. There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code. * Fix sandbox failure due to collection expression. * Module tweak Fix salvage borg modules still having research/lathe recipes Engie borg has regular tool module, not advanced. * Fix inventory system breakage * Fix migrations Some things were missing * Guidebook rewordings & review * MinWidth on confirm selection button
porting AL borg subtypes
…ixes Borg rsi fixes
Swapping default borg chassis
Swapping default borg chassis
…and the system is kinda stupid anyway.
…on/HardLight into port-subtype-switchable
…the OG borg frames.
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
|
Linter passes locally. So it should be good... |
|
Test fails are completely unrelated. |
|
apologies. I didn't mean to skip over this, I wasn't aware it was intended to be ready, it does appear to be a linter fail though Error: /Prototypes/_HL/Entities/Mobs/Silicon/Cyborgs/borg_subtypes.yml(27,19) No EntityPrototype found with id BorgChassisEngineerMekaSF |
Yeah that was a case of me mixing up some names and accidentally using - instead of _. Fix already pushed |
|
I was. A tiny bit blind. But this time. THIS TIME. I've got it. Everything is as it should be. |
|
you can relax now |
* Borg type switching. (#32586) * Borg type switching. This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything. New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis. These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI. The modules that each borg type starts with: * Generic: tools * Engineering: advanced tools, construction, RCD, cable * Salvage: Grappling gun, appraisal, mining * Janitor: cleaning, light replacer * Medical: treatment * Service: music, service, clowning Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5. Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire. The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs. Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those. The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future. There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code. * Fix sandbox failure due to collection expression. * Module tweak Fix salvage borg modules still having research/lathe recipes Engie borg has regular tool module, not advanced. * Fix inventory system breakage * Fix migrations Some things were missing * Guidebook rewordings & review * MinWidth on confirm selection button * Borg type switching. (#32586) * Borg type switching. This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything. New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis. These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI. The modules that each borg type starts with: * Generic: tools * Engineering: advanced tools, construction, RCD, cable * Salvage: Grappling gun, appraisal, mining * Janitor: cleaning, light replacer * Medical: treatment * Service: music, service, clowning Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5. Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire. The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs. Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those. The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future. There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code. * Fix sandbox failure due to collection expression. * Module tweak Fix salvage borg modules still having research/lathe recipes Engie borg has regular tool module, not advanced. * Fix inventory system breakage * Fix migrations Some things were missing * Guidebook rewordings & review * MinWidth on confirm selection button * Guh messed up the ID... * Merge pull request #1804 from Road-Train/borg-subtypes porting AL borg subtypes * commenting as of yet unused tags. * Merge pull request HardLightSector#1383 from ss14Starlight/borg-rsi-fixes Borg rsi fixes * port subtypes * Merge pull request #1961 from R3v3l4t1on/change-default-borg-chassis Swapping default borg chassis * Merge pull request #1961 from R3v3l4t1on/change-default-borg-chassis Swapping default borg chassis * Customization should be free! * Remove pricing logic because I can't be arsed to fix it for 1 sprite and the system is kinda stupid anyway. * BEGONE ENT * Fixing several sprite paths and PROPERLY applying the restoration of the OG borg frames. * Tallborg sprites (Not yet added to the subtypes) * Delete the AL port due to possible licensing issues * Add the CD version of the system instead. My sanity is at ease. * Leftover changes. * Another one! Guuuuh * Gonna kill myself with all these fucking typos * Why the fuck will this just not work... * I am genuinely lost for why this is not working. * Fairly sure I've fucked up SEVERAL rsi's but... I just want this shit to work man... * WHYYYYY JUST WORK GOD DAMN IT * SERVER LAUNCHES, SELECTING A BORG CRASHES IT. BUT BY GOD. IT'S PROGRESS. * VICTORY!!!!! * Duplication moment Just 1 linter fail? Surely not * Fixing RSI's of several borgs so they work properly. * Borgs use labels instead of tooltips since it is more convenient (need to adjust the location though). Also fixed medical standard not using an .rsi (and updated ID's to match the SL convention) * refactor ChassisSpriteSelection.xaml.cs - Remove code duplication by changing CreateDefaultSubtypeButton into CreateSubtypeButton which can create both the default and other buttons. Also hopefully fixed the labels being slapped RIGHT on top of the borg sprites? * Further refactoring: Pass only the subprototype instead of the entire action. * UI works... several of the borgs are a tad broken though time to look into that. * Removed unnecesary subtype mentions from the FTL file, hopefully fixed all the broken dummy protos. * Yeah no I am not redoing all of the quadborgs as well. That's a future me problem. * Fixing ID's. * Fixed engi quadborg accepting arms, reinstated all the borg legs/torso/heads so quadborgs can still be built. To be removed when quadborgs become switchable. * Reinstated the removed modules, but moved them to be craftable at base so quads don't get cucked. * Whoops forgot to re-parent the heads. * Tags moment. * Split the Civilian folder into Jani/Service. Also, prototyped all the Tallborgs. * FUCKASS TYPOS * I swear I can't read BUT THIS TIME I'VE GOT IT. * I swear I have eyes. I just. Can't seem to use them. --------- Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Co-authored-by: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Co-authored-by: Matthew Herber <32679887+Happyrobot33@users.noreply.github.com> Co-authored-by: Rinary <rinary.super@gmail.com>
|
Hi, Sandwich Station maintainer here. I wanted to give you a heads up that we also had a PR for switchable borg types that also considers quad borgs "SandwichStation/SandwichStation-HL#77". |
|
Due to future plans, I’m going to request that you don’t port the above and leave quads excluded from the switchable Borg types. |
What are the future plans if i may ask? Because currently i see no issue, after getting the minor merge conflicts fixed the system above would absolutely work with how i integrated the quads into the system in the Sandwich fork. |
Per a bounty, I’ll be reworking quads to be a playable species, instead of a job role, and I don’t particularly want to have to deal with extra complications when I do so. |
|
That’s cool and all, and bounty being made is fine, but I feel like a borg species just is more trouble than it’s worth… Modules? Laws? Chassis change? They’re not BORGS at that point, just fancy IPCs |
It’s complicated, and my plans are complex. I essentially plan to make modular Borgs. I also planned to do this to normal Borgs, but that ship has sailed now that the selectable system has made things far more complicated. I basically plan to make quads customizable, and all their parts modular for repairs, using similar systems as we have now for playable species. It’s a lot more work than $100 is worth, but I also just think it’d be… cool. They’d still be Borgs, just with more modularity when it comes to appearance. |
|
So you can select any job as a borg with presumably standard laws unless you make a system also to give laws and modules for jobs, that could be problematic also this still leaves the issue of quads being better borgs, if they’re still going to be Borgs. |
It’s a subjective issue that quads are better than normal Borgs. It’s not really my problem. Insert X thing is better than insert Y thing but we still have both. As for modules and laws, I’ll deal with all that. I’m very thorough. |
Ah i see, gladly for you the changes from my PR are on a fork of Hardlight (Not actual HL). So i'm not complicating anything for you hence its only on our Sandwich station Server. We just happend to fork from Hardlight, i was just told that this PR exists and so i just wanted to give you a heads up in case you wanted to intigrate Quad borgs into that system so that you can save time :D |
Oh, I know, I know. I’ll be the first one to admit a lot of the stuff I make wouldn’t really translate to other servers very well. And Quads are currently in the state that they are because a large number of our playerbase wants to play Quadborg and also have the ability to own and operate a shuttle, which isn’t really conveniently possible without a hand and PDA. |
## About the PR <!-- What did you change? --> Merge from this PR HardLightSector/HardLight#1083 (comment) to the current system + Name of the unselected Cyborg entity has changed to "Unselected Cyborg" + medborg starts with more modules ## Why / Balance <!-- Discuss how this would affect game balance or explain why it was changed. Link any relevant discussions or issues. --> skins or so ## Technical details <!-- Summary of code changes for easier review. --> The Sprite Selection code has been modified to have it work out with the different sprites ## How to test <!-- Describe a procedure to test this feature, along with expected output/behavior. --> ## Media <!-- Attach media if the PR makes ingame changes (clothing, items, features, etc). Small fixes/refactors are exempt. Media may be used in SS14 progress reports with credit. --> <img width="903" height="531" alt="Screenshot 2026-04-13 164425" src="https://github.com/user-attachments/assets/8b1e6a0a-9199-4302-b5d2-8dd194ae0eb0" /> <img width="893" height="535" alt="Screenshot 2026-04-13 164451" src="https://github.com/user-attachments/assets/4c108346-53a2-4a5b-a628-433802d0d9ee" /> ## Requirements <!-- Confirm the following by placing an X in the brackets [X]: --> - [X] I have read and am following the [Pull Request and Changelog Guidelines](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html). - [X] I have added media to this PR or it does not require an ingame showcase. - Either: - [X] I have given credit the right people in the right [attributions.yml (example)](https://github.com/SandwichStation/SandwichStation-HL/blob/master/Resources/Audio/_ShibaStation/Lobby/attributions.yml) file - [X] I own the rights to the added content <!-- You should understand that not following the above may get your PR closed at maintainer’s discretion --> ## Breaking changes <!-- List any breaking changes, including namespaces, public class/method/field changes, prototype renames; and provide instructions for fixing them. --> **Changelog** <!-- Add a Changelog entry to make players aware of new features or changes that could affect gameplay. Make sure to read the guidelines and take this Changelog template out of the comment block in order for it to show up. Changelog must have a 🆑 symbol, so the bot recognizes the changes and adds them to the game's changelog. --> <!----> 🆑 @BodenPflanze - add: Cyborg Skins selection - fix: Cyborgs now can target limbs - tweak: Medborg standart modules - tweak: Unselected cyborg entity name
About the PR
Ports the following PR's from Wizden/Cosmatic Drift/Starlight:
space-wizards/space-station-14#32586
cosmatic-drift-14/cosmatic-drift#706
cosmatic-drift-14/cosmatic-drift#790
cosmatic-drift-14/cosmatic-drift#853
ss14Starlight/space-station-14#1807
ss14Starlight/space-station-14#1961
ss14Starlight/space-station-14#2029
Also, adds Tallborgs from Bubberstation to half complete the following bounty: https://discord.com/channels/1380477227912925194/1485048522246979625
Why / Balance
Playing borg right now is ass. As I mentioned in my previous PR (which is getting closed cause uhhh I did not expect to need to port an entire fucking hand refactor), there's a very solid chance you're just not gonna be able to play the game for a while as borg if robotics isn't in the mood. These PR's solve that by letting cyborgs pick a job type at the start. Or rather. That's what the first one does.
The others are purely aesthetic, allowing borgs to pick a custom chassis within their chosen job type. This allows cyborgs to add extra character to themselves. This PR also paves the way for me to complete a bounty in a follow-up PR (because that one is a big chore and I just REALLY want this in right now...)
Technical details
Added in Upstream's borgswitchable system, which lets cyborgs pick a chassis roundstart. As a result, nuked all the extra robot parts. Wizden's PR explains the changes that had to be done to inventory template to accomodate this. Additionally adds in the subtype switchable system from Cosmatic Drift, with Starlight's additions.
How to test
Spawn a PlayerBorgBattery
Take control of it
Press the new 'select chassis' action
Pick a department
Pick a subtype
Confirm
Media
Breaking changes
Nuked all the extra cyborg parts (not the quadborgs... yet), meaning their names have changed.
Changelog
🆑 R3v3l4t1on, PJB3005, lunarcomets, Rinary1, CrazyPhantom779