Gravity Adaptations Bioaug (#21532)

From the list of bioaugments requested by Schwann.
https://docs.google.com/document/d/1SLbll969PyJ_H9J1LP8cmdso9OMozUc8MGOVZkY4HbE/mobilebasic

Gravity Adaptations are a bioaugment that serves as an implanted
alternative to legbraces, which grant the same effect. These are unique
to Galatean Offworlders in the same vein as legbraces being unique to
offworlders. They also essentially have the same effect, making the
offworlder immune to the effects of "Gravity Weakness". To make this
work, I refactored the gravity weakness mechanic to operate via a
signal, which has a shared response between legbraces and gravity
adaptations. This "Cancelable signal" pattern is going to be fairly
common going forwards as I refactor a variety of systems to allow far
greater degrees of unique interactions, without the need of hardcoding
said interactions at the source.

<img width="797" height="84" alt="image"
src="https://github.com/user-attachments/assets/01622f2b-56a1-4fb8-ae43-d78afd35f3b5"
/>

<img width="935" height="91" alt="image"
src="https://github.com/user-attachments/assets/309bbc66-d6aa-44b1-9a59-64f7fc800c90"
/>

<img width="617" height="259" alt="image"
src="https://github.com/user-attachments/assets/81a1f973-b1af-45c1-8373-05549fde286a"
/>

I have tested this PR and have verified in my dev environment that it
works as advertised.
This commit is contained in:
VMSolidus
2025-11-06 04:16:06 -05:00
committed by GitHub
parent 9e2eff2ba4
commit 31e2d57c35
13 changed files with 103 additions and 19 deletions
@@ -12,14 +12,14 @@
if(!owner)
return
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stabilize_circulation))
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stabilize_circulation), override = TRUE)
/obj/item/organ/internal/augment/bioaug/auxiliary_heart/replaced()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stabilize_circulation))
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stabilize_circulation), override = TRUE)
/obj/item/organ/internal/augment/bioaug/auxiliary_heart/removed()
. = ..()
@@ -0,0 +1,32 @@
/obj/item/organ/internal/augment/bioaug/gravity_adaptations
name = "gravity adaptations"
desc = "A suite of chemical glands, tailored epigenetic therapies, and skeletal reinforcements that are aimed towards Galatean Off-worlders" \
+ "These bioaugmentations serve to eliminate the weakness experienced by Off-worlders in standard terrestrial gravity."
icon_state = "mind_blanker" //It's small and just looks like a little blob of flesh, so good enough for a placeholder for chemical glands.
organ_tag = BP_AUG_GRAV_ADAPTATION
parent_organ = BP_CHEST
/obj/item/organ/internal/augment/bioaug/gravity_adaptations/Initialize()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_GRAVITY_WEAKNESS_EVENT, PROC_REF(negate_weakness), override = TRUE)
/obj/item/organ/internal/augment/bioaug/gravity_adaptations/replaced()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_GRAVITY_WEAKNESS_EVENT, PROC_REF(negate_weakness), override = TRUE)
/obj/item/organ/internal/augment/bioaug/gravity_adaptations/removed()
. = ..()
if(!owner)
return
UnregisterSignal(owner, COMSIG_GRAVITY_WEAKNESS_EVENT)
/obj/item/organ/internal/augment/bioaug/gravity_adaptations/proc/negate_weakness(var/implantee, var/canceled)
SIGNAL_HANDLER
*canceled = TRUE //TODO: TCJ just make this a component I can shove onto anything.
@@ -11,14 +11,14 @@
if(!owner)
return
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power))
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power), override = TRUE)
/obj/item/organ/internal/augment/bioaug/mind_blanker/replaced()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power))
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power), override = TRUE)
/obj/item/organ/internal/augment/bioaug/mind_blanker/removed()
. = ..()
@@ -44,14 +44,14 @@
if(!owner)
return
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power_lethal))
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power_lethal), override = TRUE)
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/replaced()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power_lethal))
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power_lethal), override = TRUE)
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/removed()
. = ..()
@@ -12,16 +12,16 @@
if(!owner)
return
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stroke_risk))
RegisterSignal(owner, COMSIG_HEART_BLEED_EVENT, PROC_REF(reduce_bloodloss))
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stroke_risk), override = TRUE)
RegisterSignal(owner, COMSIG_HEART_BLEED_EVENT, PROC_REF(reduce_bloodloss), override = TRUE)
/obj/item/organ/internal/augment/bioaug/platelet_factories/replaced()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stroke_risk))
RegisterSignal(owner, COMSIG_HEART_BLEED_EVENT, PROC_REF(reduce_bloodloss))
RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stroke_risk), override = TRUE)
RegisterSignal(owner, COMSIG_HEART_BLEED_EVENT, PROC_REF(reduce_bloodloss), override = TRUE)
/obj/item/organ/internal/augment/bioaug/platelet_factories/removed()
. = ..()