From 8fd921237fbcc2bde9d5b29157eb1875f9bfad40 Mon Sep 17 00:00:00 2001
From: SabreML <57483089+SabreML@users.noreply.github.com>
Date: Wed, 24 Feb 2021 12:52:34 +0000
Subject: [PATCH] Grille Repairing (#15570)
---
code/game/objects/structures/grille.dm | 26 +++++++++++++-------------
code/game/objects/structures/window.dm | 14 +++++++++++---
2 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 1b7e86571de..68025f98fce 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -117,28 +117,28 @@
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSGRILLE)
-/obj/structure/grille/attackby(obj/item/W, mob/user, params)
+/obj/structure/grille/attackby(obj/item/I, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
add_fingerprint(user)
- if(istype(W, /obj/item/stack/rods) && broken)
- var/obj/item/stack/rods/R = W
- if(!shock(user, 90))
- user.visible_message("[user] rebuilds the broken grille.", \
- "You rebuild the broken grille.")
- new grille_type(loc)
- R.use(1)
- qdel(src)
- return
+ if(istype(I, /obj/item/stack/rods) && broken)
+ repair(user, I)
//window placing begin
- else if(is_glass_sheet(W))
- build_window(W, user)
+ else if(is_glass_sheet(I))
+ build_window(I, user)
return
//window placing end
- else if(istype(W, /obj/item/shard) || !shock(user, 70))
+ else if(istype(I, /obj/item/shard) || !shock(user, 70))
return ..()
+/obj/structure/grille/proc/repair(mob/user, obj/item/stack/rods/R)
+ user.visible_message("[user] rebuilds the broken grille.",
+ "You rebuild the broken grille.")
+ new grille_type(loc)
+ R.use(1)
+ qdel(src)
+
/obj/structure/grille/wirecutter_act(mob/user, obj/item/I)
. = TRUE
if(shock(user, 100))
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index edeaec45545..b0d9464a0a3 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -166,7 +166,15 @@
return 1 //skip the afterattack
add_fingerprint(user)
- if(istype(I, /obj/item/grab) && get_dist(src, user) < 2)
+ if(istype(I, /obj/item/stack/rods) && user.a_intent == INTENT_HELP)
+ for(var/obj/structure/grille/G in get_turf(src))
+ if(!G.broken)
+ continue
+ to_chat(user, "You start rebuilding the broken grille.")
+ if(do_after(user, 4 SECONDS, FALSE, G))
+ G.repair(user, I)
+
+ else if(istype(I, /obj/item/grab) && get_dist(src, user) < 2)
var/obj/item/grab/G = I
if(isliving(G.affecting))
var/mob/living/M = G.affecting
@@ -193,8 +201,8 @@
M.Weaken(5)
M.apply_damage(30)
take_damage(75)
- return
- return ..()
+ else
+ return ..()
/obj/structure/window/crowbar_act(mob/user, obj/item/I)