mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Medical System Updates...
* Dragging someone while injured (brute) will have a small chance of injuring them further that increases depending on how damaged they are. This coincides with the blood spatters that are already generated. * Blood is now actually lost from the person being dragged. * Added splints that can be applied to broken arms and legs, and will reduce effects of broken limbs. These can be removed the same way as handcuffs. They show up on the mob and on examine. * Added an autoinjector that can only hold five units, but acts like a hypospray. * Added an advanced medical kit that Medical Doctors spawn with that has Advanced Trauma Kits, Advanced Burn Kits, autoinjectors, and splints. * Health Scanners now show unsplinted fractures ONLY in arms or legs. * People in critical (less than -50 health) from external trauma (100+ damage from brute and/or burn) bleeding, and with unsplinted limbs, will send a message to anyone trying to drag them, to warn them it would be a bad idea trying to move them. They will suffer a lot more damage if dragged while lying down. * The correct procedure is therefore, A) Bring a roller bed, or B) Splint all limbs, stop all bleeding with gauze, and then drag them. * Fixed CPR being performed at weird health levels.
This commit is contained in:
@@ -70,7 +70,7 @@
|
||||
var/obj/item/weapon/storage/box/B = new(BPK)
|
||||
new /obj/item/weapon/pen(B)
|
||||
new /obj/item/device/pda/medical(src)
|
||||
new /obj/item/weapon/storage/firstaid/regular(src)
|
||||
new /obj/item/weapon/storage/firstaid/adv(src)
|
||||
new /obj/item/device/flashlight/pen(src)
|
||||
switch(pick("blue", "green", "purple"))
|
||||
if ("blue")
|
||||
@@ -158,7 +158,7 @@
|
||||
var/obj/item/weapon/storage/box/B = new(BPK)
|
||||
new /obj/item/weapon/pen(B)
|
||||
new /obj/item/device/pda/heads/cmo(src)
|
||||
new /obj/item/weapon/storage/firstaid/regular(src)
|
||||
new /obj/item/weapon/storage/firstaid/adv(src)
|
||||
new /obj/item/device/flashlight/pen(src)
|
||||
new /obj/item/weapon/cartridge/cmo(src)
|
||||
new /obj/item/device/radio/headset/heads/cmo(src)
|
||||
|
||||
@@ -119,8 +119,14 @@ MASS SPECTROMETER
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/e = H.organs[name]
|
||||
var/limb = e.getDisplayName()
|
||||
if(e.status & BROKEN)
|
||||
user.show_message("\red Bone fractures detected. Advanced scanner required for location.", 1)
|
||||
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!e.status & SPLINTED))
|
||||
user << "\red Unsecured fracture in subject [limb]. Splinting recommended for transport."
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/e = H.organs[name]
|
||||
if(e.status & BROKEN)
|
||||
user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1)
|
||||
break
|
||||
if(ishuman(M))
|
||||
if(M:vessel)
|
||||
|
||||
@@ -7,6 +7,11 @@ MEDICAL
|
||||
|
||||
|
||||
/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
var/heal_cap = 0
|
||||
|
||||
if(istype(src, /obj/item/stack/medical/advanced))
|
||||
heal_cap = -50
|
||||
|
||||
if (M.stat == 2)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
@@ -15,15 +20,6 @@ MEDICAL
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is dead, you cannot help [t_him]!"
|
||||
return
|
||||
if (M.health < 50)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (M.gender == FEMALE)
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
return
|
||||
|
||||
|
||||
if (!istype(M))
|
||||
user << "\red \The [src] cannot be applied to \the [M]!"
|
||||
@@ -46,6 +42,51 @@ MEDICAL
|
||||
if(!istype(affecting, /datum/organ/external))
|
||||
affecting = H.get_organ("head")
|
||||
|
||||
if(affecting.status & ROBOT)
|
||||
user << "Medical equipment for a robot arm? Better get a welder..."
|
||||
return
|
||||
|
||||
if(istype(src, /obj/item/stack/medical/splint))
|
||||
var/limb = affecting.getDisplayName()
|
||||
if(!((affecting.name == "l_arm") || (affecting.name == "r_arm") || (affecting.name == "l_leg") || (affecting.name == "r_leg")))
|
||||
user << "\red You can't apply a splint there!"
|
||||
return
|
||||
if(!affecting.status & BROKEN)
|
||||
user << "\red [M]'s [limb] isn't broken!"
|
||||
return
|
||||
if(affecting.status & SPLINTED)
|
||||
user << "\red [M]'s [limb] is already splinted!"
|
||||
return
|
||||
if (M != user)
|
||||
user.visible_message("\red [user] starts to apply \the [src] to [M]'s [limb].", "\red You start to apply \the [src] to [M]'s [limb].", "\red You hear something being wrapped.")
|
||||
else
|
||||
if((!user.hand && affecting.name == "r_arm") || (user.hand && affecting.name == "l_arm"))
|
||||
user << "\red You can't apply a splint to the arm you're using!"
|
||||
return
|
||||
user.visible_message("\red [user] starts to apply \the [src] to their [limb].", "\red You start to apply \the [src] to your [limb].", "\red You hear something being wrapped.")
|
||||
if(do_after(user, 50))
|
||||
if (M != user)
|
||||
user.visible_message("\red [user] finishes applying \the [src] to [M]'s [limb].", "\red You finish applying \the [src] to [M]'s [limb].", "\red You hear something being wrapped.")
|
||||
else
|
||||
if(prob(25))
|
||||
user.visible_message("\red [user] successfully applies \the [src] to their [limb].", "\red You successfully apply \the [src] to your [limb].", "\red You hear something being wrapped.")
|
||||
else
|
||||
user.visible_message("\red [user] fumbles \the [src].", "\red You fumble \the [src].", "\red You hear something being wrapped.")
|
||||
return
|
||||
affecting.status |= SPLINTED
|
||||
use(1)
|
||||
M.update_clothing()
|
||||
return
|
||||
|
||||
if (M.health < heal_cap)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (M.gender == FEMALE)
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
return
|
||||
|
||||
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
|
||||
H.UpdateDamageIcon()
|
||||
if (user)
|
||||
@@ -68,70 +109,15 @@ MEDICAL
|
||||
|
||||
M.updatehealth()
|
||||
else
|
||||
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
|
||||
if (M.health < heal_cap)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (M.gender == FEMALE)
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
return
|
||||
|
||||
use(1)
|
||||
|
||||
/obj/item/stack/medical/advanced/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if (M.stat == 2)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (M.gender == FEMALE)
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is dead, you cannot help [t_him]!"
|
||||
return
|
||||
if (M.health < 0)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (M.gender == FEMALE)
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
return
|
||||
|
||||
|
||||
if (!istype(M))
|
||||
user << "\red \The [src] cannot be applied to [M]!"
|
||||
return 1
|
||||
|
||||
if ( ! (istype(user, /mob/living/carbon/human) || \
|
||||
istype(user, /mob/living/silicon) || \
|
||||
istype(user, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") )
|
||||
user << "\red You don't have the dexterity to do this!"
|
||||
return 1
|
||||
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/external/affecting = H.get_organ("chest")
|
||||
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/user2 = user
|
||||
affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
|
||||
else
|
||||
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
||||
affecting = H.get_organ("head")
|
||||
|
||||
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
|
||||
H.UpdateDamageIcon()
|
||||
if (user)
|
||||
if (M != user)
|
||||
user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\
|
||||
"\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\
|
||||
"You hear gauze being ripped.")
|
||||
else
|
||||
var/t_his = "its"
|
||||
if (user.gender == MALE)
|
||||
t_his = "his"
|
||||
else if (user.gender == FEMALE)
|
||||
t_his = "her"
|
||||
user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\
|
||||
"\red You bandage your [affecting.display_name] with \the [src].",\
|
||||
"You hear gauze being ripped.")
|
||||
use(1)
|
||||
|
||||
M.updatehealth()
|
||||
else
|
||||
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
|
||||
|
||||
use(1)
|
||||
@@ -23,7 +23,7 @@
|
||||
return ..()
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/external/S = H.organs[limbloc]
|
||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
||||
if(S.status & DESTROYED)
|
||||
if(!(S.status & ATTACHABLE))
|
||||
user << "\red The wound is not ready for a replacement!"
|
||||
@@ -52,9 +52,16 @@
|
||||
S.take_damage(15)
|
||||
|
||||
S.status &= ~BROKEN
|
||||
S.status &= ~SPLINTED
|
||||
S.status &= ~ATTACHABLE
|
||||
S.status &= ~DESTROYED
|
||||
S.status |= ROBOT
|
||||
var/datum/organ/external/T = H.organs["[limbloc]"]
|
||||
T.status &= ~BROKEN
|
||||
T.status &= ~SPLINTED
|
||||
T.status &= ~ATTACHABLE
|
||||
T.status &= ~DESTROYED
|
||||
T.status |= ROBOT
|
||||
M.update_body()
|
||||
M.updatehealth()
|
||||
M.UpdateDamageIcon()
|
||||
|
||||
@@ -1712,6 +1712,7 @@ CIRCULAR SAW
|
||||
|
||||
if(IsFinalStage(temp.stage))
|
||||
temp.status &= ~BROKEN
|
||||
temp.status &= ~SPLINTED
|
||||
temp.stage = 0
|
||||
temp.perma_injury = 0
|
||||
temp.brute_dam = temp.min_broken_damage -1
|
||||
@@ -1819,6 +1820,7 @@ CIRCULAR SAW
|
||||
e.open = 0
|
||||
e.status &= ~BROKEN
|
||||
e.status &= ~DESTROYED
|
||||
e.status &= ~SPLINTED
|
||||
e.perma_injury = 0
|
||||
e.update_icon()
|
||||
H.update_body()
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/item/weapon/storage/firstaid/regular/New()
|
||||
..()
|
||||
if (empty) return
|
||||
new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src )
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
@@ -67,13 +67,13 @@
|
||||
/obj/item/weapon/storage/firstaid/adv/New()
|
||||
..()
|
||||
if (empty) return
|
||||
new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src )
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/stack/medical/advanced/bruise_pack(src)
|
||||
new /obj/item/stack/medical/advanced/bruise_pack(src)
|
||||
new /obj/item/stack/medical/advanced/bruise_pack(src)
|
||||
new /obj/item/stack/medical/advanced/ointment(src)
|
||||
new /obj/item/stack/medical/advanced/ointment(src)
|
||||
new /obj/item/stack/medical/advanced/ointment(src)
|
||||
new /obj/item/stack/medical/splint(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/kelotane
|
||||
|
||||
Reference in New Issue
Block a user