Revert "Adds the hivebot invasion event (#28514)"

This reverts commit 78a2e5c4c3.
This commit is contained in:
oranges
2017-07-25 23:06:38 +00:00
parent 1ff034b0af
commit b44bb6ffad
12 changed files with 3 additions and 256 deletions
+3 -25
View File
@@ -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)
-122
View File
@@ -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("<span class='warning'>[src] falls apart, its red eyes sputtering out.</span>")
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, "<span class='warning'>It seems to be recharging.</span>")
/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("<span class='warning'>[src] turns ominously towards [threat_to_swarm]!</span>")
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("<span class='warning'>[src] warps in a swarm of hivebots!</span>")
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("<span class='warning'>[src] revs its buzzsaw!</span>")
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("<span class='warning'>[src]'s buzzsaw rips into [L]!</span>", "<span class='userdanger'>[src]'s buzzsaw rips into you!</span>")
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)
@@ -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
-18
View File
@@ -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, "<span class='warning'>It's gently vibrating...</span>") //Hint at the treasure inside
/obj/structure/fluff/hivebot_swarm_core/Destroy()
visible_message("<span class='warning'>Something tumbles free of [src]!</span>")
new/obj/item/device/hivebot_crux(get_turf(src))
return ..()
-54
View File
@@ -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")
@@ -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("<span class='warning'>[src] welds some of the dents on [C]!</span>")
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)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
-3
View File
@@ -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"