diff --git a/baystation12.dme b/baystation12.dme
index f36717bdbe..0346b60102 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -279,12 +279,6 @@
#include "code\game\gamemodes\gameticker.dm"
#include "code\game\gamemodes\objective.dm"
#include "code\game\gamemodes\setupgame.dm"
-#include "code\game\gamemodes\blob\blob.dm"
-#include "code\game\gamemodes\blob\theblob.dm"
-#include "code\game\gamemodes\blob\blobs\core.dm"
-#include "code\game\gamemodes\blob\blobs\factory.dm"
-#include "code\game\gamemodes\blob\blobs\node.dm"
-#include "code\game\gamemodes\blob\blobs\shield.dm"
#include "code\game\gamemodes\calamity\calamity.dm"
#include "code\game\gamemodes\changeling\changeling.dm"
#include "code\game\gamemodes\changeling\changeling_powers.dm"
@@ -307,7 +301,6 @@
#include "code\game\gamemodes\events\black_hole.dm"
#include "code\game\gamemodes\events\clang.dm"
#include "code\game\gamemodes\events\dust.dm"
-#include "code\game\gamemodes\events\miniblob.dm"
#include "code\game\gamemodes\events\power_failure.dm"
#include "code\game\gamemodes\events\wormholes.dm"
#include "code\game\gamemodes\events\holidays\Christmas.dm"
@@ -963,6 +956,7 @@
#include "code\modules\awaymissions\pamphlet.dm"
#include "code\modules\awaymissions\trigger.dm"
#include "code\modules\awaymissions\zlevel.dm"
+#include "code\modules\blob\blob.dm"
#include "code\modules\client\client defines.dm"
#include "code\modules\client\client procs.dm"
#include "code\modules\client\preferences.dm"
@@ -1231,7 +1225,6 @@
#include "code\modules\mob\living\login.dm"
#include "code\modules\mob\living\logout.dm"
#include "code\modules\mob\living\say.dm"
-#include "code\modules\mob\living\blob\blob.dm"
#include "code\modules\mob\living\bot\bot.dm"
#include "code\modules\mob\living\bot\cleanbot.dm"
#include "code\modules\mob\living\bot\ed209bot.dm"
diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm
index aa32b0016e..f356855338 100644
--- a/code/__defines/items_clothing.dm
+++ b/code/__defines/items_clothing.dm
@@ -44,7 +44,6 @@
#define PASSTABLE 0x1
#define PASSGLASS 0x2
#define PASSGRILLE 0x4
-#define PASSBLOB 0x8
// Bitmasks for the flags_inv variable. These determine when a piece of clothing hides another, i.e. a helmet hiding glasses.
// WARNING: The following flags apply only to the external suit!
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index bce75e2abf..77279ab117 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -219,9 +219,6 @@ its easier to just keep the beam vertical.
/atom/proc/emag_act(var/remaining_charges, var/mob/user, var/emag_source)
return -1
-/atom/proc/blob_act()
- return
-
/atom/proc/fire_act()
return
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 9b396396a8..29d519355e 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -207,13 +207,6 @@
else
return
-
-/obj/machinery/dna_scannernew/blob_act()
- if(prob(75))
- for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
- qdel(src)
-
/obj/machinery/computer/scan_consolenew
name = "DNA Modifier Access Console"
desc = "Scand DNA."
@@ -270,10 +263,6 @@
else
return
-/obj/machinery/computer/scan_consolenew/blob_act()
- if(prob(75))
- qdel(src)
-
/obj/machinery/computer/scan_consolenew/New()
..()
for(var/i=0;i<3;i++)
diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm
deleted file mode 100644
index f3d60d48ad..0000000000
--- a/code/game/gamemodes/blob/blob.dm
+++ /dev/null
@@ -1,133 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-//Few global vars to track the blob
-var/list/blobs = list()
-var/list/blob_cores = list()
-var/list/blob_nodes = list()
-
-
-/*/datum/game_mode/blob
- name = "blob"
- config_tag = "blob"
- required_players = 0
-
- var/const/waittime_l = 1800 //lower bound on time before intercept arrives (in tenths of seconds)
- var/const/waittime_h = 3600 //upper bound on time before intercept arrives (in tenths of seconds)
-
- var/declared = 0
- var/stage = 0
-
- var/cores_to_spawn = 1
- var/players_per_core = 16
-
- //Controls expansion via game controller
- var/autoexpand = 0
- var/expanding = 0
-
- var/blob_count = 0
- var/blobnukecount = 300//Might be a bit low
- var/blobwincount = 700//Still needs testing
-
-
- announce()
- world << "The current game mode is - Blob!"
- world << "A dangerous alien organism is rapidly spreading throughout the station!"
- world << "You must kill it all while minimizing the damage to the station."
-
-
- post_setup()
- spawn(10)
- start_state = new /datum/station_state()
- start_state.count()
-
- spawn(rand(waittime_l, waittime_h))//3-5 minutes currently
- message_admins("Blob spawned and expanding, report created")
- if(!kill_air)
- kill_air = 1
- message_admins("Kill air has been set to true by Blob, testing to see how laggy it is without the extra processing from hullbreaches. Note: the blob is fireproof so plasma does not help anyways")
-
- if(ticker && ticker.minds && ticker.minds.len)
- var/player_based_cores = round(ticker.minds.len/players_per_core, 1)
- if(player_based_cores > cores_to_spawn)
- cores_to_spawn = player_based_cores
-
- blobs = list()
- for(var/i = 0 to cores_to_spawn)
- var/turf/location = pick(blobstart)
- if(location && !locate(/obj/effect/blob in location))
- blobstart -= location
- new/obj/effect/blob/core(location)
-
- spawn(40)
- autoexpand = 1
- declared = 1
- ..()
-
-
- process()
- if(!declared) return
- stage()
-// if(!autoexpand) return
-// spawn(0)
-// expandBlob()
- return
-
-
- proc/expandBlob()//Currently disabled
- if(expanding) return
- if(!blobs.len) return
- expanding = 1
-
- for(var/i = 1 to 2)
- sleep(-1)
- if(!blobs.len) break
- var/obj/effect/blob/B = pick(blobs)
- if(isNotStationLevel(B.z))
- continue
- B.Life()
-
- expanding = 0
- return
-
-
- proc/stage()
- switch(stage)
- if (0)
- send_intercept(1)
- for (var/mob/living/silicon/ai/aiPlayer in living_mob_list)
- if (aiPlayer.client)
- var/law = "The station is under quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving. NanoTrasen will not send an emergency shuttle under any circumstances."
- //var/law = "The station is under quarantine. The biohazard must be destroyed at all costs and must not be allowed to spread. Anyone using a space suit for any reason other than to destroy the biohazard is to be terminated. NanoTrasen will not send an emergency shuttle under any circumstances."
- aiPlayer.set_zeroth_law(law)
- aiPlayer << "Laws Updated: [law]"
-
- stage = -1
- // next stage 1 minute later
- spawn(600)
- stage = 1
- return
-
- if (1)
- command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
- for(var/mob/M in player_list)
- if(!istype(M,/mob/new_player))
- M << sound('sound/AI/outbreak5.ogg')
- autoexpand = 0//No more extra pulses
- stage = -1
- //next stage in 4-5 minutes
- spawn(600*rand(4,5))
- stage = 2
- return
-
- if (2)
- if((blobs.len > blobnukecount) && (declared == 1))
- command_alert("Uncontrolled spread of the biohazard onboard the station. We have issued directive 7-12 for [station_name()]. Any living Heads of Staff are ordered to enact directive 7-12 at any cost, a print out with detailed instructions has been sent to your communications computers.", "Biohazard Alert")
- send_intercept(2)
- declared = 2
- spawn(20)
- set_security_level("delta")
- if(blobs.len > blobwincount)
- stage = 3
- return
-
-*/
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm
deleted file mode 100644
index 418ceab13a..0000000000
--- a/code/game/gamemodes/blob/blob_finish.dm
+++ /dev/null
@@ -1,78 +0,0 @@
-/datum/game_mode/blob/check_finished()
- if(!declared)//No blobs have been spawned yet
- return 0
- if(stage >= 3)//Blob took over
- return 1
- if(station_was_nuked)//Nuke went off
- return 1
-
- for(var/obj/effect/blob/B in blob_cores)
- if(B && isNotStationLevel(B.z)) continue
- return 0
-
- var/nodes = 0
- for(var/obj/effect/blob/B in blob_nodes)
- if(B && isNotStationLevel(B.z)) continue
- nodes++
- if(nodes > 4)//Perhapse make a new core with a low prob
- return 0
-
- return 1
-
-
-/datum/game_mode/blob/declare_completion()
- if(stage >= 3)
- feedback_set_details("round_end_result","loss - blob took over")
- world << "The blob has taken over the station!"
- world << "The entire station was eaten by the Blob"
- check_quarantine()
-
- else if(station_was_nuked)
- feedback_set_details("round_end_result","halfwin - nuke")
- world << "Partial Win: The station has been destroyed!"
- world << "Directive 7-12 has been successfully carried out preventing the Blob from spreading."
-
- else
- feedback_set_details("round_end_result","win - blob eliminated")
- world << "The staff has won!"
- world << "The alien organism has been eradicated from the station"
-
- var/datum/station_state/end_state = new /datum/station_state()
- end_state.count()
- var/percent = round( 100.0 * start_state.score(end_state), 0.1)
- world << "The station is [percent]% intact."
- log_game("Blob mode was won with station [percent]% intact.")
- world << "Rebooting in 30s"
- ..()
- return 1
-
-
-/datum/game_mode/blob/proc/check_quarantine()
- var/numDead = 0
- var/numAlive = 0
- var/numSpace = 0
- var/numOffStation = 0
- for (var/mob/living/silicon/ai/aiPlayer in mob_list)
- for(var/mob/living/carbon/human/M in mob_list)
- if ((M != aiPlayer && M.client))
- if (M.stat == 2)
- numDead += 1
- else
- var/T = M.loc
- if (istype(T, /turf/space))
- numSpace += 1
- else if(istype(T, /turf))
- if (isNotStationLevel(M.z))
- numOffStation += 1
- else
- numAlive += 1
- if (numSpace==0 && numOffStation==0)
- world << "The AI has won!"
- world << "The AI successfully maintained the quarantine - no players were in space or were off-station (as far as we can tell)."
- log_game("AI won at Blob mode despite overall loss.")
- else
- world << "The AI has lost!"
- world << text("The AI failed to maintain the quarantine - [] were in space and [] were off-station (as far as we can tell).", numSpace, numOffStation)
- log_game("AI lost at Blob mode.")
- log_game("Blob mode was lost.")
- return 1
diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/game/gamemodes/blob/blob_report.dm
deleted file mode 100644
index d12bfaa754..0000000000
--- a/code/game/gamemodes/blob/blob_report.dm
+++ /dev/null
@@ -1,111 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-/datum/game_mode/blob/send_intercept(var/report = 1)
- var/intercepttext = ""
- var/interceptname = "Error"
- switch(report)
- if(1)
- interceptname = "Biohazard Alert"
- intercepttext += "NanoTrasen Update: Biohazard Alert.
"
- intercepttext += "Reports indicate the probable transfer of a biohazardous agent onto [station_name()] during the last crew deployment cycle.
"
- intercepttext += "Preliminary analysis of the organism classifies it as a level 5 biohazard. Its origin is unknown.
"
- intercepttext += "NanoTrasen has issued a directive 7-10 for [station_name()]. The station is to be considered quarantined.
"
- intercepttext += "Orders for all [station_name()] personnel follows:
"
- intercepttext += " 1. Do not leave the quarantine area.
"
- intercepttext += " 2. Locate any outbreaks of the organism on the station.
"
- intercepttext += " 3. If found, use any neccesary means to contain the organism.
"
- intercepttext += " 4. Avoid damage to the capital infrastructure of the station.
"
- intercepttext += "
Note in the event of a quarantine breach or uncontrolled spread of the biohazard, the directive 7-10 may be upgraded to a directive 7-12.
"
- intercepttext += "Message ends."
- if(2)
- var/nukecode = "ERROR"
- for(var/obj/machinery/nuclearbomb/bomb in machines)
- if(bomb && bomb.r_code)
- if(bomb.z in station_levels)
- nukecode = bomb.r_code
- interceptname = "Directive 7-12"
- intercepttext += "NanoTrasen Update: Biohazard Alert.
"
- intercepttext += "Directive 7-12 has been issued for [station_name()].
"
- intercepttext += "The biohazard has grown out of control and will soon reach critical mass.
"
- intercepttext += "Your orders are as follows:
"
- intercepttext += "1. Secure the Nuclear Authentication Disk.
"
- intercepttext += "2. Detonate the Nuke located in the Station's Vault.
"
- intercepttext += "Nuclear Authentication Code: [nukecode]
"
- intercepttext += "Message ends."
-
- for (var/mob/living/silicon/ai/aiPlayer in player_list)
- if (aiPlayer.client)
- var/law = "The station is under quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving. The nuclear failsafe must be activated at any cost, the code is: [nukecode]."
- aiPlayer.set_zeroth_law(law)
- aiPlayer << "Laws Updated: [law]"
-
- for(var/obj/machinery/computer/communications/comm in machines)
- comm.messagetitle.Add(interceptname)
- comm.messagetext.Add(intercepttext)
- if(!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
- var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
- intercept.name = "paper- [interceptname]"
- intercept.info = intercepttext
- return
-
-
-
-/datum/station_state
- var/floor = 0
- var/wall = 0
- var/r_wall = 0
- var/window = 0
- var/door = 0
- var/grille = 0
- var/mach = 0
-
-
- proc/count()
- for(var/turf/T in world)
- if(isNotStationLevel(T.z)
- continue
-
- if(istype(T,/turf/simulated/floor))
- if(!(T:burnt))
- src.floor += 12
- else
- src.floor += 1
-
- if(istype(T, /turf/simulated/wall))
- if(T:intact)
- src.wall += 2
- else
- src.wall += 1
-
- if(istype(T, /turf/simulated/wall/r_wall))
- if(T:intact)
- src.r_wall += 2
- else
- src.r_wall += 1
-
- for(var/obj/O in world)
- if(isNotStationLevel(O.z))
- continue
-
- if(istype(O, /obj/structure/window))
- src.window += 1
- else if(istype(O, /obj/structure/grille) && (!O:destroyed))
- src.grille += 1
- else if(istype(O, /obj/machinery/door))
- src.door += 1
- else if(istype(O, /obj/machinery))
- src.mach += 1
- return
-
-
- proc/score(var/datum/station_state/result)
- if(!result) return 0
- var/output = 0
- output += (result.floor / max(floor,1))
- output += (result.r_wall/ max(r_wall,1))
- output += (result.wall / max(wall,1))
- output += (result.window / max(window,1))
- output += (result.door / max(door,1))
- output += (result.grille / max(grille,1))
- output += (result.mach / max(mach,1))
- return (output/7)
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
deleted file mode 100644
index 3897d444e8..0000000000
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ /dev/null
@@ -1,73 +0,0 @@
-/obj/effect/blob/core
- name = "blob core"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_core"
- health = 200
- brute_resist = 2
- fire_resist = 2
-
-
- New(loc, var/h = 200)
- blobs += src
- blob_cores += src
- processing_objects.Add(src)
- ..(loc, h)
-
-
- Destroy()
- blob_cores -= src
- processing_objects.Remove(src)
- ..()
- return
-
-
- update_icon()
- if(health <= 0)
- playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
- qdel(src)
- return
- return
-
-
- run_action()
- Pulse(0,1)
- Pulse(0,2)
- Pulse(0,4)
- Pulse(0,8)
- //Should have the fragments in here somewhere
- return 1
-
-
- proc/create_fragments(var/wave_size = 1)
- var/list/candidates = list()
- for(var/mob/dead/observer/G in player_list)
- if(G.client.prefs.be_special & BE_ALIEN)
- if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
- candidates += G.key
-
- if(candidates.len)
- for(var/i = 0 to wave_size)
- var/mob/living/blob/B = new/mob/living/blob(src.loc)
- B.key = pick(candidates)
- candidates -= B.key
-
-/*
- Pulse(var/pulse = 0, var/origin_dir = 0)//Todo: Fix spaceblob expand
- set background = 1
- if(pulse > 20) return
- //Looking for another blob to pulse
- var/list/dirs = list(1,2,4,8)
- dirs.Remove(origin_dir)//Dont pulse the guy who pulsed us
- for(var/i = 1 to 4)
- if(!dirs.len) break
- var/dirn = pick(dirs)
- dirs.Remove(dirn)
- var/turf/T = get_step(src, dirn)
- var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
- if(!B)
- expand(T)//No blob here so try and expand
- return
- B.Pulse((pulse+1),get_dir(src.loc,T))
- return
- return
-*/
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm
deleted file mode 100644
index c1d14d0040..0000000000
--- a/code/game/gamemodes/blob/blobs/factory.dm
+++ /dev/null
@@ -1,72 +0,0 @@
-/obj/effect/blob/factory
- name = "porous blob"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_factory"
- health = 100
- brute_resist = 1
- fire_resist = 2
- var/list/spores = list()
- var/max_spores = 4
-
-
- update_icon()
- if(health <= 0)
- playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
- qdel(src)
- return
- return
-
-
- run_action()
- if(spores.len >= max_spores) return 0
- new/mob/living/simple_animal/hostile/blobspore(src.loc, src)
- return 1
-
-/obj/effect/blob/factory/Destroy()
- for(var/mob/living/simple_animal/hostile/blobspore/spore in spores)
- if(spore.factory == src)
- spore.factory = null
- ..()
-
-/mob/living/simple_animal/hostile/blobspore
- name = "blob"
- desc = "Some blob thing."
- icon = 'icons/mob/critter.dmi'
- icon_state = "blobsquiggle"
- icon_living = "blobsquiggle"
- pass_flags = PASSBLOB
- health = 20
- maxHealth = 20
- melee_damage_lower = 4
- melee_damage_upper = 8
- attacktext = "hit"
- attack_sound = 'sound/weapons/genhit1.ogg'
- var/obj/effect/blob/factory/factory = null
- faction = "blob"
- 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
- maxbodytemp = 360
-
-
- New(loc, var/obj/effect/blob/factory/linked_node)
- ..()
- if(istype(linked_node))
- factory = linked_node
- factory.spores += src
- ..(loc)
- return
- death()
- qdel(src)
-
-/mob/living/simple_animal/hostile/blobspore/Destroy()
- if(factory)
- factory.spores -= src
- factory = null
- ..()
diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm
deleted file mode 100644
index 92572f9a7b..0000000000
--- a/code/game/gamemodes/blob/blobs/node.dm
+++ /dev/null
@@ -1,34 +0,0 @@
-/obj/effect/blob/node
- name = "blob node"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_node"
- health = 100
- brute_resist = 1
- fire_resist = 2
-
-
- New(loc, var/h = 100)
- blobs += src
- blob_nodes += src
- processing_objects.Add(src)
- ..(loc, h)
-
-
- Destroy()
- blob_nodes -= src
- processing_objects.Remove(src)
- ..()
- return
-
-
- update_icon()
- if(health <= 0)
- playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
- qdel(src)
- return
- return
-
-
- run_action()
- Pulse(0,0)
- return 0
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm
deleted file mode 100644
index c47696c72e..0000000000
--- a/code/game/gamemodes/blob/blobs/shield.dm
+++ /dev/null
@@ -1,24 +0,0 @@
-/obj/effect/blob/shield
- name = "strong blob"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_idle"
- desc = "Some blob creature thingy"
- density = 1
- opacity = 0
- anchored = 1
- health = 60
- brute_resist = 1
- fire_resist = 2
-
-
- update_icon()
- if(health <= 0)
- playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
- qdel(src)
- return
- return
-
-
- CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if(istype(mover) && mover.checkpass(PASSBLOB)) return 1
- return 0
diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm
deleted file mode 100644
index 123bb97a3f..0000000000
--- a/code/game/gamemodes/blob/theblob.dm
+++ /dev/null
@@ -1,222 +0,0 @@
-//I will need to recode parts of this but I am way too tired atm
-/obj/effect/blob
- name = "blob"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob"
- light_range = 3
- desc = "Some blob creature thingy"
- density = 1
- opacity = 0
- anchored = 1
- var/active = 1
- var/health = 30
- var/brute_resist = 4
- var/fire_resist = 1
- var/blob_type = "blob"
- /*Types
- Blob
- Node
- Core
- Factory
- Shield
- */
-
-
- New(loc, var/h = 30)
- blobs += src
- src.health = h
- src.set_dir(pick(1,2,4,8))
- src.update_icon()
- ..(loc)
- return
-
-
- Destroy()
- blobs -= src
- ..()
- return
-
-
- CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if(air_group || (height==0)) return 1
- if(istype(mover) && mover.checkpass(PASSBLOB)) return 1
- return 0
-
-
- process()
- spawn(-1)
- Life()
- return
-
-
- proc/Pulse(var/pulse = 0, var/origin_dir = 0)//Todo: Fix spaceblob expand
- set background = 1
- if(!istype(src,/obj/effect/blob/core) && !istype(src,/obj/effect/blob/node))//Ill put these in the children later
- if(run_action())//If we can do something here then we dont need to pulse more
- return
-
- if(!istype(src,/obj/effect/blob/shield) && !istype(src,/obj/effect/blob/core) && !istype(src,/obj/effect/blob/node) && (pulse <= 2) && (prob(30)))
- change_to("Shield")
- return
-
- if(pulse > 20) return//Inf loop check
- //Looking for another blob to pulse
- var/list/dirs = list(1,2,4,8)
- dirs.Remove(origin_dir)//Dont pulse the guy who pulsed us
- for(var/i = 1 to 4)
- if(!dirs.len) break
- var/dirn = pick(dirs)
- dirs.Remove(dirn)
- var/turf/T = get_step(src, dirn)
- var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
- if(!B)
- expand(T)//No blob here so try and expand
- return
- B.Pulse((pulse+1),get_dir(src.loc,T))
- return
- return
-
-
- proc/run_action()
- return 0
-
-
- proc/Life()
- update_icon()
- if(run_action())
- return 1
- return 0
-
-/* fire_act(datum/gas_mixture/air, temperature, volume) Blob is currently fireproof
- if(temperature > T0C+200)
- health -= 0.01 * temperature
- update()
- */
-
- proc/expand(var/turf/T = null)
- if(!prob(health)) return
- if(!T)
- var/list/dirs = list(1,2,4,8)
- for(var/i = 1 to 4)
- var/dirn = pick(dirs)
- dirs.Remove(dirn)
- T = get_step(src, dirn)
- if(!(locate(/obj/effect/blob) in T)) break
- else T = null
-
- if(!T) return 0
- var/obj/effect/blob/B = new /obj/effect/blob(src.loc, min(src.health, 30))
- if(T.Enter(B,src))//Attempt to move into the tile
- B.loc = T
- else
- T.blob_act()//If we cant move in hit the turf
- qdel(B)
- for(var/atom/A in T)//Hit everything in the turf
- A.blob_act()
- return 1
-
-
- ex_act(severity)
- var/damage = 50
- switch(severity)
- if(1)
- src.health -= rand(100,120)
- if(2)
- src.health -= rand(60,100)
- if(3)
- src.health -= rand(20,60)
-
- health -= (damage/brute_resist)
- update_icon()
- return
-
-
- update_icon()//Needs to be updated with the types
- if(health <= 0)
- playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
- qdel(src)
- return
- if(health <= 15)
- icon_state = "blob_damaged"
- return
-// if(health <= 20)
-// icon_state = "blob_damaged2"
-// return
-
-
- bullet_act(var/obj/item/projectile/Proj)
- if(!Proj) return
- switch(Proj.damage_type)
- if(BRUTE)
- health -= (Proj.damage/brute_resist)
- if(BURN)
- health -= (Proj.damage/fire_resist)
-
- update_icon()
- return 0
-
-
- attackby(var/obj/item/weapon/W, var/mob/user)
- user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
- playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
- src.visible_message("The [src.name] has been attacked with \the [W][(user ? " by [user]." : ".")]")
- var/damage = 0
- switch(W.damtype)
- if("fire")
- damage = (W.force / max(src.fire_resist,1))
- if(istype(W, /obj/item/weapon/weldingtool))
- playsound(src.loc, 'sound/items/Welder.ogg', 100, 1)
- if("brute")
- damage = (W.force / max(src.brute_resist,1))
-
- health -= damage
- update_icon()
- return
-
- proc/change_to(var/type = "Normal")
- switch(type)
- if("Normal")
- new/obj/effect/blob(src.loc,src.health)
- if("Node")
- new/obj/effect/blob/node(src.loc,src.health*2)
- if("Factory")
- new/obj/effect/blob/factory(src.loc,src.health)
- if("Shield")
- new/obj/effect/blob/shield(src.loc,src.health*2)
- qdel(src)
- return
-
-//////////////////////////////****IDLE BLOB***/////////////////////////////////////
-
-/obj/effect/blob/idle
- name = "blob"
- desc = "it looks... tasty"
- icon_state = "blobidle0"
-
-
- New(loc, var/h = 10)
- src.health = h
- src.set_dir(pick(1,2,4,8))
- src.update_idle()
-
-
- proc/update_idle()
- if(health<=0)
- qdel(src)
- return
- if(health<4)
- icon_state = "blobc0"
- return
- if(health<10)
- icon_state = "blobb0"
- return
- icon_state = "blobidle0"
-
-
- Destroy()
- var/obj/effect/blob/B = new /obj/effect/blob( src.loc )
- spawn(30)
- B.Life()
- ..()
-
-
diff --git a/code/game/gamemodes/events/miniblob.dm b/code/game/gamemodes/events/miniblob.dm
deleted file mode 100644
index 28b482414a..0000000000
--- a/code/game/gamemodes/events/miniblob.dm
+++ /dev/null
@@ -1,30 +0,0 @@
-var/blobevent = 0
-
-/proc/mini_blob_event()
-
- var/turf/T = pick(blobstart)
- var/obj/effect/blob/core/bl = new /obj/effect/blob/core(T, 200)
- spawn(0)
- bl.Life()
- bl.Life()
- bl.Life()
- blobevent = 1
- spawn(0)
- dotheblobbaby()
- spawn(3000)
- blobevent = 0
- spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes.
- command_announcement.Announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak5.ogg')
-
-/proc/dotheblobbaby()
- if (blobevent)
- if(blob_cores.len)
- for(var/i = 1 to 5)
- sleep(-1)
- if(!blob_cores.len) break
- var/obj/effect/blob/B = pick(blob_cores)
- if(isNotStationLevel(B.z))
- continue
- B.Life()
- spawn(30)
- dotheblobbaby()
\ No newline at end of file
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index c8e129ab8c..8f0a0535b1 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -41,10 +41,6 @@
else
return
-/obj/machinery/optable/blob_act()
- if(prob(75))
- qdel(src)
-
/obj/machinery/optable/attack_hand(mob/user as mob)
if (HULK in usr.mutations)
visible_message("\The [usr] destroys \the [src]!")
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 3e456dfe69..788fdd48ed 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -129,12 +129,6 @@
else
return
-/obj/machinery/bodyscanner/blob_act()
- if(prob(50))
- for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
- qdel(src)
-
/obj/machinery/body_scanconsole/ex_act(severity)
switch(severity)
@@ -150,11 +144,6 @@
else
return
-/obj/machinery/body_scanconsole/blob_act()
-
- if(prob(50))
- qdel(src)
-
/obj/machinery/body_scanconsole/power_change()
..()
if(stat & BROKEN)
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index e0a837b4ce..73da615720 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -226,11 +226,6 @@ update_flag
return GM.return_pressure()
return 0
-/obj/machinery/portable_atmospherics/canister/blob_act()
- src.health -= 200
- healthcheck()
- return
-
/obj/machinery/portable_atmospherics/canister/bullet_act(var/obj/item/projectile/Proj)
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
return
diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index 88d8f8dd7e..7e03826f05 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -87,11 +87,6 @@
..()
healthcheck()
-/obj/machinery/bot/blob_act()
- src.health -= rand(20,40)*fire_dam_coeff
- healthcheck()
- return
-
/obj/machinery/bot/ex_act(severity)
switch(severity)
if(1.0)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index a24a79ac12..fa92176281 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -92,10 +92,6 @@
..() //and give it the regular chance of being deleted outright
-
-/obj/machinery/camera/blob_act()
- return
-
/obj/machinery/camera/hitby(AM as mob|obj)
..()
if (istype(AM, /obj))
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 0a22ccd6c4..35cd31399e 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -60,14 +60,6 @@
set_broken()
..()
-
-/obj/machinery/computer/blob_act()
- if (prob(75))
- for(var/x in verbs)
- verbs -= x
- set_broken()
- density = 0
-
/obj/machinery/computer/update_icon()
overlays.Cut()
if(stat & NOPOWER)
diff --git a/code/game/machinery/computer3/computer.dm b/code/game/machinery/computer3/computer.dm
index 6b6a2f8491..37d9a67d92 100644
--- a/code/game/machinery/computer3/computer.dm
+++ b/code/game/machinery/computer3/computer.dm
@@ -225,12 +225,6 @@
else
return
-
- blob_act()
- if (prob(75))
- set_broken()
- density = 0
-
/*
Computers have the capability to use a battery backup.
Note that auto_use_power's return value is strictly whether
diff --git a/code/game/machinery/computer3/lapvend.dm b/code/game/machinery/computer3/lapvend.dm
index 4e874a34dd..2ffa495b70 100644
--- a/code/game/machinery/computer3/lapvend.dm
+++ b/code/game/machinery/computer3/lapvend.dm
@@ -28,15 +28,6 @@
return
-/obj/machinery/lapvend/blob_act()
- if (prob(50))
- spawn(0)
- qdel(src)
- return
-
- return
-
-
/obj/machinery/lapvend/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(vendmode == 1)
if(istype(W, /obj/item/weapon/card))
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index df0d808be9..7bb1a9b4e5 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -508,8 +508,3 @@
name = initial(name)
if(occupant)
name = "[name] ([occupant])"
-
-
-//Attacks/effects.
-/obj/machinery/cryopod/blob_act()
- return //Sorta gamey, but we don't really want these to be destroyed.
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index ccf2fb97ae..0140a33fe3 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -131,13 +131,6 @@ for reference:
dismantle()
return
-/obj/structure/barricade/blob_act()
- src.health -= 25
- if (src.health <= 0)
- visible_message("The blob eats through \the [src]!")
- qdel(src)
- return
-
/obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff.
if(air_group || (height==0))
return 1
@@ -232,12 +225,6 @@ for reference:
anchored = !anchored
icon_state = "barrier[src.locked]"
- blob_act()
- src.health -= 25
- if (src.health <= 0)
- src.explode()
- return
-
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff.
if(air_group || (height==0))
return 1
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index daa2123d1c..2d1680aa7d 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -333,12 +333,6 @@
return
-/obj/machinery/door/blob_act()
- if(prob(40))
- qdel(src)
- return
-
-
/obj/machinery/door/emp_act(severity)
if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) )
spawn(0)
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 1383bf56e7..5f57174074 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -196,10 +196,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
qdel(src)
return
-/obj/machinery/hologram/blob_act()
- qdel(src)
- return
-
/obj/machinery/hologram/holopad/Destroy()
for (var/mob/living/silicon/ai/master in masters)
clear_holo(master)
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 709f4b4626..455c6256a4 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -171,10 +171,6 @@ Class Procs:
else
return
-/obj/machinery/blob_act()
- if(prob(50))
- qdel(src)
-
//sets the use_power var and then forces an area power update
/obj/machinery/proc/update_use_power(var/new_use_power)
use_power = new_use_power
diff --git a/code/game/machinery/nuclear_bomb.dm b/code/game/machinery/nuclear_bomb.dm
index 85b387fe7b..d02d3522a4 100644
--- a/code/game/machinery/nuclear_bomb.dm
+++ b/code/game/machinery/nuclear_bomb.dm
@@ -362,13 +362,6 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
/obj/machinery/nuclearbomb/ex_act(severity)
return
-/obj/machinery/nuclearbomb/blob_act()
- if (src.timing == -1.0)
- return
- else
- return ..()
- return
-
#define NUKERANGE 80
/obj/machinery/nuclearbomb/proc/explode()
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 6a6d4df1fd..67be498e3e 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -168,15 +168,6 @@
else
return
-/obj/machinery/vending/blob_act()
- if (prob(50))
- spawn(0)
- src.malfunction()
- qdel(src)
- return
-
- return
-
/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user)
if (!emagged)
src.emagged = 1
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 5257cff014..aa9f939493 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -77,11 +77,6 @@
healthcheck()
return
-/obj/effect/alien/resin/blob_act()
- health-=50
- healthcheck()
- return
-
/obj/effect/alien/resin/hitby(AM as mob|obj)
..()
for(var/mob/O in viewers(src, null))
diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm
index 99a68e1363..b29b2440e6 100644
--- a/code/game/objects/effects/chem/foam.dm
+++ b/code/game/objects/effects/chem/foam.dm
@@ -150,9 +150,6 @@
/obj/structure/foamedmetal/ex_act(severity)
qdel(src)
-/obj/structure/foamedmetal/blob_act()
- qdel(src)
-
/obj/structure/foamedmetal/bullet_act()
if(metal == 1 || prob(50))
qdel(src)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index ff7cecf169..9fa9ce9ff2 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -108,9 +108,6 @@
else
return
-/obj/item/blob_act()
- return
-
//user: The mob that is suiciding
//damagetype: The type of damage the item will inflict on the user
//BRUTELOSS = 1
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index b8e6fc6ecb..a0340c1cd2 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -63,17 +63,6 @@
descriptive = "cold"
user << "\The [src] feels [descriptive]."
-/obj/item/weapon/tank/blob_act()
- if(prob(50))
- var/turf/location = src.loc
- if (!( istype(location, /turf) ))
- qdel(src)
-
- if(src.air_contents)
- location.assume_air(air_contents)
-
- qdel(src)
-
/obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(src.loc, /obj/item/assembly))
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 98e9ccdc5c..35302dc5dc 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -213,10 +213,6 @@
health = 0
healthcheck()
-/obj/effect/energy_net/blob_act()
- health = 0
- healthcheck()
-
/obj/effect/energy_net/attack_hand(var/mob/user)
var/mob/living/carbon/human/H = user
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 1f25043e89..f8b9c37ae4 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -28,10 +28,6 @@
return ..()
-/obj/structure/blob_act()
- if(prob(50))
- qdel(src)
-
/obj/structure/attack_tk()
return
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index b680002df8..105f2987df 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -196,13 +196,6 @@
return
-// this should probably use dump_contents()
-/obj/structure/closet/blob_act()
- if(prob(75))
- for(var/atom/movable/A as mob|obj in src)
- A.forceMove(src.loc)
- qdel(src)
-
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(src.opened)
if(istype(W, /obj/item/weapon/grab))
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index 3f5508fb97..2ff44ee9df 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -96,10 +96,6 @@
for(var/mob/M in src)
shatter(M)
-/obj/structure/closet/statue/blob_act()
- for(var/mob/M in src)
- shatter(M)
-
/obj/structure/closet/statue/ex_act(severity)
for(var/mob/M in src)
M.ex_act(severity)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 5d5b88b886..8ce2a88f24 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -34,15 +34,6 @@
src.healthcheck()
return
-
-/obj/structure/displaycase/blob_act()
- if (prob(75))
- new /obj/item/weapon/material/shard( src.loc )
- if (occupied)
- new /obj/item/weapon/gun/energy/captain( src.loc )
- occupied = 0
- qdel(src)
-
/obj/structure/displaycase/proc/healthcheck()
if (src.health <= 0)
if (!( src.destroyed ))
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 8274576641..0e2efb1c9e 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -202,10 +202,6 @@
return
return ..()
-/obj/structure/girder/blob_act()
- if(prob(40))
- qdel(src)
-
/obj/structure/girder/ex_act(severity)
switch(severity)
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index f3f70d53d8..0691d3d68e 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -16,9 +16,6 @@
/obj/structure/grille/ex_act(severity)
qdel(src)
-/obj/structure/grille/blob_act()
- qdel(src)
-
/obj/structure/grille/update_icon()
if(destroyed)
icon_state = "[initial(icon_state)]-b"
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index c6b108825b..3d867111cc 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -60,9 +60,6 @@
deflate(1)
return
-/obj/structure/inflatable/blob_act()
- deflate(1)
-
/obj/structure/inflatable/attack_hand(mob/user as mob)
add_fingerprint(user)
return
diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm
index 13d6694822..7d0bc76b18 100644
--- a/code/game/objects/structures/lamarr_cage.dm
+++ b/code/game/objects/structures/lamarr_cage.dm
@@ -32,13 +32,6 @@
src.healthcheck()
return
-
-/obj/structure/lamarr/blob_act()
- if (prob(75))
- new /obj/item/weapon/material/shard( src.loc )
- Break()
- qdel(src)
-
/obj/structure/lamarr/proc/healthcheck()
if (src.health <= 0)
if (!( src.destroyed ))
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index cc87be62fa..3b5bdb56aa 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -34,10 +34,6 @@
L.updateOverlays(src.loc)
..()
-/obj/structure/lattice/blob_act()
- qdel(src)
- return
-
/obj/structure/lattice/ex_act(severity)
switch(severity)
if(1.0)
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index e0923119b0..a3904f65a1 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -160,10 +160,6 @@ FLOOR SAFES
return
-obj/structure/safe/blob_act()
- return
-
-
obj/structure/safe/ex_act(severity)
return
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index f5c988ae97..38d3e5cde7 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -19,10 +19,6 @@
else
return
-/obj/structure/sign/blob_act()
- qdel(src)
- return
-
/obj/structure/sign/attackby(obj/item/tool as obj, mob/user as mob) //deconstruction
if(istype(tool, /obj/item/weapon/screwdriver) && !istype(src, /obj/structure/sign/double))
user << "You unfasten the sign with your [tool]."
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 29c504edd3..73914e113c 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -86,11 +86,6 @@
qdel(src)
return
-/obj/structure/bed/blob_act()
- if(prob(75))
- material.place_sheet(get_turf(src))
- qdel(src)
-
/obj/structure/bed/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index 2228345ebb..e4840bedc6 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -95,11 +95,6 @@ var/global/list/stool_cache = list() //haha stool
qdel(src)
return
-/obj/item/weapon/stool/blob_act()
- if(prob(75))
- material.place_sheet(get_turf(src))
- qdel(src)
-
/obj/item/weapon/stool/proc/dismantle()
if(material)
material.place_sheet(get_turf(src))
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 43305bedb9..440cc6a8a2 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -122,10 +122,6 @@
shatter(0)
return
-
-/obj/structure/window/blob_act()
- shatter()
-
//TODO: Make full windows a separate type of window.
//Once a full window, it will always be a full window, so there's no point
//having the same type for both.
diff --git a/code/game/turfs/simulated/floor_acts.dm b/code/game/turfs/simulated/floor_acts.dm
index 73fa3e01a3..2157397050 100644
--- a/code/game/turfs/simulated/floor_acts.dm
+++ b/code/game/turfs/simulated/floor_acts.dm
@@ -43,6 +43,3 @@
for(var/obj/structure/window/W in src)
if(W.dir == dir_to || W.is_fulltile()) //Same direction or diagonal (full tile)
W.fire_act(adj_air, adj_temp, adj_volume)
-
-/turf/simulated/floor/blob_act()
- return
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index d703fdcbd3..8c79f20403 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -193,10 +193,6 @@
else
return
-/turf/simulated/wall/blob_act()
- take_damage(rand(75, 125))
- return
-
// Wall-rot effect, a nasty fungus that destroys walls.
/turf/simulated/wall/proc/rot()
if(locate(/obj/effect/overlay/wallrot) in src)
diff --git a/code/global.dm b/code/global.dm
index 61835c9afd..a460518726 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -83,7 +83,6 @@ var/list/reverse_dir = list( // reverse_dir[dir] = reverse of dir
23, 28, 30, 29, 31, 48, 50, 49, 51, 56, 58, 57, 59, 52, 54, 53, 55, 60, 62, 61, 63
)
-var/datum/station_state/start_state = null
var/datum/configuration/config = null
var/datum/sun/sun = null
diff --git a/code/modules/blob/blob.dm b/code/modules/blob/blob.dm
new file mode 100644
index 0000000000..1604554da9
--- /dev/null
+++ b/code/modules/blob/blob.dm
@@ -0,0 +1,206 @@
+//I will need to recode parts of this but I am way too tired atm
+/obj/effect/blob
+ name = "blob"
+ icon = 'icons/mob/blob.dmi'
+ icon_state = "blob"
+ light_range = 3
+ desc = "Some blob creature thingy"
+ density = 1
+ opacity = 0
+ anchored = 1
+ mouse_opacity = 2
+
+ var/maxHealth = 30
+ var/health
+ var/brute_resist = 4
+ var/fire_resist = 1
+ var/expandType = /obj/effect/blob
+
+/obj/effect/blob/New(loc)
+ health = maxHealth
+ set_dir(pick(1,2,4,8))
+ update_icon()
+ return ..(loc)
+
+/obj/effect/blob/CanPass(var/atom/movable/mover, vra/turf/target, var/height = 0, var/air_group = 0)
+ if(air_group || height == 0)
+ return 1
+ return 0
+
+/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)
+
+/obj/effect/blob/update_icon()
+ if(health > maxHealth / 2)
+ icon_state = "blob"
+ else
+ icon_state = "blob_damaged"
+
+/obj/effect/blob/proc/take_damage(var/damage)
+ health -= damage
+ if(health < 0)
+ playsound(loc, 'sound/effects/splat.ogg', 50, 1)
+ qdel(src)
+ else
+ update_icon()
+
+/obj/effect/blob/proc/regen()
+ health = min(health + 1, maxHealth)
+ update_icon()
+
+/obj/effect/blob/proc/expand(var/turf/T)
+ if(istype(T, /turf/unsimulated/) || istype(T, /turf/space))
+ return
+ if(istype(T, /turf/simulated/wall))
+ var/turf/simulated/wall/SW = T
+ SW.take_damage(80)
+ return
+ var/obj/structure/girder/G = locate() in T
+ if(G)
+ if(prob(40))
+ G.dismantle()
+ return
+ var/obj/structure/window/W = locate() in T
+ if(W)
+ W.shatter()
+ return
+ var/obj/structure/grille/GR = locate() in T
+ if(GR)
+ qdel(GR)
+ return
+ var/obj/machinery/door/D = locate() in T
+ if(D && D.density)
+ D.ex_act(2)
+ 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
+ var/obj/mecha/M = locate() in T
+ if(M)
+ M.take_damage(40)
+ return
+
+ // Above things, we destroy completely and thus can use locate. Mobs are different.
+ for(var/mob/living/L in T)
+ if(L.stat == DEAD)
+ continue
+ L.visible_message("The blob attacks \the [L]!", "The blob attacks you!")
+ playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
+ L.take_organ_damage(rand(30, 40))
+ return
+ new expandType(T, min(health, 30))
+
+/obj/effect/blob/proc/pulse(var/forceLeft, var/list/dirs)
+ regen()
+ sleep(5)
+ var/pushDir = pick(dirs)
+ var/turf/T = get_step(src, pushDir)
+ var/obj/effect/blob/B = (locate() in T)
+ if(!B)
+ if(prob(health))
+ expand(T)
+ return
+ B.pulse(forceLeft - 1, dirs)
+
+/obj/effect/blob/bullet_act(var/obj/item/projectile/Proj)
+ if(!Proj)
+ return
+
+ switch(Proj.damage_type)
+ if(BRUTE)
+ take_damage(Proj.damage / brute_resist)
+ if(BURN)
+ take_damage(Proj.damage / fire_resist)
+ return 0
+
+/obj/effect/blob/attackby(var/obj/item/weapon/W, var/mob/user)
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
+ playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
+ visible_message("\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]")
+ var/damage = 0
+ switch(W.damtype)
+ if("fire")
+ damage = (W.force / fire_resist)
+ if(istype(W, /obj/item/weapon/weldingtool))
+ playsound(loc, 'sound/items/Welder.ogg', 100, 1)
+ if("brute")
+ damage = (W.force / brute_resist)
+
+ take_damage(damage)
+ return
+
+/obj/effect/blob/core
+ name = "blob core"
+ icon = 'icons/mob/blob.dmi'
+ icon_state = "blob_core"
+ maxHealth = 200
+ brute_resist = 2
+ fire_resist = 2
+
+ expandType = /obj/effect/blob/shield
+
+/obj/effect/blob/core/update_icon()
+ return
+
+/obj/effect/blob/core/New(loc)
+ processing_objects.Add(src)
+ return ..(loc)
+
+/obj/effect/blob/core/Destroy()
+ processing_objects.Remove(src)
+ return ..()
+
+/obj/effect/blob/core/process()
+ pulse(20, list(NORTH, EAST))
+ pulse(20, list(NORTH, WEST))
+ pulse(20, list(SOUTH, EAST))
+ pulse(20, list(SOUTH, WEST))
+
+/obj/effect/blob/shield
+ name = "strong blob"
+ icon = 'icons/mob/blob.dmi'
+ icon_state = "blob_idle"
+ desc = "Some blob creature thingy"
+ maxHealth = 60
+ brute_resist = 1
+ fire_resist = 2
+
+/obj/effect/blob/shield/New()
+ ..()
+ update_nearby_tiles()
+
+/obj/effect/blob/shield/Destroy()
+ density = 0
+ update_nearby_tiles()
+ ..()
+
+/obj/effect/blob/shield/update_icon()
+ if(health > maxHealth * 2 / 3)
+ icon_state = "blob_idle"
+ else if(health > maxHealth / 3)
+ icon_state = "blob"
+ else
+ icon_state = "blob_damaged"
+
+/obj/effect/blob/shield/CanPass(var/atom/movable/mover, var/turf/target, var/height = 0, var/air_group = 0)
+ return !density
diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm
index c478a28daa..bc1888f14d 100644
--- a/code/modules/events/blob.dm
+++ b/code/modules/events/blob.dm
@@ -12,12 +12,13 @@
if(!T)
kill()
return
- Blob = new /obj/effect/blob/core(T, 120)
+ Blob = new /obj/effect/blob/core(T)
for(var/i = 1; i < rand(3, 4), i++)
Blob.process()
/datum/event/blob/tick()
- if(!Blob)
+ if(!Blob || !Blob.loc)
+ Blob = null
kill()
return
if(IsMultiple(activeFor, 3))
diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm
index 18e061f273..4c0d0a755e 100644
--- a/code/modules/holodeck/HolodeckControl.dm
+++ b/code/modules/holodeck/HolodeckControl.dm
@@ -163,11 +163,6 @@
emergencyShutdown()
..()
-
-/obj/machinery/computer/HolodeckControl/blob_act()
- emergencyShutdown()
- ..()
-
/obj/machinery/computer/HolodeckControl/power_change()
var/oldstat
..()
diff --git a/code/modules/mob/living/blob/blob.dm b/code/modules/mob/living/blob/blob.dm
deleted file mode 100644
index 8bbf517e60..0000000000
--- a/code/modules/mob/living/blob/blob.dm
+++ /dev/null
@@ -1,253 +0,0 @@
-/mob/living/blob
- name = "blob fragment"
- real_name = "blob fragment"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_spore_temp"
- pass_flags = PASSBLOB
- see_in_dark = 8
- see_invisible = SEE_INVISIBLE_LEVEL_TWO
- var/ghost_name = "Unknown"
- var/creating_blob = 0
- faction = "blob"
- use_me = 0 //Blobs can't emote
-
-
- New()
- real_name += " [pick(rand(1, 99))]"
- name = real_name
- ..()
-
-
- say(var/message)
- return//No talking for you
-
-
- emote(var/act,var/m_type=1,var/message = null)
- return
-
-
- Life()
- set invisibility = 0
- set background = 1
-
- clamp_values()
- UpdateDamage()
- if(health < 0)
- src.dust()
-
-
- proc/clamp_values()
- AdjustStunned(0)
- AdjustParalysis(0)
- AdjustWeakened(0)
- sleeping = 0
- if(stat)
- stat = CONSCIOUS
- return
-
-
- proc/UpdateDamage()
- health = 60 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
- return
-
-
- death(gibbed)
- ghostize()
- ..(gibbed)
-
-
- blob_act()
- src << "The blob attempts to reabsorb you."
- adjustToxLoss(20)
- return
-
-
- Process_Spacemove()
- if(locate(/obj/effect/blob) in oview(1,src))
- return 1
- return (..())
-
-
-/mob/living/blob/verb/create_node()
- set category = "Blob"
- set name = "Create Node"
- set desc = "Create a Node."
- if(creating_blob) return
- var/turf/T = get_turf(src)
- creating_blob = 1
- if(!T)
- creating_blob = 0
- return
- var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
- if(!B)//We are on a blob
- usr << "There is no blob here!"
- creating_blob = 0
- return
- if(istype(B,/obj/effect/blob/node)||istype(B,/obj/effect/blob/core)||istype(B,/obj/effect/blob/factory))
- usr << "Unable to use this blob, find a normal one."
- creating_blob = 0
- return
- for(var/obj/effect/blob/node/blob in orange(5))
- usr << "There is another node nearby, move more than 5 tiles away from it!"
- creating_blob = 0
- return
- for(var/obj/effect/blob/factory/blob in orange(2))
- usr << "There is a porus blob nearby, move more than 2 tiles away from it!"
- creating_blob = 0
- B.change_to("Node")
- src.dust()
- return
-
-
-/mob/living/blob/verb/create_factory()
- set category = "Blob"
- set name = "Create Defense"
- set desc = "Create a Spore producing blob."
- if(creating_blob) return
- var/turf/T = get_turf(src)
- creating_blob = 1
- if(!T)
- creating_blob = 0
- return
- var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
- if(!B)
- usr << "You must be on a blob!"
- creating_blob = 0
- return
- if(istype(B,/obj/effect/blob/node)||istype(B,/obj/effect/blob/core)||istype(B,/obj/effect/blob/factory))
- usr << "Unable to use this blob, find a normal one."
- creating_blob = 0
- return
- for(var/obj/effect/blob/blob in orange(2))//Not right next to nodes/cores
- if(istype(B,/obj/effect/blob/node))
- usr << "There is a node nearby, move away from it!"
- creating_blob = 0
- return
- if(istype(B,/obj/effect/blob/core))
- usr << "There is a core nearby, move away from it!"
- creating_blob = 0
- return
- if(istype(B,/obj/effect/blob/factory))
- usr << "There is another porous blob nearby, move away from it!"
- creating_blob = 0
- return
- B.change_to("Factory")
- src.dust()
- return
-
-
-/mob/living/blob/verb/revert()
- set category = "Blob"
- set name = "Purge Defense"
- set desc = "Removes a porous blob."
- if(creating_blob) return
- var/turf/T = get_turf(src)
- creating_blob = 1
- if(!T)
- creating_blob = 0
- return
- var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
- if(!B)
- usr << "You must be on a blob!"
- creating_blob = 0
- return
- if(!istype(B,/obj/effect/blob/factory))
- usr << "Unable to use this blob, find another one."
- creating_blob = 0
- return
- B.change_to("Normal")
- src.dust()
- return
-
-
-/mob/living/blob/verb/spawn_blob()
- set category = "Blob"
- set name = "Create new blob"
- set desc = "Attempts to create a new blob in this tile."
- if(creating_blob) return
- var/turf/T = get_turf(src)
- creating_blob = 1
- if(!T)
- creating_blob = 0
- return
- var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
- if(B)
- usr << "There is a blob here!"
- creating_blob = 0
- return
- new/obj/effect/blob(src.loc)
- src.dust()
- return
-
-
-///mob/proc/Blobize()
-/client/proc/Blobcount()
- set category = "Debug"
- set name = "blobreport"
- set desc = "blob report."
- set hidden = 1
-
- if(!holder)
- src << "Only administrators may use this command."
- return
- if(ticker && ticker.mode)
- src << "blobs: [blobs.len]"
- src << "cores: [blob_cores.len]"
- src << "nodes: [blob_nodes.len]"
- return
-
-
-/client/proc/Blobize()//Mostly stolen from the respawn command
- set category = "Debug"
- set name = "Ghostblob"
- set desc = "Ghost into blobthing."
- set hidden = 1
-
- if(!holder)
- src << "Only administrators may use this command."
- return
- var/input = input(src, "Please specify which key will be turned into a bloby.", "Key", "")
-
- var/mob/dead/observer/G_found
- if(!input)
- var/list/ghosts = list()
- for(var/mob/dead/observer/G in player_list)
- ghosts += G
- if(ghosts.len)
- G_found = pick(ghosts)
-
- else
- for(var/mob/dead/observer/G in player_list)
- if(G.client&&ckey(G.key)==ckey(input))
- G_found = G
- break
-
- if(!G_found)//If a ghost was not found.
- alert("There is no active key like that in the game or the person is not currently a ghost. Aborting command.")
- return
-
- if(G_found.client)
- G_found.client.screen.len = null
- var/mob/living/blob/B = new/mob/living/blob(locate(0,0,1))//temp area also just in case should do this better but tired
- if(blob_cores.len > 0)
- var/obj/effect/blob/core/core = pick(blob_cores)
- if(core)
- B.loc = core.loc
- B.ghost_name = G_found.real_name
- if (G_found.client)
- G_found.client.mob = B
- B.verbs += /mob/living/blob/verb/create_node
- B.verbs += /mob/living/blob/verb/create_factory
- B << "You are now a blob fragment."
- B << "You are a weak bit that has temporarily broken off of the blob."
- B << "If you stay on the blob for too long you will likely be reabsorbed."
- B << "If you stray from the blob you will likely be killed by other organisms."
- B << "You have the power to create a new blob node that will help expand the blob."
- B << "To create this node you will have to be on a normal blob tile and far enough away from any other node."
- B << "Check your Blob verbs and hit Create Node to build a node."
- spawn(10)
- qdel(G_found)
-
-
-
-
diff --git a/code/modules/mob/living/carbon/alien/alien_damage.dm b/code/modules/mob/living/carbon/alien/alien_damage.dm
index 1483559120..99c5e52f75 100644
--- a/code/modules/mob/living/carbon/alien/alien_damage.dm
+++ b/code/modules/mob/living/carbon/alien/alien_damage.dm
@@ -31,26 +31,3 @@
adjustFireLoss(f_loss)
updatehealth()
-
-
-
-/mob/living/carbon/alien/blob_act()
- if (stat == 2)
- return
- var/shielded = 0
-
- var/damage = null
- if (stat != 2)
- damage = rand(10,30)
-
- if(shielded)
- damage /= 4
-
- //paralysis += 1
-
- show_message("\red The blob attacks you!")
-
- adjustFireLoss(damage)
-
- updatehealth()
- return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index bcec368d7d..78129c4910 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -168,15 +168,6 @@
update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message)
if(update) UpdateDamageIcon()
-
-/mob/living/carbon/human/blob_act()
- if(stat == 2) return
- show_message("\red The blob attacks you!")
- var/dam_zone = pick(organs_by_name)
- var/obj/item/organ/external/affecting = get_organ(ran_zone(dam_zone))
- apply_damage(rand(30,40), BRUTE, affecting, run_armor_check(affecting, "melee"))
- return
-
/mob/living/carbon/human/proc/implant_loyalty(mob/living/carbon/human/M, override = FALSE) // Won't override by default.
if(!config.use_loyalty_implants && !override) return // Nuh-uh.
diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm
index 86f8f2d672..5f4876d1dd 100644
--- a/code/modules/mob/living/carbon/metroid/metroid.dm
+++ b/code/modules/mob/living/carbon/metroid/metroid.dm
@@ -194,26 +194,6 @@
updatehealth()
-/mob/living/carbon/slime/blob_act()
- if (stat == 2)
- return
- var/shielded = 0
-
- var/damage = null
- if (stat != 2)
- damage = rand(10,30)
-
- if(shielded)
- damage /= 4
-
- show_message(" The blob attacks you!")
-
- adjustFireLoss(damage)
-
- updatehealth()
- return
-
-
/mob/living/carbon/slime/u_equip(obj/item/W as obj)
return
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index cb90cd176b..0c53adc467 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -119,13 +119,6 @@
return -1
return 0
-/mob/living/silicon/pai/blob_act()
- if (src.stat != 2)
- src.adjustBruteLoss(60)
- src.updatehealth()
- return 1
- return 0
-
/mob/living/silicon/pai/restrained()
if(istype(src.loc,/obj/item/device/paicard))
return 0
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 25b321a9a7..f4382731a9 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -97,13 +97,6 @@
/mob/living/silicon/IsAdvancedToolUser()
return 1
-/mob/living/silicon/blob_act()
- if (src.stat != 2)
- src.adjustBruteLoss(60)
- src.updatehealth()
- return 1
- return 0
-
/mob/living/silicon/bullet_act(var/obj/item/projectile/Proj)
if(!Proj.nodamage)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 836b5224b6..6d24a8f238 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -146,15 +146,6 @@
toner = 0
return
-/obj/machinery/photocopier/blob_act()
- if(prob(50))
- qdel(src)
- else
- if(toner > 0)
- new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
- toner = 0
- return
-
/obj/machinery/photocopier/proc/copy(var/obj/item/weapon/paper/copy)
var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc)
if(toner > 10) //lots of toner, make it dark
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index 9fd35c2c26..8c7af58346 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -101,19 +101,6 @@
return 0
-/obj/machinery/power/am_control_unit/blob_act()
- stability -= 20
- if(prob(100-stability))//Might infect the rest of the machine
- for(var/obj/machinery/am_shielding/AMS in linked_shielding)
- AMS.blob_act()
- spawn(0)
- //Likely explode
- qdel(src)
- return
- check_stability()
- return
-
-
/obj/machinery/power/am_control_unit/ex_act(severity)
switch(severity)
if(1.0)
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index 700fad25ad..4f89687fb4 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -90,20 +90,6 @@ proc/cardinalrange(var/center)
return 0
-/obj/machinery/am_shielding/blob_act()
- stability -= 20
- if(prob(100-stability))
- if(prob(10))//Might create a node
- new /obj/effect/blob/node(src.loc,150)
- else
- new /obj/effect/blob(src.loc,60)
- spawn(0)
- qdel(src)
- return
- check_stability()
- return
-
-
/obj/machinery/am_shielding/ex_act(severity)
switch(severity)
if(1.0)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 3ad0754d84..6d25a0f25e 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -1178,12 +1178,6 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
cell.ex_act(3.0)
return
-/obj/machinery/power/apc/blob_act()
- if (prob(75))
- set_broken()
- if (cell && prob(5))
- cell.blob_act()
-
/obj/machinery/power/apc/disconnect_terminal()
if(terminal)
terminal.master = null
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index ebae74cd27..599dadc4a4 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -161,10 +161,6 @@
corrupt()
return
-/obj/item/weapon/cell/blob_act()
- if(prob(75))
- explode()
-
/obj/item/weapon/cell/proc/get_electrocute_damage()
switch (charge)
/* if (9000 to INFINITY)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index bf3393f903..9952a97442 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -548,10 +548,6 @@
//blob effect
-/obj/machinery/light/blob_act()
- if(prob(75))
- broken()
-
// timed process
// use power
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 1b798df2bd..751e2cf157 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -30,10 +30,6 @@
return 1
-/obj/machinery/containment_field/blob_act()
- return 0
-
-
/obj/machinery/containment_field/ex_act(severity)
return 0
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 5532f8ce9e..6368e7348d 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -159,13 +159,6 @@ field_generator power level display
/obj/machinery/field_generator/emp_act()
return 0
-
-/obj/machinery/field_generator/blob_act()
- if(active)
- return 0
- else
- ..()
-
/obj/machinery/field_generator/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj, /obj/item/projectile/beam))
power += Proj.damage * EMITTER_DAMAGE_POWER_TRANSFER
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index ec659eca58..f6770d48c0 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -157,12 +157,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
else
return
-
-/obj/structure/particle_accelerator/blob_act()
- if(prob(50))
- qdel(src)
- return
-
/obj/structure/particle_accelerator/update_icon()
switch(construction_state)
if(0,1)
@@ -339,12 +333,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
return
-/obj/machinery/particle_accelerator/blob_act()
- if(prob(50))
- qdel(src)
- return
-
-
/obj/machinery/particle_accelerator/proc/update_state()
return 0
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 76cdf04f0a..608f8c283c 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -53,9 +53,6 @@
consume(user)
return 1
-/obj/singularity/blob_act(severity)
- return
-
/obj/singularity/ex_act(severity)
if(current_size == STAGE_SUPER)//IT'S UNSTOPPABLE
return
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index ea5377c98b..232adb345b 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -80,12 +80,6 @@ var/list/solars_list = list()
..()
-/obj/machinery/power/solar/blob_act()
- src.health--
- src.healthcheck()
- return
-
-
/obj/machinery/power/solar/proc/healthcheck()
if (src.health <= 0)
if(!(stat & BROKEN))
@@ -172,12 +166,6 @@ var/list/solars_list = list()
return
-/obj/machinery/power/solar/blob_act()
- if(prob(75))
- broken()
- src.density = 0
-
-
/obj/machinery/power/solar/fake/New(var/turf/loc, var/obj/item/solar_assembly/S)
..(loc, S, 0)
@@ -539,12 +527,6 @@ var/list/solars_list = list()
broken()
return
-
-/obj/machinery/power/solar_control/blob_act()
- if (prob(75))
- broken()
- src.density = 0
-
// Used for mapping in solar array which automatically starts itself (telecomms, for example)
/obj/machinery/power/solar_control/autostart
track = 2 // Auto tracking mode
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 01f3a35231..d597e9d8ef 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -44,10 +44,6 @@
qdel(src)
return
-/obj/machinery/chem_master/blob_act()
- if (prob(50))
- qdel(src)
-
/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob)
if(istype(B, /obj/item/weapon/reagent_containers/glass))
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 7406dff6b7..f52d905fee 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -59,11 +59,6 @@
else
return
- blob_act()
- if(prob(50))
- new /obj/effect/effect/water(src.loc)
- qdel(src)
-
@@ -154,9 +149,6 @@
if(!istype(Proj ,/obj/item/projectile/beam/lastertag) && !istype(Proj ,/obj/item/projectile/beam/practice) )
explode()
-/obj/structure/reagent_dispensers/fueltank/blob_act()
- explode()
-
/obj/structure/reagent_dispensers/fueltank/ex_act()
explode()
@@ -223,10 +215,6 @@
..()
reagents.add_reagent("beer",1000)
-/obj/structure/reagent_dispensers/beerkeg/blob_act()
- explosion(src.loc,0,3,5,7,10)
- qdel(src)
-
/obj/structure/reagent_dispensers/virusfood
name = "Virus Food Dispenser"
desc = "A dispenser of virus food."
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 0f8df78262..49575cd3f7 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -79,10 +79,6 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
else
icon_state = "circuit_imprinter"
-/obj/machinery/r_n_d/circuit_imprinter/blob_act()
- if(prob(50))
- qdel(src)
-
/obj/machinery/r_n_d/circuit_imprinter/proc/TotalMaterials()
var/t = 0
for(var/f in materials)
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 6f474fe06d..efb05b90d7 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -79,10 +79,6 @@
griefProtection()
..()
-/obj/machinery/r_n_d/server/blob_act()
- griefProtection()
- ..()
-
//Backup files to centcomm to help admins recover data after greifer attacks
/obj/machinery/r_n_d/server/proc/griefProtection()
for(var/obj/machinery/r_n_d/server/centcom/C in machines)
diff --git a/code/modules/research/xenoarchaeology/machinery/coolant.dm b/code/modules/research/xenoarchaeology/machinery/coolant.dm
index ac56d07f99..62dde2edd5 100644
--- a/code/modules/research/xenoarchaeology/machinery/coolant.dm
+++ b/code/modules/research/xenoarchaeology/machinery/coolant.dm
@@ -13,9 +13,6 @@
if(!istype(Proj ,/obj/item/projectile/beam/lastertag) && !istype(Proj ,/obj/item/projectile/beam/practice) )
explode()
-/obj/structure/reagent_dispensers/coolanttank/blob_act()
- explode()
-
/obj/structure/reagent_dispensers/coolanttank/ex_act()
explode()
diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm
index 7b5449074f..9e8a752122 100644
--- a/code/modules/shieldgen/emergency_shield.dm
+++ b/code/modules/shieldgen/emergency_shield.dm
@@ -87,9 +87,6 @@
if(prob(50))
qdel(src)
-/obj/machinery/shield/blob_act()
- qdel(src)
-
/obj/machinery/shield/hitby(AM as mob|obj)
//Let everyone know we've been hit!
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 3862632916..ddc56dad3f 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -116,11 +116,6 @@
..()
healthcheck()
-/obj/vehicle/blob_act()
- src.health -= rand(20,40)*fire_dam_coeff
- healthcheck()
- return
-
/obj/vehicle/ex_act(severity)
switch(severity)
if(1.0)