From a715f6299b04dda9816d90cbeca0683e987bf0ad Mon Sep 17 00:00:00 2001 From: TalkingCactus Date: Sun, 18 Sep 2016 13:05:23 -0400 Subject: [PATCH] Gamemode Vote in the Lobby (#46) * ;^) * auto gamemode vote in the lobby --- code/controllers/subsystem/ticker.dm | 9 +++++++++ code/controllers/subsystem/voting.dm | 10 ++++++++++ code/modules/events/shuttle_loan.dm | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index cf6837a57a..09598f08ec 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -36,6 +36,7 @@ var/datum/subsystem/ticker/ticker var/triai = 0 //Global holder for Triumvirate var/tipped = 0 //Did we broadcast the tip of the day yet? + var/modevoted = 0 //Have we sent a vote for the gamemode? var/selected_tip // What will be the tip of the day? var/timeLeft = 1200 //pregame timer @@ -88,6 +89,10 @@ var/datum/subsystem/ticker/ticker return timeLeft -= wait + if(timeLeft <= 1200 && !modevoted) //Vote for the round type + send_gamemode_vote() + modevoted = TRUE + if(timeLeft <= 300 && !tipped) send_tip_of_the_round() tipped = TRUE @@ -545,3 +550,7 @@ var/datum/subsystem/ticker/ticker queued_players = ticker.queued_players cinematic = ticker.cinematic maprotatechecked = ticker.maprotatechecked + +/datum/subsystem/ticker/proc/send_gamemode_vote(var/) + SSvote.initiate_vote("roundtype","server") + diff --git a/code/controllers/subsystem/voting.dm b/code/controllers/subsystem/voting.dm index 5a2434db70..a663f44bd8 100644 --- a/code/controllers/subsystem/voting.dm +++ b/code/controllers/subsystem/voting.dm @@ -121,6 +121,13 @@ var/datum/subsystem/vote/SSvote restart = 1 else master_mode = . + if("roundtype") + if (ticker && ticker.mode) + return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.") + master_mode = . + log_admin("Mode has been voted for and switched to: [master_mode].") + world << "The mode is now: [master_mode]" + world.save_mode(master_mode) if(restart) var/active_admins = 0 for(var/client/C in admins) @@ -169,6 +176,9 @@ var/datum/subsystem/vote/SSvote choices.Add("Restart Round","Continue Playing") if("gamemode") choices.Add(config.votable_modes) + if("roundtype") + choices.Add("secret") + choices.Add("extended") if("custom") question = stripped_input(usr,"What is the vote for?") if(!question) diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index fe014fcae6..8486c9b0fe 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -140,7 +140,7 @@ new /obj/effect/spider/stickyweb(T) if(ANTIDOTE_NEEDED) - var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish) + var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish, /datum/disease/transformation/xeno) var/turf/T for(var/i=0, i<10, i++) if(prob(15))