diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm
index f3cd5477303..65b37d74c0c 100644
--- a/code/game/gamemodes/blob/blob.dm
+++ b/code/game/gamemodes/blob/blob.dm
@@ -24,8 +24,8 @@ var/list/blob_nodes = list()
var/players_per_core = 26
var/blob_count = 0
- var/blobnukecount = 200//Might be a bit low
- var/blobwincount = 400//Still needs testing
+ var/blobnukecount = 300//Might be a bit low
+ var/blobwincount = 600//Still needs testing
var/list/infected_crew = list()
@@ -64,11 +64,6 @@ var/list/blob_nodes = list()
world << "You must kill it all while minimizing the damage to the station."
-/datum/game_mode/blob/process()
- if(declared == 1)
- stage(2) // check for win conditions
- return
-
/datum/game_mode/blob/proc/greet_blob(var/datum/mind/blob)
blob.current << "\red You are infected by the Blob!"
blob.current << "You're body is ready to give spawn to a new blob core which will eat this station."
@@ -82,6 +77,9 @@ var/list/blob_nodes = list()
for(var/datum/mind/blob in infected_crew)
greet_blob(blob)
+ if(emergency_shuttle)
+ emergency_shuttle.always_fake_recall = 1
+
spawn(10)
start_state = new /datum/station_state()
start_state.count()
@@ -123,7 +121,7 @@ var/list/blob_nodes = list()
stage(0)
// Stage 1
- sleep(5000)
+ sleep(4000)
stage(1)
..()
@@ -149,14 +147,5 @@ var/list/blob_nodes = list()
M << sound('sound/AI/outbreak5.ogg')
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")
-
-
return
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
index 9769d1560ab..2d2c8a41e6e 100644
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ b/code/game/gamemodes/blob/blobs/core.dm
@@ -7,6 +7,7 @@
fire_resist = 2
var/mob/camera/blob/overmind = null // the blob core's overmind
var/overmind_get_delay = 0 // we don't want to constantly try to find an overmind, do it every 30 seconds
+ var/resource_delay = 0
New(loc, var/h = 200, var/client/new_overmind = null)
blob_cores += src
@@ -38,7 +39,9 @@
if(!overmind)
create_overmind()
else
- overmind.add_points(2)
+ if(resource_delay <= world.time)
+ resource_delay = world.time + 10 // 1 second
+ overmind.add_points(2)
health = min(initial(health), health + 1)
for(var/i = 1; i < 8; i += i)
Pulse(0, i)
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index cb9b4202362..dcfc59e1e72 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -9,10 +9,9 @@
invisibility = INVISIBILITY_OBSERVER
pass_flags = PASSBLOB
- var/creating_blob = 0
- var/obj/effect/blob/core/blob_core = null // The blob overmind's core
faction = "blob"
+ var/obj/effect/blob/core/blob_core = null // The blob overmind's core
var/blob_points = 0
var/max_blob_points = 100
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 20817196029..c755b94dd17 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -13,7 +13,7 @@
// Power verbs
-/mob/camera/blob/verb/transport()
+/mob/camera/blob/verb/transport_core()
set category = "Blob"
set name = "Return to Core"
set desc = "Transport back to your core."
@@ -21,6 +21,19 @@
if(blob_core)
src.loc = blob_core.loc
+/mob/camera/blob/verb/jump_to_node()
+ set category = "Blob"
+ set name = "Jump to Node"
+ set desc = "Transport back to your core."
+
+ if(blob_nodes.len)
+ var/list/nodes = list()
+ for(var/i = 1; i <= blob_nodes.len; i++)
+ nodes["Blob Node #[i]"] = blob_nodes[i]
+ var/node_name = input(src, "Choose a node to jump to.", "Node Jump") in nodes
+ var/obj/effect/blob/node/chosen_node = nodes[node_name]
+ if(chosen_node)
+ src.loc = chosen_node.loc
/mob/camera/blob/verb/create_shield()
set category = "Blob"
@@ -36,11 +49,11 @@
var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
if(!B)//We are on a blob
- usr << "There is no blob here!"
+ src << "There is no blob here!"
return
if(!istype(B, /obj/effect/blob/normal))
- usr << "Unable to use this blob, find a normal one."
+ src << "Unable to use this blob, find a normal one."
return
if(!can_buy(10))
@@ -53,7 +66,7 @@
/mob/camera/blob/verb/create_resource()
set category = "Blob"
- set name = "Create Resource Blob (20)"
+ set name = "Create Resource Blob (40)"
set desc = "Create a resource tower which will generate points for you."
@@ -65,18 +78,18 @@
var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
if(!B)//We are on a blob
- usr << "There is no blob here!"
+ src << "There is no blob here!"
return
if(!istype(B, /obj/effect/blob/normal))
- usr << "Unable to use this blob, find a normal one."
+ src << "Unable to use this blob, find a normal one."
return
for(var/obj/effect/blob/resource/blob in orange(3))
- usr << "There is a resource blob nearby, move more than 3 tiles away from it!"
+ src << "There is a resource blob nearby, move more than 3 tiles away from it!"
return
- if(!can_buy(20))
+ if(!can_buy(40))
return
@@ -101,15 +114,15 @@
var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
if(!B)//We are on a blob
- usr << "There is no blob here!"
+ src << "There is no blob here!"
return
if(!istype(B, /obj/effect/blob/normal))
- usr << "Unable to use this blob, find a normal one."
+ src << "Unable to use this blob, find a normal one."
return
for(var/obj/effect/blob/node/blob in orange(4))
- usr << "There is another node nearby, move more than 4 tiles away from it!"
+ src << "There is another node nearby, move more than 4 tiles away from it!"
return
if(!can_buy(60))
@@ -133,15 +146,15 @@
var/obj/effect/blob/B = locate(/obj/effect/blob) in T
if(!B)
- usr << "You must be on a blob!"
+ src << "You must be on a blob!"
return
if(!istype(B, /obj/effect/blob/normal))
- usr << "Unable to use this blob, find a normal one."
+ src << "Unable to use this blob, find a normal one."
return
for(var/obj/effect/blob/factory/blob in orange(6))
- usr << "There is a factory blob nearby, move more than 6 tiles away from it!"
+ src << "There is a factory blob nearby, move more than 6 tiles away from it!"
return
if(!can_buy(60))
@@ -155,7 +168,6 @@
set category = "Blob"
set name = "Remove Blob (0)"
set desc = "Removes a blob."
- if(creating_blob) return
var/turf/T = get_turf(src)
if(!T)
@@ -163,11 +175,11 @@
var/obj/effect/blob/B = locate(/obj/effect/blob) in T
if(!B)
- usr << "You must be on a blob!"
+ src << "You must be on a blob!"
return
if(istype(B, /obj/effect/blob/core))
- usr << "Unable to use this blob, find another one."
+ src << "Unable to use this blob, find another one."
return
B.change_to(/obj/effect/blob)
@@ -178,7 +190,7 @@
set category = "Blob"
set name = "Expand Blob (5)"
set desc = "Attempts to create a new blob in this tile. If the tile isn't clear we will attack it, which might clear it."
- if(creating_blob) return
+
var/turf/T = get_turf(src)
if(!T)
@@ -186,12 +198,12 @@
var/obj/effect/blob/B = locate() in T
if(B)
- usr << "There is a blob here!"
+ src << "There is a blob here!"
return
var/obj/effect/blob/OB = locate() in circlerange(src, 1)
if(!OB)
- usr << "There is no blob adjacent to you."
+ src << "There is no blob adjacent to you."
return
if(!can_buy(5))
@@ -204,7 +216,6 @@
set category = "Blob"
set name = "Rally Spores (5)"
set desc = "Rally the spores to move to your location."
- if(creating_blob) return
if(!can_buy(5))
return
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 0a789b2cf21..f0ef6f1907b 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -91,6 +91,7 @@
return
/obj/machinery/camera/blob_act()
+ del(src)
return
/obj/machinery/camera/proc/setViewRange(var/num = 7)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 6f3190f9ee1..ff0e2a25da4 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -456,10 +456,6 @@
user << "The emergency shuttle is already on its way."
return
- if(ticker.mode.name == "blob")
- user << "Under directive 7-10, [station_name()] is quarantined until further notice."
- return
-
emergency_shuttle.incall()
log_game("[key_name(user)] has called the shuttle.")
message_admins("[key_name_admin(user)] has called the shuttle.", 1)
@@ -472,7 +468,7 @@
/proc/cancel_call_proc(var/mob/user)
if ((!( ticker ) || emergency_shuttle.location || emergency_shuttle.direction == 0 || emergency_shuttle.timeleft() < 300))
return
- if((ticker.mode.name == "blob")||(ticker.mode.name == "meteor"))
+ if(ticker.mode.name == "meteor")
return
if(emergency_shuttle.direction != -1 && emergency_shuttle.online) //check that shuttle isn't already heading to centcom
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index 888c2e126f2..3b1f70d7199 100644
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -34,10 +34,6 @@ AI MODULES
usr << "You haven't selected an AI to transmit laws to!"
return
- if(ticker && ticker.mode && ticker.mode.name == "blob")
- usr << "Law uploads have been disabled by NanoTrasen!"
- return
-
if (comp.current.stat == 2 || comp.current.control_disabled == 1)
usr << "Upload failed. No signal is being detected from the AI."
else if (comp.current.see_in_dark == 0)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 6b3b4d5e1d1..0c7c24a7578 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -231,9 +231,6 @@
else if(href_list["call_shuttle"])
if(!check_rights(R_ADMIN)) return
- if( ticker.mode.name == "blob" )
- alert("You can't call the shuttle during blob!")
- return
switch(href_list["call_shuttle"])
if("1")
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 0eabed3c341..055e62d9ca0 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -140,8 +140,7 @@
return
/obj/item/weapon/cell/blob_act()
- if(prob(75))
- explode()
+ ex_act(1)
/obj/item/weapon/cell/proc/get_electrocute_damage()
switch (charge)