From a45f33c3133d4d959b4d48916ece6eebb1df4915 Mon Sep 17 00:00:00 2001 From: Luc <89928798+lewcc@users.noreply.github.com> Date: Thu, 19 Jan 2023 14:48:14 -0500 Subject: [PATCH] Shoving nerds into lockers (#20160) * Adds locker shove impacts * Feedback * we do a little testing * fuck --- code/game/objects/items/bodybag.dm | 4 ++++ .../objects/structures/crates_lockers/closets.dm | 15 +++++++++++++++ .../objects/structures/crates_lockers/crates.dm | 3 +++ 3 files changed, 22 insertions(+) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index df6f51fa9b7..8f95e69a1b0 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -75,3 +75,7 @@ if(loc && (isturf(loc) || istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) if(!open()) to_chat(user, "It won't budge!") + +/obj/structure/closet/body_bag/shove_impact(mob/living/target, mob/living/attacker) + // no, you can't shove people into a body bag + return FALSE diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 09f48cc8fc5..208b39265c5 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -383,6 +383,21 @@ // Its okay to silently teleport mobs out of lockers, since the only thing affected is their contents list. return +/obj/structure/closet/shove_impact(mob/living/target, mob/living/attacker) + if(opened) + target.forceMove(src) + visible_message("[attacker] shoves [target] inside [src]!", "You hear a thud, and something clangs shut.") + close() + add_attack_logs(attacker, target, "shoved into [src]") + return TRUE + + if(can_open()) + open() + visible_message("[attacker] shoves [target] against [src], knocking it open!") + target.KnockDown(3 SECONDS) + return TRUE + + return ..() /obj/structure/closet/bluespace name = "bluespace closet" diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index e20a0afff23..5491c0d186d 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -149,6 +149,9 @@ add_fingerprint(user) toggle(user, by_hand = TRUE) +/obj/structure/closet/crate/shove_impact(mob/living/target, mob/living/attacker) + return FALSE + // Called when a crate is delivered by MULE at a location, for notifying purposes /obj/structure/closet/crate/proc/notifyRecipient(destination) var/list/msg = list("[capitalize(name)] has arrived at [destination].")