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)