diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index 738d69b14cf..8566d6c45a1 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -65,6 +65,7 @@ var/list/announcement_systems = list()
/obj/machinery/announcement_system/Destroy()
announcement_systems -= src //"OH GOD WHY ARE THERE 100,000 LISTED ANNOUNCEMENT SYSTEMS?!!"
+ ..()
/obj/machinery/announcement_system/power_change()
..()
diff --git a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
index bbed56a6962..24af1978011 100644
--- a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
@@ -5,9 +5,22 @@
icon = 'icons/mob/swarmer.dmi'
icon_state = "swarmer_unactivated"
+/obj/item/unactivated_swarmer/New()
+ notify_ghosts("An unactivated swarmer has been created in [get_area(src)]! (Click to enter)")
+ ..()
+
+/obj/item/unactivated_swarmer/Topic(href, href_list)
+ if(href_list["ghostjoin"])
+ var/mob/dead/observer/ghost = usr
+ if(istype(ghost))
+ attack_ghost(ghost)
+
/obj/item/unactivated_swarmer/attack_ghost(mob/user)
var/be_swarmer = alert("Become a swarmer? (Warning, You can no longer be cloned!)",,"Yes","No")
- if(be_swarmer == "No" || qdeleted())
+ if(be_swarmer == "No")
+ return
+ if(qdeleted(src))
+ user << "Swarmer has been occupied by someone else."
return
var/mob/living/simple_animal/hostile/swarmer/S = new /mob/living/simple_animal/hostile/swarmer(get_turf(loc))
S.key = user.key
@@ -156,6 +169,9 @@
/obj/machinery/nuclearbomb/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S << "This device's destruction would result in the extermination of everything in the area. Aborting."
+/obj/machinery/dominator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ S << "This device is attempting to corrupt our entire network; attempting to interact with it is too risky. Aborting."
+
/obj/structure/reagent_dispensers/fueltank/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S << "Destroying this object would cause a chain reaction. Aborting."
@@ -410,7 +426,7 @@
if(message)
for(var/mob/M in mob_list)
if(isswarmer(M) || (M in dead_mob_list))
- M << "Swarm communication - [M] states: [message]"
+ M << "Swarm communication - [src] states: [message]"