Skip to content

Adds PKA & Jetpack Module for Salvage Cyborgs#550

Merged
VMSolidus merged 8 commits intoSimple-Station:masterfrom
gluesniffler:borg-jetpack
Aug 6, 2024
Merged

Adds PKA & Jetpack Module for Salvage Cyborgs#550
VMSolidus merged 8 commits intoSimple-Station:masterfrom
gluesniffler:borg-jetpack

Conversation

@gluesniffler
Copy link
Copy Markdown
Contributor

@gluesniffler gluesniffler commented Jul 15, 2024

Description

Gives salvage borgs a special jetpack module with half of the capacity of a normal mini-jetpack. Granting them about 2 minutes of thrust, which allows them to be more useful in space, partake in some rescue missions and to some extent be independent for a limited amount of time if something happens to the salvagers.

It also adds a PKA module, which gives them a PKA which can't be wielded, leading to a hilarious accuracy penalty.


Media

Demo of the Modules
Crafting demo, basic usage

Stormtrooper aim vs dragon AI
Soloing space dragon AI, ft. stormtrooper aim

Refillable jetpack module demo
Refilling jetpack


Changelog

🆑

  • add: Added an unlockable PKA and Jetpack module to Salvage Cyborgs

@github-actions github-actions bot added Changes: Localization Changes any ftl files Changes: Sprite Changes any png or json in an RSI Changes: YML Changes any yml files labels Jul 15, 2024
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jul 15, 2024

RSI Diff Bot; head commit 6ce6a39 merging into a31015d
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi

State Old New Status
icon-jetpack Added
icon-pka Added

Edit: diff updated after 6ce6a39

Copy link
Copy Markdown
Contributor

@DangerRevolution DangerRevolution left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How do you refill the jetpack?

@gluesniffler
Copy link
Copy Markdown
Contributor Author

gluesniffler commented Jul 15, 2024

How do you refill the jetpack?

image

Special, non-refillable jetpack module.

Reasoning for this is mostly balancing, refilling the module would require help from someone with hands anyway, and since jetpacks inherit from tanks, they don't seem to have any gas whitelisting, so I cannot prevent players from just stuffing it with liquid oxygen to make 'em last a ridiculous amount of time.

The point is to just give salv borgs a lil' bit more independence and not make them bricks you have to drag around at all times (the current state), thus you might as well just send the borgs off to Epi periodically if they want refills. Happy to adjust values for crafting cost/thrust duration with this in mind.

@VMSolidus
Copy link
Copy Markdown
Member

How do you refill the jetpack?

image

Special, non-refillable jetpack module.

Reasoning for this is mostly balancing, refilling the module would require help from someone with hands anyway, and since jetpacks inherit from tanks, they don't seem to have any gas whitelisting, so I cannot prevent players from just stuffing it with liquid oxygen to make 'em last a ridiculous amount of time.

The point is to just give salv borgs a lil' bit more independence and not make them bricks you have to drag around at all times (the current state), thus you might as well just send the borgs off to Epi periodically if they want refills. Happy to adjust values for crafting cost/thrust duration with this in mind.

Reasoning behind this is somewhat faulty. There's no such thing as Liquid Oxygen, it's just an oxygen canister that contains double the volume of oxygen, but cannot itself be refilled to that volume, and cannot overpressure people's air tanks. It really should just be renamed to "Double-capacity Oxygen Canister".

@gluesniffler
Copy link
Copy Markdown
Contributor Author

gluesniffler commented Jul 16, 2024

Reasoning behind this is somewhat faulty. There's no such thing as Liquid Oxygen, it's just an oxygen canister that contains double the volume of oxygen, but cannot itself be refilled to that volume, and cannot overpressure people's air tanks.

Liquid Oxygen Is Different.

For any readers who come in later, Liquid Oxygen is not just double the volume of oxygen, but is also chilled to a very low temperature, which leads to being able to fit more mols in a container as per Boyle's Law as seen in the image below, in jetpack calculations, this extends flight duration. In the case of this particular jetpack's capacity, thrust time would go from 2 minutes to about 6:30 minutes.

Gas comparisons

Constraints

If it's not a balance concern, I'm all for letting brogs get their jetpacks refilled, but after doing some digging on the system itself, there's also constraints in how their modules handle items, particularly:

1. The items are only created when in a Borg's possession, so until its inserted into a borg, the jetpack doesn't exist, and they cannot drop their items.
2. Borgs can only use whats inside of the module, so giving the module itself a Jetpack attribute is not good enough.

Options to improve?

1. Just change the thrust duration to either match a Mini Jetpack (4min), or the duration on liquid oxy (6:30min).
2. Hack around the GasCanisterSystem so it accepts this particular module and allows for refill... And if it hasn't been inserted into a borg beforehand, initialize its contents directly (is this shitcode?),

(Edited as of 7/21/24 to reflect the more reasonable options that I could get working) Will update with another commit soon ™️

@github-actions github-actions bot added the Changes: C# Changes any cs files label Jul 29, 2024
@gluesniffler
Copy link
Copy Markdown
Contributor Author

gluesniffler commented Jul 29, 2024

Added a refillable feature to the jetpack module, in summary it checks for the prototypes of items to be created when modules are inserted on cyborgs, and if its got a BorgJetpackComponent it will add the UID of the jetpack to a variable. This is then used on GasCanisterSystem whenever something is inserted, refilled or displayed in the UI to make sure modules are handled correctly.

Couldn't get a way to make it so that the contents would be initialized on item creation, the methods currently require an existing borg chassis to do so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes: C# Changes any cs files Changes: Localization Changes any ftl files Changes: Sprite Changes any png or json in an RSI Changes: YML Changes any yml files Status: Needs Review Someone please review this

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants