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:
Krysonism
2019-10-20 13:18:42 -04:00
committed by moo
parent f5bd6a381d
commit 59a0440acf
15 changed files with 198 additions and 34 deletions
+10 -10
View File
@@ -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
},
+11 -11
View File
@@ -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" = (
+1 -1
View File
@@ -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,
+1
View File
@@ -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()
. = ..()
+131 -2
View File
@@ -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()
. = ..()
+1
View File
@@ -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>")
+4 -4
View File
@@ -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,
+1
View File
@@ -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())
+1
View File
@@ -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