From 0900c61d322ee70c8ee1140609f80096fcf2a154 Mon Sep 17 00:00:00 2001 From: Fleure Date: Sat, 31 Aug 2013 01:30:05 +0100 Subject: [PATCH 1/3] Fixed brig doors counting down when timer is stopped --- code/game/machinery/doors/brigdoors.dm | 34 ++++++++++++++------------ 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 5c5d6e119aa..d2f2f7aca1f 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -23,6 +23,7 @@ density = 0 // can walk through it. var/id = null // id of door it controls. var/releasetime = 0 // when world.time reaches it - release the prisoneer + var/timelength = 0 // the length of time this door will be set for var/timing = 1 // boolean, true/1 timer is on, false/0 means it's not timing var/picture_state // icon_state of alert picture, if not displaying text/numbers var/list/obj/machinery/targets = list() @@ -65,6 +66,7 @@ if(world.time > src.releasetime) src.timer_end() // open doors, reset timer, clear status screen src.timing = 0 + timeset(0) src.updateUsrDialog() src.update_icon() else @@ -115,16 +117,18 @@ proc/timeleft() - . = (releasetime-world.time)/10 + . = (src.timing ? (releasetime-world.time) : timelength)/10 if(. < 0) . = 0 proc/timeset(var/seconds) - releasetime=world.time+seconds*10 + if(src.timing) + releasetime=world.time+seconds*10 + else + timelength=seconds*10 return - //Allows AIs to use door_timer, see human attack_hand function below attack_ai(var/mob/user as mob) return src.attack_hand(user) @@ -177,20 +181,18 @@ return usr.set_machine(src) - if(href_list["timing"]) - src.timing = text2num(href_list["timing"]) - else - if(href_list["tp"]) //adjust timer, close door if not already closed + if(!href_list["fc"]) + var/timeleft = timeleft() + if(href_list["tp"]) //adjust timer var/tp = text2num(href_list["tp"]) - var/timeleft = timeleft() timeleft += tp - timeleft = min(max(round(timeleft), 0), 600) - timeset(timeleft) - //src.timing = 1 - //src.closedoor() - if(href_list["fc"]) - for(var/obj/machinery/flasher/F in targets) - F.flash() + timeleft = min(max(round(timeleft), 0), 600) + if(href_list["timing"]) //switch between timing and not timing + src.timing = text2num(href_list["timing"]) + timeset(timeleft) + else + for(var/obj/machinery/flasher/F in targets) + F.flash() src.add_fingerprint(usr) src.updateUsrDialog() src.update_icon() @@ -284,4 +286,4 @@ #undef FONT_SIZE #undef FONT_COLOR #undef FONT_STYLE -#undef CHARS_PER_LINE \ No newline at end of file +#undef CHARS_PER_LINE From 3fd508c29df9d321786818f1d6ff7515cf2bf5ba Mon Sep 17 00:00:00 2001 From: fleure Date: Mon, 2 Sep 2013 23:23:35 +0100 Subject: [PATCH 2/3] Reverted brig doors fix if layout, and removed redundant src ref --- code/game/machinery/doors/brigdoors.dm | 33 ++++++++++++++------------ 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index d2f2f7aca1f..92a2b82d9af 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -62,10 +62,10 @@ // update the door_timer window and the icon process() if(stat & (NOPOWER|BROKEN)) return - if(src.timing) + if(timing) if(world.time > src.releasetime) src.timer_end() // open doors, reset timer, clear status screen - src.timing = 0 + timing = 0 timeset(0) src.updateUsrDialog() src.update_icon() @@ -117,13 +117,13 @@ proc/timeleft() - . = (src.timing ? (releasetime-world.time) : timelength)/10 + . = (timing ? (releasetime-world.time) : timelength)/10 if(. < 0) . = 0 proc/timeset(var/seconds) - if(src.timing) + if(timing) releasetime=world.time+seconds*10 else timelength=seconds*10 @@ -147,7 +147,7 @@ var/dat = "" dat += "
Timer System:" dat += "Door [src.id] controls
" - if (src.timing) + if (timing) dat += "Stop Timer and open door
" else dat += "Activate Timer and close door
" @@ -181,22 +181,25 @@ return usr.set_machine(src) - if(!href_list["fc"]) + if(href_list["timing"]) //switch between timing and not timing var/timeleft = timeleft() - if(href_list["tp"]) //adjust timer - var/tp = text2num(href_list["tp"]) - timeleft += tp timeleft = min(max(round(timeleft), 0), 600) - if(href_list["timing"]) //switch between timing and not timing - src.timing = text2num(href_list["timing"]) + timing = text2num(href_list["timing"]) timeset(timeleft) else - for(var/obj/machinery/flasher/F in targets) - F.flash() + if(href_list["tp"]) //adjust timer + var/timeleft = timeleft() + var/tp = text2num(href_list["tp"]) + timeleft += tp + timeleft = min(max(round(timeleft), 0), 600) + timeset(timeleft) + else + for(var/obj/machinery/flasher/F in targets) + F.flash() src.add_fingerprint(usr) src.updateUsrDialog() src.update_icon() - if(src.timing) + if(timing) src.timer_start() else src.timer_end() @@ -214,7 +217,7 @@ if(stat & (BROKEN)) set_picture("ai_bsod") return - if(src.timing) + if(timing) var/disp1 = id var/timeleft = timeleft() var/disp2 = "[add_zero(num2text((timeleft / 60) % 60),2)]~[add_zero(num2text(timeleft % 60), 2)]" From 55588662e0e72159fc0123eb82e66dba193955ab Mon Sep 17 00:00:00 2001 From: fleure Date: Wed, 4 Sep 2013 00:23:09 +0100 Subject: [PATCH 3/3] Implemented suggested code layout changes --- code/game/machinery/doors/brigdoors.dm | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 92a2b82d9af..b212cd33a7a 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -186,16 +186,17 @@ timeleft = min(max(round(timeleft), 0), 600) timing = text2num(href_list["timing"]) timeset(timeleft) - else - if(href_list["tp"]) //adjust timer - var/timeleft = timeleft() - var/tp = text2num(href_list["tp"]) - timeleft += tp - timeleft = min(max(round(timeleft), 0), 600) - timeset(timeleft) - else - for(var/obj/machinery/flasher/F in targets) - F.flash() + else if(href_list["tp"]) //adjust timer + var/timeleft = timeleft() + var/tp = text2num(href_list["tp"]) + timeleft += tp + timeleft = min(max(round(timeleft), 0), 600) + timeset(timeleft) + //src.timing = 1 + //src.closedoor() + else if(href_list["fc"]) + for(var/obj/machinery/flasher/F in targets) + F.flash() src.add_fingerprint(usr) src.updateUsrDialog() src.update_icon()