From 05ecea099ec4073efc44e3fcb4084480074ff43a Mon Sep 17 00:00:00 2001
From: vode-code <65709050+vode-code@users.noreply.github.com>
Date: Mon, 10 Jul 2023 18:26:25 -0700
Subject: [PATCH 1/2] reduces baycode levels WARNING MAP UPDATE removes Blob
Event removes Viscerators removes electropacks removes "Send Emergency
Message" verb removes some unused files removes outdated portrayal of
Syndicate mobs
---
cev_eris.dme | 6 -
code/datums/autolathe/security.dm | 4 -
code/datums/uplink/grenades.dm | 6 +-
code/game/gamemodes/events/blob.dm | 576 ------------------
code/game/machinery/commsbantenna.dm | 34 --
code/game/machinery/syndicatebeacon.dm | 169 -----
code/game/machinery/transformer.dm | 56 --
.../items/devices/radio/electropack.dm | 129 ----
.../items/weapons/design_disks/ironhammer.dm | 1 -
.../items/weapons/grenades/flashbang.dm | 4 -
.../items/weapons/grenades/smokebomb.dm | 4 -
.../items/weapons/grenades/spawnergrenade.dm | 52 --
.../objects/items/weapons/sword_of_truth.dm | 4 -
.../game/objects/items/weapons/tanks/tanks.dm | 3 +
.../structures/crates_lockers/closets.dm | 33 -
.../crates_lockers/closets/secure/medical.dm | 11 -
code/game/objects/structures/electricchair.dm | 71 ---
.../structures/stool_bed_chair_nest/chairs.dm | 16 +-
code/modules/assembly/shock_kit.dm | 50 --
code/modules/dungeons/teleporter.dm | 4 +-
code/modules/mob/living/silicon/ai/ai.dm | 22 -
.../living/simple_animal/hostile/syndicate.dm | 159 -----
.../file_system/programs/command/comm.dm | 6 -
.../reagents/reagent_containers/spray.dm | 3 -
maps/CEVEris/centcomm.dmm | 2 -
25 files changed, 6 insertions(+), 1419 deletions(-)
delete mode 100644 code/game/gamemodes/events/blob.dm
delete mode 100644 code/game/machinery/commsbantenna.dm
delete mode 100644 code/game/machinery/syndicatebeacon.dm
delete mode 100644 code/game/machinery/transformer.dm
delete mode 100644 code/game/objects/items/devices/radio/electropack.dm
delete mode 100644 code/game/objects/items/weapons/grenades/spawnergrenade.dm
delete mode 100644 code/game/objects/structures/electricchair.dm
delete mode 100644 code/modules/assembly/shock_kit.dm
delete mode 100644 code/modules/mob/living/simple_animal/hostile/syndicate.dm
diff --git a/cev_eris.dme b/cev_eris.dme
index 46ec057d891..31ef65b8d79 100644
--- a/cev_eris.dme
+++ b/cev_eris.dme
@@ -573,7 +573,6 @@
#include "code\game\gamemodes\endgame\supermatter_cascade\universe.dm"
#include "code\game\gamemodes\events\apc_damage.dm"
#include "code\game\gamemodes\events\black_hole.dm"
-#include "code\game\gamemodes\events\blob.dm"
#include "code\game\gamemodes\events\brand_intelligence.dm"
#include "code\game\gamemodes\events\camera_damage.dm"
#include "code\game\gamemodes\events\carp_migration.dm"
@@ -934,7 +933,6 @@
#include "code\game\objects\items\devices\PDA\PDA.dm"
#include "code\game\objects\items\devices\PDA\radio.dm"
#include "code\game\objects\items\devices\radio\beacon.dm"
-#include "code\game\objects\items\devices\radio\electropack.dm"
#include "code\game\objects\items\devices\radio\encryptionkey.dm"
#include "code\game\objects\items\devices\radio\headset.dm"
#include "code\game\objects\items\devices\radio\intercom.dm"
@@ -1061,7 +1059,6 @@
#include "code\game\objects\items\weapons\grenades\heatwave.dm"
#include "code\game\objects\items\weapons\grenades\smokebomb.dm"
#include "code\game\objects\items\weapons\grenades\sonic.dm"
-#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm"
#include "code\game\objects\items\weapons\implant\implant.dm"
#include "code\game\objects\items\weapons\implant\implantcase.dm"
#include "code\game\objects\items\weapons\implant\implanter.dm"
@@ -1222,7 +1219,6 @@
#include "code\game\objects\structures\cyberplants.dm"
#include "code\game\objects\structures\displaycase.dm"
#include "code\game\objects\structures\door_assembly.dm"
-#include "code\game\objects\structures\electricchair.dm"
#include "code\game\objects\structures\extinguisher.dm"
#include "code\game\objects\structures\fireaxe_cabinet.dm"
#include "code\game\objects\structures\flora.dm"
@@ -1450,7 +1446,6 @@
#include "code\modules\assembly\infrared.dm"
#include "code\modules\assembly\mousetrap.dm"
#include "code\modules\assembly\proximity.dm"
-#include "code\modules\assembly\shock_kit.dm"
#include "code\modules\assembly\signaler.dm"
#include "code\modules\assembly\timer.dm"
#include "code\modules\assembly\voice.dm"
@@ -2100,7 +2095,6 @@
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
#include "code\modules\mob\living\simple_animal\hostile\russian.dm"
#include "code\modules\mob\living\simple_animal\hostile\stranger.dm"
-#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm"
#include "code\modules\mob\living\simple_animal\hostile\tree.dm"
#include "code\modules\mob\living\simple_animal\hostile\commanded\bear_companion.dm"
#include "code\modules\mob\living\simple_animal\hostile\commanded\commanded.dm"
diff --git a/code/datums/autolathe/security.dm b/code/datums/autolathe/security.dm
index 6dde6123966..c8003e88193 100644
--- a/code/datums/autolathe/security.dm
+++ b/code/datums/autolathe/security.dm
@@ -10,10 +10,6 @@
name = "zip ties"
build_path = /obj/item/handcuffs/zipties
-/datum/design/autolathe/sec/electropack
- name = "electropack"
- build_path = /obj/item/device/radio/electropack
-
/datum/design/autolathe/sec/binoculars
name = "binoculars"
build_path = /obj/item/device/binoculars
diff --git a/code/datums/uplink/grenades.dm b/code/datums/uplink/grenades.dm
index 4dfcfa98eff..b321b8b530d 100644
--- a/code/datums/uplink/grenades.dm
+++ b/code/datums/uplink/grenades.dm
@@ -34,11 +34,7 @@
item_cost = 10
path = /obj/item/storage/box/explosive
-/datum/uplink_item/item/grenades/viscerator
- name = "viscerator grenade"
- item_cost = 5
- path = /obj/item/grenade/spawnergrenade/manhacks
-
+
/datum/uplink_item/item/grenades/flash
name = "5xFlashbang Grenades"
item_cost = 5
diff --git a/code/game/gamemodes/events/blob.dm b/code/game/gamemodes/events/blob.dm
deleted file mode 100644
index b89e8d1802c..00000000000
--- a/code/game/gamemodes/events/blob.dm
+++ /dev/null
@@ -1,576 +0,0 @@
-/*
- The blob is a horrible acidic slime creature that eats through airlocks and expands infinitely.
- The rate of expansion slows down as it grows, so it is ultimately soft-capped
-
- Its attacks deal light burn damage, but spam many hits. They deal a lot of damage by splashing acid
- onto victims, allowing acidproof gear to provide some good protection
-
- Blobs are very vulnerable to fire and lasers. Flamethrower is the recommended weapon, and
- In an emergency, a plasma canister and a lighter will bring a quick end to a blob
-*/
-
-/datum/storyevent/blob
- id = "blob"
- name = "Blob"
-
-
- event_type = /datum/event/blob
- event_pools = list(EVENT_LEVEL_MAJOR = POOL_THRESHOLD_MAJOR*1.35)
- tags = list(TAG_COMBAT, TAG_DESTRUCTIVE, TAG_NEGATIVE)
-//============================================
-
-/datum/event/blob
- announceWhen = 12
-
- var/obj/effect/blob/core/Blob
-
-/datum/event/blob/announce()
- level_seven_announcement()
-
-/datum/event/blob/start()
- var/area/A = random_ship_area(filter_players = TRUE, filter_critical = TRUE)
- var/turf/T = A.random_space()
- if(!T)
- log_and_message_admins("Blob failed to find a viable turf.")
- kill()
- return
-
- log_and_message_admins("Blob spawned at \the [get_area(T)]", location = T)
- Blob = new /obj/effect/blob/core(T)
- for(var/i = 1; i < rand(3, 4), i++)
- Blob.Process()
-
-/datum/event/blob/tick()
- if(!Blob || !Blob.loc)
- Blob = null
- kill()
- return
- if(ISMULTIPLE(activeFor, 3))
- Blob.Process()
-
-
-//===============================================
-
-/*
- Code for how the blob functions
- Nanako fixed this mess in October 2018
-*/
-/obj/effect/blob
- name = "blob"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob"
- var/icon_scale = 1
- light_range = 3
- desc = "Some blob creature thingy"
- density = FALSE //Normal blobs can be walked over, but it's not a good idea
-
- opacity = 0
- anchored = TRUE
- mouse_opacity = 2
-
- var/maxHealth = 20
- var/health = 1
- var/health_regen = 1.7
- var/brute_resist = 1.25
- var/fire_resist = 0.6
- var/expandType = /obj/effect/blob
-
- //We will periodically update and track neighbors in two lists:
- //One which contains all blobs in cardinal directions, and one which contains all cardinal turfs that dont have blobs
- var/list/blob_neighbors = list()
- var/list/non_blob_neighbors = list()
- var/obj/effect/blob/core/core
-
- var/obj/effect/blob/parent
- var/active = FALSE
-
- //World time when we're allowed to expand next.
- //Expansion gets slower as the blob gets farther away from the origin core
- var/next_expansion = 0
- var/coredist = 1
- var/dist_time_scaling = 1.5
-
-/obj/effect/blob/New(loc, var/obj/effect/blob/_parent)
- if (_parent)
- parent = _parent
- core = parent.core
- coredist = max(1,get_dist(src, core))
-
- //Accounting for zlevel distance
- if (src.z != core.z)
- coredist += (abs(z - core.z)*3)
-
- health += (maxHealth*0.5) - coredist
- update_icon()
- set_awake()
-
-
- //Random rotation for blobs, as well as larger sizing for some
- var/rot = pick(list(0, 90, 180, -90))
- var/matrix/M = matrix()
- M.Turn(rot)
- M.Scale(icon_scale)
- transform = M
- name += "[rand(0,999)]"
- return ..(loc)
-
-/obj/effect/blob/Destroy()
- STOP_PROCESSING(SSobj, src)
- wake_neighbors()
- return ..()
-
-/obj/effect/blob/CanPass(var/atom/mover)
- //No letting projectiles through
- if (istype(mover, /obj/item/projectile))
- return FALSE
-
- //But mobs can walk over the nondense ones.
- return ..()
-
-/obj/effect/blob/proc/update_neighbors()
- blob_neighbors = list()
- non_blob_neighbors = list()
- var/list/turfs = cardinal_turfs(src)
- for (var/t in turfs)
-
- var/turf/T = t
- var/turf/U = get_connecting_turf(T, loc)//This handles Zlevel stuff
- //If the target turf connects to another across Zlevels, U will hold the destination
- var/obj/effect/blob/B = (locate(/obj/effect/blob/) in U)
- //We check for existing blobs in the destination
- if (B)
- blob_neighbors.Add(B)
- else
- //But we add the origin to our neighbors if there isnt a blob
- //Blob spawning code will handle making a new blob transition the zlevel
- non_blob_neighbors.Add(T)
-
-
-
-/*************************************************
- Basic blob processing. Every tick we will update our neighbors, try to expand, etc
-**************************************************/
-/obj/effect/blob/Process()
-
- //Shouldn't happen, but maybe a process tick was still queued up when we stopped
- if (!active)
- return PROCESS_KILL
-
- //Heal ourselves
- regen()
-
-
- if (world.time >= next_expansion)
- //Update our neighbors. This may cause us to stop processing
- update_neighbors()
-
-
-
- //Okay if we're still active then we maybe have some expanding to do
- if (health >= maxHealth && non_blob_neighbors.len)
- //We will attempt to expand into only one of the possible nearby tiles
- expand(pick(non_blob_neighbors))
-
-
- //Maybe there are mobs in our tile we still need to melt
- if (!attack_mobs())
- //If not, try to go to sleep
- set_idle()
-
- //Another active check here
- if (!active)
- return PROCESS_KILL
-
- set_expand_time()
-
-/obj/effect/blob/proc/regen()
- if (!(QDELETED(core)))
- health = min(health + health_regen, maxHealth)
- else
- core = null
- //When the core is gone, the blob starts dying
- //The closer it was to the core, the faster it dies. So death spreads out radially
- take_damage((1 / coredist))
- update_icon()
-
-/*
- The blob is allowed to grow forever, there is no upper limit to its size
- However, the farther away each segment is from the core, the longer it must rest between expansions
-*/
-/obj/effect/blob/proc/set_expand_time()
- if (!(QDELETED(core)))
- next_expansion = world.time + ((1 SECONDS) * (dist_time_scaling ** coredist))
- else
- //If the core is gone, no more expansion
- next_expansion = INFINITY
-
-
-
-
-/*
- TO minimise performance costs at massive sizes, blobs will go to sleep once they're no longer at the
- edge or relevant.
- If a blob finds itself surrounded on all sides by other blobs, and it is at full health, it has nothing to do
-*/
-/obj/effect/blob/proc/set_idle()
- if (!active)
- return
-
- if (blob_neighbors.len == 4) //We must have a full list of blobneighbors
- if (health >= maxHealth) //We must be at full health
- if (!(QDELETED(core)))//We must have a living core
- if (!attackable_mobs_in_turf())
- STOP_PROCESSING(SSobj, src)
- active = FALSE
-
-
-/obj/effect/blob/proc/attackable_mobs_in_turf()
- for (var/mob/living/L in loc)
- if (L.stat != DEAD)
- return TRUE
-
- for (var/mob/living/exosuit/M in loc)
- return TRUE
-
- return FALSE
-
-/*
- Wake up the blob and make it start processing again.
- This will happen when any neighboring blob is killed
-*/
-/obj/effect/blob/proc/set_awake()
- if (active)
- return
-
- START_PROCESSING(SSobj, src)
- active = TRUE
- set_expand_time()
-
-
-/obj/effect/blob/proc/wake_neighbors()
- update_neighbors()
-
- //Spawn it off so this part will trigger after we're qdeleted
- spawn()
- for (var/obj/effect/blob/B in blob_neighbors)
- B.set_awake()
-
-
-/obj/effect/blob/ex_act(var/severity)
- switch(severity)
- if(1)
- take_damage(rand(100, 120) / brute_resist)
- if(2)
- take_damage(rand(60, 100) / brute_resist)
- if(3)
- take_damage(rand(20, 60) / brute_resist)
- if(4)
- take_damage(rand(10, 30) / brute_resist)
-
-
-/obj/effect/blob/fire_act()
- take_damage(rand(20, 60) / fire_resist)
-
-/obj/effect/blob/update_icon()
- var/healthpercent = health / maxHealth
- if(healthpercent > 0.5)
- icon_state = "blob"
- else
- icon_state = "blob_damaged"
-
- //Blob gradually fades out as it's damaged.
- alpha = 255 * healthpercent
-
-/obj/effect/blob/proc/take_damage(var/damage)
- if (damage > 0)
- health -= damage
-
- if (damage >= 5)
- //Threshold reduces sound spam
- playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
- if(health < 0)
- playsound(loc, 'sound/effects/splat.ogg', 50, 1)
- qdel(src)
- else
- update_icon()
- wake_neighbors()
-
-
-
-
-
-
-
-/*********************************
- EXPANDING!
-**********************************/
-//Changes by Nanako, 14th october 2018
-//Blob now deals vastly reduced damage to walls and windows, but vastly increased damage to doors
-/obj/effect/blob/proc/expand(var/turf/T)
- if(istype(T, /turf/unsimulated/) || istype(T, /turf/space) || (istype(T, /turf/simulated/mineral) && T.density))
- return
- if(istype(T, /turf/simulated/wall))
- var/turf/simulated/wall/SW = T
- SW.take_damage(rand(0,3))
- return
- var/obj/structure/girder/G = locate() in T
- if(G)
- G.take_damage(100)
-
- //No return here because a girder is porous, we can expand past it
- var/obj/structure/window/W = locate() in T
- if(W)
- W.take_damage(rand(0,7)) //Reinforced windows have 6 resistance so this will rarely damage them
- return
- var/obj/structure/grille/GR = locate() in T
- if(GR)
- qdel(GR)
- return
- for(var/obj/machinery/door/D in T)
- if(D.density)
- D.take_damage(100)
- //Blob eats through doors VERY quickly
- return
- var/obj/structure/foamedmetal/F = locate() in T
- if(F)
- qdel(F)
- return
- var/obj/structure/inflatable/I = locate() in T
- if(I)
- I.deflate(1)
- return
-
- var/obj/vehicle/V = locate() in T
- if(V)
- V.ex_act(2)
- return
- var/obj/machinery/bot/B = locate() in T
- if(B)
- B.ex_act(2)
- return
-
- T.Enter(src) //This should make them travel down stairs
-
- // Above things, we destroy completely and thus can use locate. Mobs are different.
- for(var/mob/living/L in T)
- attack_mobs(T)//We don't destroy mobs, we'll just grow under their feet and attack them in the process
- break
-
- //We'll occasionally spawn shield tiles instead of normal blobs
- var/obj/effect/blob/child
- if (prob(6))
- child = new /obj/effect/blob/shield(loc, src)
- else
- child = new expandType(loc, src)
-
- //Spawn the child blob and move it into the new tile
- spawn(1)
- child.handle_move(loc, T)
-
-
-//This silly special case override is needed to make blobs work with portals.
-//Code is copied from /atoms_movable.dm, but a spawn call is removed, making it completely synchronous
-/obj/effect/blob/Bump(var/atom/A, yes)
- if (A && yes)
- A.last_bumped = world.time
- A.Bumped(src)
-
-
-//Once created, the new blob moves to its destination turf
-/obj/effect/blob/proc/handle_move(var/turf/origin, var/turf/destination)
- //First of all lets ensure we still exist.
- //We may have been deleted by another blob doing postmove cleanup
- if (QDELETED(src))
- return
-
- //And lets make sure we haven't already moved
- if (loc != origin)
- return
-
- //We un-anchor ourselves, so that we're exposed to effects like gravity and teleporting
- anchored = FALSE
-
- //Now we will attempt a normal movement, obeying all the normal rules
- //This allows us to bump into portals and get teleported
- Move(destination)
-
- /*Now we check if we went anywhere. We don't care about the return value of move, we do our own check
- In the case of a portal, or falling through an openspace, or moving along stairs, Move may return false
- but we've still gone somewhere. We will only consider it a failure if we're still where we started
- */
- if (loc == origin)
- //That failed, okay this time we're not asking
- forceMove(destination)
- //forceMove won't work properly with portals, so we only do it as a backup option
-
-
- //Ok now we should definitely be somewhere
- if (loc == origin)
- //Welp, we give up.
- //This shouldn't be possible, but if it somehow happens then this blob is toast
- qdel(src)
- return
-
- //Ok we got somewhere, hooray
- //Now we settle down
- anchored = TRUE
-
- //And do this
- handle_postmove()
-
-//Now we clean up our arrival tile
-/obj/effect/blob/proc/handle_postmove()
- for (var/obj/effect/blob/Bl in loc)
- if (Bl != src)
- qdel(Bl) //Lets make sure we don't get doubleblobs
-
-/*******************
- BLOB ATTACKING
-********************/
-//Blobs will do horrible things to any mobs they share a tile with
-//Returns true if any mob was damaged, false if not
-/obj/effect/blob/proc/attack_mobs(var/turf/T)
- if (!T)
- T = loc
- for (var/mob/living/L in T)
- if(L.stat == DEAD)
- continue
- L.visible_message(SPAN_DANGER("The blob attacks \the [L]!"), SPAN_DANGER("The blob attacks you!"))
- playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
- L.take_organ_damage(burn = RAND_DECIMAL(0.4, 2.3))
-
- //In addition to the flat damage above, we will also splash a small amount of acid on the target
- //This allows them to wear acidproof gear to resist it
- if (iscarbon(L))
- var/datum/reagents/R = new /datum/reagents(4, null)
- R.add_reagent("sacid", RAND_DECIMAL(0.8,4))
- R.trans_to(L, R.total_volume)
- qdel(R)
-
- return TRUE
-
- //If we get here, nobody was harmed
- return FALSE
-
-
-//Stepping on a blob is bad for your health.
-//When walked over, the blob will wake up and attack whoever stepped on it
-//Since it's awake, it will keep attacking them every process call until they leave or die
-/obj/effect/blob/Crossed()
- set_awake()
- attack_mobs()
-
-/*******************
- BLOB DEFENSE
-********************/
-
-//Bullets which hit a blob will keep going on through if they kill it
-/obj/effect/blob/bullet_act(var/obj/item/projectile/Proj)
- if(!Proj)
- return
-
- var/absorbed_damage //The amount of damage that will be subtracted from the projectile
- var/taken_damage //The amount of damage the blob will recieve
- for(var/i in Proj.damage_types)
- if(i == BRUTE)
- absorbed_damage = min(health * brute_resist, Proj.damage_types[i])
- taken_damage = (Proj.damage_types[i] / brute_resist)
- Proj.damage_types[i] -= absorbed_damage
- if(i == BURN)
- absorbed_damage = min(health * fire_resist, Proj.damage_types[i])
- taken_damage= (Proj.damage_types[i] / fire_resist)
- Proj.damage_types[i] -= absorbed_damage
- take_damage(taken_damage)
- if (Proj.get_total_damage() <= 0)
- return 0
- else
- return PROJECTILE_CONTINUE
-
-/obj/effect/blob/attackby(var/obj/item/W, var/mob/user)
- user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
- if(W.force && !(W.flags & NOBLUDGEON))
- user.do_attack_animation(src, TRUE)
- var/damage = 0
- switch(W.damtype)
- if("fire")
- damage = (W.force / fire_resist)
- if(istype(W, /obj/item/tool/weldingtool))
- playsound(loc, 'sound/items/Welder.ogg', 100, 1)
- if("brute")
- damage = (W.force / brute_resist)
-
- take_damage(damage)
- return 1
- return ..()
-
-/obj/effect/blob/attack_generic(mob/M, damage, attack_message)
- if(damage)
- M.do_attack_animation(src)
- M.visible_message(SPAN_DANGER("\The [M] [attack_message] \the [src]!"))
- playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
- take_damage(damage/brute_resist)
- else
- attack_hand(M)
-
-/obj/effect/blob/core
- name = "blob core"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_core"
- maxHealth = 200
- health = 200
- brute_resist = 4
- fire_resist = 2
- density = TRUE
- icon_scale = 1.2
- health_regen = 0 //The core does not heal
-
- expandType = /obj/effect/blob/shield
-
-
-/obj/effect/blob/core/New()
- core = src //It is its own core
- ..()
-
-/obj/effect/blob/core/update_icon()
- return
-
-//When the core dies, wake up all our sub-blobs so they can slowly die too
-/obj/effect/blob/core/Destroy()
- for (var/obj/effect/blob/B in world)
- if (B == src)
- continue
- if (B.core == src)
- B.core = null
- B.set_awake()
- return ..()
-
-
-
-/obj/effect/blob/shield
- name = "strong blob"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_idle"
- desc = "Some blob creature thingy"
- maxHealth = 160
- health = 160
- health_regen = 2
- brute_resist = 2
- fire_resist = 1
- density = TRUE
- icon_scale = 1.2
-
-/obj/effect/blob/shield/update_icon()
- var/healthpercent = health / maxHealth
- if(healthpercent > 0.6)
- icon_state = "blob_idle"
- else if(healthpercent > 0.3)
- icon_state = "blob"
- else
- icon_state = "blob_damaged"
-
-
-
- //Blob gradually fades out as it's damaged.
- alpha = 255 * healthpercent
-
-
diff --git a/code/game/machinery/commsbantenna.dm b/code/game/machinery/commsbantenna.dm
deleted file mode 100644
index 7ccf86f5dc7..00000000000
--- a/code/game/machinery/commsbantenna.dm
+++ /dev/null
@@ -1,34 +0,0 @@
-/obj/machinery/bluespacerelay
- name = "Emergency Bluespace Relay"
- desc = "This sends messages through bluespace! Wow!"
- icon = 'icons/obj/stationobjs.dmi'
- icon_state = "bspacerelay"
-
- anchored = TRUE
- density = TRUE
- use_power = IDLE_POWER_USE
- var/on = TRUE
-
- idle_power_usage = 15000
- active_power_usage = 15000
-
-/obj/machinery/bluespacerelay/process()
-
- update_power()
-
- update_icon()
-
-
-/obj/machinery/bluespacerelay/update_icon()
- if(on)
- icon_state = initial(icon_state)
- else
- icon_state = "[initial(icon_state)]_off"
-
-/obj/machinery/bluespacerelay/proc/update_power()
-
- if(stat & (BROKEN|NOPOWER|EMPED))
- on = FALSE
- else
- on = TRUE
-
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
deleted file mode 100644
index 98f0fb2a8c8..00000000000
--- a/code/game/machinery/syndicatebeacon.dm
+++ /dev/null
@@ -1,169 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-// Beacon randomly spawns in space
-// When a non-contractor (no special role in /mind) uses it, he is given the choice to become a contractor
-// If he accepts there is a random chance he will be accepted, rejected, or rejected and killed
-// Bringing certain items can help improve the chance to become a contractor
-
-
-/obj/machinery/syndicate_beacon
- name = "ominous beacon"
- desc = "This looks suspicious..."
- icon = 'icons/obj/device.dmi'
- icon_state = "syndbeacon"
-
- anchored = TRUE
- density = TRUE
- layer = BELOW_MOB_LAYER //so people can't hide it and it's REALLY OBVIOUS
-
- var/temptext = ""
- var/selfdestructing = 0
- var/charges = 1
-
-/obj/machinery/syndicate_beacon/attack_hand(mob/user)
- usr.set_machine(src)
- var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
"
- if(ishuman(user) || isAI(user))
- if(is_special_character(user) > LIMITED_ANTAG)
- dat += "Operative record found. Greetings, Agent [user.name].
"
- else if(charges < 1)
- dat += "Connection severed.
"
- else
- var/honorific = "Mr."
- if(user.gender == FEMALE)
- honorific = "Ms."
- dat += "Identity not found in operative database. What can the Syndicate do for you today, [honorific] [user.name]?
"
- if(!selfdestructing)
- dat += "
\"[pick("I want to switch teams.", "I want to work for you.", "Let me join you.", "I can be of use to you.", "You want me working for you, and here's why...", "Give me an objective.", "How's the 401k over at the Syndicate?")]\"
"
- dat += temptext
- user << browse(dat, "window=syndbeacon")
- onclose(user, "syndbeacon")
-
-/obj/machinery/syndicate_beacon/Topic(href, href_list)
- if(..())
- return
- if(href_list["becontractor"])
- if(charges < 1)
- src.updateUsrDialog()
- return
- var/mob/M = locate(href_list["contractormob"])
- if(M.mind.antagonist.len || jobban_isbanned(M, "Syndicate"))
- temptext = "We have no need for you at this time. Have a pleasant day.
"
- src.updateUsrDialog()
- return
- charges -= 1
- switch(rand(1,2))
- if(1)
- temptext = "Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind."
- src.updateUsrDialog()
- spawn(rand(50,200)) selfdestruct()
- return
- if(ishuman(M))
- var/mob/living/carbon/human/N = M
- M << "You have joined the ranks of the Syndicate and become a contractor to the station!"
- contractors.add_antagonist(N.mind)
- contractors.equip(N)
- message_admins("[N]/([N.ckey]) has accepted a contractor objective from a syndicate beacon.")
-
-
- src.updateUsrDialog()
- return
-
-
-/obj/machinery/syndicate_beacon/proc/selfdestruct()
- selfdestructing = 1
- spawn() explosion(src.loc, 1, rand(1,3), rand(3,8), 10)
-
-////////////////////////////////////////
-//Singularity beacon
-////////////////////////////////////////
-/obj/machinery/power/singularity_beacon
- name = "ominous beacon"
- desc = "This looks suspicious..."
- icon = 'icons/obj/singularity.dmi'
- icon_state = "beacon"
-
- anchored = FALSE
- density = TRUE
- layer = LOW_OBJ_LAYER
- stat = 0
-
- var/active = 0
- var/icontype = "beacon"
-
-
-/obj/machinery/power/singularity_beacon/proc/Activate(mob/user = null)
- if(surplus() < 1500)
- if(user) user << SPAN_NOTICE("The connected wire doesn't have enough current.")
- return
- for(var/obj/singularity/singulo in world)
- if(singulo.z == z)
- singulo.target = src
- icon_state = "[icontype]1"
- active = 1
- machines |= src
- if(user)
- user << SPAN_NOTICE("You activate the beacon.")
-
-
-/obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user = null)
- for(var/obj/singularity/singulo in world)
- if(singulo.target == src)
- singulo.target = null
- icon_state = "[icontype]0"
- active = 0
- if(user)
- user << SPAN_NOTICE("You deactivate the beacon.")
-
-
-/obj/machinery/power/singularity_beacon/attack_ai(mob/user as mob)
- return
-
-
-/obj/machinery/power/singularity_beacon/attack_hand(var/mob/user as mob)
- if(anchored)
- return active ? Deactivate(user) : Activate(user)
- else
- user << SPAN_DANGER("You need to screw the beacon to the floor first!")
- return
-
-
-/obj/machinery/power/singularity_beacon/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W,/obj/item/tool/screwdriver))
- if(active)
- user << SPAN_DANGER("You need to deactivate the beacon first!")
- return
-
- if(anchored)
- anchored = FALSE
- user << SPAN_NOTICE("You unscrew the beacon from the floor.")
- disconnect_from_network()
- return
- else
- if(!connect_to_network())
- user << "This device must be placed over an exposed cable."
- return
- anchored = TRUE
- user << SPAN_NOTICE("You screw the beacon to the floor and attach the cable.")
- return
- ..()
- return
-
-
-/obj/machinery/power/singularity_beacon/Destroy()
- if(active)
- Deactivate()
- . = ..()
-
-//stealth direct power usage
-/obj/machinery/power/singularity_beacon/process()
- if(!active)
- return PROCESS_KILL
- else
- if(draw_power(1500) < 1500)
- Deactivate()
-
-
-/obj/machinery/power/singularity_beacon/syndicate
- icontype = "beaconsynd"
- icon_state = "beaconsynd0"
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
deleted file mode 100644
index 9aeb5b39f00..00000000000
--- a/code/game/machinery/transformer.dm
+++ /dev/null
@@ -1,56 +0,0 @@
-/obj/machinery/transformer
- name = "Automatic Robotic Factory 5000"
- desc = "A large metalic machine with an entrance and an exit. A sign on the side reads, 'human go in, robot come out', human must be lying down and alive."
- icon = 'icons/obj/recycling.dmi'
- icon_state = "separator-AO1"
- layer = MOB_LAYER+1 // Overhead
- anchored = TRUE
- density = TRUE
- var/transform_dead = 0
- var/transform_standing = 0
-
-/obj/machinery/transformer/New()
- // On us
- ..()
- new /obj/machinery/conveyor(loc, WEST, 1)
-
-/obj/machinery/transformer/Bumped(var/atom/movable/AM)
- // HasEntered didn't like people lying down.
- if(ishuman(AM))
- // Only humans can enter from the west side, while lying down.
- var/move_dir = get_dir(loc, AM.loc)
- var/mob/living/carbon/human/H = AM
- if((transform_standing || H.lying) && move_dir == EAST)// || move_dir == WEST)
- AM.loc = src.loc
- transform(AM)
-
-/obj/machinery/transformer/proc/transform(var/mob/living/carbon/human/H)
- if(stat & (BROKEN|NOPOWER))
- return
- if(!transform_dead && H.stat == DEAD)
- playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
- return
- playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
- use_power(5000) // Use a lot of power.
- var/mob/living/silicon/robot = H.Robotize()
- robot.SetLockDown()
- spawn(50) // So he can't jump out the gate right away.
- playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
- if(robot)
- robot.SetLockDown(0)
-
-/obj/machinery/transformer/conveyor/New()
- ..()
- var/turf/T = loc
- if(T)
- // Spawn Conveyour Belts
-
- //East
- var/turf/east = locate(T.x + 1, T.y, T.z)
- if(istype(east, /turf/simulated/floor))
- new /obj/machinery/conveyor(east, WEST, 1)
-
- // West
- var/turf/west = locate(T.x - 1, T.y, T.z)
- if(istype(west, /turf/simulated/floor))
- new /obj/machinery/conveyor(west, WEST, 1)
\ No newline at end of file
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
deleted file mode 100644
index 607afad3c7a..00000000000
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ /dev/null
@@ -1,129 +0,0 @@
-/obj/item/device/radio/electropack
- name = "electropack"
- desc = "Dance my monkeys! DANCE!!!"
- icon_state = "electropack0"
- item_state = "electropack"
- frequency = 1449
- flags = CONDUCT
- slot_flags = SLOT_BACK
- w_class = ITEM_SIZE_HUGE
-
- matter = list(MATERIAL_STEEL = 8, MATERIAL_PLASTIC = 2)
-
- var/code = 2
-
-/obj/item/device/radio/electropack/attack_hand(mob/user as mob)
- if(src == user.back)
- to_chat(user, SPAN_NOTICE("You need help taking this off!"))
- return
- ..()
-
-/obj/item/device/radio/electropack/attackby(obj/item/W as obj, mob/user as mob)
- ..()
- if(istype(W, /obj/item/clothing/head/armor/helmet))
- if(!b_stat)
- to_chat(user, SPAN_NOTICE("[src] is not ready to be attached!"))
- return
- var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
- A.icon = 'icons/obj/assemblies.dmi'
-
- user.drop_from_inventory(W)
- W.loc = A
- W.master = A
- A.part1 = W
-
- user.drop_from_inventory(src)
- loc = A
- master = A
- A.part2 = src
-
- user.put_in_hands(A)
- A.add_fingerprint(user)
-
-/obj/item/device/radio/electropack/Topic(href, href_list)
- //..()
- if(usr.stat || usr.restrained())
- return
-
- if(usr.contents.Find(master) || (isturf(loc) && in_range(src, usr)))
- usr.set_machine(src)
- if(href_list["freq"])
- var/new_frequency = sanitize_frequency(frequency + text2num(href_list["freq"]))
- set_frequency(new_frequency)
- else
- if(href_list["code"])
- code += text2num(href_list["code"])
- code = round(code)
- code = min(100, code)
- code = max(1, code)
- else
- if(href_list["power"])
- on = !( on )
- icon_state = "electropack[on]"
- if(!( master ))
- if(ismob(loc))
- attack_self(loc)
- else
- for(var/mob/M in viewers(1, src))
- if(M.client)
- attack_self(M)
- else
- if(ismob(master.loc))
- attack_self(master.loc)
- else
- for(var/mob/M in viewers(1, master))
- if(M.client)
- attack_self(M)
- else
- usr << browse(null, "window=radio")
- return
- return
-
-/obj/item/device/radio/electropack/receive_signal(datum/signal/signal)
- if(!signal || signal.encryption != code)
- return
-
- if(ismob(loc) && on)
- var/mob/M = loc
- var/turf/T = M.loc
- if(istype(T, /turf))
- if(!M.moved_recently && M.last_move)
- M.moved_recently = 1
- step(M, M.last_move)
- sleep(50)
- if(M)
- M.moved_recently = 0
- to_chat(M, SPAN_DANGER("You feel a sharp shock!"))
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(3, 1, M)
- s.start()
-
- M.Weaken(10)
-
- if(master && wires & 1)
- master.receive_signal()
- return
-
-/obj/item/device/radio/electropack/attack_self(mob/user as mob, flag1)
-
- if(!ishuman(user))
- return
- user.set_machine(src)
- var/dat = {"
-Turn [on ? "Off" : "On"]
-Frequency/Code for electropack:
-Frequency:
--
-- [format_frequency(frequency)]
-+
-+
-
-Code:
--
-- [code]
-+
-+
-"}
- user << browse(dat, "window=radio")
- onclose(user, "radio")
- return
diff --git a/code/game/objects/items/weapons/design_disks/ironhammer.dm b/code/game/objects/items/weapons/design_disks/ironhammer.dm
index beed8bc9a0e..be0b7824df2 100644
--- a/code/game/objects/items/weapons/design_disks/ironhammer.dm
+++ b/code/game/objects/items/weapons/design_disks/ironhammer.dm
@@ -9,7 +9,6 @@
/datum/design/research/item/flash,
/datum/design/autolathe/sec/handcuffs,
/datum/design/autolathe/sec/zipties,
- /datum/design/autolathe/sec/electropack,
/datum/design/autolathe/misc/taperecorder,
/datum/design/autolathe/tool/tacknife,
/datum/design/autolathe/sec/beartrap,
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 750cd64b4f9..3ee74d82930 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -26,10 +26,6 @@
if(potential_thermals.overlay == global_hud.thermal)
flashbang_without_the_bang(get_turf(src), thermal_user)
- for(var/obj/effect/blob/B in hear(8,get_turf(src))) //Blob damage here
- var/damage = round(30/(get_dist(B,get_turf(src))+1))
- B.health -= damage
- B.update_icon()
new/obj/effect/sparks(loc)
new/obj/effect/effect/smoke/illumination(loc, brightness=15)
diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm
index 2d77678f5aa..ded73d38cd0 100644
--- a/code/game/objects/items/weapons/grenades/smokebomb.dm
+++ b/code/game/objects/items/weapons/grenades/smokebomb.dm
@@ -29,10 +29,6 @@
sleep(10)
smoke.start()
- for(var/obj/effect/blob/B in view(8,src))
- var/damage = round(30/(get_dist(B,src)+1))
- B.health -= damage
- B.update_icon()
sleep(80)
icon_state = initial(icon_state) + "_off"
desc = "[initial(desc)] It has already been used."
diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm
deleted file mode 100644
index 4b91862df28..00000000000
--- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm
+++ /dev/null
@@ -1,52 +0,0 @@
-/obj/item/grenade/spawnergrenade
- desc = "It is set to detonate in 5 seconds. It will unleash unleash an unspecified anomaly into the vicinity."
- name = "delivery grenade"
- icon = 'icons/obj/grenade.dmi'
- icon_state = "delivery"
- item_state = "flashbang"
- origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4)
- matter = list(MATERIAL_STEEL = 3, MATERIAL_PLASMA = 3, MATERIAL_DIAMOND = 1)
- var/banglet = 0
- var/spawner_type = null // must be an object path
- var/deliveryamt = 1 // amount of type to deliver
- var/thrower_is_friend = FALSE // is whoever primed the grenade a friend?
-
-/obj/item/grenade/spawnergrenade/prime(mob/user) // Prime now just handles the two loops that query for people in lockers and people who can see it.
-
- if(spawner_type && deliveryamt)
- // Make a quick flash
- var/turf/T = get_turf(src)
- playsound(T, 'sound/effects/phasein.ogg', 100, 1)
- for(var/mob/living/carbon/human/M in viewers(T, null))
- if(M.eyecheck() < FLASH_PROTECTION_MODERATE)
- M.flash(0, FALSE , FALSE , FALSE , 0)
-
- for(var/i=1, i<=deliveryamt, i++)
- var/atom/movable/x = new spawner_type
- x.loc = T
- if(thrower_is_friend && istype(x, /mob/living/simple_animal/hostile))
- var/mob/living/simple_animal/hostile/L = x
- L.friends += user
- if(prob(50))
- for(var/j = 1, j <= rand(1, 3), j++)
- step(x, pick(NORTH,SOUTH,EAST,WEST))
-
- // Spawn some hostile syndicate critters
-
- qdel(src)
- return
-
-/obj/item/grenade/spawnergrenade/manhacks
- name = "manhack delivery grenade"
- desc = "Deploys a swarm of floating robots that will attack anyone nearby other than the user. "
- spawner_type = /mob/living/simple_animal/hostile/viscerator
- deliveryamt = 5
- origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_COVERT = 4)
- thrower_is_friend = TRUE
-
-/obj/item/grenade/spawnergrenade/blob
- name = "bioweapon sample"
- desc = "Contains an absurdly dangerous bioweapon in suspended animation. It will expand rapidly upon release. Once deployed, run like hell."
- spawner_type = /obj/effect/blob/core
- deliveryamt = 1
- origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_COVERT = 4)
diff --git a/code/game/objects/items/weapons/sword_of_truth.dm b/code/game/objects/items/weapons/sword_of_truth.dm
index 404844f9aba..d0e0b96242c 100644
--- a/code/game/objects/items/weapons/sword_of_truth.dm
+++ b/code/game/objects/items/weapons/sword_of_truth.dm
@@ -89,10 +89,6 @@
M.stats.addTempStat(STAT_MEC, -STAT_LEVEL_ADEPT, 45 SECONDS, "Sword of truth")
flashbang_bang(get_turf(src), M, bang_text, FALSE)
- for(var/obj/effect/blob/B in hear(8,get_turf(src))) //Blob damage here
- var/damage = round(30/(get_dist(B,get_turf(src))+1))
- B.health -= damage
- B.update_icon()
new/obj/effect/sparks(loc)
new/obj/effect/effect/smoke/illumination(loc, brightness=15)
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 1c6d504b2e2..096e6b7b9e0 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -89,6 +89,9 @@ var/list/global/tank_gauge_cache = list()
descriptive = "cold"
to_chat(user, SPAN_NOTICE("\The [src] feels [descriptive]."))
+/obj/item/assembly
+ bad_type = /obj/item/assembly
+
/obj/item/tank/attackby(obj/item/W, mob/living/user)
..()
if (istype(src.loc, /obj/item/assembly))
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index aac6b3bd624..ad897522e3a 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -12,7 +12,6 @@
var/locked = FALSE
var/broken = FALSE
var/horizontal = FALSE
- var/rigged = FALSE
var/icon_door = null
var/icon_welded = "welded"
var/icon_lock = "lock"
@@ -190,14 +189,6 @@
if(opened || !can_open(user))
return FALSE
- if(rigged && (locate(/obj/item/device/radio/electropack) in src) && istype(user))
- if(user.electrocute_act(20, src))
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
- if(user.stunned)
- return FALSE
-
playsound(loc, open_sound, 100, 1, -3)
opened = TRUE
if(!dense_when_open)
@@ -359,8 +350,6 @@
if(opened)
usable_qualities += QUALITY_SAWING
usable_qualities += QUALITY_BOLT_TURNING
- if(rigged)
- usable_qualities += QUALITY_WIRE_CUTTING
if(secure && locked)
usable_qualities += QUALITY_PULSING
@@ -396,13 +385,6 @@
qdel(src)
return
- if(QUALITY_WIRE_CUTTING)
- if(rigged)
- to_chat(user, SPAN_NOTICE("You cut away the wiring."))
- new /obj/item/stack/cable_coil(drop_location(), 1)
- playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
- rigged = FALSE
- return
if(QUALITY_PULSING)
if(!(secure && locked))
return
@@ -460,21 +442,6 @@
return
usr.unEquip(I, src.loc)
return
- else if(istype(I, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/C = I
- if(rigged)
- to_chat(user, SPAN_NOTICE("[src] is already rigged!"))
- return
- if(C.use(1))
- to_chat(user, SPAN_NOTICE("You rig [src]."))
- rigged = TRUE
- return
- else if(istype(I, /obj/item/device/radio/electropack))
- if(rigged)
- to_chat(user, SPAN_NOTICE("You attach [I] to [src]."))
- user.drop_item()
- I.forceMove(src)
- return
else if(istype(I, /obj/item/packageWrap))
return
else if(istype(I,/obj/item/card/id))
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index f5edbbce31c..fd9049d54b0 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -114,17 +114,6 @@
new /obj/item/storage/belt/medical(src)
new /obj/item/storage/pouch/medical_supply(src)
-/obj/structure/closet/secure_closet/animal
- name = "animal control closet"
- req_access = list(access_surgery)
- icon_state = "sec"
-
-/obj/structure/closet/secure_closet/animal/populate_contents()
- new /obj/item/device/assembly/signaler(src)
- new /obj/item/device/radio/electropack(src)
- new /obj/item/device/radio/electropack(src)
- new /obj/item/device/radio/electropack(src)
-
/obj/structure/closet/secure_closet/chemical
name = "chemical closet"
desc = "Store dangerous chemicals in here."
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
deleted file mode 100644
index 96a454d4fcc..00000000000
--- a/code/game/objects/structures/electricchair.dm
+++ /dev/null
@@ -1,71 +0,0 @@
-/obj/structure/bed/chair/e_chair
- name = "electric chair"
- desc = "Looks absolutely SHOCKING!"
- icon_state = "echair0"
- var/obj/item/assembly/shock_kit/part = new()
- var/last_time = 1
-
-/obj/structure/bed/chair/e_chair/New()
- ..()
- overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir)
- return
-
-/obj/structure/bed/chair/e_chair/attackby(var/obj/item/tool/tool, var/mob/user)
- if(!tool.use_tool(user, src, WORKTIME_NORMAL, QUALITY_BOLT_TURNING, FAILCHANCE_VERY_EASY, required_stat = STAT_MEC))
- return
- var/obj/structure/bed/chair/C = new /obj/structure/bed/chair(loc)
- C.set_dir(dir)
- part.loc = loc
- part.master = null
- part = null
- qdel(src)
-
-/obj/structure/bed/chair/e_chair/verb/toggle()
- set name = "Toggle Electric Chair"
- set category = "Object"
- set src in oview(1)
-
- icon_state = "echair1"
- to_chat(usr, SPAN_NOTICE("You switch on [src]."))
- shock()
-
- return
-
-/obj/structure/bed/chair/e_chair/rotate()
- ..()
- overlays.Cut()
- overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir) //there's probably a better way of handling this, but eh. -Pete
- return
-
-/obj/structure/bed/chair/e_chair/proc/shock()
- if(last_time + 50 > world.time)
- return
- last_time = world.time
-
- // special power handling
- var/area/A = get_area(src)
- if(!isarea(A))
- return
- if(!A.powered(STATIC_EQUIP))
- return
- A.use_power(STATIC_EQUIP, 5000)
- var/light = A.power_light
- A.updateicon()
-
- flick("echair1", src)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(12, 1, src)
- s.start()
- if(buckled_mob)
- buckled_mob.burn_skin(110)
- to_chat(buckled_mob, SPAN_DANGER("You feel a deep shock course through your body!"))
- sleep(1)
- buckled_mob.burn_skin(110)
- buckled_mob.Stun(600)
- visible_message(SPAN_DANGER("The electric chair went off!"), SPAN_DANGER("You hear a deep sharp shock!"))
- icon_state = "echair0"
-
- A.power_light = light
- A.updateicon()
-
- return
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 952ccd3e303..1459f3ac5fc 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -15,21 +15,7 @@
/obj/structure/bed/chair/attackby(obj/item/W as obj, mob/user as mob)
..()
- if(!padding_material && istype(W, /obj/item/assembly/shock_kit))
- var/obj/item/assembly/shock_kit/SK = W
- if(!SK.status)
- to_chat(user, SPAN_NOTICE("\The [SK] is not ready to be attached!"))
- return
- user.drop_item()
- var/obj/structure/bed/chair/e_chair/E = new (src.loc, material.name)
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- E.set_dir(dir)
- E.part = SK
- SK.loc = E
- SK.master = E
- qdel(src)
-
- else if(istype(W, /obj/item/device/spy_bug))
+ if(istype(W, /obj/item/device/spy_bug))
user.drop_item()
W.loc = get_turf(src)
diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm
deleted file mode 100644
index 4fb2b7af731..00000000000
--- a/code/modules/assembly/shock_kit.dm
+++ /dev/null
@@ -1,50 +0,0 @@
-/obj/item/assembly
- bad_type = /obj/item/assembly
-
-/obj/item/assembly/shock_kit
- name = "electrohelmet assembly"
- desc = "This appears to be made from both an electropack and a helmet."
- icon_state = "shock_kit"
- w_class = ITEM_SIZE_HUGE
- flags = CONDUCT
- var/obj/item/clothing/head/armor/helmet/part1
- var/obj/item/device/radio/electropack/part2
- var/status = 0
-
-/obj/item/assembly/shock_kit/Destroy()
- qdel(part1)
- qdel(part2)
- . = ..()
-
-/obj/item/assembly/shock_kit/attackby(obj/item/tool/tool, mob/user)
- var/list/usable_qualities = list(QUALITY_BOLT_TURNING, QUALITY_SCREW_DRIVING)
- var/tool_type = tool.get_tool_type(user, usable_qualities, src)
- switch(tool_type)
- if(QUALITY_SCREW_DRIVING)
- if(tool.use_tool(user, src, WORKTIME_NORMAL, QUALITY_SCREW_DRIVING, FAILCHANCE_VERY_EASY, required_stat = STAT_MEC))
- status = !status
- to_chat(user, SPAN_NOTICE("[src] is now [status ? "secured" : "unsecured"]!"))
- if(QUALITY_BOLT_TURNING)
- if(!status)
- if(tool.use_tool(user, src, WORKTIME_NORMAL, QUALITY_BOLT_TURNING, FAILCHANCE_VERY_EASY, required_stat = STAT_MEC))
- var/turf/T = loc
- if(ismob(T))
- T = T.loc
- part1.loc = T
- part2.loc = T
- part1.master = null
- part2.master = null
- part1 = null
- part2 = null
- qdel(src)
- add_fingerprint(user)
-
-/obj/item/assembly/shock_kit/attack_self(mob/user as mob)
- part1.attack_self(user, status)
- part2.attack_self(user, status)
- add_fingerprint(user)
-
-/obj/item/assembly/shock_kit/receive_signal()
- if(istype(loc, /obj/structure/bed/chair/e_chair))
- var/obj/structure/bed/chair/e_chair/C = loc
- C.shock()
diff --git a/code/modules/dungeons/teleporter.dm b/code/modules/dungeons/teleporter.dm
index 5a781e2df52..7942fa1b619 100644
--- a/code/modules/dungeons/teleporter.dm
+++ b/code/modules/dungeons/teleporter.dm
@@ -15,9 +15,7 @@
/mob/living/simple_animal/hostile/carp,
/mob/living/simple_animal/hostile/carp,
/mob/living/simple_animal/hostile/carp/pike,
- /mob/living/simple_animal/hostile/hivebot,
- /mob/living/simple_animal/hostile/viscerator,
- /mob/living/simple_animal/hostile/viscerator)//duplicates to rig chances towards spawning more weaker enemies, but in favour of generally spawning more enemies
+ /mob/living/simple_animal/hostile/hivebot)//duplicates to rig chances towards spawning more weaker enemies, but in favour of generally spawning more enemies
var/turfs_around = list()
var/victims_to_teleport = list()
var/obj/crawler/spawnpoint/target
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 5927356de8a..3289741ecfa 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -6,7 +6,6 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/ai_movement_up,
/mob/living/silicon/ai/proc/ai_movement_down,
/mob/living/silicon/ai/proc/ai_announcement,
- /mob/living/silicon/ai/proc/ai_emergency_message,
/mob/living/silicon/ai/proc/ai_camera_track,
/mob/living/silicon/ai/proc/ai_camera_list,
/mob/living/silicon/ai/proc/ai_goto_location,
@@ -379,27 +378,6 @@ var/list/ai_verbs_default = list(
spawn(600)//One minute cooldown
message_cooldown = 0
-/mob/living/silicon/ai/var/emergency_message_cooldown = 0
-/mob/living/silicon/ai/proc/ai_emergency_message()
- set category = "Silicon Commands"
- set name = "Send Emergency Message"
-
- if(check_unable(AI_CHECK_WIRELESS))
- return
- if(!is_relay_online())
- to_chat(usr, SPAN_WARNING("No Emergency Bluespace Relay detected. Unable to transmit message."))
- return
- if(emergency_message_cooldown)
- to_chat(usr, SPAN_WARNING("Arrays recycling. Please stand by."))
- return
- var/input = sanitize(input(usr, "Please choose a message to transmit to [boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", ""))
- if(!input)
- return
- to_chat(usr, SPAN_NOTICE("No response from the remote server. Please, contact your system administrator."))
- log_say("[key_name(usr)] has made an IA [boss_short] announcement: [input]")
- emergency_message_cooldown = 1
- spawn(300)
- emergency_message_cooldown = 0
/mob/living/silicon/ai/check_eye(var/mob/user as mob)
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
deleted file mode 100644
index 97468201f07..00000000000
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ /dev/null
@@ -1,159 +0,0 @@
-/mob/living/simple_animal/hostile/syndicate
- name = "\improper Syndicate operative"
- desc = "Death to the Company."
- icon_state = "syndicate"
- icon_dead = "syndicate_dead" //TODO: That icon doesn't exist
- icon_gib = "syndicate_gib"
- speak_chance = 0
- turns_per_move = 5
- response_help = "pokes"
- response_disarm = "shoves"
- response_harm = "hits"
- speed = 4
- stop_automated_movement_when_pulled = 0
- maxHealth = 100
- health = 100
- harm_intent_damage = 5
- melee_damage_lower = 10
- melee_damage_upper = 10
- attacktext = "punched"
- a_intent = I_HURT
- var/corpse = /obj/landmark/corpse/syndicatesoldier
- var/weapon1
- var/weapon2
- min_oxy = 5
- max_oxy = 0
- min_tox = 0
- max_tox = 1
- min_co2 = 0
- max_co2 = 5
- min_n2 = 0
- max_n2 = 0
- unsuitable_atoms_damage = 15
- environment_smash = 1
- faction = "syndicate"
- status_flags = CANPUSH
-
-/mob/living/simple_animal/hostile/syndicate/death()
- ..()
- if(corpse)
- new corpse (src.loc)
- if(weapon1)
- new weapon1 (src.loc)
- if(weapon2)
- new weapon2 (src.loc)
- qdel(src)
- return
-
-///////////////Sword and shield////////////
-
-/mob/living/simple_animal/hostile/syndicate/melee
- melee_damage_lower = 20
- melee_damage_upper = 25
- icon_state = "syndicatemelee"
- weapon1 = /obj/item/melee/energy/sword/red
- weapon2 = /obj/item/shield/buckler/energy
- attacktext = "slashed"
- status_flags = 0
-
-/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(O.force)
- if(prob(80))
- var/damage = O.force
- if (O.damtype == HALLOSS)
- damage = 0
- health -= damage
- visible_message("\red \b [src] has been attacked with the [O] by [user]. ")
- else
- visible_message("\red \b [src] blocks the [O] with its shield! ")
- //user.do_attack_animation(src)
- else
- to_chat(usr, "\red This weapon is ineffective, it does no damage.")
- visible_message("\red [user] gently taps [src] with the [O]. ")
-
-
-/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj)
- if(!Proj) return
- if(prob(65))
- ..()
- else
- visible_message("\red [src] blocks [Proj] with its shield!")
- return 0
-
-
-/mob/living/simple_animal/hostile/syndicate/melee/space
- min_oxy = 0
- max_oxy = 0
- min_tox = 0
- max_tox = 0
- min_co2 = 0
- max_co2 = 0
- min_n2 = 0
- max_n2 = 0
- minbodytemp = 0
- icon_state = "syndicatemeleespace"
- name = "Syndicate Commando"
- corpse = /obj/landmark/corpse/syndicatecommando
- speed = 0
-
-/mob/living/simple_animal/hostile/syndicate/melee/space/allow_spacemove()
- return ..()
-
-/mob/living/simple_animal/hostile/syndicate/ranged
- ranged = 1
- rapid = 1
- icon_state = "syndicateranged"
- casingtype = /obj/item/ammo_casing/pistol
- projectilesound = 'sound/weapons/Gunshot_light.ogg'
- projectiletype = /obj/item/projectile/bullet/pistol
-
- weapon1 = /obj/item/gun/projectile/automatic/c20r
-
-/mob/living/simple_animal/hostile/syndicate/ranged/space
- icon_state = "syndicaterangedpsace"
- name = "Syndicate Commando"
- min_oxy = 0
- max_oxy = 0
- min_tox = 0
- max_tox = 0
- min_co2 = 0
- max_co2 = 0
- min_n2 = 0
- max_n2 = 0
- minbodytemp = 0
- corpse = /obj/landmark/corpse/syndicatecommando
- speed = 0
-
-/mob/living/simple_animal/hostile/syndicate/ranged/space/allow_spacemove()
- return ..()
-
-
-
-/mob/living/simple_animal/hostile/viscerator
- name = "viscerator"
- desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations."
- icon = 'icons/mob/critter.dmi'
- icon_state = "viscerator_attack"
- pass_flags = PASSTABLE
- health = 50
- maxHealth = 50
- melee_damage_lower = 20
- melee_damage_upper = 20
- attacktext = "cut"
- attack_sound = 'sound/weapons/bladeslice.ogg'
- faction = "syndicate"
- min_oxy = 0
- max_oxy = 0
- min_tox = 0
- max_tox = 0
- min_co2 = 0
- max_co2 = 0
- min_n2 = 0
- max_n2 = 0
- minbodytemp = 0
-
-/mob/living/simple_animal/hostile/viscerator/emp_act(severity)
- health -= 60*severity
-/mob/living/simple_animal/hostile/viscerator/death()
- ..(null,"is smashed into pieces!")
- qdel(src)
diff --git a/code/modules/modular_computers/file_system/programs/command/comm.dm b/code/modules/modular_computers/file_system/programs/command/comm.dm
index 9be2856ebcc..79f8cce805f 100644
--- a/code/modules/modular_computers/file_system/programs/command/comm.dm
+++ b/code/modules/modular_computers/file_system/programs/command/comm.dm
@@ -330,12 +330,6 @@ var/last_message_id = 0
return
-/proc/is_relay_online()
- for(var/obj/machinery/bluespacerelay/M in GLOB.machines)
- if(M.stat == 0)
- return 1
- return 0
-
/proc/call_shuttle_proc(var/mob/user, var/emergency)
if (!SSticker || !evacuation_controller)
return
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 4991b0e8eb9..eae2355933c 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -191,9 +191,6 @@
/obj/item/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
if(!proximity) return
-
- if(istype(A, /obj/effect/blob)) // blob damage in blob code
- return
..()
diff --git a/maps/CEVEris/centcomm.dmm b/maps/CEVEris/centcomm.dmm
index 053886d978c..5ff4ad53061 100644
--- a/maps/CEVEris/centcomm.dmm
+++ b/maps/CEVEris/centcomm.dmm
@@ -2511,7 +2511,6 @@
/turf/simulated/mineral,
/area/space)
"ke" = (
-/obj/item/device/radio/electropack,
/turf/simulated/shuttle/floor{
icon_state = "floor7"
},
@@ -6376,7 +6375,6 @@
/obj/structure/table/rack,
/obj/item/grenade/empgrenade,
/obj/item/grenade/flashbang,
-/obj/item/grenade/spawnergrenade/manhacks,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
From 12187000360200941a909c164faa1a1028062090 Mon Sep 17 00:00:00 2001
From: vode-code <65709050+vode-code@users.noreply.github.com>
Date: Mon, 10 Jul 2023 18:40:38 -0700
Subject: [PATCH 2/2] re-removes blob damage from smokebomb
---
code/game/objects/items/weapons/grenades/smokebomb.dm | 4 ----
1 file changed, 4 deletions(-)
diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm
index 57c11d0ce81..ef0504e7172 100644
--- a/code/game/objects/items/weapons/grenades/smokebomb.dm
+++ b/code/game/objects/items/weapons/grenades/smokebomb.dm
@@ -29,10 +29,6 @@
addtimer(CALLBACK(smoke, TYPE_PROC_REF(/datum/effect/effect/system/smoke_spread/bad, start)), 2 SECOND)
addtimer(CALLBACK(smoke, TYPE_PROC_REF(/datum/effect/effect/system/smoke_spread/bad, start)), 3 SECOND)
addtimer(CALLBACK(smoke, TYPE_PROC_REF(/datum/effect/effect/system/smoke_spread/bad, start)), 4 SECOND)
- for(var/obj/effect/blob/B in view(8,src))
- var/damage = round(30/(get_dist(B,src)+1))
- B.health -= damage
- B.update_icon()
addtimer(CALLBACK(src, PROC_REF(used_up)), 8 SECOND)
return