Surgery trays, material knife shrapnel extraction, ghetto stitches (#6940)

Also adds a framework for custom bandage descriptions.
This commit is contained in:
Matt Atlas
2019-09-07 14:42:36 +03:00
committed by Erki
parent 27437a423a
commit cf0fc45ab2
8 changed files with 309 additions and 176 deletions
+4 -1
View File
@@ -1138,7 +1138,10 @@ Note that amputating the affected organ does in fact remove the infection from t
var/this_wound_desc = W.desc
if(W.damage_type == BURN && W.salved) this_wound_desc = "salved [this_wound_desc]"
if(W.bleeding()) this_wound_desc = "bleeding [this_wound_desc]"
else if(W.bandaged) this_wound_desc = "bandaged [this_wound_desc]"
if(W.bandaged == 1)
this_wound_desc = "bandaged [this_wound_desc]"
else if(W.bandaged != 0)
this_wound_desc = "[W.bandaged] [this_wound_desc]"
if(W.germ_level > 600) this_wound_desc = "badly infected [this_wound_desc]"
else if(W.germ_level > 330) this_wound_desc = "lightly infected [this_wound_desc]"
if(wound_descriptors[this_wound_desc])
+4 -2
View File
@@ -142,8 +142,10 @@
return 0
/datum/wound/proc/bandage()
bandaged = 1
/datum/wound/proc/bandage(var/examine_desc)
if(!examine_desc)
bandaged = 1
else bandaged = examine_desc
/datum/wound/proc/salve()
salved = 1
+51
View File
@@ -489,6 +489,57 @@ obj/structure/cable/proc/cableColor(var/colorC)
stacktype = /obj/item/stack/cable_coil
drop_sound = 'sound/items/drop/accessory.ogg'
/obj/item/stack/cable_coil/attack(mob/living/carbon/M as mob, mob/user as mob)
if(..())
return 1
if(amount <= 10)
to_chat(user, "<span class='notice'>You don't have enough coils for this!</span>")
if (ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
if(affecting.open == 0)
if(affecting.is_bandaged())
to_chat(user, "<span class='warning'>The cuts on [M]'s [affecting.name] have already been closed.</span>")
return 1
else
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
for(var/datum/wound/W in affecting.wounds)
if(W.internal)
continue
if(W.bandaged)
continue
if(W.current_stage <= W.max_bleeding_stage)
user.visible_message("<span class='notice'>\The [user] starts carefully suturing the open wound on [M]'s [affecting.name]...</span>", \
"<span class='notice'>You start carefully suturing the open wound on [M]'s [affecting.name]... This will take a while.</span>")
if(!do_mob(user, M, 200))
user.visible_message("<span class='danger'>[user]'s hand slips and tears open the wound on [M]'s [affecting.name]!</span>", \
"<span class='danger'><font size=2>The wound on your [affecting.name] is torn open!</font></span>")
M.apply_damage(rand(1,10), BRUTE)
break
user.visible_message("<span class='notice'>\The [user] barely manages to stitch \a [W.desc] on [M]'s [affecting.name].</span>", \
"<span class='notice'>You barely manage to stitch \a [W.desc] on [M]'s [affecting.name].</span>" )
W.bandage("cable-stitched")
use(10)
H.apply_damage(25, HALLOSS)
if(prob(50))
var/obj/item/organ/external/O = H.get_organ(user.zone_sel.selecting)
to_chat(H, "<span class='danger'>Something burns in your [O.name]!</span>")
O.germ_level += rand(400, 600)
else
to_chat(user, "<span class='notice'>This wound isn't large enough for a stitch!</span>")
affecting.update_damages()
else
if (can_operate(H))
if (do_surgery(H,user,src))
return
else
to_chat(user, "<span class='notice'>You can't suture this kind of wound!</span>")
return
/obj/item/stack/cable_coil/iscoil()
return TRUE