|
|
|
@@ -15,6 +15,16 @@
|
|
|
|
|
var/self_delay = 50
|
|
|
|
|
var/other_delay = 0
|
|
|
|
|
var/repeating = FALSE
|
|
|
|
|
/// How much brute we heal per application
|
|
|
|
|
var/heal_brute
|
|
|
|
|
/// How much burn we heal per application
|
|
|
|
|
var/heal_burn
|
|
|
|
|
/// How much we reduce bleeding per application on cut wounds
|
|
|
|
|
var/stop_bleeding
|
|
|
|
|
/// How much sanitization to apply to burns on application
|
|
|
|
|
var/sanitization
|
|
|
|
|
/// How much we add to flesh_healing for burn wounds on application
|
|
|
|
|
var/flesh_regeneration
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/attack(mob/living/M, mob/user)
|
|
|
|
|
. = ..()
|
|
|
|
@@ -70,8 +80,9 @@
|
|
|
|
|
icon_state = "brutepack"
|
|
|
|
|
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
|
|
|
|
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
|
|
|
|
var/heal_brute = 20
|
|
|
|
|
self_delay = 20
|
|
|
|
|
heal_brute = 40
|
|
|
|
|
self_delay = 40
|
|
|
|
|
other_delay = 20
|
|
|
|
|
grind_results = list(/datum/reagent/medicine/styptic_powder = 10)
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/bruise_pack/one
|
|
|
|
@@ -95,7 +106,8 @@
|
|
|
|
|
M.heal_bodypart_damage((heal_brute/2))
|
|
|
|
|
return TRUE
|
|
|
|
|
if(iscarbon(M))
|
|
|
|
|
return heal_carbon(M, user, heal_brute, 0)
|
|
|
|
|
return heal_carbon(M, user, heal_brute, heal_burn)
|
|
|
|
|
to_chat(user, "<span class='warning'>You can't heal [M] with \the [src]!</span>")
|
|
|
|
|
to_chat(user, "<span class='notice'>You can't heal [M] with the \the [src]!</span>")
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/bruise_pack/suicide_act(mob/user)
|
|
|
|
@@ -104,24 +116,27 @@
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/gauze
|
|
|
|
|
name = "medical gauze"
|
|
|
|
|
desc = "A roll of elastic cloth that is extremely effective at stopping bleeding, heals minor wounds."
|
|
|
|
|
desc = "A roll of elastic cloth, perfect for stabilizing all kinds of wounds, from cuts and burns, to broken bones. "
|
|
|
|
|
gender = PLURAL
|
|
|
|
|
singular_name = "medical gauze"
|
|
|
|
|
icon_state = "gauze"
|
|
|
|
|
var/stop_bleeding = 1800
|
|
|
|
|
var/heal_brute = 5
|
|
|
|
|
self_delay = 10
|
|
|
|
|
heal_brute = 5
|
|
|
|
|
self_delay = 50
|
|
|
|
|
other_delay = 20
|
|
|
|
|
amount = 6
|
|
|
|
|
absorption_rate = 0.25
|
|
|
|
|
absorption_capacity = 5
|
|
|
|
|
splint_factor = 0.35
|
|
|
|
|
custom_price = PRICE_REALLY_CHEAP
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/gauze/heal(mob/living/M, mob/user)
|
|
|
|
|
if(ishuman(M))
|
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
|
|
|
if(!H.bleedsuppress && H.bleed_rate) //so you can't stack bleed suppression
|
|
|
|
|
H.suppress_bloodloss(stop_bleeding)
|
|
|
|
|
to_chat(user, "<span class='notice'>You stop the bleeding of [M]!</span>")
|
|
|
|
|
H.adjustBruteLoss(-(heal_brute))
|
|
|
|
|
return TRUE
|
|
|
|
|
to_chat(user, "<span class='notice'>You can not use \the [src] on [M]!</span>")
|
|
|
|
|
// gauze is only relevant for wounds, which are handled in the wounds themselves
|
|
|
|
|
/obj/item/stack/medical/gauze/try_heal(mob/living/M, mob/user, silent)
|
|
|
|
|
var/obj/item/bodypart/limb = M.get_bodypart(check_zone(user.zone_selected))
|
|
|
|
|
if(limb)
|
|
|
|
|
if(limb.brute_dam > 40)
|
|
|
|
|
to_chat(user, "<span class='warning'>The bleeding on [user==M ? "your" : "[M]'s"] [limb.name] is from bruising, and cannot be treated with [src]!</span>")
|
|
|
|
|
else
|
|
|
|
|
to_chat(user, "<span class='warning'>There's no bleeding on [user==M ? "your" : "[M]'s"] [limb.name]</span>")
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/gauze/attackby(obj/item/I, mob/user, params)
|
|
|
|
|
if(I.tool_behaviour == TOOL_WIRECUTTER || I.get_sharpness())
|
|
|
|
@@ -143,9 +158,12 @@
|
|
|
|
|
/obj/item/stack/medical/gauze/improvised
|
|
|
|
|
name = "improvised gauze"
|
|
|
|
|
singular_name = "improvised gauze"
|
|
|
|
|
desc = "A roll of cloth roughly cut from something that can stop bleeding, but does not heal wounds."
|
|
|
|
|
stop_bleeding = 900
|
|
|
|
|
heal_brute = 0
|
|
|
|
|
desc = "A roll of cloth roughly cut from something that does a decent job of stabilizing wounds, but less efficiently so than real medical gauze."
|
|
|
|
|
self_delay = 60
|
|
|
|
|
other_delay = 30
|
|
|
|
|
absorption_rate = 0.15
|
|
|
|
|
absorption_capacity = 4
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/gauze/adv
|
|
|
|
|
name = "sterilized medical gauze"
|
|
|
|
@@ -161,49 +179,38 @@
|
|
|
|
|
is_cyborg = 1
|
|
|
|
|
cost = 250
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/ointment
|
|
|
|
|
name = "ointment"
|
|
|
|
|
desc = "Used to treat those nasty burn wounds."
|
|
|
|
|
gender = PLURAL
|
|
|
|
|
singular_name = "ointment"
|
|
|
|
|
icon_state = "ointment"
|
|
|
|
|
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
|
|
|
|
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
|
|
|
|
var/heal_burn = 20
|
|
|
|
|
self_delay = 20
|
|
|
|
|
grind_results = list(/datum/reagent/medicine/silver_sulfadiazine = 10)
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/ointment/one
|
|
|
|
|
amount = 1
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/ointment/heal(mob/living/M, mob/user)
|
|
|
|
|
if(M.stat == DEAD)
|
|
|
|
|
to_chat(user, "<span class='notice'> [M] is dead. You can not help [M.p_them()]!</span>")
|
|
|
|
|
return
|
|
|
|
|
if(iscarbon(M))
|
|
|
|
|
return heal_carbon(M, user, 0, heal_burn)
|
|
|
|
|
if(AmBloodsucker(M))
|
|
|
|
|
return
|
|
|
|
|
to_chat(user, "<span class='notice'>You can't heal [M] with the \the [src]!</span>")
|
|
|
|
|
|
|
|
|
|
/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."
|
|
|
|
|
desc = "Basic sterile sutures used to seal up cuts and lacerations and stop bleeding."
|
|
|
|
|
gender = PLURAL
|
|
|
|
|
singular_name = "suture"
|
|
|
|
|
icon_state = "suture"
|
|
|
|
|
self_delay = 30
|
|
|
|
|
other_delay = 10
|
|
|
|
|
amount = 15
|
|
|
|
|
max_amount = 15
|
|
|
|
|
amount = 10
|
|
|
|
|
max_amount = 10
|
|
|
|
|
repeating = TRUE
|
|
|
|
|
var/heal_brute = 10
|
|
|
|
|
heal_brute = 10
|
|
|
|
|
stop_bleeding = 0.6
|
|
|
|
|
grind_results = list(/datum/reagent/medicine/spaceacillin = 2)
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/suture/emergency
|
|
|
|
|
name = "emergency suture"
|
|
|
|
|
desc = "A value pack of cheap sutures, not very good at repairing damage, but still decent at stopping bleeding."
|
|
|
|
|
heal_brute = 5
|
|
|
|
|
amount = 5
|
|
|
|
|
max_amount = 5
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/suture/one
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
@@ -223,10 +230,39 @@
|
|
|
|
|
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
|
|
|
|
|
return heal_carbon(M, user, heal_brute, heal_burn)
|
|
|
|
|
|
|
|
|
|
to_chat(user, "<span class='warning'>You can't heal [M] with the \the [src]!</span>")
|
|
|
|
|
to_chat(user, "<span class='warning'>You can't heal [M] with \the [src]!</span>")
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/ointment
|
|
|
|
|
name = "ointment"
|
|
|
|
|
desc = "Basic burn ointment, rated effective for second degree burns with proper bandaging, though it's still an effective stabilizer for worse burns. Not terribly good at outright healing burns though."
|
|
|
|
|
gender = PLURAL
|
|
|
|
|
singular_name = "ointment"
|
|
|
|
|
icon_state = "ointment"
|
|
|
|
|
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
|
|
|
|
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
|
|
|
|
amount = 10
|
|
|
|
|
max_amount = 10
|
|
|
|
|
self_delay = 40
|
|
|
|
|
other_delay = 20
|
|
|
|
|
|
|
|
|
|
heal_burn = 5
|
|
|
|
|
flesh_regeneration = 2.5
|
|
|
|
|
sanitization = 0.3
|
|
|
|
|
grind_results = list(/datum/reagent/medicine/kelotane = 10)
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/ointment/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, heal_burn)
|
|
|
|
|
to_chat(user, "<span class='warning'>You can't heal [M] with \the [src]!</span>")
|
|
|
|
|
|
|
|
|
|
/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/mesh
|
|
|
|
|
name = "regenerative mesh"
|
|
|
|
@@ -237,21 +273,41 @@
|
|
|
|
|
self_delay = 30
|
|
|
|
|
other_delay = 10
|
|
|
|
|
amount = 15
|
|
|
|
|
heal_burn = 10
|
|
|
|
|
max_amount = 15
|
|
|
|
|
repeating = TRUE
|
|
|
|
|
var/heal_burn = 10
|
|
|
|
|
sanitization = 0.75
|
|
|
|
|
flesh_regeneration = 3
|
|
|
|
|
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/one
|
|
|
|
|
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()
|
|
|
|
|
. = ..()
|
|
|
|
|
if(amount == max_amount) //only seal full mesh packs
|
|
|
|
|
is_open = FALSE
|
|
|
|
|
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()
|
|
|
|
|
if(!is_open)
|
|
|
|
|
icon_state = "regen_mesh_closed"
|
|
|
|
@@ -264,8 +320,8 @@
|
|
|
|
|
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>")
|
|
|
|
|
return heal_carbon(M, user, heal_brute, heal_burn)
|
|
|
|
|
to_chat(user, "<span class='warning'>You can't heal [M] with \the [src]!</span>")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/mesh/try_heal(mob/living/M, mob/user, silent = FALSE)
|
|
|
|
@@ -294,3 +350,83 @@
|
|
|
|
|
playsound(src, 'sound/items/poster_ripped.ogg', 20, TRUE)
|
|
|
|
|
return
|
|
|
|
|
. = ..()
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/bone_gel
|
|
|
|
|
name = "bone gel"
|
|
|
|
|
singular_name = "bone gel"
|
|
|
|
|
desc = "A potent medical gel that, when applied to a damaged bone in a proper surgical setting, triggers an intense melding reaction to repair the wound. Can be directly applied alongside surgical sticky tape to a broken bone in dire circumstances, though this is very harmful to the patient and not recommended."
|
|
|
|
|
|
|
|
|
|
icon = 'icons/obj/surgery.dmi'
|
|
|
|
|
icon_state = "bone-gel"
|
|
|
|
|
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
|
|
|
|
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
|
|
|
|
|
|
|
|
|
amount = 4
|
|
|
|
|
self_delay = 20
|
|
|
|
|
grind_results = list(/datum/reagent/medicine/bicaridine = 10)
|
|
|
|
|
novariants = TRUE
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/bone_gel/attack(mob/living/M, mob/user)
|
|
|
|
|
to_chat(user, "<span class='warning'>Bone gel can only be used on fractured limbs while aggressively holding someone!</span>")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/bone_gel/suicide_act(mob/user)
|
|
|
|
|
if(iscarbon(user))
|
|
|
|
|
var/mob/living/carbon/C = user
|
|
|
|
|
C.visible_message("<span class='suicide'>[C] is squirting all of \the [src] into [C.p_their()] mouth! That's not proper procedure! It looks like [C.p_theyre()] trying to commit suicide!</span>")
|
|
|
|
|
if(do_after(C, 2 SECONDS))
|
|
|
|
|
C.emote("scream")
|
|
|
|
|
for(var/i in C.bodyparts)
|
|
|
|
|
var/obj/item/bodypart/bone = i
|
|
|
|
|
var/datum/wound/brute/bone/severe/oof_ouch = new
|
|
|
|
|
oof_ouch.apply_wound(bone)
|
|
|
|
|
var/datum/wound/brute/bone/critical/oof_OUCH = new
|
|
|
|
|
oof_OUCH.apply_wound(bone)
|
|
|
|
|
|
|
|
|
|
for(var/i in C.bodyparts)
|
|
|
|
|
var/obj/item/bodypart/bone = i
|
|
|
|
|
bone.receive_damage(brute=60)
|
|
|
|
|
use(1)
|
|
|
|
|
return (BRUTELOSS)
|
|
|
|
|
else
|
|
|
|
|
C.visible_message("<span class='suicide'>[C] screws up like an idiot and still dies anyway!</span>")
|
|
|
|
|
return (BRUTELOSS)
|
|
|
|
|
|
|
|
|
|
/obj/item/stack/medical/bone_gel/cyborg
|
|
|
|
|
custom_materials = null
|
|
|
|
|
is_cyborg = 1
|
|
|
|
|
cost = 250
|
|
|
|
|
|
|
|
|
|
/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>")
|
|
|
|
|