From e79df68ef30b3bc625d83d58beee03d34412a714 Mon Sep 17 00:00:00 2001 From: Ater Ignis Date: Thu, 1 Nov 2012 17:49:21 +0400 Subject: [PATCH] added new assembled timer-igniter assembly and added that to default chem-grenades --- .../items/weapons/grenades/chem_grenade.dm | 29 ++++++++++++------- .../objects/items/weapons/grenades/grenade.dm | 19 +++++------- code/modules/assembly/holder.dm | 16 ++++++++++ 3 files changed, 43 insertions(+), 21 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index cf241435d6b..9d3d9f9d218 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -69,17 +69,14 @@ path = 1 if(beakers.len) user << "\blue You lock the assembly." - playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, -3) name = "grenade" - icon_state = initial(icon_state) +"_locked" - stage = 2 else // user << "\red You need to add at least one beaker before locking the assembly." user << "\blue You lock the empty assembly." - playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, -3) name = "fake grenade" - icon_state = initial(icon_state) +"_locked" - stage = 2 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, -3) + icon_state = initial(icon_state) +"_locked" + stage = 2 else if(stage == 2) if(active && prob(95)) user << "\red You trigger the assembly!" @@ -114,8 +111,9 @@ if(detonator) usr << "With attached [detonator.name]" - activate() + activate(mob/user as mob) if(active) return + if(detonator) if(!isigniter(detonator.a_left)) detonator.a_left.activate() @@ -126,6 +124,11 @@ if(active) icon_state = initial(icon_state) + "_active" + if(user) + log_attack("[user.name] ([user.ckey]) primed \a [src]") + log_admin("ATTACK: [user] ([user.ckey]) primed \a [src]") + message_admins("ATTACK: [user] ([user.ckey]) primed \a [src]") + return proc/primed(var/primed = 1) @@ -195,9 +198,11 @@ B2.reagents.add_reagent("foaming_agent", 10) B2.reagents.add_reagent("pacid", 10) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + beakers += B1 beakers += B2 - icon_state = "grenade" + icon_state = initial(icon_state) +"_locked" /obj/item/weapon/grenade/chem_grenade/incendiary name = "Incendiary Grenade" @@ -214,9 +219,11 @@ B2.reagents.add_reagent("plasma", 25) B2.reagents.add_reagent("sacid", 25) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + beakers += B1 beakers += B2 - icon_state = "grenade" + icon_state = initial(icon_state) +"_locked" /obj/item/weapon/grenade/chem_grenade/cleaner name = "Cleaner Grenade" @@ -233,6 +240,8 @@ B2.reagents.add_reagent("water", 40) B2.reagents.add_reagent("cleaner", 10) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + beakers += B1 beakers += B2 - icon_state = "grenade" + icon_state = initial(icon_state) +"_locked" diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index c381a8d513d..99466a9d2a3 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -16,11 +16,7 @@ if((CLUMSY in user.mutations) && prob(50)) user << "Huh? How does this thing work?" - log_attack("[user.name] ([user.ckey]) clumsily primed \a [src]") - log_admin("ATTACK: [user] ([user.ckey]) clumsily primed \a [src]") - message_admins("ATTACK: [user] ([user.ckey]) clumsily primed \a [src]") - - activate() + activate(user) add_fingerprint(user) spawn(5) prime() @@ -60,11 +56,7 @@ if(clown_check(user)) user << "You prime \the [name]! [det_time/10] seconds!" - log_attack("[user.name] ([user.ckey]) primed \a [src].") - log_admin("ATTACK: [user] ([user.ckey]) primed \a [src].") - message_admins("ATTACK: [user] ([user.ckey]) primed \a [src].") - - activate() + activate(user) add_fingerprint(user) if(iscarbon(user)) var/mob/living/carbon/C = user @@ -72,10 +64,15 @@ return -/obj/item/weapon/grenade/proc/activate() +/obj/item/weapon/grenade/proc/activate(mob/user as mob) if(active) return + if(user) + log_attack("[user.name] ([user.ckey]) primed \a [src]") + log_admin("ATTACK: [user] ([user.ckey]) primed \a [src]") + message_admins("ATTACK: [user] ([user.ckey]) primed \a [src]") + icon_state = initial(icon_state) + "_active" active = 1 playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index e021cd41585..f69a6b5c35d 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -196,6 +196,22 @@ +/obj/item/device/assembly_holder/timer_igniter + name = "5sec timer-igniter assembly" + New() + ..() + var/obj/item/device/assembly/igniter/ign = new(src) + ign.secured = 1 + ign.holder = src + var/obj/item/device/assembly/timer/tmr = new(src) + tmr.time=5 + tmr.secured = 1 + tmr.holder = src + processing_objects.Add(tmr) + a_left = tmr + a_right = ign + secured = 1 + update_icon()