mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 16:38:22 +01:00
Ports arterial bleeding and tendon severing (#7432)
This commit is contained in:
@@ -174,6 +174,12 @@
|
||||
if(W.hitsound)
|
||||
playsound(loc, W.hitsound, 50, 1, -1)
|
||||
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/obj/item/organ/external/head = H.get_organ("head")
|
||||
if(head)
|
||||
head.sever_artery()
|
||||
|
||||
G.last_action = world.time
|
||||
flick(G.hud.icon_state, G.hud)
|
||||
|
||||
|
||||
@@ -208,8 +208,11 @@
|
||||
//splints
|
||||
for(var/organ in list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_R_FOOT,BP_L_FOOT))
|
||||
var/obj/item/organ/external/o = get_organ(organ)
|
||||
if(o && o.status & ORGAN_SPLINTED)
|
||||
msg += "<span class='warning'>[T.He] [T.has] a splint on [T.his] [o.name]!</span>\n"
|
||||
if(o)
|
||||
if(o.status & ORGAN_SPLINTED)
|
||||
msg += "<span class='warning'>[T.He] [T.has] a splint on [T.his] [o.name]!</span>\n"
|
||||
if(o.applied_pressure == src)
|
||||
msg += "<span class='warning'>[T.He] [T.is] applying pressure to [T.his] [o.name]!</span>\n"
|
||||
|
||||
if(mSmallsize in mutations)
|
||||
msg += "[T.He] [T.is] small halfling!\n"
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
to_chat(src, "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>")
|
||||
to_chat(H, "<span class='warning'>Repeat at least every 7 seconds.</span>")
|
||||
|
||||
else
|
||||
else if(!(apply_pressure(M, M.zone_sel.selecting)))
|
||||
help_shake_act(M)
|
||||
return 1
|
||||
|
||||
@@ -527,6 +527,36 @@
|
||||
qdel(rgrab)
|
||||
return success
|
||||
|
||||
//Apply pressure to wounds.
|
||||
/mob/living/carbon/human/proc/apply_pressure(mob/living/user, var/target_zone)
|
||||
var/obj/item/organ/external/organ = get_organ(target_zone)
|
||||
if(!organ || !(organ.status & ORGAN_BLEEDING) || organ.status & ORGAN_ROBOT)
|
||||
return 0
|
||||
|
||||
if(organ.applied_pressure)
|
||||
var/message = "<span class='warning'>[ismob(organ.applied_pressure)? "Someone" : "\A [organ.applied_pressure]"] is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"].</span>"
|
||||
to_chat(user, message)
|
||||
return 0
|
||||
|
||||
if(user == src)
|
||||
user.visible_message("<span class='notice'>\The [user] starts applying pressure to \his [organ.name]!</span>", "<span class='notice'>You start applying pressure to your [organ.name]!</span>")
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] starts applying pressure to [src]'s [organ.name]!</span>", "<span class='notice'>You start applying pressure to [src]'s [organ.name]!</span>")
|
||||
spawn(0)
|
||||
organ.applied_pressure = user
|
||||
|
||||
//apply pressure as long as they stay still and keep grabbing
|
||||
do_after(user, INFINITY, TRUE, display_progress = FALSE)
|
||||
|
||||
organ.applied_pressure = null
|
||||
|
||||
if(user == src)
|
||||
user.visible_message("<span class='notice'>\The [user] stops applying pressure to \his [organ.name]!</span>", "<span class='notice'>You stop applying pressure to your [organ.name]!</span>")
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] stops applying pressure to [src]'s [organ.name]!</span>", "<span class='notice'>You stop applying pressure to [src]'s [organ.name]!</span>")
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/carbon/human/verb/check_attacks()
|
||||
set name = "Check Attacks"
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not
|
||||
|
||||
appearance_flags = HAS_HAIR_COLOR
|
||||
flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_PAIN | NO_SLIP | NO_CHUBBY
|
||||
flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_PAIN | NO_SLIP | NO_CHUBBY | NO_ARTERIES | NO_TENDONS
|
||||
spawn_flags = CAN_JOIN | IS_WHITELISTED | NO_AGE_MINIMUM
|
||||
|
||||
blood_color = "#97dd7c"
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
heat_level_1 = 330 //Default 360
|
||||
heat_level_2 = 380 //Default 400
|
||||
heat_level_3 = 600 //Default 1000
|
||||
flags = NO_SLIP | NO_CHUBBY
|
||||
flags = NO_SLIP | NO_CHUBBY | NO_ARTERIES
|
||||
spawn_flags = CAN_JOIN | IS_WHITELISTED | NO_AGE_MINIMUM
|
||||
appearance_flags = HAS_SKIN_COLOR | HAS_HAIR_COLOR
|
||||
blood_color = "#E6E600" // dark yellow
|
||||
|
||||
@@ -1062,9 +1062,8 @@ mob/proc/yank_out_object()
|
||||
affected.take_damage((selection.w_class * 3), 0, 0, 1, "Embedded object extraction")
|
||||
|
||||
if(prob(selection.w_class * 5)) //I'M SO ANEMIC I COULD JUST -DIE-.
|
||||
var/datum/wound/internal_bleeding/I = new (min(selection.w_class * 5, 15))
|
||||
affected.wounds += I
|
||||
H.custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1)
|
||||
affected.sever_artery()
|
||||
H.custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 50)
|
||||
|
||||
if (ishuman(U))
|
||||
var/mob/living/carbon/human/human_user = U
|
||||
|
||||
Reference in New Issue
Block a user