[MIRROR] Makes Bioware into Status Effects because they're just Status Effects but their own datum (#27008)

* Makes Bioware into Status Effects because they're just Status Effects but their own datum (#81989)

- Refactors `/datum/bioware` -> `/datum/status_effect/bioware`.
- Literally everything bioware datum does is done by the status effect
API, including handing dupes / unique keys
- Tallies all blackbox surgeries done rather than just nerve splicing

* Makes Bioware into Status Effects because they're just Status Effects but their own datum

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This commit is contained in:
SkyratBot
2024-04-04 13:32:16 -04:00
committed by GitHub
co-authored by MrMelbert
parent a738ffa29c
commit a8ec7cae71
19 changed files with 215 additions and 229 deletions
-7
View File
@@ -220,13 +220,6 @@
#define BRAIN_DAMAGE_INTEGRITY_MULTIPLIER 0.5
//Surgery Defines
#define BIOWARE_GENERIC "generic"
#define BIOWARE_NERVES "nerves"
#define BIOWARE_CIRCULATION "circulation"
#define BIOWARE_LIGAMENTS "ligaments"
#define BIOWARE_CORTEX "cortex"
//Health hud screws for carbon mobs
#define SCREWYHUD_NONE 0
#define SCREWYHUD_CRIT 1
@@ -0,0 +1,28 @@
/**
* ## Bioware status effect
*
* Simple holder status effects that grants the owner mob basic buffs
*/
/datum/status_effect/bioware
id = "bioware"
alert_type = null
duration = -1
tick_interval = -1
/datum/status_effect/bioware/on_apply()
if(!ishuman(owner))
return FALSE
bioware_gained()
return TRUE
/datum/status_effect/bioware/on_remove()
bioware_lost()
/// Called when applying to the mob.
/datum/status_effect/bioware/proc/bioware_gained()
return
/// Called when removing from the mob.
/datum/status_effect/bioware/proc/bioware_lost()
return
@@ -0,0 +1,23 @@
// Bioware that affects the heart / circulatory system
/datum/status_effect/bioware/heart
id = "circulation"
/// Muscled veins - Removes the need to have a heart
/datum/status_effect/bioware/heart/muscled_veins
/datum/status_effect/bioware/heart/muscled_veins/bioware_gained()
ADD_TRAIT(owner, TRAIT_STABLEHEART, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/bioware/heart/muscled_veins/bioware_lost()
REMOVE_TRAIT(owner, TRAIT_STABLEHEART, TRAIT_STATUS_EFFECT(id))
/// Threaded veins - Bleed way less
/datum/status_effect/bioware/heart/threaded_veins
/datum/status_effect/bioware/heart/threaded_veins/bioware_gained()
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.bleed_mod *= 0.25
/datum/status_effect/bioware/heart/threaded_veins/bioware_lost()
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.bleed_mod *= 4
@@ -0,0 +1,20 @@
// Bioware that affects the brain
/datum/status_effect/bioware/cortex
id = "cortex"
// Folded brain - Grants a bonus chance to getting special traumas via lobotomy
/datum/status_effect/bioware/cortex/folded
/datum/status_effect/bioware/cortex/folded/bioware_gained()
ADD_TRAIT(owner, TRAIT_SPECIAL_TRAUMA_BOOST, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/bioware/cortex/folded/bioware_lost()
REMOVE_TRAIT(owner, TRAIT_SPECIAL_TRAUMA_BOOST, TRAIT_STATUS_EFFECT(id))
// Imprinted brain - Cures basic traumas continuously
/datum/status_effect/bioware/cortex/imprinted
tick_interval = 2 SECONDS
/datum/status_effect/bioware/cortex/imprinted/tick(seconds_between_ticks)
var/mob/living/carbon/human/human_owner = owner
human_owner.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC)
@@ -0,0 +1,21 @@
// Bioware that affects the player's limbs
/datum/status_effect/bioware/ligaments
id = "ligaments"
// Hooked ligaments - Easier to dismember, but easier to reattach
/datum/status_effect/bioware/ligaments/hooked
/datum/status_effect/bioware/ligaments/hooked/bioware_gained()
owner.add_traits(list(TRAIT_LIMBATTACHMENT, TRAIT_EASYDISMEMBER), TRAIT_STATUS_EFFECT(id))
/datum/status_effect/bioware/ligaments/hooked/bioware_lost()
owner.remove_traits(list(TRAIT_LIMBATTACHMENT, TRAIT_EASYDISMEMBER), TRAIT_STATUS_EFFECT(id))
// Reinforced ligaments - Easier to break, but cannot be dismembered
/datum/status_effect/bioware/ligaments/reinforced
/datum/status_effect/bioware/ligaments/reinforced/bioware_gained()
owner.add_traits(list(TRAIT_NODISMEMBER, TRAIT_EASILY_WOUNDED), TRAIT_STATUS_EFFECT(id))
/datum/status_effect/bioware/ligaments/reinforced/bioware_lost()
owner.remove_traits(list(TRAIT_NODISMEMBER, TRAIT_EASILY_WOUNDED), TRAIT_STATUS_EFFECT(id))
@@ -0,0 +1,25 @@
// Bioware that affects the CNS
/datum/status_effect/bioware/nerves
id = "nerves"
// Grounded Nerves - Immunity to being zapped
/datum/status_effect/bioware/nerves/grounded
/datum/status_effect/bioware/nerves/grounded/bioware_gained()
ADD_TRAIT(owner, TRAIT_SHOCKIMMUNE, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/bioware/nerves/grounded/bioware_lost()
REMOVE_TRAIT(owner, TRAIT_SHOCKIMMUNE, TRAIT_STATUS_EFFECT(id))
// Spliced Nerves - Reduced stun time and stamina damage taken
/datum/status_effect/bioware/nerves/spliced
/datum/status_effect/bioware/nerves/spliced/bioware_gained()
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.stun_mod *= 0.5
human_owner.physiology.stamina_mod *= 0.8
/datum/status_effect/bioware/nerves/spliced/bioware_lost()
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.stun_mod *= 2
human_owner.physiology.stamina_mod *= 1.25
@@ -61,8 +61,6 @@
/mob/living/carbon/human/Destroy()
QDEL_NULL(physiology)
if(biowares)
QDEL_LAZYLIST(biowares)
GLOB.human_list -= src
if (mob_mood)
@@ -71,8 +71,6 @@
var/datum/physiology/physiology
var/list/datum/bioware/biowares
/// What types of mobs are allowed to ride/buckle to this mob
var/static/list/can_ride_typecache = typecacheof(list(
/mob/living/basic/parrot,
@@ -1,36 +0,0 @@
//Bioware
//Body modifications applied through surgery. They generally affect physiology.
/datum/bioware
var/name = "Generic Bioware"
var/mob/living/carbon/human/owner
var/desc = "If you see this something's wrong, warn a coder."
var/active = FALSE
var/can_process = FALSE
var/mod_type = BIOWARE_GENERIC
/datum/bioware/New(mob/living/carbon/human/new_owner)
owner = new_owner
for(var/datum/bioware/bioware as anything in owner.biowares)
if(bioware.mod_type == mod_type)
qdel(src)
return
LAZYADD(owner.biowares, src)
on_gain()
/datum/bioware/Destroy()
if(owner)
LAZYREMOVE(owner.biowares, src)
owner = null
if(active)
on_lose()
return ..()
/datum/bioware/proc/on_gain()
active = TRUE
if(can_process)
START_PROCESSING(SSobj, src)
/datum/bioware/proc/on_lose()
STOP_PROCESSING(SSobj, src)
return
@@ -1,13 +1,29 @@
/datum/surgery/advanced/bioware
name = "Enhancement surgery"
var/bioware_target = BIOWARE_GENERIC
/// What status effect is gained when the surgery is successful?
/// Used to check against other bioware types to prevent stacking.
var/status_effect_gained = /datum/status_effect/bioware
/datum/surgery/advanced/bioware/can_start(mob/user, mob/living/carbon/human/target)
if(!..())
return FALSE
if(!istype(target))
return FALSE
for(var/datum/bioware/bioware as anything in target.biowares)
if(bioware.mod_type == bioware_target)
return FALSE
if(target.has_status_effect(status_effect_gained))
return FALSE
return TRUE
/datum/surgery_step/apply_bioware
accept_hand = TRUE
time = 12.5 SECONDS
/datum/surgery_step/apply_bioware/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/advanced/bioware/surgery, default_display_results)
. = ..()
if(!.)
return
if(!istype(surgery))
return
target.apply_status_effect(surgery.status_effect_gained)
if(target.ckey)
SSblackbox.record_feedback("tally", "bioware", 1, surgery.type)
@@ -8,11 +8,11 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/fold_cortex,
/datum/surgery_step/apply_bioware/fold_cortex,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_CORTEX
status_effect_gained = /datum/status_effect/bioware/cortex/folded
/datum/surgery/advanced/bioware/cortex_folding/can_start(mob/user, mob/living/carbon/target)
var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
@@ -20,12 +20,10 @@
return FALSE
return ..()
/datum/surgery_step/fold_cortex
/datum/surgery_step/apply_bioware/fold_cortex
name = "fold cortex (hand)"
accept_hand = TRUE
time = 125
/datum/surgery_step/fold_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/fold_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -35,7 +33,11 @@
)
display_pain(target, "Your head throbs with gruesome pain, it's nearly too much to handle!")
/datum/surgery_step/fold_cortex/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/fold_cortex/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(!.)
return
display_results(
user,
target,
@@ -44,10 +46,8 @@
span_notice("[user] completes the surgery on [target]'s brain."),
)
display_pain(target, "Your brain feels stronger... more flexible!")
new /datum/bioware/cortex_fold(target)
return ..()
/datum/surgery_step/fold_cortex/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/fold_cortex/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.get_organ_slot(ORGAN_SLOT_BRAIN))
display_results(
user,
@@ -62,16 +62,3 @@
else
user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
return FALSE
/datum/bioware/cortex_fold
name = "Cortex Fold"
desc = "The cerebral cortex has been folded into a complex fractal pattern, and can support non-standard neural patterns."
mod_type = BIOWARE_CORTEX
/datum/bioware/cortex_fold/on_gain()
. = ..()
ADD_TRAIT(owner, TRAIT_SPECIAL_TRAUMA_BOOST, EXPERIMENTAL_SURGERY_TRAIT)
/datum/bioware/cortex_fold/on_lose()
REMOVE_TRAIT(owner, TRAIT_SPECIAL_TRAUMA_BOOST, EXPERIMENTAL_SURGERY_TRAIT)
return ..()
@@ -8,11 +8,11 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/imprint_cortex,
/datum/surgery_step/apply_bioware/imprint_cortex,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_CORTEX
status_effect_gained = /datum/status_effect/bioware/cortex/imprinted
/datum/surgery/advanced/bioware/cortex_imprint/can_start(mob/user, mob/living/carbon/target)
var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
@@ -20,12 +20,10 @@
return FALSE
return ..()
/datum/surgery_step/imprint_cortex
/datum/surgery_step/apply_bioware/imprint_cortex
name = "imprint cortex (hand)"
accept_hand = TRUE
time = 125
/datum/surgery_step/imprint_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/imprint_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -35,7 +33,11 @@
)
display_pain(target, "Your head throbs with gruesome pain, it's nearly too much to handle!")
/datum/surgery_step/imprint_cortex/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/imprint_cortex/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(!.)
return
display_results(
user,
target,
@@ -44,10 +46,8 @@
span_notice("[user] completes the surgery on [target]'s brain."),
)
display_pain(target, "Your brain feels stronger... more resillient!")
new /datum/bioware/cortex_imprint(target)
return ..()
/datum/surgery_step/imprint_cortex/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/imprint_cortex/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.get_organ_slot(ORGAN_SLOT_BRAIN))
display_results(
user,
@@ -62,12 +62,3 @@
else
user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
return FALSE
/datum/bioware/cortex_imprint
name = "Cortex Imprint"
desc = "The cerebral cortex has been reshaped into a redundant neural pattern, making the brain able to bypass impediments caused by minor brain traumas."
mod_type = BIOWARE_CORTEX
can_process = TRUE
/datum/bioware/cortex_imprint/process()
owner.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC)
@@ -9,17 +9,16 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/reshape_ligaments,
/datum/surgery_step/apply_bioware/reshape_ligaments,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_LIGAMENTS
/datum/surgery_step/reshape_ligaments
status_effect_gained = /datum/status_effect/bioware/ligaments/hooked
/datum/surgery_step/apply_bioware/reshape_ligaments
name = "reshape ligaments (hand)"
accept_hand = TRUE
time = 125
/datum/surgery_step/reshape_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/reshape_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -29,7 +28,11 @@
)
display_pain(target, "Your limbs burn with severe pain!")
/datum/surgery_step/reshape_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/reshape_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(!.)
return
display_results(
user,
target,
@@ -38,18 +41,3 @@
span_notice("[user] finishes manipulating [target]'s ligaments."),
)
display_pain(target, "Your limbs feel... strangely loose.")
new /datum/bioware/hooked_ligaments(target)
return ..()
/datum/bioware/hooked_ligaments
name = "Hooked Ligaments"
desc = "The ligaments and nerve endings that connect the torso to the limbs are formed into a hook-like shape, so limbs can be attached without requiring surgery, but are easier to sever."
mod_type = BIOWARE_LIGAMENTS
/datum/bioware/hooked_ligaments/on_gain()
..()
owner.add_traits(list(TRAIT_LIMBATTACHMENT, TRAIT_EASYDISMEMBER), EXPERIMENTAL_SURGERY_TRAIT)
/datum/bioware/hooked_ligaments/on_lose()
..()
owner.remove_traits(list(TRAIT_LIMBATTACHMENT, TRAIT_EASYDISMEMBER), EXPERIMENTAL_SURGERY_TRAIT)
@@ -9,18 +9,16 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/reinforce_ligaments,
/datum/surgery_step/apply_bioware/reinforce_ligaments,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_LIGAMENTS
status_effect_gained = /datum/status_effect/bioware/ligaments/reinforced
/datum/surgery_step/reinforce_ligaments
/datum/surgery_step/apply_bioware/reinforce_ligaments
name = "reinforce ligaments (hand)"
accept_hand = TRUE
time = 125
/datum/surgery_step/reinforce_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/reinforce_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -30,7 +28,11 @@
)
display_pain(target, "Your limbs burn with severe pain!")
/datum/surgery_step/reinforce_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/reinforce_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(!.)
return
display_results(
user,
target,
@@ -39,18 +41,3 @@
span_notice("[user] finishes manipulating [target]'s ligaments."),
)
display_pain(target, "Your limbs feel more secure, but also more frail.")
new /datum/bioware/reinforced_ligaments(target)
return ..()
/datum/bioware/reinforced_ligaments
name = "Reinforced Ligaments"
desc = "The ligaments and nerve endings that connect the torso to the limbs are protected by a mix of bone and tissues, and are much harder to separate from the body, but are also easier to wound."
mod_type = BIOWARE_LIGAMENTS
/datum/bioware/reinforced_ligaments/on_gain()
..()
owner.add_traits(list(TRAIT_NODISMEMBER, TRAIT_EASILY_WOUNDED), EXPERIMENTAL_SURGERY_TRAIT)
/datum/bioware/reinforced_ligaments/on_lose()
..()
owner.remove_traits(list(TRAIT_NODISMEMBER, TRAIT_EASILY_WOUNDED), EXPERIMENTAL_SURGERY_TRAIT)
@@ -8,18 +8,16 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/muscled_veins,
/datum/surgery_step/apply_bioware/muscled_veins,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_CIRCULATION
status_effect_gained = /datum/status_effect/bioware/heart/muscled_veins
/datum/surgery_step/muscled_veins
/datum/surgery_step/apply_bioware/muscled_veins
name = "shape vein muscles (hand)"
accept_hand = TRUE
time = 125
/datum/surgery_step/muscled_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/muscled_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -29,7 +27,11 @@
)
display_pain(target, "Your entire body burns in agony!")
/datum/surgery_step/muscled_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/muscled_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(!.)
return
display_results(
user,
target,
@@ -38,18 +40,3 @@
span_notice("[user] finishes manipulating [target]'s circulatory system."),
)
display_pain(target, "You can feel your heartbeat's powerful pulses ripple through your body!")
new /datum/bioware/muscled_veins(target)
return ..()
/datum/bioware/muscled_veins
name = "Muscled Veins"
desc = "The circulatory system is affixed with a muscled membrane, allowing the veins to pump blood without the need for a heart."
mod_type = BIOWARE_CIRCULATION
/datum/bioware/muscled_veins/on_gain()
..()
ADD_TRAIT(owner, TRAIT_STABLEHEART, EXPERIMENTAL_SURGERY_TRAIT)
/datum/bioware/muscled_veins/on_lose()
..()
REMOVE_TRAIT(owner, TRAIT_STABLEHEART, EXPERIMENTAL_SURGERY_TRAIT)
@@ -8,18 +8,17 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/ground_nerves,
/datum/surgery_step/apply_bioware/ground_nerves,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_NERVES
status_effect_gained = /datum/status_effect/bioware/nerves/grounded
/datum/surgery_step/ground_nerves
/datum/surgery_step/apply_bioware/ground_nerves
name = "ground nerves (hand)"
accept_hand = TRUE
time = 155
time = 15.5 SECONDS
/datum/surgery_step/ground_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/ground_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -29,7 +28,7 @@
)
display_pain(target, "Your entire body goes numb!")
/datum/surgery_step/ground_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/ground_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(
user,
target,
@@ -38,18 +37,4 @@
span_notice("[user] finishes manipulating [target]'s nervous system."),
)
display_pain(target, "You regain feeling in your body! You feel energzed!")
new /datum/bioware/grounded_nerves(target)
return ..()
/datum/bioware/grounded_nerves
name = "Grounded Nerves"
desc = "Nerves form a safe path for electricity to traverse, protecting the body from electric shocks."
mod_type = BIOWARE_NERVES
/datum/bioware/grounded_nerves/on_gain()
..()
ADD_TRAIT(owner, TRAIT_SHOCKIMMUNE, EXPERIMENTAL_SURGERY_TRAIT)
/datum/bioware/grounded_nerves/on_lose()
..()
REMOVE_TRAIT(owner, TRAIT_SHOCKIMMUNE, EXPERIMENTAL_SURGERY_TRAIT)
@@ -8,18 +8,17 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/splice_nerves,
/datum/surgery_step/apply_bioware/splice_nerves,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_NERVES
status_effect_gained = /datum/status_effect/bioware/nerves/spliced
/datum/surgery_step/splice_nerves
/datum/surgery_step/apply_bioware/splice_nerves
name = "splice nerves (hand)"
accept_hand = TRUE
time = 155
time = 15.5 SECONDS
/datum/surgery_step/splice_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/splice_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -29,7 +28,11 @@
)
display_pain(target, "Your entire body goes numb!")
/datum/surgery_step/splice_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/splice_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(!.)
return
display_results(
user,
target,
@@ -38,22 +41,3 @@
span_notice("[user] finishes manipulating [target]'s nervous system."),
)
display_pain(target, "You regain feeling in your body; It feels like everything's happening around you in slow motion!")
new /datum/bioware/spliced_nerves(target)
if(target.ckey)
SSblackbox.record_feedback("nested tally", "nerve_splicing", 1, list("[target.ckey]", "got"))
return ..()
/datum/bioware/spliced_nerves
name = "Spliced Nerves"
desc = "Nerves are connected to each other multiple times, greatly reducing the impact of stunning effects."
mod_type = BIOWARE_NERVES
/datum/bioware/spliced_nerves/on_gain()
..()
owner.physiology.stun_mod *= 0.5
owner.physiology.stamina_mod *= 0.8
/datum/bioware/spliced_nerves/on_lose()
..()
owner.physiology.stun_mod *= 2
owner.physiology.stamina_mod *= 1.25
@@ -8,18 +8,16 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/thread_veins,
/datum/surgery_step/apply_bioware/thread_veins,
/datum/surgery_step/close,
)
bioware_target = BIOWARE_CIRCULATION
status_effect_gained = /datum/status_effect/bioware/heart/threaded_veins
/datum/surgery_step/thread_veins
/datum/surgery_step/apply_bioware/thread_veins
name = "thread veins (hand)"
accept_hand = TRUE
time = 125
/datum/surgery_step/thread_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/apply_bioware/thread_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
@@ -29,7 +27,11 @@
)
display_pain(target, "Your entire body burns in agony!")
/datum/surgery_step/thread_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
/datum/surgery_step/apply_bioware/thread_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(!.)
return
display_results(
user,
target,
@@ -38,18 +40,3 @@
span_notice("[user] finishes manipulating [target]'s circulatory system."),
)
display_pain(target, "You can feel your blood pumping through reinforced veins!")
new /datum/bioware/threaded_veins(target)
return ..()
/datum/bioware/threaded_veins
name = "Threaded Veins"
desc = "The circulatory system is woven into a mesh, severely reducing the amount of blood lost from wounds."
mod_type = BIOWARE_CIRCULATION
/datum/bioware/threaded_veins/on_gain()
..()
owner.physiology.bleed_mod *= 0.25
/datum/bioware/threaded_veins/on_lose()
..()
owner.physiology.bleed_mod *= 4
+5 -1
View File
@@ -1870,6 +1870,11 @@
#include "code\datums\status_effects\wound_effects.dm"
#include "code\datums\status_effects\buffs\stop_drop_roll.dm"
#include "code\datums\status_effects\buffs\stun_absorption.dm"
#include "code\datums\status_effects\buffs\bioware\_bioware.dm"
#include "code\datums\status_effects\buffs\bioware\circulation.dm"
#include "code\datums\status_effects\buffs\bioware\cortex.dm"
#include "code\datums\status_effects\buffs\bioware\ligaments.dm"
#include "code\datums\status_effects\buffs\bioware\nerves.dm"
#include "code\datums\status_effects\buffs\food\chilling.dm"
#include "code\datums\status_effects\buffs\food\food_traits.dm"
#include "code\datums\status_effects\buffs\food\haste.dm"
@@ -5847,7 +5852,6 @@
#include "code\modules\surgery\advanced\pacification.dm"
#include "code\modules\surgery\advanced\viral_bonding.dm"
#include "code\modules\surgery\advanced\wingreconstruction.dm"
#include "code\modules\surgery\advanced\bioware\bioware.dm"
#include "code\modules\surgery\advanced\bioware\bioware_surgery.dm"
#include "code\modules\surgery\advanced\bioware\cortex_folding.dm"
#include "code\modules\surgery\advanced\bioware\cortex_imprint.dm"