Skip to content

Hotfix k4t ninja#1182

Merged
fenndragon merged 75 commits intoHardLightSector:masterfrom
R3v3l4t1on:port-subtype-switchable
Apr 9, 2026
Merged

Hotfix k4t ninja#1182
fenndragon merged 75 commits intoHardLightSector:masterfrom
R3v3l4t1on:port-subtype-switchable

Conversation

@R3v3l4t1on
Copy link
Copy Markdown
Contributor

@R3v3l4t1on R3v3l4t1on commented Apr 9, 2026

About the PR

Removes k4t_ninja from selectable borgs as the sprites are broken

Why / Balance

k4t_ninja's rsi only has 2 directions for sprites, but you need 1/4/8. Because I am unable to fix this, I am commenting it out. Sprites are being left in due to a request of author for the collection to remain complete.

Technical details

Commented prototypes in borg_subtype_chassis and borg_subtypes

How to test

Spawn PlayerBorgBattery
Press 4
Select Generic
Look for K4T_NNJ

Media

Nuh

Breaking changes

N/A

Changelog
🆑 R3v3l4t1on

  • remove: Removed k4t-NNJ as selectable borg due to the sprites being broken.

PJB3005 and others added 30 commits March 30, 2026 19:56
* 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
Just 1 linter fail?  Surely not
@R3v3l4t1on
Copy link
Copy Markdown
Contributor Author

this should not be changing as many files as it is...

@github-actions github-actions Bot added the size/M label Apr 9, 2026
@R3v3l4t1on
Copy link
Copy Markdown
Contributor Author

Okay it turns out those sprites are in fact busted and I lack the technological skill to fix it. So instead, I'll have to remove them. Sorry.

undoing changes so the RSI passes.
commenting out k4t_ninja pending sprite fixes
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2026

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@LIzadous
Copy link
Copy Markdown
Contributor

LIzadous commented Apr 9, 2026

do you want me to have a look at the sprites?

@R3v3l4t1on
Copy link
Copy Markdown
Contributor Author

do you want me to have a look at the sprites?

do you want me to have a look at the sprites?

Free to try but Fur is seemingly also working on it

@fenndragon fenndragon merged commit e391777 into HardLightSector:master Apr 9, 2026
12 of 13 checks passed
B3CKDOOR referenced this pull request in SandwichStation/SandwichStation-HL Apr 16, 2026
* 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 #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.

* Create borg_types.yml

Secborgs soontm

* Update borg_types.yml

Add an actual definition for the security borg.

* Create borg_chassis.yml

WHY IS THIS DIRECTORY NAMED CYBORG AND NOT CYBORGS COME ON

* Update borg_subtype_chassis.yml

Added:
Cargo to mining (for now, to be redone if cargo borg is ported)
Ninja to generic
Peacekeeper to generic
Security subtypes
Syndie subtypes to security (for now)

* Update borg_subtypes.yml

Added the subtypes. k4t_alt_cargo's rsi doesn't have the extension. I cannot fix this currently.

* Create base_borg_subtypes.yml

* Fleshing out the security cyborg.

Deliberately omitting the jetpack here because well it seems that one's being made useless.

* Remove jetpacks from normal borgs.

Livy's update is removing the key functionality that made me want them added. Now that it is gone it is no longer required for them to have one.

* Rename meta.json to meta.json

ayeee you can fix it!

* 5 million renames incoming

* Rename borg-tipped.png to borg-tipped.png

* Rename borg-wreck.png to borg-wreck.png

* Rename borg.png to borg.png

* Rename borg_e.png to borg_e.png

* Rename borg_e_r.png to borg_e_r.png

* Rename borg_l.png to borg_l.png

* Rename credit.png to credit.png

* whoops

wrong comps

* Fixed MOST of the linter fails... just gotta see the silicon laws.

* RobocopLawset != Robocop

God damn it.

* Fix meta

THESE ARE 64X32 NOT 32X32

* Holy shit this meta was fucked up.

Bleeeegh

* Update meta.json

undoing changes so the RSI passes.

* Update borg_subtype_chassis.yml

commenting out k4t_ninja pending sprite fixes

* Update borg_subtypes.yml

commenting out k4t_ninja pending sprite fixes

---------

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants