diff --git a/code/game/objects/grille.dm b/code/game/objects/grille.dm index 23a05cf7be3..b584f5ec996 100644 --- a/code/game/objects/grille.dm +++ b/code/game/objects/grille.dm @@ -117,6 +117,49 @@ for(var/mob/O in oviewers()) O << text("\red [user] [src.anchored ? "fastens" : "unfastens"] the grille.") return + else if( istype(W,/obj/item/stack/sheet/rglass) || istype(W,/obj/item/stack/sheet/glass) ) + var/dir_to_set = 1 + if(src.loc == usr.loc) + dir_to_set = usr.dir + else + if( ( src.x == usr.x ) || (src.y == usr.y) ) //Only supposed to work for cardinal directions. + if( src.x == usr.x ) + if( src.y > usr.y ) + dir_to_set = 2 + else + dir_to_set = 1 + else if( src.y == usr.y ) + if( src.x > usr.x ) + dir_to_set = 8 + else + dir_to_set = 4 + else + usr << "\red You can't reach there.." + return //Only works for cardinal direcitons, diagonals aren't supposed to work like this. + for(var/obj/structure/window/WINDOW in src.loc) + if(WINDOW.dir == dir_to_set) + usr << "\red There is already a window facing this way there." + return + usr << "\blue You start placing the window" + if(do_after(user,20)) + if(!src) return //Grille destroyed while waiting + for(var/obj/structure/window/WINDOW in src.loc) + if(WINDOW.dir == dir_to_set)//checking this for a 2nd time to check if a window was made while we were waiting. + usr << "\red There is already a window facing this way there." + return + var/obj/structure/window/WD + if(istype(W,/obj/item/stack/sheet/rglass)) + WD = new/obj/structure/window(src.loc,1) //reinforced window + else + WD = new/obj/structure/window(src.loc,0) //normal window + WD.dir = dir_to_set + WD.ini_dir = dir_to_set + WD.anchored = 0 + WD.state = 0 + var/obj/item/stack/ST = W + ST.use(1) + usr << "\blue You place the [WD] on the [src]" + return else if(istype(W, /obj/item/weapon/shard)) src.health -= W.force * 0.1 else if(!shock(user, 70)) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 908418e501d..45c7100ece6 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -253,11 +253,6 @@ del(src) return -/obj/screen/close/DblClick() - if (src.master) - src.master:close(usr) - return - //What the fuck is this code Looks to be the parrying code. If you're grabbing someone, it might hit them instead... or something.--SkyMarshal /mob/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/game/objects/secstorage/secstorage.dm b/code/game/objects/secstorage/secstorage.dm index 0193fcb3977..e2d6a2599f8 100644 --- a/code/game/objects/secstorage/secstorage.dm +++ b/code/game/objects/secstorage/secstorage.dm @@ -75,6 +75,7 @@ if (cx > mx) cx = tx cy-- + //Foreach goto(56) src.closer.screen_loc = text("[],[]", mx, my) return @@ -94,7 +95,7 @@ /obj/item/weapon/secstorage/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() - if ((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && (src.locked == 1) && (!src.emagged)) + if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && (src.locked == 1) && (!src.emagged)) if(istype(W, /obj/item/weapon/card/emag)) var/obj/item/weapon/card/emag/E = W if(E.uses) @@ -260,7 +261,3 @@ src.orient_objs(7, 8, 10, 7) return return - -/obj/screen/storage/attackby(W, mob/user as mob) - src.master.attackby(W, user) - return diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm index a43a1d6e6eb..4a463a51e99 100644 --- a/code/game/objects/storage/storage.dm +++ b/code/game/objects/storage/storage.dm @@ -244,9 +244,6 @@ O.emp_act(severity) ..() -/obj/screen/storage/attackby(W, mob/user as mob) - src.master.attackby(W, user) - return // BubbleWrap - A box can be folded up to make card /obj/item/weapon/storage/attack_self(mob/user as mob) if ( contents.len ) diff --git a/code/game/objects/window.dm b/code/game/objects/window.dm index e2d53d0c6ae..f1cd181fc4f 100644 --- a/code/game/objects/window.dm +++ b/code/game/objects/window.dm @@ -315,6 +315,8 @@ health = 40 if(opacity) icon_state = "twindow" + else + icon_state = "window" update_nearby_tiles(need_rebuild=1) relativewindow() diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index a2703504458..bdc63af18e5 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -11,6 +11,11 @@ name = "close" master = null +/obj/screen/close/DblClick() + if (src.master) + src.master:close(usr) + return + /obj/screen/grab name = "grab" master = null @@ -19,6 +24,10 @@ name = "storage" master = null +/obj/screen/storage/attackby(W, mob/user as mob) + src.master.attackby(W, user) + return + /obj/screen/zone_sel name = "Damage Zone" icon = 'zone_sel.dmi'