mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
Da white kit nerf update: sutures and regen mesh. (#47092)
* Base * epic * bandaid begone * Documentation * Bugmash * Replaces bruise packs and ointment in on maps. * Fixes for testmerge * new line * Dirty web * Nasty webedit * med suture is now a chemical recipe, adds cellulose reagent
This commit is contained in:
@@ -70649,8 +70649,8 @@
|
||||
"cBx" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/item/reagent_containers/syringe/epinephrine{
|
||||
pixel_x = -3;
|
||||
pixel_y = 3
|
||||
@@ -78135,8 +78135,8 @@
|
||||
"cPs" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 4
|
||||
},
|
||||
@@ -84020,8 +84020,8 @@
|
||||
},
|
||||
/obj/item/book/manual/wiki/medicine,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 1
|
||||
},
|
||||
@@ -86137,8 +86137,8 @@
|
||||
"ddp" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/structure/sign/warning/nosmoking{
|
||||
pixel_y = 32
|
||||
},
|
||||
@@ -90939,8 +90939,8 @@
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
|
||||
@@ -4411,11 +4411,11 @@
|
||||
/area/maintenance/solars/port/fore)
|
||||
"ajj" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/medical/ointment{
|
||||
/obj/item/stack/medical/mesh{
|
||||
pixel_x = 3;
|
||||
pixel_y = -2
|
||||
},
|
||||
/obj/item/stack/medical/bruise_pack{
|
||||
/obj/item/stack/medical/suture{
|
||||
pixel_x = -3;
|
||||
pixel_y = 2
|
||||
},
|
||||
@@ -42141,8 +42141,8 @@
|
||||
/area/bridge/showroom/corporate)
|
||||
"bOG" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/reagent_containers/syringe/multiver,
|
||||
/obj/item/reagent_containers/syringe/epinephrine{
|
||||
pixel_x = -1;
|
||||
@@ -47206,8 +47206,8 @@
|
||||
"cap" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 1
|
||||
},
|
||||
@@ -52983,11 +52983,11 @@
|
||||
pixel_y = -1
|
||||
},
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/stack/medical/bruise_pack{
|
||||
/obj/item/stack/medical/suture{
|
||||
pixel_x = -2;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -54397,9 +54397,9 @@
|
||||
/obj/effect/decal/cleanable/blood/gibs/limb,
|
||||
/obj/structure/rack,
|
||||
/obj/item/storage/firstaid/regular,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/stack/medical/suture,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/item/clothing/glasses/hud/health,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/secondary)
|
||||
|
||||
@@ -31415,8 +31415,8 @@
|
||||
/area/maintenance/department/engine)
|
||||
"bBY" = (
|
||||
/obj/structure/closet/crate/medical,
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/mesh,
|
||||
/obj/item/stack/medical/suture,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/engine)
|
||||
"bBZ" = (
|
||||
@@ -36877,7 +36877,7 @@
|
||||
/turf/open/space,
|
||||
/area/space/nearstation)
|
||||
"bNF" = (
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/stack/medical/suture,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/engine)
|
||||
"bNG" = (
|
||||
|
||||
@@ -49,7 +49,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/airlock_painter = 1,
|
||||
/obj/item/stack/cable_coil = 4,
|
||||
/obj/item/stack/cable_coil/five = 6,
|
||||
/obj/item/stack/medical/bruise_pack = 1,
|
||||
/obj/item/stack/medical/suture = 1,
|
||||
/obj/item/stack/rods/ten = 9,
|
||||
/obj/item/stack/rods/twentyfive = 1,
|
||||
/obj/item/stack/rods/fifty = 1,
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
full_w_class = WEIGHT_CLASS_TINY
|
||||
resistance_flags = FLAMMABLE
|
||||
var/value = 0
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
/obj/item/stack/spacecash/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -13,19 +13,33 @@
|
||||
novariants = FALSE
|
||||
item_flags = NOBLUDGEON
|
||||
var/self_delay = 50
|
||||
var/other_delay = 0
|
||||
var/repeating = FALSE
|
||||
|
||||
/obj/item/stack/medical/attack(mob/living/M, mob/user)
|
||||
. = ..()
|
||||
try_heal(M, user)
|
||||
|
||||
|
||||
/obj/item/stack/medical/proc/try_heal(mob/living/M, mob/user, silent = FALSE)
|
||||
if(!M.can_inject(user, TRUE))
|
||||
return
|
||||
if(M == user)
|
||||
user.visible_message("<span class='notice'>[user] starts to apply \the [src] on [user.p_them()]self...</span>", "<span class='notice'>You begin applying \the [src] on yourself...</span>")
|
||||
if(!silent)
|
||||
user.visible_message("<span class='notice'>[user] starts to apply \the [src] on [user.p_them()]self...</span>", "<span class='notice'>You begin applying \the [src] on yourself...</span>")
|
||||
if(!do_mob(user, M, self_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject, user, TRUE)))
|
||||
return
|
||||
else if(other_delay)
|
||||
if(!silent)
|
||||
user.visible_message("<span class='notice'>[user] starts to apply \the [src] on [M].</span>", "<span class='notice'>You begin applying \the [src] on [M]...</span>")
|
||||
if(!do_mob(user, M, other_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject, user, TRUE)))
|
||||
return
|
||||
|
||||
if(heal(M, user))
|
||||
log_combat(user, M, "healed", src.name)
|
||||
use(1)
|
||||
|
||||
if(repeating && amount > 0)
|
||||
try_heal(M, user, TRUE)
|
||||
|
||||
/obj/item/stack/medical/proc/heal(mob/living/M, mob/user)
|
||||
return
|
||||
@@ -88,6 +102,7 @@
|
||||
var/stop_bleeding = 1800
|
||||
self_delay = 20
|
||||
max_amount = 12
|
||||
grind_results = list(/datum/reagent/cellulose = 2)
|
||||
|
||||
/obj/item/stack/medical/gauze/heal(mob/living/M, mob/user)
|
||||
if(ishuman(M))
|
||||
@@ -149,3 +164,117 @@
|
||||
/obj/item/stack/medical/ointment/suicide_act(mob/living/user)
|
||||
user.visible_message("<span class='suicide'>[user] is squeezing \the [src] into [user.p_their()] mouth! [user.p_do(TRUE)]n't [user.p_they()] know that stuff is toxic?</span>")
|
||||
return TOXLOSS
|
||||
|
||||
/obj/item/stack/medical/suture
|
||||
name = "suture"
|
||||
desc = "Sterile sutures used to seal up cuts and lacerations."
|
||||
gender = PLURAL
|
||||
singular_name = "suture"
|
||||
icon_state = "suture"
|
||||
self_delay = 30
|
||||
other_delay = 10
|
||||
amount = 15
|
||||
max_amount = 15
|
||||
repeating = TRUE
|
||||
var/heal_brute = 10
|
||||
grind_results = list(/datum/reagent/medicine/spaceacillin = 2)
|
||||
|
||||
/obj/item/stack/medical/suture/medicated
|
||||
name = "medicated suture"
|
||||
icon_state = "suture_purp"
|
||||
desc = "A suture infused with drugs that speed up wound healing of the treated laceration."
|
||||
heal_brute = 15
|
||||
grind_results = list(/datum/reagent/medicine/polypyr = 2)
|
||||
|
||||
/obj/item/stack/medical/suture/heal(mob/living/M, mob/user)
|
||||
. = ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>[M] is dead! You can not help [M.p_them()].</span>")
|
||||
return
|
||||
if(iscarbon(M))
|
||||
return heal_carbon(M, user, heal_brute, 0)
|
||||
if(isanimal(M))
|
||||
var/mob/living/simple_animal/critter = M
|
||||
if (!(critter.healable))
|
||||
to_chat(user, "<span class='warning'>You cannot use \the [src] on [M]!</span>")
|
||||
return FALSE
|
||||
else if (critter.health == critter.maxHealth)
|
||||
to_chat(user, "<span class='notice'>[M] is at full health.</span>")
|
||||
return FALSE
|
||||
user.visible_message("<span class='green'>[user] applies \the [src] on [M].</span>", "<span class='green'>You apply \the [src] on [M].</span>")
|
||||
M.heal_bodypart_damage(heal_brute)
|
||||
return TRUE
|
||||
|
||||
to_chat(user, "<span class='warning'>You can't heal [M] with the \the [src]!</span>")
|
||||
|
||||
/obj/item/stack/medical/mesh
|
||||
name = "regenerative mesh"
|
||||
desc = "A bacteriostatic mesh used to dress burns."
|
||||
gender = PLURAL
|
||||
singular_name = "regenerative mesh"
|
||||
icon_state = "regen_mesh"
|
||||
self_delay = 30
|
||||
other_delay = 10
|
||||
amount = 15
|
||||
max_amount = 15
|
||||
repeating = TRUE
|
||||
var/heal_burn = 10
|
||||
var/is_open = TRUE ///This var determines if the sterile packaging of the mesh has been opened.
|
||||
grind_results = list(/datum/reagent/medicine/spaceacillin = 2)
|
||||
|
||||
/obj/item/stack/medical/mesh/Initialize()
|
||||
..()
|
||||
if(amount == max_amount) //only seal full mesh packs
|
||||
is_open = FALSE
|
||||
icon_state = "regen_mesh_closed"
|
||||
|
||||
|
||||
/obj/item/stack/medical/mesh/update_icon()
|
||||
if(!is_open)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/stack/medical/mesh/heal(mob/living/M, mob/user)
|
||||
. = ..()
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>[M] is dead! You can not help [M.p_them()].</span>")
|
||||
return
|
||||
if(iscarbon(M))
|
||||
return heal_carbon(M, user, 0, heal_burn)
|
||||
to_chat(user, "<span class='warning'>You can't heal [M] with the \the [src]!</span>")
|
||||
|
||||
|
||||
/obj/item/stack/medical/mesh/try_heal(mob/living/M, mob/user, silent = FALSE)
|
||||
if(!is_open)
|
||||
to_chat(user, "<span class='warning'>You need to open [src] first.</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/stack/medical/mesh/AltClick(mob/living/user)
|
||||
if(!is_open)
|
||||
to_chat(user, "<span class='warning'>You need to open [src] first.</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/stack/medical/mesh/attack_hand(mob/user)
|
||||
if(!is_open & user.get_inactive_held_item() == src)
|
||||
to_chat(user, "<span class='warning'>You need to open [src] first.</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/stack/medical/mesh/attack_self(mob/user)
|
||||
if(!is_open)
|
||||
is_open = TRUE
|
||||
to_chat(user, "<span class='notice'>You open the sterile mesh package.</span>")
|
||||
update_icon()
|
||||
playsound(src, 'sound/items/poster_ripped.ogg', 20, TRUE)
|
||||
. = ..()
|
||||
|
||||
/*
|
||||
The idea is for these medical devices to work like a hybrid of the old brute packs and tend wounds,
|
||||
they heal a little at a time, have reduced healing density and does not allow for rapid healing while in combat.
|
||||
However they provice graunular control of where the healing is directed, this makes them better for curing work-related cuts and scrapes.
|
||||
|
||||
The interesting limb targeting mechanic is retained and i still believe they will be a viable choice, especially when healing others in the field.
|
||||
*/
|
||||
|
||||
|
||||
@@ -230,7 +230,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
resistance_flags = FLAMMABLE
|
||||
merge_type = /obj/item/stack/sheet/mineral/wood
|
||||
novariants = TRUE
|
||||
grind_results = list(/datum/reagent/carbon = 20)
|
||||
grind_results = list(/datum/reagent/cellulose = 20) //no lignocellulose or lignin reagents yet,
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood/get_main_recipes()
|
||||
. = ..()
|
||||
@@ -259,7 +259,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
|
||||
resistance_flags = FLAMMABLE
|
||||
merge_type = /obj/item/stack/sheet/mineral/bamboo
|
||||
grind_results = list("carbon" = 5)
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
/obj/item/stack/sheet/mineral/bamboo/get_main_recipes()
|
||||
. = ..()
|
||||
@@ -308,6 +308,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/cloth
|
||||
drop_sound = 'sound/items/handling/cloth_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
|
||||
grind_results = list(/datum/reagent/cellulose = 20)
|
||||
|
||||
/obj/item/stack/sheet/cloth/get_main_recipes()
|
||||
. = ..()
|
||||
@@ -354,6 +355,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/cotton
|
||||
var/pull_effort = 30
|
||||
var/loom_result = /obj/item/stack/sheet/cloth
|
||||
grind_results = list(/datum/reagent/cellulose = 20)
|
||||
|
||||
/obj/item/stack/sheet/cotton/durathread
|
||||
name = "raw durathread bundle"
|
||||
@@ -363,7 +365,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/cotton/durathread
|
||||
pull_effort = 70
|
||||
loom_result = /obj/item/stack/sheet/durathread
|
||||
|
||||
grind_results = list()
|
||||
|
||||
/*
|
||||
* Cardboard
|
||||
@@ -429,6 +431,7 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
|
||||
throwforce = 0
|
||||
merge_type = /obj/item/stack/sheet/cardboard
|
||||
novariants = TRUE
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
/obj/item/stack/sheet/cardboard/get_main_recipes()
|
||||
. = ..()
|
||||
@@ -624,6 +627,7 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra
|
||||
item_state = "sheet-paper"
|
||||
merge_type = /obj/item/stack/sheet/paperframes
|
||||
resistance_flags = FLAMMABLE
|
||||
grind_results = list(/datum/reagent/cellulose = 20)
|
||||
|
||||
/obj/item/stack/sheet/paperframes/get_main_recipes()
|
||||
. = ..()
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
amount = 25
|
||||
max_amount = 25
|
||||
resistance_flags = FLAMMABLE
|
||||
grind_results = list(/datum/reagent/cellulose = 5)
|
||||
|
||||
/obj/item/stack/packageWrap/suicide_act(mob/living/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins wrapping [user.p_them()]self in \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
return
|
||||
var/static/items_inside = list(
|
||||
/obj/item/stack/medical/gauze = 1,
|
||||
/obj/item/stack/medical/bruise_pack = 2,
|
||||
/obj/item/stack/medical/ointment = 2,
|
||||
/obj/item/stack/medical/suture = 2,
|
||||
/obj/item/stack/medical/mesh = 2,
|
||||
/obj/item/reagent_containers/hypospray/medipen = 1)
|
||||
generate_items_inside(items_inside,src)
|
||||
|
||||
@@ -103,8 +103,8 @@
|
||||
return
|
||||
var/static/items_inside = list(
|
||||
/obj/item/stack/medical/gauze = 1,
|
||||
/obj/item/stack/medical/bruise_pack = 2,
|
||||
/obj/item/stack/medical/ointment = 2,
|
||||
/obj/item/stack/medical/suture = 2,
|
||||
/obj/item/stack/medical/mesh = 2,
|
||||
/obj/item/reagent_containers/hypospray/medipen = 1,
|
||||
/obj/item/surgical_drapes = 1,
|
||||
/obj/item/scalpel = 1,
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
throwforce = 0
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
grind_results = list(/datum/reagent/cellulose = 10) //really partially hemicellulose
|
||||
|
||||
/obj/item/grown/corncob/attackby(obj/item/grown/W, mob/user, params)
|
||||
if(W.get_sharpness())
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
drop_sound = 'sound/items/handling/paper_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/paper_pickup.ogg'
|
||||
grind_results = list(/datum/reagent/cellulose = 3)
|
||||
|
||||
|
||||
var/extra_headers //For additional styling or other js features.
|
||||
|
||||
@@ -1921,3 +1921,11 @@
|
||||
color = "#9C5A19"
|
||||
taste_description = "bananas"
|
||||
can_synth = TRUE
|
||||
|
||||
/datum/reagent/cellulose
|
||||
name = "Cellulose Fibers"
|
||||
description = "A crystaline polydextrose polymer, plants swear by this stuff."
|
||||
reagent_state = SOLID
|
||||
color = "#E6E6DA"
|
||||
taste_mult = 0
|
||||
|
||||
|
||||
@@ -232,3 +232,15 @@
|
||||
results = list(/datum/reagent/medicine/granibitaluri = 1)
|
||||
required_reagents = list(/datum/reagent/water = 1, /datum/reagent/space_cleaner/sterilizine = 1) //haha guys totally not some sort of saline reference!
|
||||
required_temp = 373
|
||||
|
||||
/datum/chemical_reaction/medsuture
|
||||
name = "Medicated Suture"
|
||||
id = "med_suture"
|
||||
required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/toxin/formaldehyde = 30, /datum/reagent/medicine/polypyr = 30) //This might be a bit much, reagent cost should be reviewed after implementation.
|
||||
|
||||
/datum/chemical_reaction/medsuture/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/stack/medical/suture/medicated(location)
|
||||
return
|
||||
|
||||
|
||||
@@ -700,3 +700,10 @@
|
||||
/datum/chemical_reaction/slime_extractification/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/slime_extract/grey(location)
|
||||
|
||||
/datum/chemical_reaction/cellulose_carbonization
|
||||
name = "Cellulose_Carbonization"
|
||||
id = /datum/reagent/carbon
|
||||
results = list(/datum/reagent/carbon = 1)
|
||||
required_reagents = list(/datum/reagent/cellulose = 1)
|
||||
required_temp = 512
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 44 KiB |
Reference in New Issue
Block a user