mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-30 11:32:20 +00:00
Makes another set of config options for which rounds types, if any, use the midround antagonist (mulligan) system. Keep in mind this is by definition a subset of round with continuous set. Again this feature is only present for the roundtypes where I KNOW it works properly, other modes can't use midround antags. The check antagonist screen will show how the game will behave when all the antagonists die, and it can be changed on the fly by admins, the four possible states are: End on antagonist death (noncontinuous rounds) Continue if antagonists die (unsupported continuous by default round) Continue if antagonists die, creating replacement antagonists (continuous, using midround antags) Continue if antagonists die, not creating new antagonists (continuous, not using midround antags) When rounds prepare to mulligan admins will additionally get the option to just keep the round going without any automatically created antags in case they want to run their own shinanagans instead. They can also as before choose to end the round.
61 lines
2.4 KiB
Plaintext
61 lines
2.4 KiB
Plaintext
/datum/game_mode/blob/check_finished()
|
|
if(replacementmode && round_converted == 2)
|
|
return replacementmode.check_finished()
|
|
if(round_converted)
|
|
return ..()
|
|
if(infected_crew.len > burst)//Some blobs have yet to burst
|
|
return 0
|
|
if(blobwincount <= blobs.len)//Blob took over
|
|
return 1
|
|
if(!blob_cores.len) // blob is dead
|
|
if(config.continuous["blob"])
|
|
if(config.midround_antag["blob"])
|
|
round_converted = convert_roundtype()
|
|
if(!round_converted)
|
|
return 1
|
|
if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
|
|
SSshuttle.emergency.mode = SHUTTLE_DOCKED
|
|
SSshuttle.emergency.timer = world.time
|
|
priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
|
|
return ..()
|
|
return 1
|
|
if(station_was_nuked)//Nuke went off
|
|
return 1
|
|
return 0
|
|
|
|
|
|
/datum/game_mode/blob/declare_completion()
|
|
if(round_converted) //So badmin blobs later don't step on the dead natural blobs metaphorical toes
|
|
..()
|
|
if(blobwincount <= blobs.len)
|
|
feedback_set_details("round_end_result","win - blob took over")
|
|
world << "<FONT size = 3><B>The blob has taken over the station!</B></FONT>"
|
|
world << "<B>The entire station was eaten by the Blob</B>"
|
|
log_game("Blob mode completed with a blob victory.")
|
|
|
|
else if(station_was_nuked)
|
|
feedback_set_details("round_end_result","halfwin - nuke")
|
|
world << "<FONT size = 3><B>Partial Win: The station has been destroyed!</B></FONT>"
|
|
world << "<B>Directive 7-12 has been successfully carried out preventing the Blob from spreading.</B>"
|
|
log_game("Blob mode completed with a tie (station destroyed).")
|
|
|
|
else if(!blob_cores.len)
|
|
feedback_set_details("round_end_result","loss - blob eliminated")
|
|
world << "<FONT size = 3><B>The staff has won!</B></FONT>"
|
|
world << "<B>The alien organism has been eradicated from the station</B>"
|
|
log_game("Blob mode completed with a crew victory.")
|
|
world << "<span class='notice'>Rebooting in 30s</span>"
|
|
..()
|
|
return 1
|
|
|
|
datum/game_mode/proc/auto_declare_completion_blob()
|
|
if(istype(ticker.mode,/datum/game_mode/blob) )
|
|
var/datum/game_mode/blob/blob_mode = src
|
|
if(blob_mode.infected_crew.len)
|
|
var/text = "<FONT size = 2><B>The blob[(blob_mode.infected_crew.len > 1 ? "s were" : " was")]:</B></FONT>"
|
|
|
|
for(var/datum/mind/blob in blob_mode.infected_crew)
|
|
text += "<br><b>[blob.key]</b> was <b>[blob.name]</b>"
|
|
world << text
|
|
return 1
|