From b4c34c8b58e980d0bf6588a5c836123787d26023 Mon Sep 17 00:00:00 2001 From: Rob Bailey Date: Sun, 6 Oct 2019 16:26:12 -0700 Subject: [PATCH] Tabling Rework (#46383) * nutable * more damage * halved time * louder + slightly different sound * head slam + nerfed table damage * martial art breaks table + headsmash damages table * stamina boost to headsmash * functional table crushing --- code/datums/martial/_martial.dm | 1 + code/datums/martial/cqc.dm | 1 + code/datums/martial/sleeping_carp.dm | 1 + .../mood_events/generic_negative_events.dm | 5 +++ code/game/objects/structures/tables_racks.dm | 34 +++++++++++++----- sound/effects/tableheadsmash.ogg | Bin 0 -> 6746 bytes sound/effects/tableslam.ogg | Bin 0 -> 7233 bytes 7 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 sound/effects/tableheadsmash.ogg create mode 100644 sound/effects/tableslam.ogg diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm index 0253ecf8a4a..c18f2c8de24 100644 --- a/code/datums/martial/_martial.dm +++ b/code/datums/martial/_martial.dm @@ -8,6 +8,7 @@ var/block_chance = 0 //Chance to block melee attacks using items while on throw mode. var/help_verb var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts + var/smashes_tables = FALSE //If the martial art smashes tables when performing table slams and head smashes /datum/martial_art/proc/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) return FALSE diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 6f78f0a6b1b..b85cd782696 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -9,6 +9,7 @@ id = MARTIALART_CQC help_verb = /mob/living/carbon/human/proc/CQC_help block_chance = 75 + smashes_tables = TRUE var/old_grab_state = null var/restraining = FALSE diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 27d031b6542..dd1c7b6c0df 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -9,6 +9,7 @@ id = MARTIALART_SLEEPINGCARP allow_temp_override = FALSE help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + smashes_tables = TRUE var/old_grab_state = null /datum/martial_art/the_sleeping_carp/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 8d88c2dc39c..ecda528cbd8 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -84,6 +84,11 @@ description = "They want to play on the table!\n" mood_change = 2 +/datum/mood_event/table_headsmash + description = "My fucking head, that hurt..." + mood_change = -3 + timeout = 3 MINUTES + /datum/mood_event/brain_damage mood_change = -3 diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 90ad4e7b9f6..0de5a57caca 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -70,7 +70,10 @@ if(user.grab_state < GRAB_AGGRESSIVE) to_chat(user, "You need a better grip to do that!") return - tablepush(user, pushed_mob) + if(user.grab_state >= GRAB_NECK) + tableheadsmash(user, pushed_mob) + else + tablepush(user, pushed_mob) if(user.a_intent == INTENT_HELP) pushed_mob.visible_message("[user] begins to place [pushed_mob] onto [src]...", \ "[user] begins to place [pushed_mob] onto [src]...") @@ -126,14 +129,29 @@ pushed_mob.pass_flags &= ~PASSTABLE if(pushed_mob.loc != loc) //Something prevented the tabling return - pushed_mob.Paralyze(40) - pushed_mob.visible_message("[user] slams [pushed_mob] onto [src]!", \ - "[user] slams you onto [src]!") + pushed_mob.Knockdown(30) + pushed_mob.apply_damage(10, BRUTE) + pushed_mob.apply_damage(40, STAMINA) + if(user.mind?.martial_art?.smashes_tables) + deconstruct(FALSE) + playsound(pushed_mob, "sound/effects/tableslam.ogg", 90, TRUE) + pushed_mob.visible_message("[user] slams [pushed_mob] onto \the [src]!", \ + "[user] slams you onto \the [src]!") log_combat(user, pushed_mob, "tabled", null, "onto [src]") - if(!ishuman(pushed_mob)) - return - var/mob/living/carbon/human/H = pushed_mob - SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "table", /datum/mood_event/table) + SEND_SIGNAL(pushed_mob, COMSIG_ADD_MOOD_EVENT, "table", /datum/mood_event/table) + +/obj/structure/table/proc/tableheadsmash(mob/living/user, mob/living/pushed_mob) + pushed_mob.Knockdown(30) + pushed_mob.apply_damage(40, BRUTE, BODY_ZONE_HEAD) + pushed_mob.apply_damage(60, STAMINA) + take_damage(50) + if(user.mind?.martial_art?.smashes_tables) + deconstruct(FALSE) + playsound(pushed_mob, "sound/effects/tableheadsmash.ogg", 90, TRUE) + pushed_mob.visible_message("[user] smashes [pushed_mob]'s head against \the [src]!", + "[user] smashes your head against \the [src]") + log_combat(user, pushed_mob, "head slammed", null, "against [src]") + SEND_SIGNAL(pushed_mob, COMSIG_ADD_MOOD_EVENT, "table", /datum/mood_event/table_headsmash) /obj/structure/table/attackby(obj/item/I, mob/user, params) if(!(flags_1 & NODECONSTRUCT_1) && user.a_intent != INTENT_HELP) diff --git a/sound/effects/tableheadsmash.ogg b/sound/effects/tableheadsmash.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7f2a5f45a6a7d0cfec99e5eee0fc26a1342c14f7 GIT binary patch literal 6746 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 S#6YN3dUCHW$09j`^S=O13D2Ma literal 0 HcmV?d00001