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"