mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 13:30:42 +01:00
Surgery trays, material knife shrapnel extraction, ghetto stitches (#6940)
Also adds a framework for custom bandage descriptions.
This commit is contained in:
@@ -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])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user