diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index a8cae64cd0d..de609a82015 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -210,6 +210,24 @@ log_combat(attacker, defender, "sweeped (CQC)") reset_streak() return TRUE + if((attacker.grab_state == GRAB_KILL) && attacker.zone_selected == BODY_ZONE_HEAD && defender.stat != DEAD) + var/obj/item/bodypart/head = defender.get_bodypart("head") + if(head) + playsound(defender, 'sound/effects/wounds/crack1.ogg', 100) + defender.visible_message( + span_danger("[attacker] snaps the neck of [defender]!"), + span_userdanger("Your neck is snapped by [attacker]!"), + span_hear("You hear a sickening snap!"), + ignored_mobs = attacker + ) + to_chat(attacker, span_danger("In a swift motion, you snap the neck of [defender]!")) + log_combat(attacker, defender, "snapped neck") + defender.apply_damage(100, BRUTE, BODY_ZONE_HEAD, wound_bonus=CANT_WOUND) + if(!HAS_TRAIT(defender, TRAIT_NODEATH)) + defender.death() + defender.investigate_log("has had [defender.p_their()] neck snapped by [attacker].", INVESTIGATE_DEATHS) + + return TRUE add_to_streak("H", defender) if(check_streak(attacker, defender)) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index a6158c6b314..272cb54c8db 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -107,6 +107,22 @@ return ..() /datum/martial_art/the_sleeping_carp/harm_act(mob/living/attacker, mob/living/defender) + if((attacker.grab_state == GRAB_KILL) && attacker.zone_selected == BODY_ZONE_HEAD && defender.stat != DEAD) + var/obj/item/bodypart/head = defender.get_bodypart("head") + if(head) + playsound(defender, 'sound/effects/wounds/crack1.ogg', 100) + defender.visible_message( + span_danger("[attacker] snaps the neck of [defender]!"), + span_userdanger("Your neck is snapped by [attacker]!"), + span_hear("You hear a sickening snap!"), + ignored_mobs = attacker + ) + to_chat(attacker, span_danger("In a swift motion, you snap the neck of [defender]!")) + log_combat(attacker, defender, "snapped neck") + defender.apply_damage(100, BRUTE, BODY_ZONE_HEAD, wound_bonus=CANT_WOUND) + if(!HAS_TRAIT(defender, TRAIT_NODEATH)) + defender.death() + defender.investigate_log("has had [defender.p_their()] neck snapped by [attacker].", INVESTIGATE_DEATHS) add_to_streak("H", defender) if(check_streak(attacker, defender)) return TRUE