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 e01e034fcd2..19359a76dd8 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
/obj/machinery/syndicatebomb/process()
if(active && !defused && (timer > 0)) //Tick Tock
@@ -24,15 +24,17 @@
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)
return
/obj/machinery/syndicatebomb/New()
- wires = new(src)
+ wires = new(src)
+ payload = new(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
@@ -151,7 +148,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