diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm
index f69ba7c2fc8..022ca343f68 100644
--- a/code/game/machinery/droneDispenser.dm
+++ b/code/game/machinery/droneDispenser.dm
@@ -127,25 +127,6 @@
end_create_message = "slams open, revealing out a hivebot!"
recharge_sound = null
recharge_message = null
- var/static/list/hivebot_dispensable_types = list(/mob/living/simple_animal/hostile/hivebot, /mob/living/simple_animal/hostile/hivebot/range, /mob/living/simple_animal/hostile/hivebot/rapid)
-
-/obj/machinery/droneDispenser/hivebot/invasion
- name = "invasion fabricator"
- desc = "A huge machine designed to withstand intense pressures. It whirs with activity as steam hisses from vents in its sides."
- production_time = 10
- dispense_type = /mob/living/simple_animal/hostile/hivebot
- work_sound = 'sound/machines/copier.ogg'
- begin_create_message = "closes, humming and whirring..."
- end_create_message = "slams open, revealing a hivebot!"
- recharge_sound = null
- recharge_message = null
-
-/obj/machinery/droneDispenser/hivebot/invasion/Dispense()
- dispense_type = pick(hivebot_dispensable_types)
- return ..()
-
-/obj/machinery/droneDispenser/hivebot/invasion/ex_act(severity)
- return //hivebot don give a fuck about bombs
/obj/machinery/droneDispenser/swarmer
name = "swarmer fabricator"
@@ -189,10 +170,6 @@
stat |= NOPOWER
update_icon()
-/obj/machinery/droneDispenser/proc/Dispense()
- var/atom/A = new dispense_type(get_turf(src))
- A.admin_spawned = admin_spawned
-
/obj/machinery/droneDispenser/process()
..()
if((stat & (NOPOWER|BROKEN)) || !anchored)
@@ -223,8 +200,9 @@
materials.use_amount(using_materials)
if(power_used)
use_power(power_used)
-
- Dispense()
+
+ var/atom/A = new dispense_type(loc)
+ A.admin_spawned = admin_spawned
if(create_sound)
playsound(src, create_sound, 50, 1)
diff --git a/code/game/machinery/hivebot_swarm_core.dm b/code/game/machinery/hivebot_swarm_core.dm
deleted file mode 100644
index d8c05ff4f3d..00000000000
--- a/code/game/machinery/hivebot_swarm_core.dm
+++ /dev/null
@@ -1,122 +0,0 @@
-/obj/machinery/hivebot_swarm_core //A hulking machine armed with several weapons. Creates hivebots and defends itself with a buzzsaw and mounted weapons.
- name = "hivebot swarm core"
- desc = "An incredibly dangerous machine with random weapons haphazardly attached with spot welds. Its main body seems impervious to damage, but the head is vulnerable."
- icon = 'icons/effects/96x96.dmi'
- icon_state = "hivebot_swarm_core"
- pixel_x = -32
- pixel_y = -16
- use_power = FALSE
- max_integrity = 250
- anchored = TRUE
- density = TRUE
- var/recharge_period = 0 //The number of ticks the core is waiting for and cannot do anything
- var/atom/movable/threat_to_swarm //The core's "target" for its attacks
- var/hivebot_limit = 40 //Stop making hivebots if there are this many in a 7x7 square around us
-
-/obj/machinery/hivebot_swarm_core/Destroy()
- visible_message("[src] falls apart, its red eyes sputtering out.")
- playsound(src, 'sound/magic/clockwork/anima_fragment_death.ogg', 50, 0)
- new/obj/structure/fluff/hivebot_swarm_core(get_turf(src))
- return ..()
-
-/obj/machinery/hivebot_swarm_core/examine(mob/user)
- ..()
- if(recharge_period)
- to_chat(user, "It seems to be recharging.")
-
-/obj/machinery/hivebot_swarm_core/process()
- if(recharge_period)
- recharge_period--
- return
- acquire_target()
- if(!threat_to_swarm)
- make_hivebot()
- else
- defend_the_swarm()
-
-/obj/machinery/hivebot_swarm_core/proc/make_hivebot() //Only called if we don't find a threat
- var/hivebots = 0
- for(var/mob/living/simple_animal/hostile/hivebot/H in range(7, src))
- hivebots++
- if(hivebots >= hivebot_limit)
- return
- var/turf/T = get_step(src, SOUTHWEST)
- var/mob/living/simple_animal/hostile/hivebot/H = new(T)
- H.color = rgb(0, 255, 0)
- animate(H, color = initial(H.color), time = 10)
-
-/obj/machinery/hivebot_swarm_core/proc/acquire_target() //If we find a mob in our view, it becomes the threat. Robots don't count because we're too stupid to recognize them.
- if(threat_to_swarm)
- return
- var/list/potential_targets = list()
- for(var/mob/living/carbon/C in view(7, src))
- potential_targets += C
- for(var/mob/living/silicon/S in view(7, src))
- potential_targets += S
- for(var/obj/mecha/M in view(7, src))
- potential_targets += M
- for(var/mob/living/L in potential_targets)
- if(L.stat)
- potential_targets -= L
- else
- if("hivebot" in L.faction)
- potential_targets -= L
- if(!potential_targets.len) //Run another sanity check, just in case
- return
- threat_to_swarm = pick(potential_targets)
- visible_message("[src] turns ominously towards [threat_to_swarm]!")
- say("SUBJECT STATUS: THREAT TO SWARM. TARGET LOCKED.")
-
-/obj/machinery/hivebot_swarm_core/proc/defend_the_swarm()
- var/atom/movable/threat_to_swarm = src.threat_to_swarm
- var/mob/living/L = threat_to_swarm
- if(!istype(L) || L.stat)
- L = null
- if(QDELETED(threat_to_swarm) || !threat_to_swarm in view(7, src) || L)
- say("TARGET LOST. RESUMING FABRICATION ROUTINE.")
- threat_to_swarm = null
- return
- var/turf/T = get_turf(src)
- var/list/combat_actions = list("saw" = 1 * (get_dist(threat_to_swarm, src) <= 2), "swarm" = 1, "laser" = 2)
- switch(pickweight(combat_actions))
- if("laser")
- threat_to_swarm.Beam(T, "sat_beam", time = 5)
- if(L)
- L.adjustFireLoss(15)
- else
- var/obj/threat = threat_to_swarm
- threat.take_damage(15, "fire", "laser")
- playsound(src, 'sound/weapons/plasma_cutter.ogg', 50, 1)
- playsound(threat_to_swarm, 'sound/weapons/sear.ogg', 50, 1)
- if("swarm")
- visible_message("[src] warps in a swarm of hivebots!")
- playsound(src, 'sound/effects/phasein.ogg', 100, 1)
- for(var/i in 1 to 3)
- new/mob/living/simple_animal/hostile/hivebot(T)
- for(var/i in 1 to 2)
- new/mob/living/simple_animal/hostile/hivebot/range(T)
- new/mob/living/simple_animal/hostile/hivebot/engineer(T)
- recharge_period = 5 //Give some time to mop up the adds
- if("saw")
- var/turf/target_turf = get_turf(threat_to_swarm)
- visible_message("[src] revs its buzzsaw!")
- say("COMMENCING ANNIHILATION.")
- playsound(src, 'sound/machines/buzzsaw_windup.ogg', 100, 0)
- recharge_period = 2
- addtimer(CALLBACK(src, .proc/saw_turf, target_turf), 12.5) //To match up with the sound
-
-/obj/machinery/hivebot_swarm_core/proc/saw_turf(turf/target) //Instacrits anyone standing on the turf
- playsound(target, 'sound/machines/buzzsaw_BRRRRR.ogg', 100, 0)
- for(var/mob/living/L in target) //you fucked up now
- L.visible_message("[src]'s buzzsaw rips into [L]!", "[src]'s buzzsaw rips into you!")
- L.emote("scream")
- var/datum/callback/cb = CALLBACK(src, .proc/saw_target, L)
- cb.Invoke()
- for(var/I in 1 to 4)
- addtimer(cb, 5 * I)
-
-/obj/machinery/hivebot_swarm_core/proc/saw_target(mob/living/L)
- L.adjustBruteLoss(rand(20, 30)) //Guaranteed crit at least
- L.Knockdown(40)
- playsound(L, "desecration", 75, 1)
- playsound(L, 'sound/effects/splat.ogg', 50, 1)
diff --git a/code/game/objects/items/devices/hivebot_crux.dm b/code/game/objects/items/devices/hivebot_crux.dm
deleted file mode 100644
index 62a404698e1..00000000000
--- a/code/game/objects/items/devices/hivebot_crux.dm
+++ /dev/null
@@ -1,10 +0,0 @@
-/obj/item/device/hivebot_crux
- name = "hivebot crux"
- desc = "A smooth, metallic metal cylinder with an indigo screen."
- icon = 'icons/mob/hivebot.dmi'
- icon_state = "hive_main-crash"
- flags = CONDUCT | NOBLUDGEON
- slot_flags = SLOT_BELT
- materials = list(MAT_METAL = 500, MAT_GLASS = 1000)
- origin_tech = "engineering=5;magnets=4;programming=4"
- w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm
index 123fab7b914..b0d17236af4 100644
--- a/code/game/objects/structures/fluff.dm
+++ b/code/game/objects/structures/fluff.dm
@@ -161,21 +161,3 @@
name = "shrine"
desc = "A shrine dedicated to a deity."
icon_state = "shrine"
-
-/obj/structure/fluff/hivebot_swarm_core
- name = "hivebot swarm core"
- desc = "The dented, ruined husk of a powerful machine."
- icon = 'icons/effects/96x96.dmi'
- icon_state = "hivebot_swarm_core_dead"
- pixel_x = -32
- pixel_y = -16
- density = 1
-
-/obj/structure/fluff/hivebot_swarm_core/examine(mob/user)
- ..()
- to_chat(user, "It's gently vibrating...") //Hint at the treasure inside
-
-/obj/structure/fluff/hivebot_swarm_core/Destroy()
- visible_message("Something tumbles free of [src]!")
- new/obj/item/device/hivebot_crux(get_turf(src))
- return ..()
diff --git a/code/modules/events/hivebot_invasion.dm b/code/modules/events/hivebot_invasion.dm
deleted file mode 100644
index 2dd44cc63ff..00000000000
--- a/code/modules/events/hivebot_invasion.dm
+++ /dev/null
@@ -1,54 +0,0 @@
-/datum/round_event_control/hivebot_invasion //A hivebot swarm core impacts the station and warps in hivebots.
- name = "Hivebot Invasion"
- typepath = /datum/round_event/hivebot_invasion
- weight = 5
- max_occurrences = 1
- min_players = 25
- earliest_start = 18000
-
-/datum/round_event/hivebot_invasion
- announceWhen = 0
- startWhen = 20
- var/obj/effect/landmark/invasion_point
-
-/datum/round_event/hivebot_invasion/setup()
- invasion_point = pick(GLOB.generic_event_spawns)
- message_admins("Hivebot invasion point set to [get_area(invasion_point)]! [ADMIN_COORDJMP(invasion_point)]")
- log_game("Hivebot invasion point set to [get_area(invasion_point)]! ([COORD(invasion_point)])")
-
-
-/datum/round_event/hivebot_invasion/announce()
- priority_announce("Long-range scanners have detected an unidentified object on collision course with [station_name()]. Intent appears hostile. ETA: 30 seconds. All crew brace for impact.", "Impact Warning", sound = 'sound/machines/warning_alarm.ogg' )
- addtimer(CALLBACK(GLOBAL_PROC, /proc/priority_announce, "Impact location determined from trajectory to be [get_area(invasion_point)]. Leave the area immediately or risk annihilation.", "Impact Warning", 'sound/misc/notice1.ogg'), 150)
-
-/datum/round_event/hivebot_invasion/start()
- var/turf/T = get_turf(invasion_point)
- priority_announce("Object has made impact. Heavy bluespace activity detected; object likely serves as a beacon. Destroy the object as quickly as possible.", "Invasion Warning", sound = 'sound/misc/notice1.ogg')
- for(var/P in GLOB.player_list)
- var/mob/player = P
- if(player.z == invasion_point.z)
- shake_camera(player, 15, 1)
- player.playsound_local(T, 'sound/effects/explosionfar.ogg', 100, 1)
- for(var/mob/living/L in range(1, invasion_point)) //you done fucked up now
- L.gib()
- explosion(T, 0, 0, 10) //Very little heavy damage but a lot of light
- new/obj/machinery/hivebot_swarm_core(T)
-
-
-
-/datum/round_event_control/hivebot_invasion/false_alarm
- name = "Hivebot Invasion (False Alarm)"
- typepath = /datum/round_event/hivebot_false_alarm
- weight = 3
- max_occurrences = 1
- min_players = 0
-
-/datum/round_event/hivebot_false_alarm
- announceWhen = 0
- startWhen = 15
-
-/datum/round_event/hivebot_false_alarm/announce()
- priority_announce("Long-range scanners have detected an unidentified object on collision course with [station_name()]. Intent appears hostile. ETA: 30 seconds. All crew brace for impact.", "Impact Warning", sound = 'sound/machines/warning_alarm.ogg' )
-
-/datum/round_event/hivebot_false_alarm/start()
- priority_announce("Our long-range scanners were picking up space debris. There is no danger. We apologize for the inconvenience.", "False Alarm")
diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm
index 50f53f66ef2..62279262baf 100644
--- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm
@@ -61,30 +61,6 @@
maxHealth = 80
ranged = 1
-/mob/living/simple_animal/hostile/hivebot/engineer
- name = "engineer hivebot"
- desc = "A little robot with a tiny welder on its arm."
- icon_state = "EngBot"
- health = 25
- maxHealth = 25
- melee_damage_lower = 0
- melee_damage_upper = 0
- ranged = 1
- retreat_distance = 2
- minimum_distance = 2
-
-/mob/living/simple_animal/hostile/hivebot/engineer/handle_automated_action()
- ..()
- for(var/obj/machinery/hivebot_swarm_core/C in view(5, src))
- if(C.obj_integrity < C.max_integrity)
- if(!Adjacent(C))
- Goto(C, 5)
- else
- visible_message("[src] welds some of the dents on [C]!")
- playsound(C, 'sound/items/Welder.ogg', 50, 1)
- C.obj_integrity = min(C.obj_integrity + 20, C.max_integrity)
- break
-
/mob/living/simple_animal/hostile/hivebot/death(gibbed)
do_sparks(3, TRUE, src)
..(1)
\ No newline at end of file
diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi
index 4c78b8919e1..102fc01000a 100644
Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ
diff --git a/icons/mob/hivebot.dmi b/icons/mob/hivebot.dmi
index 3665b39a508..ce37adbdfee 100644
Binary files a/icons/mob/hivebot.dmi and b/icons/mob/hivebot.dmi differ
diff --git a/sound/machines/buzzsaw_BRRRRR.ogg b/sound/machines/buzzsaw_BRRRRR.ogg
deleted file mode 100644
index c49e055a06f..00000000000
Binary files a/sound/machines/buzzsaw_BRRRRR.ogg and /dev/null differ
diff --git a/sound/machines/buzzsaw_windup.ogg b/sound/machines/buzzsaw_windup.ogg
deleted file mode 100644
index 0a724505653..00000000000
Binary files a/sound/machines/buzzsaw_windup.ogg and /dev/null differ
diff --git a/sound/machines/warning_alarm.ogg b/sound/machines/warning_alarm.ogg
deleted file mode 100644
index 1882743e8de..00000000000
Binary files a/sound/machines/warning_alarm.ogg and /dev/null differ
diff --git a/tgstation.dme b/tgstation.dme
index 8c13f0dfb52..8326c1b66bc 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -532,7 +532,6 @@
#include "code\game\machinery\flasher.dm"
#include "code\game\machinery\gulag_item_reclaimer.dm"
#include "code\game\machinery\gulag_teleporter.dm"
-#include "code\game\machinery\hivebot_swarm_core.dm"
#include "code\game\machinery\hologram.dm"
#include "code\game\machinery\igniter.dm"
#include "code\game\machinery\iv_drip.dm"
@@ -737,7 +736,6 @@
#include "code\game\objects\items\devices\forcefieldprojector.dm"
#include "code\game\objects\items\devices\geiger_counter.dm"
#include "code\game\objects\items\devices\gps.dm"
-#include "code\game\objects\items\devices\hivebot_crux.dm"
#include "code\game\objects\items\devices\instruments.dm"
#include "code\game\objects\items\devices\laserpointer.dm"
#include "code\game\objects\items\devices\lightreplacer.dm"
@@ -1243,7 +1241,6 @@
#include "code\modules\events\false_alarm.dm"
#include "code\modules\events\ghost_role.dm"
#include "code\modules\events\grid_check.dm"
-#include "code\modules\events\hivebot_invasion.dm"
#include "code\modules\events\immovable_rod.dm"
#include "code\modules\events\ion_storm.dm"
#include "code\modules\events\major_dust.dm"