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].")