Merge pull request #12787 from CameronWoof/advanced-sutures-and-mesh
Ports Medicated Sutures and Advanced Regenerative Mesh from TG
@@ -11,6 +11,7 @@
|
|||||||
w_class = WEIGHT_CLASS_TINY
|
w_class = WEIGHT_CLASS_TINY
|
||||||
full_w_class = WEIGHT_CLASS_TINY
|
full_w_class = WEIGHT_CLASS_TINY
|
||||||
resistance_flags = FLAMMABLE
|
resistance_flags = FLAMMABLE
|
||||||
|
grind_results = list(/datum/reagent/cellulose = 10)
|
||||||
var/value = 0
|
var/value = 0
|
||||||
|
|
||||||
/obj/item/stack/spacecash/Initialize()
|
/obj/item/stack/spacecash/Initialize()
|
||||||
|
|||||||
@@ -207,6 +207,16 @@
|
|||||||
/obj/item/stack/medical/suture/one
|
/obj/item/stack/medical/suture/one
|
||||||
amount = 1
|
amount = 1
|
||||||
|
|
||||||
|
/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/one
|
||||||
|
amount = 1
|
||||||
|
|
||||||
/obj/item/stack/medical/suture/heal(mob/living/M, mob/user)
|
/obj/item/stack/medical/suture/heal(mob/living/M, mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(M.stat == DEAD)
|
if(M.stat == DEAD)
|
||||||
@@ -246,12 +256,30 @@
|
|||||||
/obj/item/stack/medical/mesh/one
|
/obj/item/stack/medical/mesh/one
|
||||||
amount = 1
|
amount = 1
|
||||||
|
|
||||||
|
/obj/item/stack/medical/mesh/advanced
|
||||||
|
name = "advanced regenerative mesh"
|
||||||
|
desc = "An advanced mesh made with aloe extracts and sterilizing chemicals, used to treat burns."
|
||||||
|
gender = PLURAL
|
||||||
|
singular_name = "advanced regenerative mesh"
|
||||||
|
icon_state = "aloe_mesh"
|
||||||
|
heal_burn = 15
|
||||||
|
grind_results = list(/datum/reagent/consumable/aloejuice = 1)
|
||||||
|
|
||||||
|
/obj/item/stack/medical/mesh/advanced/one
|
||||||
|
amount = 1
|
||||||
|
|
||||||
/obj/item/stack/medical/mesh/Initialize()
|
/obj/item/stack/medical/mesh/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
if(amount == max_amount) //only seal full mesh packs
|
if(amount == max_amount) //only seal full mesh packs
|
||||||
is_open = FALSE
|
is_open = FALSE
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
|
/obj/item/stack/medical/mesh/advanced/update_icon_state()
|
||||||
|
if(!is_open)
|
||||||
|
icon_state = "aloe_mesh_closed"
|
||||||
|
else
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/stack/medical/mesh/update_icon_state()
|
/obj/item/stack/medical/mesh/update_icon_state()
|
||||||
if(!is_open)
|
if(!is_open)
|
||||||
icon_state = "regen_mesh_closed"
|
icon_state = "regen_mesh_closed"
|
||||||
@@ -294,3 +322,37 @@
|
|||||||
playsound(src, 'sound/items/poster_ripped.ogg', 20, TRUE)
|
playsound(src, 'sound/items/poster_ripped.ogg', 20, TRUE)
|
||||||
return
|
return
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
|
/obj/item/stack/medical/aloe
|
||||||
|
name = "aloe cream"
|
||||||
|
desc = "A healing paste you can apply on wounds."
|
||||||
|
|
||||||
|
icon_state = "aloe_paste"
|
||||||
|
self_delay = 20
|
||||||
|
other_delay = 10
|
||||||
|
novariants = TRUE
|
||||||
|
amount = 20
|
||||||
|
max_amount = 20
|
||||||
|
var/heal = 3
|
||||||
|
grind_results = list(/datum/reagent/consumable/aloejuice = 1)
|
||||||
|
|
||||||
|
/obj/item/stack/medical/aloe/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 FALSE
|
||||||
|
if(iscarbon(M))
|
||||||
|
return heal_carbon(M, user, heal, heal)
|
||||||
|
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, heal)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
to_chat(user, "<span class='warning'>You can't heal [M] with the \the [src]!</span>")
|
||||||
@@ -288,7 +288,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
|||||||
merge_type = /obj/item/stack/sheet/mineral/wood
|
merge_type = /obj/item/stack/sheet/mineral/wood
|
||||||
novariants = TRUE
|
novariants = TRUE
|
||||||
material_type = /datum/material/wood
|
material_type = /datum/material/wood
|
||||||
grind_results = list(/datum/reagent/carbon = 20)
|
grind_results = list(/datum/reagent/cellulose = 20)
|
||||||
walltype = /turf/closed/wall/mineral/wood
|
walltype = /turf/closed/wall/mineral/wood
|
||||||
|
|
||||||
/obj/item/stack/sheet/mineral/wood/attackby(obj/item/W, mob/user, params) // NOTE: sheet_types.dm is where the WOOD stack lives. Maybe move this over there.
|
/obj/item/stack/sheet/mineral/wood/attackby(obj/item/W, mob/user, params) // NOTE: sheet_types.dm is where the WOOD stack lives. Maybe move this over there.
|
||||||
@@ -350,7 +350,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)
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
|
||||||
resistance_flags = FLAMMABLE
|
resistance_flags = FLAMMABLE
|
||||||
merge_type = /obj/item/stack/sheet/mineral/bamboo
|
merge_type = /obj/item/stack/sheet/mineral/bamboo
|
||||||
grind_results = list(/datum/reagent/carbon = 5)
|
grind_results = list(/datum/reagent/cellulose = 10)
|
||||||
material_type = /datum/material/bamboo
|
material_type = /datum/material/bamboo
|
||||||
|
|
||||||
/obj/item/stack/sheet/mineral/bamboo/get_main_recipes()
|
/obj/item/stack/sheet/mineral/bamboo/get_main_recipes()
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
amount = 5
|
amount = 5
|
||||||
max_amount = 5
|
max_amount = 5
|
||||||
resistance_flags = FLAMMABLE
|
resistance_flags = FLAMMABLE
|
||||||
|
grind_results = list(/datum/reagent/cellulose = 5)
|
||||||
|
|
||||||
var/list/conferred_embed = EMBED_HARMLESS
|
var/list/conferred_embed = EMBED_HARMLESS
|
||||||
var/overwrite_existing = FALSE
|
var/overwrite_existing = FALSE
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
amount = 25
|
amount = 25
|
||||||
max_amount = 25
|
max_amount = 25
|
||||||
resistance_flags = FLAMMABLE
|
resistance_flags = FLAMMABLE
|
||||||
|
grind_results = list(/datum/reagent/cellulose = 5)
|
||||||
|
|
||||||
/obj/item/stack/packageWrap/suicide_act(mob/living/user)
|
/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>")
|
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>")
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
throwforce = 0
|
throwforce = 0
|
||||||
throw_speed = 3
|
throw_speed = 3
|
||||||
throw_range = 7
|
throw_range = 7
|
||||||
|
grind_results = list(/datum/reagent/cellulose = 10)
|
||||||
|
|
||||||
/obj/item/grown/corncob/attackby(obj/item/grown/W, mob/user, params)
|
/obj/item/grown/corncob/attackby(obj/item/grown/W, mob/user, params)
|
||||||
if(W.get_sharpness())
|
if(W.get_sharpness())
|
||||||
|
|||||||
@@ -504,3 +504,34 @@
|
|||||||
prime()
|
prime()
|
||||||
if(!QDELETED(src))
|
if(!QDELETED(src))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/item/seeds/aloe
|
||||||
|
name = "pack of aloe seeds"
|
||||||
|
desc = "These seeds grow into aloe."
|
||||||
|
icon_state = "seed-aloe"
|
||||||
|
species = "aloe"
|
||||||
|
plantname = "Aloe"
|
||||||
|
product = /obj/item/reagent_containers/food/snacks/grown/aloe
|
||||||
|
lifespan = 60
|
||||||
|
endurance = 25
|
||||||
|
maturation = 4
|
||||||
|
production = 4
|
||||||
|
yield = 6
|
||||||
|
growthstages = 5
|
||||||
|
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||||
|
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05)
|
||||||
|
|
||||||
|
/obj/item/reagent_containers/food/snacks/grown/aloe
|
||||||
|
seed = /obj/item/seeds/aloe
|
||||||
|
name = "aloe"
|
||||||
|
desc = "Cut leaves from the aloe plant."
|
||||||
|
icon_state = "aloe"
|
||||||
|
filling_color = "#90EE90"
|
||||||
|
bitesize_mod = 5
|
||||||
|
foodtype = VEGETABLES
|
||||||
|
juice_results = list(/datum/reagent/consumable/aloejuice = 0)
|
||||||
|
distill_reagent = /datum/reagent/consumable/ethanol/tequila
|
||||||
|
|
||||||
|
/obj/item/reagent_containers/food/snacks/grown/aloe/microwave_act(obj/machinery/microwave/M)
|
||||||
|
new /obj/item/stack/medical/aloe(drop_location(), 2)
|
||||||
|
qdel(src)
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
icon_dead = "towercap-dead"
|
icon_dead = "towercap-dead"
|
||||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
|
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||||
mutatelist = list(/obj/item/seeds/tower/steel)
|
mutatelist = list(/obj/item/seeds/tower/steel)
|
||||||
|
reagents_add = list(/datum/reagent/cellulose = 0.05)
|
||||||
|
|
||||||
/obj/item/seeds/tower/steel
|
/obj/item/seeds/tower/steel
|
||||||
name = "pack of steel-cap mycelium"
|
name = "pack of steel-cap mycelium"
|
||||||
@@ -25,6 +26,7 @@
|
|||||||
plantname = "Steel Caps"
|
plantname = "Steel Caps"
|
||||||
product = /obj/item/grown/log/steel
|
product = /obj/item/grown/log/steel
|
||||||
mutatelist = list()
|
mutatelist = list()
|
||||||
|
reagents_add = list(/datum/reagent/cellulose = 0.05, /datum/reagent/iron = 0.05)
|
||||||
rarity = 20
|
rarity = 20
|
||||||
|
|
||||||
/obj/item/grown/log
|
/obj/item/grown/log
|
||||||
|
|||||||
@@ -157,12 +157,12 @@
|
|||||||
|
|
||||||
/datum/plant_gene/reagent/polypyr
|
/datum/plant_gene/reagent/polypyr
|
||||||
name = "Polypyrylium Oligomers"
|
name = "Polypyrylium Oligomers"
|
||||||
reagent_id = "polypyr"
|
reagent_id = /datum/reagent/medicine/polypyr
|
||||||
rate = 0.15
|
rate = 0.15
|
||||||
|
|
||||||
/datum/plant_gene/reagent/liquidelectricity
|
/datum/plant_gene/reagent/liquidelectricity
|
||||||
name = "Liquid Electricity"
|
name = "Liquid Electricity"
|
||||||
reagent_id = "liquidelectricity"
|
reagent_id = /datum/reagent/consumable/liquidelectricity
|
||||||
rate = 0.1
|
rate = 0.1
|
||||||
|
|
||||||
// Various traits affecting the product. Each must be somehow useful.
|
// Various traits affecting the product. Each must be somehow useful.
|
||||||
|
|||||||
@@ -71,6 +71,7 @@
|
|||||||
resistance_flags = FLAMMABLE
|
resistance_flags = FLAMMABLE
|
||||||
max_integrity = 50
|
max_integrity = 50
|
||||||
dog_fashion = /datum/dog_fashion/head
|
dog_fashion = /datum/dog_fashion/head
|
||||||
|
grind_results = list(/datum/reagent/cellulose = 3)
|
||||||
color = "white"
|
color = "white"
|
||||||
/// What's actually written on the paper.
|
/// What's actually written on the paper.
|
||||||
var/info = ""
|
var/info = ""
|
||||||
|
|||||||
@@ -999,3 +999,18 @@
|
|||||||
glass_name = "glass of bungo juice"
|
glass_name = "glass of bungo juice"
|
||||||
glass_desc = "Exotic! You feel like you are on vacation already."
|
glass_desc = "Exotic! You feel like you are on vacation already."
|
||||||
value = REAGENT_VALUE_COMMON
|
value = REAGENT_VALUE_COMMON
|
||||||
|
|
||||||
|
/datum/reagent/consumable/aloejuice
|
||||||
|
name = "Aloe Juice"
|
||||||
|
color = "#A3C48B"
|
||||||
|
description = "A healthy and refreshing juice."
|
||||||
|
taste_description = "vegetable"
|
||||||
|
glass_icon_state = "glass_yellow"
|
||||||
|
glass_name = "glass of aloe juice"
|
||||||
|
glass_desc = "A healthy and refreshing juice."
|
||||||
|
|
||||||
|
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M)
|
||||||
|
if(M.getToxLoss() && prob(30))
|
||||||
|
M.adjustToxLoss(-1, 0)
|
||||||
|
..()
|
||||||
|
. = TRUE
|
||||||
@@ -2296,3 +2296,9 @@
|
|||||||
if(data["blood_DNA"])
|
if(data["blood_DNA"])
|
||||||
S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
|
S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
|
||||||
|
|
||||||
|
/datum/reagent/cellulose
|
||||||
|
name = "Cellulose Fibers"
|
||||||
|
description = "A crystaline polydextrose polymer, plants swear by this stuff."
|
||||||
|
reagent_state = SOLID
|
||||||
|
color = "#E6E6DA"
|
||||||
|
taste_mult = 0
|
||||||
@@ -318,3 +318,19 @@
|
|||||||
id = /datum/reagent/medicine/psicodine
|
id = /datum/reagent/medicine/psicodine
|
||||||
results = list(/datum/reagent/medicine/psicodine = 5)
|
results = list(/datum/reagent/medicine/psicodine = 5)
|
||||||
required_reagents = list( /datum/reagent/medicine/mannitol = 2, /datum/reagent/water = 2, /datum/reagent/impedrezene = 1)
|
required_reagents = list( /datum/reagent/medicine/mannitol = 2, /datum/reagent/water = 2, /datum/reagent/impedrezene = 1)
|
||||||
|
|
||||||
|
/datum/chemical_reaction/medsuture
|
||||||
|
required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/toxin/formaldehyde = 20, /datum/reagent/medicine/polypyr = 15) //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)
|
||||||
|
|
||||||
|
/datum/chemical_reaction/medmesh
|
||||||
|
required_reagents = list(/datum/reagent/cellulose = 20, /datum/reagent/consumable/aloejuice = 20, /datum/reagent/space_cleaner/sterilizine = 10)
|
||||||
|
|
||||||
|
/datum/chemical_reaction/medmesh/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/mesh/advanced(location)
|
||||||
@@ -833,3 +833,8 @@
|
|||||||
required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/iron = 1, /datum/reagent/stable_plasma = 1)
|
required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/iron = 1, /datum/reagent/stable_plasma = 1)
|
||||||
mix_message = "The mixture congeals and gives off a faint copper scent."
|
mix_message = "The mixture congeals and gives off a faint copper scent."
|
||||||
required_temp = 350
|
required_temp = 350
|
||||||
|
|
||||||
|
/datum/chemical_reaction/cellulose_carbonization
|
||||||
|
results = list(/datum/reagent/carbon = 1)
|
||||||
|
required_reagents = list(/datum/reagent/cellulose = 1)
|
||||||
|
required_temp = 512
|
||||||
@@ -4,7 +4,8 @@
|
|||||||
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
|
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
|
||||||
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
|
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
|
||||||
icon_state = "seeds"
|
icon_state = "seeds"
|
||||||
products = list(/obj/item/seeds/ambrosia = 3,
|
products = list(/obj/item/seeds/aloe = 3,
|
||||||
|
/obj/item/seeds/ambrosia = 3,
|
||||||
/obj/item/seeds/apple = 3,
|
/obj/item/seeds/apple = 3,
|
||||||
/obj/item/seeds/banana = 3,
|
/obj/item/seeds/banana = 3,
|
||||||
/obj/item/seeds/berry = 3,
|
/obj/item/seeds/berry = 3,
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 51 KiB |