Medical update - Muscle wound, Splints, Bandages, Closer Examine (#2336)

* everything but wound topics

* Update bodypart_aid.dm

* aaa

* aaa

* aaa

* aaaa

* Update _bodyparts.dm

* Update carbon_examine.dm

* Update bodypart_aid.dm

* Update slash.dm

* Wound topics, self grasping on a topic, bandages on top uniform

* Merge branch 'master' into med
This commit is contained in:
Azarak
2020-12-29 23:48:58 +00:00
committed by GitHub
parent 610c4c19b9
commit 0992fc86a5
29 changed files with 2033 additions and 17 deletions
+36 -1
View File
@@ -90,8 +90,16 @@
var/last_maxed
/// How much generic bleedstacks we have on this bodypart
var/generic_bleedstacks
//SKYRAT EDIT CHANGE BEGIN - MEDICAL
/*
/// If we have a gauze wrapping currently applied (not including splints)
var/obj/item/stack/current_gauze
*/
/// If we have a gauze wrapping currently applied
var/datum/bodypart_aid/gauze/current_gauze
/// If we have a splint currently applied
var/datum/bodypart_aid/splint/current_splint
//SKYRAT EDIT CHANGE END
/// If something is currently grasping this bodypart and trying to staunch bleeding (see [/obj/item/self_grasp])
var/obj/item/self_grasp/grasped_by
var/rendered_bp_icon //SKYRAT EDIT ADDITION - CUSTOMIZATION
@@ -114,6 +122,12 @@
if(length(wounds))
stack_trace("[type] qdeleted with [length(wounds)] uncleared wounds")
wounds.Cut()
//SKYRAT EDIT ADDITION BEGIN - MEDICAL
if(current_gauze)
qdel(current_gauze)
if(current_splint)
qdel(current_splint)
//SKYRAT EDIT ADDITION END
return ..()
@@ -181,7 +195,11 @@
var/turf/T = get_turf(src)
if(status != BODYPART_ROBOTIC)
playsound(T, 'sound/misc/splort.ogg', 50, TRUE, -1)
seep_gauze(9999) // destroy any existing gauze if any exists
//seep_gauze(9999) // destroy any existing gauze if any exists
if(current_gauze)
qdel(current_gauze)
if(current_splint)
qdel(current_splint)
for(var/obj/item/organ/drop_organ in get_organs())
drop_organ.transfer_to_limb(src, owner)
for(var/obj/item/I in src)
@@ -268,6 +286,11 @@
// note that there's no handling for BIO_JUST_FLESH since we don't have any that are that right now (slimepeople maybe someday)
// standard humanoids
if(BIO_FLESH_BONE)
//SKYRAT EDIT ADDITION BEGIN - MEDICAL
//We do a body zone check here because muscles dont have any variants for head or chest, and rolling a muscle wound on them wound end up on a wasted wound roll
if(body_zone != BODY_ZONE_CHEST && body_zone != BODY_ZONE_HEAD && prob(35))
wounding_type = WOUND_MUSCLE
//SKYRAT EDIT ADDITION END
// if we've already mangled the skin (critical slash or piercing wound), then the bone is exposed, and we can damage it with sharp weapons at a reduced rate
// So a big sharp weapon is still all you need to destroy a limb
if(mangled_state == BODYPART_MANGLED_FLESH && sharpness)
@@ -282,6 +305,12 @@
// now we have our wounding_type and are ready to carry on with wounds and dealing the actual damage
if(owner && wounding_dmg >= WOUND_MINIMUM_DAMAGE && wound_bonus != CANT_WOUND)
//SKYRAT EDIT ADDITION - MEDICAL
if(current_gauze)
current_gauze.take_damage()
if(current_splint)
current_splint.take_damage()
//SKYRAT EDIT ADDITION - MEDICAL
check_wounding(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)
for(var/i in wounds)
@@ -907,9 +936,11 @@
var/datum/wound/iter_wound = i
dam_mul *= iter_wound.damage_mulitplier_penalty
/*
if(!LAZYLEN(wounds) && current_gauze && !replaced) // no more wounds = no need for the gauze anymore
owner.visible_message("<span class='notice'>\The [current_gauze] on [owner]'s [name] fall away.</span>", "<span class='notice'>The [current_gauze] on your [name] fall away.</span>")
QDEL_NULL(current_gauze)
*/
wound_damage_multiplier = dam_mul
@@ -954,6 +985,7 @@
* Arguments:
* * gauze- Just the gauze stack we're taking a sheet from to apply here
*/
/*
/obj/item/bodypart/proc/apply_gauze(obj/item/stack/gauze)
if(!istype(gauze) || !gauze.absorption_capacity)
return
@@ -965,6 +997,7 @@
gauze.use(1)
if(newly_gauzed)
SEND_SIGNAL(src, COMSIG_BODYPART_GAUZED, gauze)
*/
/**
* seep_gauze() is for when a gauze wrapping absorbs blood or pus from wounds, lowering its absorption capacity.
@@ -974,6 +1007,7 @@
* Arguments:
* * seep_amt - How much absorption capacity we're removing from our current bandages (think, how much blood or pus are we soaking up this tick?)
*/
/*
/obj/item/bodypart/proc/seep_gauze(seep_amt = 0)
if(!current_gauze)
return
@@ -982,3 +1016,4 @@
owner.visible_message("<span class='danger'>\The [current_gauze] on [owner]'s [name] fall away in rags.</span>", "<span class='warning'>\The [current_gauze] on your [name] fall away in rags.</span>", vision_distance=COMBAT_MESSAGE_RANGE)
QDEL_NULL(current_gauze)
SEND_SIGNAL(src, COMSIG_BODYPART_GAUZE_DESTROYED)
*/