diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm
index b733e232129..0407919a603 100644
--- a/code/game/machinery/computer/depot.dm
+++ b/code/game/machinery/computer/depot.dm
@@ -18,7 +18,7 @@
var/sound_no = 'sound/machines/buzz-sigh.ogg'
var/sound_click = 'sound/machines/click.ogg'
var/area/syndicate_depot/depotarea
- var/alerts_when_broken = TRUE
+ var/alerts_when_broken = FALSE
var/has_alerted = FALSE
@@ -155,6 +155,7 @@
name = "reactor control computer"
icon_screen = "explosive"
req_access = list()
+ alerts_when_broken = TRUE
/obj/machinery/computer/syndicate_depot/selfdestruct/get_menu(var/mob/user)
var menutext = {"Syndicate Depot Fusion Reactor Control
@@ -194,6 +195,7 @@
name = "syndicate communications computer"
icon_screen = "syndishuttle"
req_access = list()
+ alerts_when_broken = TRUE
var/message_sent = FALSE
/obj/machinery/computer/syndicate_depot/syndiecomms/get_menu(var/mob/user)
diff --git a/code/modules/mob/living/silicon/decoy/death.dm b/code/modules/mob/living/silicon/decoy/death.dm
index d3996e2fa70..7a979f3ad4c 100644
--- a/code/modules/mob/living/silicon/decoy/death.dm
+++ b/code/modules/mob/living/silicon/decoy/death.dm
@@ -1,10 +1,10 @@
/mob/living/silicon/decoy/death(gibbed)
- if(stat == DEAD) return
+ if(stat == DEAD)
+ return
stat = DEAD
icon_state = "ai-crash"
- spawn(10)
- explosion(loc, 3, 6, 12, 15)
-
for(var/obj/machinery/ai_status_display/O in world) //change status
- O.mode = 2
- return ..(gibbed)
\ No newline at end of file
+ if(O.z == z)
+ O.mode = 2
+ ..(0)
+ gib()
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/decoy/decoy.dm b/code/modules/mob/living/silicon/decoy/decoy.dm
index 76f81ac47ae..ee0d50922fb 100644
--- a/code/modules/mob/living/silicon/decoy/decoy.dm
+++ b/code/modules/mob/living/silicon/decoy/decoy.dm
@@ -12,6 +12,11 @@
src.anchored = 1
src.canmove = 0
+/mob/living/silicon/decoy/attackby(var/obj/item/W, var/mob/user, params)
+ if(istype(W, /obj/item/aicard))
+ user.visible_message("[user] cannot find an intellicard slot on [src].")
+ else
+ return ..(W, user, params)
/mob/living/silicon/decoy/syndicate
faction = list("syndicate")
@@ -23,21 +28,11 @@
. = ..()
icon_state = "ai-magma"
-
/mob/living/silicon/decoy/syndicate/depot
- var/exploded = FALSE
-
-/mob/living/silicon/decoy/syndicate/depot/proc/explode()
- if(!exploded)
- exploded = TRUE
- raise_alert()
- var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
- s.set_up(3, 1, src)
- s.start()
- new /obj/effect/decal/cleanable/blood/oil(loc)
- qdel(src)
+ var/raised_alert = FALSE
/mob/living/silicon/decoy/syndicate/depot/proc/raise_alert()
+ raised_alert = TRUE
var/area/syndicate_depot/depotarea = get_area(src) // Cannot use myArea or areaMaster as neither will be defined for this mob type
if(depotarea)
depotarea.increase_alert("AI Unit Offline")
@@ -45,18 +40,17 @@
say("Connection failure!")
/mob/living/silicon/decoy/syndicate/depot/death(var/pass)
+ if(!raised_alert)
+ raise_alert()
. = ..(pass)
- explode()
/mob/living/silicon/decoy/syndicate/depot/adjustBruteLoss(var/dmg)
- health = health - dmg
- if(health <= 0)
- explode()
+ . = ..(dmg)
+ updatehealth()
/mob/living/silicon/decoy/syndicate/depot/adjustFireLoss(var/dmg)
- health = health - dmg
- if(health <= 0)
- explode()
+ . = ..(dmg)
+ updatehealth()
/mob/living/silicon/decoy/syndicate/depot/ex_act(var/severity)
adjustBruteLoss(250)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/decoy/life.dm b/code/modules/mob/living/silicon/decoy/life.dm
index 353bf4259ff..74c206530b1 100644
--- a/code/modules/mob/living/silicon/decoy/life.dm
+++ b/code/modules/mob/living/silicon/decoy/life.dm
@@ -1,10 +1,5 @@
/mob/living/silicon/decoy/Life(seconds, times_fired)
- if(src.stat == 2)
- return
- else
- if(src.health <= config.health_threshold_dead && src.stat != 2)
- death()
- return
+ return
/mob/living/silicon/decoy/updatehealth()
@@ -13,3 +8,7 @@
stat = CONSCIOUS
else
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
+ if(stat == DEAD)
+ return
+ if(health <= 0)
+ death()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index a6ed4f0c08e..d3d48886df8 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -45,6 +45,7 @@
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
var/shut_up = 0 //self explanatory :)
var/syndicate_aligned = FALSE // Will it only treat operatives?
+ var/drops_parts = TRUE
/mob/living/simple_animal/bot/medbot/tox
skin = "tox"
@@ -95,6 +96,7 @@
/mob/living/simple_animal/bot/medbot/syndicate/emagged
emagged = 2
declare_crit = 0
+ drops_parts = FALSE
/mob/living/simple_animal/bot/medbot/update_icon()
overlays.Cut()
@@ -559,36 +561,37 @@
visible_message("[src] blows apart!")
var/turf/Tsec = get_turf(src)
- switch(skin)
- if("ointment")
- new /obj/item/storage/firstaid/fire/empty(Tsec)
- if("tox")
- new /obj/item/storage/firstaid/toxin/empty(Tsec)
- if("o2")
- new /obj/item/storage/firstaid/o2/empty(Tsec)
- if("brute")
- new /obj/item/storage/firstaid/brute/empty(Tsec)
- if("adv")
- new /obj/item/storage/firstaid/adv/empty(Tsec)
- if("bezerk")
- var/obj/item/storage/firstaid/tactical/empty/T = new(Tsec)
- T.syndicate_aligned = syndicate_aligned //This is a special case since Syndicate medibots and the mysterious medibot look the same; we also dont' want crew building Syndicate medibots if the mysterious medibot blows up.
- if("fish")
- new /obj/item/storage/firstaid/aquatic_kit(Tsec)
- else
- new /obj/item/storage/firstaid(Tsec)
+ if(drops_parts)
+ switch(skin)
+ if("ointment")
+ new /obj/item/storage/firstaid/fire/empty(Tsec)
+ if("tox")
+ new /obj/item/storage/firstaid/toxin/empty(Tsec)
+ if("o2")
+ new /obj/item/storage/firstaid/o2/empty(Tsec)
+ if("brute")
+ new /obj/item/storage/firstaid/brute/empty(Tsec)
+ if("adv")
+ new /obj/item/storage/firstaid/adv/empty(Tsec)
+ if("bezerk")
+ var/obj/item/storage/firstaid/tactical/empty/T = new(Tsec)
+ T.syndicate_aligned = syndicate_aligned //This is a special case since Syndicate medibots and the mysterious medibot look the same; we also dont' want crew building Syndicate medibots if the mysterious medibot blows up.
+ if("fish")
+ new /obj/item/storage/firstaid/aquatic_kit(Tsec)
+ else
+ new /obj/item/storage/firstaid(Tsec)
- new /obj/item/assembly/prox_sensor(Tsec)
+ new /obj/item/assembly/prox_sensor(Tsec)
- new /obj/item/healthanalyzer(Tsec)
+ new /obj/item/healthanalyzer(Tsec)
+
+ if(prob(50))
+ new /obj/item/robot_parts/l_arm(Tsec)
if(reagent_glass)
reagent_glass.forceMove(Tsec)
reagent_glass = null
- if(prob(50))
- new /obj/item/robot_parts/l_arm(Tsec)
-
if(emagged && prob(25))
playsound(loc, 'sound/voice/minsult.ogg', 50, 0)