From 23d4d7cc593a322c5d6db488f49fdc5f9780556e Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 10 Feb 2017 22:06:57 +0100 Subject: [PATCH] Interaction with pipe dispensers --- code/game/machinery/pipe/pipe_dispenser.dm | 157 ++++++++++----------- 1 file changed, 75 insertions(+), 82 deletions(-) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 34f41e2a1b5..d7ac49381b9 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -7,9 +7,16 @@ var/unwrenched = 0 var/wait = 0 -/obj/machinery/pipedispenser/attack_hand(user as mob) +/obj/machinery/pipedispenser/attack_hand(mob/user) if(..()) - return + return 1 + + interact(user) + +/obj/machinery/pipedispenser/attack_ghost(mob/user) + interact(user) + +/obj/machinery/pipedispenser/interact(mob/user) var/dat = {" Regular pipes:
Pipe
@@ -65,21 +72,19 @@ popup.set_content(dat) popup.open(0) onclose(user, "pipedispenser") - return /obj/machinery/pipedispenser/Topic(href, href_list) - if(..()) - return - if(unwrenched || !usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) - usr << browse(null, "window=pipedispenser") - return + if(..() || unwrenched) + return 1 + usr.set_machine(src) - src.add_fingerprint(usr) + add_fingerprint(usr) + if(href_list["make"]) if(!wait) var/p_type = text2num(href_list["make"]) var/p_dir = text2num(href_list["dir"]) - var/obj/item/pipe/P = new (/*usr.loc*/ src.loc, pipe_type=p_type, dir=p_dir) + var/obj/item/pipe/P = new (loc, pipe_type=p_type, dir=p_dir) P.update() P.add_fingerprint(usr) wait = 1 @@ -87,50 +92,49 @@ wait = 0 if(href_list["makemeter"]) if(!wait) - new /obj/item/pipe_meter(/*usr.loc*/ src.loc) + new /obj/item/pipe_meter(loc) wait = 1 spawn(15) wait = 0 if(href_list["makegsensor"]) if(!wait) - new /obj/item/pipe_gsensor(/*usr.loc*/ src.loc) + new /obj/item/pipe_gsensor(loc) wait = 1 spawn(15) wait = 0 - return /obj/machinery/pipedispenser/attackby(var/obj/item/W as obj, var/mob/user as mob, params) - src.add_fingerprint(usr) + add_fingerprint(usr) if(istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter) || istype(W, /obj/item/pipe_gsensor)) - to_chat(usr, "\blue You put [W] back to [src].") + to_chat(usr, "You put [W] back to [src].") user.drop_item() qdel(W) return else if(istype(W, /obj/item/weapon/wrench)) if(unwrenched==0) - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You begin to unfasten \the [src] from the floor...") + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + to_chat(user, "You begin to unfasten \the [src] from the floor...") if(do_after(user, 40, target = src)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src]. Now it can be pulled somewhere else.", \ + "You have unfastened \the [src]. Now it can be pulled somewhere else.", \ "You hear ratchet.") - src.anchored = 0 - src.stat |= MAINT - src.unwrenched = 1 + anchored = 0 + stat |= MAINT + unwrenched = 1 if(usr.machine==src) usr << browse(null, "window=pipedispenser") else /*if(unwrenched==1)*/ - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You begin to fasten \the [src] to the floor...") + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + to_chat(user, "You begin to fasten \the [src] to the floor...") if(do_after(user, 20, target = src)) user.visible_message( \ "[user] fastens \the [src].", \ - "\blue You have fastened \the [src]. Now it can dispense pipes.", \ + "You have fastened \the [src]. Now it can dispense pipes.", \ "You hear ratchet.") - src.anchored = 1 - src.stat &= ~MAINT - src.unwrenched = 0 + anchored = 1 + stat &= ~MAINT + unwrenched = 0 power_change() else return ..() @@ -143,21 +147,12 @@ density = 1 anchored = 1.0 -/* -//Allow you to push disposal pipes into it (for those with density 1) -/obj/machinery/pipedispenser/disposal/Crossed(var/obj/structure/disposalconstruct/pipe as obj) - if(istype(pipe) && !pipe.anchored) - qdel(pipe) - -Nah -*/ - //Allow you to drag-drop disposal pipes into it -/obj/machinery/pipedispenser/disposal/MouseDrop_T(var/obj/structure/disposalconstruct/pipe as obj, mob/usr as mob) - if(!usr.canmove || usr.stat || usr.restrained()) +/obj/machinery/pipedispenser/disposal/MouseDrop_T(var/obj/structure/disposalconstruct/pipe, mob/usr) + if(usr.incapacitated()) return - if(!istype(pipe) || get_dist(usr, src) > 1 || get_dist(src,pipe) > 1 ) + if(!istype(pipe) || get_dist(usr, src) > 1 || get_dist(src, pipe) > 1 ) return if(pipe.anchored) @@ -165,10 +160,16 @@ Nah qdel(pipe) -/obj/machinery/pipedispenser/disposal/attack_hand(user as mob) +/obj/machinery/pipedispenser/disposal/attack_hand(mob/user) if(..()) return - + + interact(user) + +/obj/machinery/pipedispenser/disposal/attack_ghost(mob/user) + interact(user) + +/obj/machinery/pipedispenser/disposal/interact(mob/user) var/dat = {"Disposal Pipes

Pipe
Bent Pipe
@@ -183,47 +184,39 @@ Nah var/datum/browser/popup = new(user, "pipedispenser", name, 400, 400) popup.set_content(dat) popup.open() - return - -// 0=straight, 1=bent, 2=junction-j1, 3=junction-j2, 4=junction-y, 5=trunk - /obj/machinery/pipedispenser/disposal/Topic(href, href_list) - if(..()) - return - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["dmake"]) - if(unwrenched || !usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) - usr << browse(null, "window=pipedispenser") - return - if(!wait) - var/p_type = text2num(href_list["dmake"]) - var/obj/structure/disposalconstruct/C = new (src.loc) - switch(p_type) - if(0) - C.ptype = 0 - if(1) - C.ptype = 1 - if(2) - C.ptype = 2 - if(3) - C.ptype = 4 - if(4) - C.ptype = 5 - if(5) - C.ptype = 6 - C.density = 1 - if(6) - C.ptype = 7 - C.density = 1 - if(7) - C.ptype = 8 - C.density = 1 - C.add_fingerprint(usr) - C.update() - wait = 1 - spawn(15) - wait = 0 - return + if(..() || unwrenched) + return 1 + usr.set_machine(src) + add_fingerprint(usr) + + if(!wait) + var/p_type = text2num(href_list["dmake"]) + var/obj/structure/disposalconstruct/C = new (loc) + switch(p_type) + if(0) + C.ptype = 0 + if(1) + C.ptype = 1 + if(2) + C.ptype = 2 + if(3) + C.ptype = 4 + if(4) + C.ptype = 5 + if(5) + C.ptype = 6 + C.density = 1 + if(6) + C.ptype = 7 + C.density = 1 + if(7) + C.ptype = 8 + C.density = 1 + C.add_fingerprint(usr) + C.update() + wait = 1 + spawn(15) + wait = 0 \ No newline at end of file