/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