From 3e1c0ef03338f043dd0643c68e73a739bb79ac38 Mon Sep 17 00:00:00 2001 From: Ryumi Date: Fri, 13 Dec 2019 22:50:49 -0600 Subject: [PATCH] adds the ability for mobs to instantly replace a tile with a crowbar and tile in hands --- code/floors.dm | 78 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 27 deletions(-) diff --git a/code/floors.dm b/code/floors.dm index dc39d689..7744c876 100644 --- a/code/floors.dm +++ b/code/floors.dm @@ -1056,26 +1056,61 @@ icon_state = "floor" levelupdate() +/turf/simulated/floor/proc/pry_tile(mob/user as mob) + if(broken || burnt) + boutput(user, "You remove the broken plating.") + else + var/atom/A = new /obj/item/tile(src) + if(src.material) + A.setMaterial(src.material) + else + var/datum/material/M = getCachedMaterial("steel") + A.setMaterial(M) + to_plating() + playsound(src.loc, "sound/items/Crowbar.ogg", 80, 1) + + + +///Basically just does the exact same thing as prying and then replacing a tile VERY fast +/turf/simulated/floor/proc/replace_tile(obj/item/C as obj, mob/user as mob) + if (user.find_in_hands(/obj/item/crowbar)) + pry_tile(user) + restore_tile_check(C, user) + else + boutput(user, "You need to hold a crowbar in another hand before you can replace [src]!") + + return + + + + +/turf/simulated/floor/proc/restore_tile_check(obj/item/C as obj, mob/user as mob) + if(!intact) + restore_tile() + var/obj/item/tile/T = C + if(C.material) + src.setMaterial(C.material) + playsound(src.loc, "sound/weapons/Genhit.ogg", 50, 1) + + if(!istype(src.material, /datum/material/metal/steel)) + logTheThing("station", user, null, "constructs a floor (Material:: [src.material && src.material.name ? "[src.material.name]" : "*UNKNOWN*"]) at [log_loc(src)].") + + if(--T.amount < 1) + qdel(T) + return + + + /turf/simulated/floor/attackby(obj/item/C as obj, mob/user as mob) if(!C || !user) return 0 - + if(istype(C, /obj/item/crowbar) && intact) - if(broken || burnt) - boutput(user, "You remove the broken plating.") - else - var/atom/A = new /obj/item/tile(src) - if(src.material) - A.setMaterial(src.material) - else - var/datum/material/M = getCachedMaterial("steel") - A.setMaterial(M) + pry_tile(user) - to_plating() - playsound(src.loc, "sound/items/Crowbar.ogg", 80, 1) - - return + if (istype(C, /obj/item/tile) && intact) + replace_tile(C, user) if (istype(C, /obj/item/pen)) var/obj/item/pen/P = C @@ -1119,19 +1154,8 @@ boutput(user, "You must remove the plating first.") return - if(istype(C, /obj/item/tile) && !intact) - restore_tile() - var/obj/item/tile/T = C - if(C.material) - src.setMaterial(C.material) - playsound(src.loc, "sound/weapons/Genhit.ogg", 50, 1) - - if(!istype(src.material, /datum/material/metal/steel)) - logTheThing("station", user, null, "constructs a floor (Material:: [src.material && src.material.name ? "[src.material.name]" : "*UNKNOWN*"]) at [log_loc(src)].") - - if(--T.amount < 1) - qdel(T) - return + if(istype(C, /obj/item/tile)) + restore_tile_check(C, user) if(istype(C, /obj/item/cable_coil)) if(!intact)