Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bionics can use integrated armor system #59216

Conversation

anoobindisguise
Copy link
Contributor

@anoobindisguise anoobindisguise commented Jul 13, 2022

Summary

Features "Bionic Integrated Armors"

Purpose of change

Mutations got new cool integrated armors, but bionics were still using the same old derpy 100% flat coverage, flat defense system and I wanted to fix that. Further, the system allows for some new bionics which weren't possible beforehand without attached armor pieces. If the Internal Storage CBM shows up in the Nether at some point it could use this new system for its pockets as an example.

Describe the solution

Integrated bionic armor uses the passive_pseudo_item system. If the item type of a pseudo item is an armor with the integrated flag, it will be visible in your inventory and will be equipped to your character.

The bionic armor in the game has been revamped from the previous bionic system to proper complicated new armor. It occupies the skintight and normal layers except for the head, eyes and face which occupy the inner layer only. The armor bionics should be "layerable" utilizing the upgrade system eventually, so you start with the basic armor and then start upgrading with variety OUTER layers to differentiate your cyborg.

This armor specifically is made of Superalloy, representing a magnesium alloy such as AZ80A. At roughly 60-65% the strength of good quality steel but only 25% of the weight according to my research it seemed like the ideal candidate for an armor set that is worn 24/7. Underneath this is a material represented with Plastic, as a sort of flexible polymer used by the Exodii as artificial skin. Lastly there are points with thin reinforcement of qt_steel such as elbow and knee pads, knuckles, toecaps and the forehead.

Rather than be an actual wearable and removable armor, this is a CBM since its integration both allows for minor breathability - it interfaces with your sweat glands to expunge some heat from your body and as such has AVERAGE breathability in many spots and POOR in some others. It will also serve as a barrier against infection when skin-breaching bionics gain the appropriate functionality (likely these will treat injuries as if the limb was wearing filthy clothing and also cannot be accessed if covered by non-integrated armor). Although it is not conventionally removeable, these can be uninstalled again with all the usual risks since they do not replace your epidermis, just envelop it and sink their techy bits into it. Later on you could remove your skin from inside these bionics to make more room with the risk that these being breached potentially means your death.

At present it is unbreakable, though I expect that to change when a more robust system of CBM maintenance in place. There is also currently not any logic to remove a specific bionic when its component integrated armor is destroyed. However when the time comes we could use this system and create a "inside_skin" layer to represent bionics suffering damage occasionally.

Kevin has requested this be changed because its functions are too much sci-fi handwavium. Now it is layers of thin internal plates and latticed carbon reinforcement. Some exterior coverage remains but less than half the body has external plating. Occupies the SKINTIGHT layer only now. Fewer mutations are affected since it does not completely replace your epidermis.

Changes to alloy plating have been undone, they are exactly the same as they were before. Subdermal Carbon Filament and Protective Lenses do have integrated armors to demonstrate the new system.

Describe alternatives you've considered

Now that these bionics explicitly encase the skin as a suit of armor glued to the body these perhaps shouldn't interfere with as many mutations anymore. If you suddenly mutated fur under your bionic armor you would get appropriate, disastrous encumbrance penalties to represent your bionics and body clashing horribly.
The passive_pseudo_item structure being reused for integrated armor is a bit of a hack but it seemed like the most convenient and simple solution to me.

Testing

New character spawns with all the bionic armor pieces on creation. (Razorgirl/Razorboy)
Character who installs bionics gets the integrated armor pieces.
Character who removes the bionics at an autodoc has the armor deleted from inventory.

Additional context

protective lenses
subdermal carbon filament

@github-actions github-actions bot added [C++] Changes (can be) made in C++. Previously named `Code` [JSON] Changes (can be) made in JSON Bionics CBM (Compact Bionic Modules) Items: Armor / Clothing Armor and clothing Mods Issues related to mods or modding Mods: Aftershock Anything to do with the Aftershock mod Monsters Monsters both friendly and unfriendly. <Enhancement / Feature> New features, or enhancements on existing json-styled JSON lint passed, label assigned by github actions labels Jul 13, 2022
@anoobindisguise
Copy link
Contributor Author

I don't like the 50% + 50% + 50% + ... implementation. That makes it really hard for the player to understand how good this armor actually is. In fact, it's so confusing that even the armor UI doesn't understand it - it seems to think that the average protection value for almost all of these is just the Carbon lattice. If you want to simulate varying degrees of protection, better to do it with sublocations and maybe two or three armor layers, like you started out with.

Also fwiw the Epicuticle mutation uses the PERSONAL ("Personal aura") layer to represent armor that replaces the skin. I don't think that's what PERSONAL is supposed to be for, but IMO there probably should be a layer that represents stuff that replaces or goes under the skin for CBMs and mutations to use.

Right, this is due for a change anyways. There's been a bit of ruckus in the dev discord trying to finagle this into something that is workable due to the various issues inherent in synthetic 24/7 armor that is surgically affixed to your body. It's entirely possible this PR will be stripped down to just the infrastructure. And yeah, I've considered using PERSONAL but these had some external armor too that made it just bulky enough to be considered "SKINTIGHT" (1mm or so)

@github-actions github-actions bot removed the BasicBuildPassed This PR builds correctly, label assigned by github actions label Jul 22, 2022
@github-actions github-actions bot removed the json-styled JSON lint passed, label assigned by github actions label Jul 22, 2022
@github-actions github-actions bot added the json-styled JSON lint passed, label assigned by github actions label Jul 22, 2022
@anoobindisguise
Copy link
Contributor Author

anoobindisguise commented Jul 22, 2022

Alloy plating changes are no longer applied whatsoever, they are exactly the same as before, but can be removed now because they are very likely going to be obsoleted and characters should have a chance to get rid of their obsolete bionics when it happens. Protective Lenses and Subdermal Carbon Filament do have custom integrated armors though.

@github-actions github-actions bot added the BasicBuildPassed This PR builds correctly, label assigned by github actions label Jul 22, 2022
@anoobindisguise anoobindisguise marked this pull request as ready for review July 23, 2022 00:36
@bombasticSlacks
Copy link
Contributor

Why the aftershock removals?

Also this now has a conflict

@anoobindisguise
Copy link
Contributor Author

Why the aftershock removals?

Also this now has a conflict

Taking a look at the conflict.
When the alloy plating bionics were made non removable, the Aftershock devs requested that they specifically be removable in aftershock. Since they're no longer non removable there's no reason to maintain that distinction.

@github-actions github-actions bot removed json-styled JSON lint passed, label assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions labels Aug 4, 2022
@github-actions github-actions bot added json-styled JSON lint passed, label assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions labels Aug 4, 2022
@bombasticSlacks bombasticSlacks merged commit 86f7525 into CleverRaven:master Aug 5, 2022
alef pushed a commit to alef/Cataclysm-DDA that referenced this pull request Aug 6, 2022
* Update integrated.json

* alloy plating cbms

* clarify allows_natural_attacks flag

* Update bionics items to reflect new changes

* remove dupes from AFS

* Bionics apply and remove integrated armor

* remove a dupe

* well_distributed to bionic torso armor

* add a couple missed flags to armor

* fix an error

* further fixes

* astyle

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix a description

* buff the cyborgs

* another integrated armor tweak

* coverage

* fix legs armor not including feet

* hopefully final correction

* undo cyborg changes for a later date

* add damage to some integrated parts

* add some comments to JSON entries

* JSON comments

* density fixes

* Alter the implementation to layered thin plates

* rework into layers of dermal plates, adjust conflicts

* clarify descriptions

* fixes

* lint

* lint

* lint

* coverage

* hopefully fix coverage failures

* syntax

* syntax

* coverage tests attempt CleverRaven#3

* syntax

* astyle

* typo

* add minimum 100% coverage layer

* carbon lattice

* adjust density and description

* convert flesh to nanotubes

* lower thickness

* remove BASHING from feet

* final coverage adjust

* subdermal carbon filament

* carbon filament

* revert alloy changes

* revert alloy plating changes

* remove alloy integrated armors

* clarify removeability

* filament allows natural attacks

* "//:" -> "//":

* commas

* fixes

* Update integrated.json

* Update integrated.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@anoobindisguise anoobindisguise deleted the anoobindisguise-bionicintegratedarmor branch October 14, 2022 19:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions Bionics CBM (Compact Bionic Modules) [C++] Changes (can be) made in C++. Previously named `Code` <Enhancement / Feature> New features, or enhancements on existing Items: Armor / Clothing Armor and clothing [JSON] Changes (can be) made in JSON json-styled JSON lint passed, label assigned by github actions Mods: Aftershock Anything to do with the Aftershock mod Mods Issues related to mods or modding Monsters Monsters both friendly and unfriendly.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants