From de972e3b02ad3bd416075856d94a414f6db825d6 Mon Sep 17 00:00:00 2001 From: Incoming Date: Thu, 2 Jan 2014 12:20:05 -0500 Subject: [PATCH 1/2] Refactors syndicate bombs to remove the var degutted. The bombs themselves no longer explode, the payloads (which now actually exist in the bombs) do. This means that you can play cruel jokes on people by activating bombs with removed payloads or easily code in other kinds of payloads (there'll be a future pull with a few from me at the very least) and not have to touch the bomb code itself. --- code/datums/wires/syndicatebomb.dm | 4 --- code/game/machinery/syndicatebomb.dm | 50 ++++++++++++++-------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 8c60b0e4546..77700d9d028 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -11,8 +11,6 @@ var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if /datum/wires/syndicatebomb/UpdatePulsed(var/index) var/obj/machinery/syndicatebomb/P = holder - if(P.degutted) - return switch(index) if(WIRE_BOOM) if (P.active) @@ -49,8 +47,6 @@ var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if /datum/wires/syndicatebomb/UpdateCut(var/index, var/mended) var/obj/machinery/syndicatebomb/P = holder - if(P.degutted) - return switch(index) if(WIRE_EXPLODE) if(!mended) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 678d9407a66..4560ab55a9f 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -14,7 +14,7 @@ var/open_panel = 0 //are the wires exposed? var/active = 0 //is the bomb counting down? var/defused = 0 //is the bomb capable of exploding? - var/degutted = 0 //is the bomb even a bomb anymore? + var/obj/item/weapon/syndicatebombcore/payload = new /obj/item/weapon/syndicatebombcore /obj/machinery/syndicatebomb/process() if(active && !defused && (timer > 0)) //Tick Tock @@ -24,8 +24,9 @@ active = 0 timer = 60 processing_objects.Remove(src) - explosion(src.loc,2,5,11, flame_range = 11) - del(src) + icon_state = "syndicate-bomb-inactive[open_panel ? "-wires" : ""]" + if(payload in src) + payload.detonate() return if(!active || defused) //Counter terrorists win processing_objects.Remove(src) @@ -33,6 +34,7 @@ /obj/machinery/syndicatebomb/New() wires = new(src) + payload.loc = src ..() @@ -69,37 +71,34 @@ user << "You [open_panel ? "open" : "close"] the wire panel." else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler )) - if(degutted) - user << "The wires aren't connected to anything!" - else if(open_panel) + if(open_panel) wires.Interact(user) else if(istype(I, /obj/item/weapon/crowbar)) - if(open_panel && !degutted && isWireCut(WIRE_BOOM) && isWireCut(WIRE_UNBOLT) && isWireCut(WIRE_DELAY) && isWireCut(WIRE_PROCEED) && isWireCut(WIRE_ACTIVATE)) - user << "You carefully pry out the bomb's payload." - degutted = 1 - new /obj/item/weapon/syndicatebombcore(user.loc) + if(open_panel && isWireCut(WIRE_BOOM) && isWireCut(WIRE_UNBOLT) && isWireCut(WIRE_DELAY) && isWireCut(WIRE_PROCEED) && isWireCut(WIRE_ACTIVATE)) + if(payload) + user << "You carefully pry out [payload]." + payload.loc = user.loc + payload = null + else + user << "There isn't anything in here to remove!" else if (open_panel) user << "The wires conneting the shell to the explosives are holding it down!" - else if (degutted) - user << "The explosives have already been removed." else user << "The cover is screwed on, it won't pry off!" else if(istype(I, /obj/item/weapon/syndicatebombcore)) - if(degutted) - user << "You place the payload into the shell." - degutted = 0 + if(!payload) + payload = I + user << "You place [payload] into [src]." user.drop_item() - del(I) + payload.loc = src else - user << "While a double strength bomb would surely be a thing of terrible beauty, there's just no room for it." + user << "[payload] is already loaded into [src], you'll have to remove it first." else ..() /obj/machinery/syndicatebomb/attack_hand(var/mob/user) - if(degutted) - user << "The bomb's explosives have been removed, the [open_panel ? "wires" : "buttons"] are useless now." - else if(anchored) + if(anchored) if(open_panel) wires.Interact(user) else if(!active) @@ -116,10 +115,8 @@ timer = newtime src.loc.visible_message("\blue \icon[src] timer set for [timer] seconds.") if(alert(usr,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, usr) && isliving(usr)) - if(defused || active || degutted) - if(degutted) - src.loc.visible_message("\blue \icon[src] Device error: Payload missing") - else if(defused) + if(defused || active) + if(defused) src.loc.visible_message("\blue \icon[src] Device error: User intervention required") return else @@ -152,7 +149,10 @@ origin_tech = "syndicate=6;combat=5" /obj/item/weapon/syndicatebombcore/ex_act(severity) //Little boom can chain a big boom - explosion(src.loc,2,5,11, flame_range = 11) + src.detonate() + +/obj/item/weapon/syndicatebombcore/proc/detonate() + explosion(get_turf(src),2,5,11, flame_range = 11) del(src) /obj/item/device/syndicatedetonator From 58800659dedf52f510badfc2cd62f72687397a3c Mon Sep 17 00:00:00 2001 From: Incoming Date: Thu, 2 Jan 2014 15:00:29 -0500 Subject: [PATCH 2/2] The prequeisite Gia related code beautification pull --- code/game/machinery/syndicatebomb.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 4560ab55a9f..f5f19a4824e 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -14,7 +14,7 @@ var/open_panel = 0 //are the wires exposed? var/active = 0 //is the bomb counting down? var/defused = 0 //is the bomb capable of exploding? - var/obj/item/weapon/syndicatebombcore/payload = new /obj/item/weapon/syndicatebombcore + var/obj/item/weapon/syndicatebombcore/payload /obj/machinery/syndicatebomb/process() if(active && !defused && (timer > 0)) //Tick Tock @@ -33,8 +33,8 @@ return /obj/machinery/syndicatebomb/New() - wires = new(src) - payload.loc = src + wires = new(src) + payload = new(src) ..()