From cbc31b90907de2d55df39b1727f72acd792e0958 Mon Sep 17 00:00:00 2001 From: Ater Ignis Date: Thu, 1 Nov 2012 21:05:02 +0400 Subject: [PATCH] Adjustable timer for default grenades --- .../items/weapons/grenades/chem_grenade.dm | 1 + code/modules/assembly/holder.dm | 40 ++++++++++++++++++- code/modules/assembly/timer.dm | 4 +- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 9d3d9f9d218..ce4e4f2ce63 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -22,6 +22,7 @@ if(!stage || stage==1) if(detonator) // detonator.loc=src.loc + detonator.detached() usr.put_in_hands(detonator) detonator=null stage=0 diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index f69a6b5c35d..b8fd9107195 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -23,6 +23,8 @@ proc/process_activation(var/obj/item/device/D) return + proc/detached() + return IsAssemblyHolder() @@ -197,7 +199,7 @@ /obj/item/device/assembly_holder/timer_igniter - name = "5sec timer-igniter assembly" + name = "timer-igniter assembly" New() ..() @@ -214,4 +216,40 @@ a_right = ign secured = 1 update_icon() + name = initial(name) + " ([tmr.time] secs)" + loc.verbs += /obj/item/device/assembly_holder/timer_igniter/verb/configure + + detached() + loc.verbs -= /obj/item/device/assembly_holder/timer_igniter/verb/configure + ..() + + verb/configure() + set name = "Set Timer" + set category = "Object" + set src in usr + + if ( !(usr.stat || usr.restrained()) ) + var/obj/item/device/assembly_holder/holder + if(istype(src,/obj/item/weapon/grenade/chem_grenade)) + var/obj/item/weapon/grenade/chem_grenade/gren = src + holder=gren.detonator + var/obj/item/device/assembly/timer/tmr = holder.a_left + if(!istype(tmr,/obj/item/device/assembly/timer)) + tmr = holder.a_right + if(!istype(tmr,/obj/item/device/assembly/timer)) + usr << "This detonator has no timer." + return + + if(tmr.timing) + usr << "Clock is ticking already." + else + var/ntime = input("Enter desired time in seconds", "Time", "5") as num + if (ntime>0 && ntime<1000) + tmr.time = ntime + name = initial(name) + "([tmr.time] secs)" + usr << "Timer set to [tmr.time] seconds." + else + usr << "Timer can't be [ntime<=0?"negative":"more than 1000 seconds"]." + else + usr << "You cannot do this while [usr.stat?"unconscious/dead":"restrained"]." diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index fc7c65b39bf..5ed584eecbf 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -20,7 +20,9 @@ activate() if(!..()) return 0//Cooldown check + timing = !timing + update_icon() return 0 @@ -37,7 +39,7 @@ timer_end() - if((!secured)||(cooldown > 0)) return 0 + if(!secured) return 0 pulse(0) if(!holder) visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")