Organizes the various continuous_round_x config options into one set of config options continuous. Functionality is only there for the same mode that already had that functionality, everything else is continuous always

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.
This commit is contained in:
Incoming
2015-04-09 16:03:11 -04:00
parent c786ca7c54
commit d1892cffbe
10 changed files with 100 additions and 58 deletions
+12
View File
@@ -305,6 +305,8 @@
usr << browse(dat, "window=players;size=600x480")
/datum/admins/proc/check_antagonists()
var/list/supported_continuous_modes = list("revolution", "gang", "wizard", "malfunction", "blob")
var/list/supported_midround_antag_modes = list("wizard", "malfunction", "blob")
if (ticker && ticker.current_state >= GAME_STATE_PLAYING)
var/dat = "<html><head><title>Round Status</title></head><body><h1><B>Round Status</B></h1>"
dat += "Current Game Mode: <B>[ticker.mode.name]</B><BR>"
@@ -321,6 +323,16 @@
dat += "<a href='?_src_=holder;call_shuttle=2'>Send Back</a><br>"
else
dat += "ETA: <a href='?_src_=holder;edit_shuttle_time=1'>[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]</a><BR>"
dat += "<B>Continuous Round Status</B><BR>"
if(!ticker.mode.config_tag in supported_continuous_modes)
dat += "Continue if antagonists die"
else
dat += "<a href='?_src_=holder;toggle_continuous=1'>[config.continuous[ticker.mode.config_tag] ? "Continue if antagonists die" : "End on antagonist death"]</a>"
if(config.continuous[ticker.mode.config_tag] && ticker.mode.config_tag in supported_midround_antag_modes)
dat += ", <a href='?_src_=holder;toggle_midround_antag=1'>[config.midround_antag[ticker.mode.config_tag] ? "creating replacement antagonists" : "not creating new antagonists"]</a><BR>"
else
dat += "<BR>"
dat += "<BR>"
dat += "<a href='?_src_=holder;end_round=\ref[usr]'>End Round Now</a><br>"
dat += "<a href='?_src_=holder;delay_round_end=1'>[ticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
if(ticker.mode.syndicates.len)
+22
View File
@@ -221,6 +221,28 @@
message_admins("<span class='adminnotice'>[key_name_admin(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds</span>")
href_list["secretsadmin"] = "check_antagonist"
else if(href_list["toggle_continuous"])
if(!check_rights(R_ADMIN)) return
if(!config.continuous[ticker.mode.config_tag])
config.continuous[ticker.mode.config_tag] = 1
else
config.continuous[ticker.mode.config_tag] = 0
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled the round to [config.continuous[ticker.mode.config_tag] ? "continue if all antagonists die" : "end with the antagonists"].</span>")
check_antagonists()
else if(href_list["toggle_midround_antag"])
if(!check_rights(R_ADMIN)) return
if(!config.midround_antag[ticker.mode.config_tag])
config.midround_antag[ticker.mode.config_tag] = 1
else
config.midround_antag[ticker.mode.config_tag] = 0
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled the round to [config.midround_antag[ticker.mode.config_tag] ? "use" : "skip"] the midround antag system.</span>")
check_antagonists()
else if(href_list["delay_round_end"])
if(!check_rights(R_SERVER)) return