diff --git a/code/datums/mixed.dm b/code/datums/mixed.dm
index 81dcae78675..cbe786dbe29 100644
--- a/code/datums/mixed.dm
+++ b/code/datums/mixed.dm
@@ -1,49 +1,49 @@
/datum/data
- var/name = "data"
- var/size = 1.0
- //name = null
+ var
+ name = "data"
+ size = 1.0
+
+
/datum/data/function
name = "function"
size = 2.0
+
+
/datum/data/function/data_control
name = "data control"
+
+
/datum/data/function/id_changer
name = "id changer"
+
+
/datum/data/record
name = "record"
size = 5.0
-
var/list/fields = list( )
+
/datum/data/text
name = "text"
var/data = null
-/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
+
/datum/powernet
- var/list/cables = list() // all cables & junctions
- var/list/nodes = list() // all APCs & sources
+ var
+ list/cables = list() // all cables & junctions
+ list/nodes = list() // all APCs & sources
- var/newload = 0
- var/load = 0
- var/newavail = 0
- var/avail = 0
+ newload = 0
+ load = 0
+ newavail = 0
+ avail = 0
+ viewload = 0
+ number = 0
+ perapc = 0 // per-apc avilability
+ netexcess = 0
- var/viewload = 0
- var/number = 0
-
- var/perapc = 0 // per-apc avilability
-
- var/netexcess = 0
/datum/debug
var/list/debuglist
\ No newline at end of file
diff --git a/code/defines/global.dm b/code/defines/global.dm
index 6ab31cc2054..4006eb1af51 100644
--- a/code/defines/global.dm
+++ b/code/defines/global.dm
@@ -120,8 +120,6 @@ var
list/prisonsecuritywarp = list() //prison security goes to these
list/prisonwarped = list() //list of players already warped
list/blobstart = list()
- list/blobs = list()
- list/active_blobs = list()
// list/traitors = list() //traitor list
list/cardinal = list( NORTH, SOUTH, EAST, WEST )
list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)
@@ -223,4 +221,4 @@ var
forumsqllogin = "root"
forumsqlpass = ""
forum_activated_group = "2"
- forum_authenticated_group = "10"*/
\ No newline at end of file
+ forum_authenticated_group = "10"*/
diff --git a/code/game/events/EventProcs/miniblob.dm b/code/game/events/EventProcs/miniblob.dm
index 019be9cc2c4..328bfac744c 100644
--- a/code/game/events/EventProcs/miniblob.dm
+++ b/code/game/events/EventProcs/miniblob.dm
@@ -1,6 +1,5 @@
/proc/mini_blob_event()
- //command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
- //world << sound('outbreak5.ogg')
+
if(prob(33)) //33% chance of making a blob.
var/turf/T = pick(blobstart)
var/obj/effect/blob/bl = new /obj/effect/blob( T.loc, 30 )
@@ -22,11 +21,11 @@
/proc/dotheblobbaby()
if (blobevent)
- if(active_blobs.len)
+ if(blobs.len)
for(var/i = 1 to 10)
sleep(-1)
- if(!active_blobs.len) break
- var/obj/effect/blob/B = pick(active_blobs)
+ if(!blobs.len) break
+ var/obj/effect/blob/B = pick(blobs)
if(B.z != 1)
continue
B.Life()
diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm
index c8dc8e2fbfa..17730e94cec 100644
--- a/code/game/gamemodes/blob/blob.dm
+++ b/code/game/gamemodes/blob/blob.dm
@@ -1,3 +1,10 @@
+//Few global vars to track the blob
+var
+ list/blobs = list()
+ list/blob_cores = list()
+ list/blob_nodes = list()
+
+
/datum/game_mode/blob
name = "blob"
config_tag = "blob"
@@ -5,223 +12,113 @@
uplink_welcome = "Syndicate Uplink Console:"
uplink_uses = 10
-
- var/const/waittime_l = 2000 //lower bound on time before intercept arrives (in tenths of seconds)
- var/const/waittime_h = 3000 //upper bound on time before intercept arrives (in tenths of seconds)
+ 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
stage = 0
- next_stage = 0
+
+ cores_to_spawn = 1
+ players_per_core = 16
+
+ //Controls expansion via game controller
autoexpand = 0
+ expanding = 0
-/datum/game_mode/blob/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."
+ 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."
-/datum/game_mode/blob/post_setup()
- spawn(10)
- start_state = new /datum/station_state()
- start_state.count()
+ post_setup()
+ spawn(10)
+ start_state = new /datum/station_state()
+ start_state.count()
- spawn(rand(waittime_l, waittime_h))
- message_admins("Blob spawned and expanding, report created")
+ spawn(rand(waittime_l, waittime_h))//3-5 minutes currently
+ message_admins("Blob spawned and expanding, report created")
- blobs = list()
- active_blobs = list()
- for(var/i = 1 to 3)
- var/turf/location = pick(blobstart)
- if(location)
- if(!locate(/obj/effect/blob in location))
- var/obj/effect/blob/blob = new/obj/effect/blob(location)
- spawn(200)
- if(blob)
- if(blob.blobtype == "Blob")
- blob.blobdebug = 1
- spawn(40)
- autoexpand = 1
- declared = 1
- ..()
+ if(ticker && ticker.minds && ticker.minds.len)
+ var/player_based_cores = round(ticker.minds.len, players_per_core)
+ if(player_based_cores > cores_to_spawn)
+ cores_to_spawn = player_based_cores
+
+ blobs = list()
+ for(var/i = 1 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
+ ..()
-/datum/game_mode/blob/process()
- if(declared)
+ process()
+ if(!declared) return
stage()
- if(autoexpand)
- spawn(0)
- life()
- return
-
-
-/datum/game_mode/blob/proc/life()
- if(active_blobs.len)
- for(var/i = 1 to 10)
- sleep(-1)
- if(!active_blobs.len) break
- var/obj/effect/blob/B = pick(active_blobs)
- if(B.z != 1)
- continue
-
-// spawn(0)
- B.Life()
-
-
-/datum/game_mode/blob/proc/stage()
- if (world.timeofday < next_stage)
+ if(!autoexpand) return
+ spawn(0)
+ expandBlob()
return
- switch(stage)
- if (0)
- send_intercept(1)
- for (var/mob/living/silicon/ai/aiPlayer in world)
- if (aiPlayer.client)
-// var/law = "The station is under a quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving."
- 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."
- aiPlayer.set_zeroth_law(law)
- aiPlayer << "Laws Updated: [law]"
- stage = 1
- // next stage 3-6 minutes later
- next_stage = world.timeofday + 600*rand(3,6)
- if (1)
- command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
- world << sound('outbreak5.ogg')
- autoexpand = 0//The blob now has to live on its own
- stage = 2
- // now check every minute
- next_stage = world.timeofday + 600
+ proc/expandBlob()//Change this to have the blob start a pulse rather than life
+ if(expanding) return
+ if(!blobs.len) return
+ expanding = 1
- if (2)
- if((blobs.len > 500) && (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
- if(blobs.len > 700)//This might need work
- stage = 3
- next_stage = world.timeofday + 600
+ for(var/i = 1 to 10)
+ sleep(-1)
+ if(!blobs.len) break
+ var/obj/effect/blob/B = pick(blobs)
+ if(B.z != 1)
+ continue
+ B.Life()
+
+ expanding = 0
+ return
-/datum/game_mode/blob/check_finished()
- if(!declared)
- return 0
- if(stage >= 3)
- return 1
- if(station_was_nuked)
- return 1
- for(var/obj/effect/blob/B in blobs)
- if(B.z == 1)
- return 0
- return 1
+ proc/stage()
+ switch(stage)
+ if (0)
+ send_intercept(1)
+ for (var/mob/living/silicon/ai/aiPlayer in world)
+ if (aiPlayer.client)
+ // var/law = "The station is under a quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving."
+ 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."
+ aiPlayer.set_zeroth_law(law)
+ aiPlayer << "Laws Updated: [law]"
-/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()
+ stage = -1
+ // next stage 1-4 minutes later
+ spawn(600*rand(1,4))
+ stage = 1
+ return
- 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."
+ if (1)
+ command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
+ world << sound('outbreak5.ogg')
+ autoexpand = 0//The blob now has to live on its own
+ stage = -1
+ //next stage in 4-5 minutes
+ spawn(600*rand(4,5))
+ stage = 2
+ return
- 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"
+ if (2)
+ if((blobs.len > 500) && (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
+ if(blobs.len > 700)//This needs work
+ stage = 3
+ return
- 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 << "\blue Rebooting in 30s"
- ..()
- return 1
-
-
-/datum/game_mode/blob/send_intercept(var/orders = 1)
- var/intercepttext = ""
- var/interceptname = "Error"
- switch(orders)
- 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 world)
- if(bomb && bomb.r_code)
- if(bomb.z == 1)
- 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/obj/machinery/computer/communications/comm in world)
- 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
-
-
-
-
-
-// world << sound('outbreak5.ogg')Quiet printout for now
-
-// command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
-// world << sound('intercept.ogg')
-// if(security_level < SEC_LEVEL_BLUE)
-// set_security_level(SEC_LEVEL_BLUE)
-
-/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 world)
- for(var/mob/M in world)
- 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 (M.z!=1)
- 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_finish.dm b/code/game/gamemodes/blob/blob_finish.dm
new file mode 100644
index 00000000000..d0c9620383e
--- /dev/null
+++ b/code/game/gamemodes/blob/blob_finish.dm
@@ -0,0 +1,78 @@
+/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 && B.z != 1) continue
+ return 0
+
+ var/nodes = 0
+ for(var/obj/effect/blob/B in blob_nodes)
+ if(B && B.z != 1) 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 << "\blue 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 world)
+ for(var/mob/M in world)
+ 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 (M.z!=1)
+ 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
new file mode 100644
index 00000000000..f1d25b68c81
--- /dev/null
+++ b/code/game/gamemodes/blob/blob_report.dm
@@ -0,0 +1,104 @@
+/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 world)
+ if(bomb && bomb.r_code)
+ if(bomb.z == 1)
+ 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/obj/machinery/computer/communications/comm in world)
+ 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
+ wall = 0
+ r_wall = 0
+ window = 0
+ door = 0
+ grille = 0
+ mach = 0
+
+
+ proc/count()
+ for(var/turf/T in world)
+ if(T.z != 1)
+ 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(O.z != 1)
+ 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)
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm
index 1924bd04e01..89c5a1773d4 100644
--- a/code/game/gamemodes/blob/theblob.dm
+++ b/code/game/gamemodes/blob/theblob.dm
@@ -4,7 +4,7 @@
icon = 'blob.dmi'
icon_state = "blob"
desc = "Some blob creature thingy"
- density = 0
+ density = 1
opacity = 0
anchored = 1
var
@@ -27,7 +27,6 @@
New(loc, var/h = 30)
blobs += src
- active_blobs += src
src.health = h
src.dir = pick(1,2,4,8)
src.update()
@@ -36,8 +35,6 @@
Del()
blobs -= src
- if(active)
- active_blobs -= src
if((blobtype == "Node") || (blobtype == "Core"))
processing_objects.Remove(src)
..()
@@ -67,7 +64,6 @@
name = "strong blob"
icon_state = "blob_idle"//needs a new sprite
blobtype = "Shield"
- active_blobs -= src
return 1
//Commandblob
if((blobdebug == 1))
@@ -78,7 +74,7 @@
name = "blob core"
icon_state = "blob_core"
blobtype = "Core"
- active_blobs -= src
+ blob_cores += src
processing_objects.Add(src)
return 1
//Nodeblob
@@ -90,7 +86,7 @@
name = "blob node"
icon_state = "blob_node"//needs a new sprite
blobtype = "Node"
- active_blobs -= src
+ blob_nodes += src
processing_objects.Add(src)
return 1
if((blobdebug == 3))
@@ -258,6 +254,7 @@
src.health -= damage
src.update()
+ return
proc/revert()
@@ -268,64 +265,10 @@
blobtype = "Blob"
blobdebug = 0
health = (health/2)
- active_blobs += src
src.update()
return 1
-/datum/station_state/proc/count()
- for(var/turf/T in world)
- if(T.z != 1)
- continue
-
- if(istype(T,/turf/simulated/floor))
- if(!(T:burnt))
- src.floor+=2
- else
- src.floor++
-
- else if(istype(T, /turf/simulated/floor/engine))
- src.floor+=2
-
- else if(istype(T, /turf/simulated/wall))
- if(T:intact)
- src.wall+=2
- else
- src.wall++
-
- else if(istype(T, /turf/simulated/wall/r_wall))
- if(T:intact)
- src.r_wall+=2
- else
- src.r_wall++
-
- for(var/obj/O in world)
- if(O.z != 1)
- continue
-
- if(istype(O, /obj/structure/window))
- src.window++
- else if(istype(O, /obj/structure/grille))
- if(!O:destroyed)
- src.grille++
- else if(istype(O, /obj/machinery/door))
- src.door++
- else if(istype(O, /obj/machinery))
- src.mach++
-
-
-
-/datum/station_state/proc/score(var/datum/station_state/result)
- var/r1a = min( result.floor / max(floor,1), 1.0)
- var/r1b = min(result.r_wall/ max(r_wall,1), 1.0)
- var/r1c = min(result.wall / max(wall,1), 1.0)
- var/r2a = min(result.window / max(window,1), 1.0)
- var/r2b = min(result.door / max(door,1), 1.0)
- var/r2c = min(result.grille / max(grille,1), 1.0)
- var/r3 = min(result.mach / max(mach,1), 1.0)
- //diary << "Blob scores:[r1b] [r1c] / [r2a] [r2b] [r2c] / [r3] [r1a]"
- return (4*(r1b+r1c) + 2*(r2a+r2b+r2c) + r3+r1a)/16.0
-
//////////////////////////////****IDLE BLOB***/////////////////////////////////////
/obj/effect/blob/idle