Skip to content

Commit

Permalink
aye (#335)
Browse files Browse the repository at this point in the history
  • Loading branch information
Paxilmaniac authored Jan 15, 2025
1 parent 48ec2d3 commit 739e6e7
Show file tree
Hide file tree
Showing 10 changed files with 44 additions and 208 deletions.
135 changes: 22 additions & 113 deletions modular_doppler/deforest_medical_items/code/healing_stack_items.dm
Original file line number Diff line number Diff line change
@@ -1,113 +1,3 @@
#define INSTANT_WOUND_HEAL_STAMINA_DAMAGE 80
#define INSTANT_WOUND_HEAL_LIMB_DAMAGE 25

/obj/item/stack/medical/wound_recovery
name = "subdermal splint applicator"
desc = "A roll flexible material dotted with millions of micro-scale injectors on one side. \
On application to a body part with a damaged bone structure, nanomachines stored within those \
injectors will surround the wound and form a subdermal, self healing splint. While convenient \
for keeping appearances and rapid healing, the nanomachines tend to leave their host particularly \
vulnerable to new damage for several minutes after application."
icon = 'modular_doppler/deforest_medical_items/icons/stack_items.dmi'
icon_state = "subsplint"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
inhand_icon_state = "sampler"
gender = PLURAL
singular_name = "subdermal splint applicator"
self_delay = 10 SECONDS
other_delay = 5 SECONDS
novariants = TRUE
max_amount = 3
amount = 3
merge_type = /obj/item/stack/medical/wound_recovery
custom_price = PAYCHECK_COMMAND * 2.5
/// If this checks for pain, used for synthetic repair foam
var/causes_pain = TRUE
/// The types of wounds that we work on, in list format
var/list/applicable_wounds = list(
/datum/wound/blunt/bone,
/datum/wound/muscle,
)
/// The sound we play upon successfully treating the wound
var/treatment_sound = 'sound/items/duct_tape/duct_tape_rip.ogg'

// This is only relevant for the types of wounds defined, we can't work if there are none
/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/living/user, healed_zone, silent = FALSE, auto_change_zone = TRUE)
if(patient.has_status_effect(/datum/status_effect/vulnerable_to_damage))
patient.balloon_alert(user, "still recovering from last use!")
return

var/treatment_delay = (user == patient ? self_delay : other_delay)

var/obj/item/bodypart/limb = patient.get_bodypart(check_zone(healed_zone))
if(!limb)
patient.balloon_alert(user, "missing limb!")
return
if(!LAZYLEN(limb.wounds))
patient.balloon_alert(user, "no wounds!")
return

var/splintable_wound = FALSE
var/datum/wound/woundies
for(var/found_wound in limb.wounds)
woundies = found_wound
if((woundies.wound_flags & ACCEPTS_GAUZE) && is_type_in_list(woundies, applicable_wounds))
splintable_wound = TRUE
break
if(!splintable_wound)
patient.balloon_alert(user, "can't heal those!")
return

if(HAS_TRAIT(woundies, TRAIT_WOUND_SCANNED))
treatment_delay *= 0.5
if(user == patient)
to_chat(user, span_notice("You keep in mind the indications from the holo-image about your injury, and expertly begin applying [src]."))
else
user.visible_message(span_warning("[user] begins expertly treating the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), span_warning("You begin quickly treating the wounds on [patient]'s [limb.plaintext_zone] with [src], keeping the holo-image indications in mind..."))
else
user.visible_message(span_warning("[user] begins treating the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), span_warning("You begin treating the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone] with [src]..."))

if(!do_after(user, treatment_delay, target = patient))
return

user.visible_message(span_green("[user] applies [src] to [patient]'s [limb.plaintext_zone]."), span_green("You treat the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone]."))
playsound(patient, treatment_sound, 50, TRUE)
woundies.remove_wound()
if(!HAS_TRAIT(patient, TRAIT_ANALGESIA) || !causes_pain)
patient.emote("scream")
to_chat(patient, span_userdanger("Your [limb.plaintext_zone] burns like hell as the wounds on it are rapidly healed, fuck!"))
patient.add_mood_event("severe_surgery", /datum/mood_event/rapid_wound_healing)
limb.receive_damage(brute = INSTANT_WOUND_HEAL_LIMB_DAMAGE, wound_bonus = CANT_WOUND)
patient.adjustStaminaLoss(INSTANT_WOUND_HEAL_STAMINA_DAMAGE)
patient.apply_status_effect(/datum/status_effect/vulnerable_to_damage)
use(1)

/datum/mood_event/rapid_wound_healing
description = "Ah, so this is what hellfire feels like. At least my wounds are healed..."
mood_change = -5
timeout = 5 MINUTES

// Helps recover bleeding
/obj/item/stack/medical/wound_recovery/rapid_coagulant
name = "rapid coagulant applicator"
singular_name = "rapid coagulant applicator"
desc = "A small device filled with a fast acting coagulant of some type. \
When used on a bleeding area, will nearly instantly stop all bleeding. \
This rapid clotting action may result in temporary vulnerability to further \
damage after application."
icon_state = "clotter"
inhand_icon_state = "implantcase"
applicable_wounds = list(
/datum/wound/slash/flesh,
/datum/wound/pierce/bleed,
)
merge_type = /obj/item/stack/medical/wound_recovery/rapid_coagulant

/obj/item/stack/medical/wound_recovery/rapid_coagulant/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user)
. = ..()
healed_mob.reagents.add_reagent(/datum/reagent/medicine/coagulant/fabricated, 5)

// Helps recover burn wounds much faster, while not healing much damage directly
/obj/item/stack/medical/ointment/red_sun
name = "red sun balm"
Expand Down Expand Up @@ -137,6 +27,28 @@
. = ..()
healed_mob.reagents.add_reagent(/datum/reagent/medicine/lidocaine, 2)

// Good splints, not too good anything else
/obj/item/stack/medical/gauze/alu_splint
name = "aluminum splints"
singular_name = "aluminum splint"
desc = "A roll of aluminum sheet, made for use as a splint when wrapped around a damaged area. \
Has a lining for what little comfort it would be able to provide, meaning technically... \
you could use it as a bandage. It doesn't seem like the greatest idea however."
icon = 'modular_doppler/deforest_medical_items/icons/stack_items.dmi'
icon_state = "subsplint"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
inhand_icon_state = "sampler"
novariants = TRUE
max_amount = 3
amount = 3
splint_factor = 0.35
burn_cleanliness_bonus = 0.75
absorption_rate = 0.075
absorption_capacity = 4
merge_type = /obj/item/stack/medical/gauze/alu_splint
custom_price = PAYCHECK_LOWER * 2

// Gauze that are especially good at treating burns, but are terrible splints
/obj/item/stack/medical/gauze/sterilized
name = "sealed aseptic gauze"
Expand Down Expand Up @@ -178,6 +90,3 @@
stop_bleeding = 2
merge_type = /obj/item/stack/medical/suture/coagulant
custom_price = PAYCHECK_LOWER * 1.5

#undef INSTANT_WOUND_HEAL_STAMINA_DAMAGE
#undef INSTANT_WOUND_HEAL_LIMB_DAMAGE
8 changes: 4 additions & 4 deletions modular_doppler/deforest_medical_items/code/storage_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@
/obj/item/bonesetter = 1,
/obj/item/hemostat = 1,
/obj/item/cautery = 1,
/obj/item/stack/medical/wound_recovery = 1,
/obj/item/stack/medical/wound_recovery/rapid_coagulant = 1,
/obj/item/stack/medical/gauze/alu_splint = 1,
/obj/item/reagent_containers/medigel/sterilizine = 1,
/obj/item/stack/medical/gauze/sterilized = 1,
/obj/item/healthanalyzer/simple = 1,
)
Expand Down Expand Up @@ -229,8 +229,8 @@
/obj/item/bonesetter = 1,
/obj/item/hemostat = 1,
/obj/item/cautery = 1,
/obj/item/stack/medical/wound_recovery = 1,
/obj/item/stack/medical/wound_recovery/rapid_coagulant = 1,
/obj/item/stack/medical/gauze/alu_splint = 1,
/obj/item/reagent_containers/medigel/sterilizine = 1,
/obj/item/stack/medical/suture/coagulant = 1,
/obj/item/stack/medical/suture/bloody = 2,
/obj/item/stack/medical/mesh = 2,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
var/static/items_inside = list(
/obj/item/stack/medical/gauze = 1,
/obj/item/reagent_containers/pill/robotic_patch/synth_repair = 2,
/obj/item/stack/medical/wound_recovery/robofoam = 1,
/obj/item/stack/medical/gauze/alu_splint = 1,
/obj/item/reagent_containers/hypospray/medipen/deforest/robot_system_cleaner = 1,
/obj/item/reagent_containers/hypospray/medipen/deforest/coagulants = 1, // Coagulants help electrical damage
/obj/item/healthanalyzer/simple = 1,
Expand All @@ -65,7 +65,7 @@
/obj/item/stack/medical/gauze/twelve = 1,
/obj/item/stack/cable_coil/thirty = 1,
/obj/item/reagent_containers/pill/robotic_patch/synth_repair = 4,
/obj/item/stack/medical/wound_recovery/robofoam = 1,
/obj/item/stack/medical/gauze/alu_splint = 1,
/obj/item/reagent_containers/hypospray/medipen/deforest/robot_system_cleaner = 1,
/obj/item/reagent_containers/hypospray/medipen/deforest/robot_liquid_solder = 1,
/obj/item/reagent_containers/hypospray/medipen/deforest/coagulants = 1,
Expand Down
64 changes: 0 additions & 64 deletions modular_doppler/deforest_medical_items/code/synth_healing.dm
Original file line number Diff line number Diff line change
@@ -1,67 +1,3 @@
// Used to stop synth structural damage
/obj/item/stack/medical/wound_recovery/robofoam
name = "robotic repair spray"
singular_name = "robotic repair spray"
desc = "A needle-tip foam gun filled with an advanced synthetic foam that rapidly \
fills and stabilizes structural damage in synthetics. The damaged area will be \
vulnerable to further damage while the foam hardens"
icon = 'modular_doppler/deforest_medical_items/icons/stack_items.dmi'
icon_state = "robofoam"
inhand_icon_state = "implantcase"
applicable_wounds = list(
/datum/wound/blunt/robotic,
)
max_amount = 2
amount = 2
merge_type = /obj/item/stack/medical/wound_recovery/robofoam
treatment_sound = 'sound/effects/spray.ogg'
causes_pain = FALSE

/obj/item/stack/medical/wound_recovery/robofoam/examine(mob/user)
. = ..()
. += span_notice("This <b>cheaper</b> foam can only be used to fill <b>structural</b> wounds on synthetics.")
return .

/obj/item/stack/medical/wound_recovery/robofoam/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user)
. = ..()
healed_mob.reagents.add_reagent(/datum/reagent/medicine/nanite_slurry, 5)
healed_mob.reagents.add_reagent(/datum/reagent/medicine/coagulant/fabricated, 5)

// Used to cure practically any synthetic wound
/obj/item/stack/medical/wound_recovery/robofoam_super
name = "premium robotic repair spray"
singular_name = "premium robotic repair spray"
desc = "A needle-tip foam gun filled with an advanced synthetic foam that rapidly \
fills and stabilizes structural damage in synthetics. The damaged area will be \
vulnerable to further damage while the foam hardens. \
This special premium type can also be used to repair almost any possible type \
of synthetic damage."
icon = 'modular_doppler/deforest_medical_items/icons/stack_items.dmi'
icon_state = "robofoam_super"
inhand_icon_state = "implantcase"
applicable_wounds = list(
/datum/wound/blunt/robotic,
/datum/wound/muscle/robotic,
/datum/wound/electrical_damage,
/datum/wound/burn/robotic,
)
max_amount = 2
amount = 2
merge_type = /obj/item/stack/medical/wound_recovery/robofoam_super
treatment_sound = 'sound/effects/spray.ogg'
causes_pain = FALSE

/obj/item/stack/medical/wound_recovery/robofoam_super/examine(mob/user)
. = ..()
. += span_notice("This more <b>expensive</b> foam can be used to fill <b>any</b> type of wound on synthetics.")
return .

/obj/item/stack/medical/wound_recovery/robofoam_super/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user)
. = ..()
healed_mob.reagents.add_reagent(/datum/reagent/medicine/coagulant/fabricated, 5)
healed_mob.reagents.add_reagent(/datum/reagent/medicine/nanite_slurry, 5)
healed_mob.reagents.add_reagent(/datum/reagent/dinitrogen_plasmide, 5)

// Synth repair patch, gives the synth a small amount of healing chems
/obj/item/reagent_containers/pill/robotic_patch
name = "robotic patch"
Expand Down
10 changes: 2 additions & 8 deletions modular_doppler/epic_loot/code/random_spawners_real.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
/obj/item/stack/medical/bandage = 2,
/obj/item/stack/sticky_tape/surgical = 2,
/obj/item/reagent_containers/blood/random = 1,
/obj/item/stack/medical/wound_recovery/robofoam = 2,
/obj/item/stack/medical/gauze/alu_splint = 2,
// Pill bottles
/obj/item/storage/pill_bottle/iron = 2,
/obj/item/storage/pill_bottle/potassiodide = 2,
Expand Down Expand Up @@ -136,11 +136,8 @@
/obj/item/stack/medical/bandage = 2,
/obj/item/stack/sticky_tape/surgical = 2,
/obj/item/stack/medical/poultice = 1,
/obj/item/stack/medical/wound_recovery = 1,
/obj/item/stack/medical/wound_recovery/rapid_coagulant = 1,
/obj/item/stack/medical/gauze/alu_splint = 2,
/obj/item/reagent_containers/blood/random = 2,
/obj/item/stack/medical/wound_recovery/robofoam = 3,
/obj/item/stack/medical/wound_recovery/robofoam_super = 2,
// Medigels
/obj/item/reagent_containers/medigel/libital = 2,
/obj/item/reagent_containers/medigel/aiuri = 2,
Expand Down Expand Up @@ -422,9 +419,6 @@
// stuff
/obj/item/storage/epic_loot_cooler = 1,
/obj/item/storage/epic_loot_money_case = 1,
// Robofoam is a tool, right?
/obj/item/stack/medical/wound_recovery/robofoam = 2,
/obj/item/stack/medical/wound_recovery/robofoam_super = 1,
)

// Random construction stuff
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

sound_effect = 'sound/effects/wounds/crack2.ogg'

wound_flags = (ACCEPTS_GAUZE|MANGLES_EXTERIOR|SPLINT_OVERLAY|CAN_BE_GRASPED)
wound_flags = (ACCEPTS_GAUZE|MANGLES_EXTERIOR|MANGLES_INTERIOR|SPLINT_OVERLAY|CAN_BE_GRASPED)
treatable_by = list(/obj/item/stack/medical/bone_gel)
status_effect_type = /datum/status_effect/wound/blunt/robotic/critical
treatable_tools = list(TOOL_WELDER, TOOL_CROWBAR)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@

demotes_to = /datum/wound/burn/robotic/overheat/severe

wound_flags = (MANGLES_EXTERIOR|ACCEPTS_GAUZE|SPLINT_OVERLAY|CAN_BE_GRASPED)
wound_flags = (MANGLES_EXTERIOR|MANGLES_INTERIOR|ACCEPTS_GAUZE|SPLINT_OVERLAY|CAN_BE_GRASPED)

light_color = COLOR_VERY_SOFT_YELLOW
light_power = 1.3
Expand Down
12 changes: 6 additions & 6 deletions modular_doppler/modular_medical/wounds/synth/robotic_pierce.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
process_shock_spark_count_max = 1
process_shock_spark_count_min = 1

wirecut_repair_percent = 0.078
wire_repair_percent = 0.018
wirecut_repair_percent = 0.15
wire_repair_percent = 0.075

initial_sparks_amount = 1

Expand Down Expand Up @@ -90,8 +90,8 @@
process_shock_spark_count_max = 2
process_shock_spark_count_min = 1

wirecut_repair_percent = 0.046
wire_repair_percent = 0.01
wirecut_repair_percent = 0.08
wire_repair_percent = 0.035

initial_sparks_amount = 3

Expand Down Expand Up @@ -135,8 +135,8 @@
process_shock_spark_count_max = 3
process_shock_spark_count_min = 2

wirecut_repair_percent = 0.032
wire_repair_percent = 0.008
wirecut_repair_percent = 0.05
wire_repair_percent = 0.01

initial_sparks_amount = 8

Expand Down
10 changes: 5 additions & 5 deletions modular_doppler/modular_medical/wounds/synth/robotic_slash.dm
Original file line number Diff line number Diff line change
Expand Up @@ -534,8 +534,8 @@
process_shock_spark_count_max = 1
process_shock_spark_count_min = 1

wirecut_repair_percent = 0.1
wire_repair_percent = 0.023
wirecut_repair_percent = 0.25
wire_repair_percent = 0.1

initial_sparks_amount = 1

Expand Down Expand Up @@ -577,8 +577,8 @@
process_shock_spark_count_max = 2
process_shock_spark_count_min = 1

wirecut_repair_percent = 0.09
wire_repair_percent = 0.015
wirecut_repair_percent = 0.15
wire_repair_percent = 0.075

initial_sparks_amount = 3

Expand Down Expand Up @@ -623,7 +623,7 @@
process_shock_spark_count_min = 2

wirecut_repair_percent = 0.08
wire_repair_percent = 0.01
wire_repair_percent = 0.035

initial_sparks_amount = 8

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@
/obj/item/stack/medical/mesh/bloody = 2,
/obj/item/stack/medical/bandage = 4,
/obj/item/reagent_containers/pill/robotic_patch/synth_repair = 4,
/obj/item/stack/medical/wound_recovery = 2,
/obj/item/stack/medical/wound_recovery/rapid_coagulant = 2,
/obj/item/stack/medical/wound_recovery/robofoam = 2,
/obj/item/stack/medical/wound_recovery/robofoam_super = 1,
/obj/item/stack/medical/gauze/alu_splint = 2,
/obj/item/storage/pill_bottle/painkiller = 4,
/obj/item/storage/medkit/civil_defense/stocked = 2,
),
Expand Down

0 comments on commit 739e6e7

Please sign in to comment.