Dynamic voting (draft)

This commit is contained in:
Putnam
2019-10-20 18:54:17 -07:00
parent 9fd95537bc
commit 07064298b0
4 changed files with 27 additions and 3 deletions
@@ -364,3 +364,5 @@
/datum/config_entry/number/auto_transfer_delay
config_entry_value = 72000
min_val = 0
/datum/config_entry/flag/dynamic_voting
+1 -1
View File
@@ -479,7 +479,7 @@ SUBSYSTEM_DEF(ticker)
if(SSticker.timeLeft < 900)
SSticker.timeLeft = 900
SSticker.modevoted = TRUE
SSvote.initiate_vote("roundtype","server",TRUE)
SSvote.initiate_vote(CONFIG_GET(flag/dynamic_voting) ? "dynamic" : "roundtype","server",TRUE)
/datum/controller/subsystem/ticker/Recover()
current_state = SSticker.current_state
+21 -2
View File
@@ -87,7 +87,7 @@ SUBSYSTEM_DEF(vote)
/datum/controller/subsystem/vote/proc/announce_result()
var/list/winners = get_result()
var/text
var/was_roundtype_vote = mode == "roundtype"
var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic"
if(winners.len > 0)
if(question)
text += "<b>[question]</b>"
@@ -124,6 +124,12 @@ SUBSYSTEM_DEF(vote)
message_admins(admintext)
return .
#define PEACE2 "Very Calm"
#define PEACE1 "Somewhat Calm"
#define INDIFFERENT "Balanced"
#define CHAOS1"Somewhat chaotic"
#define CHAOS2 "Very chaotic"
/datum/controller/subsystem/vote/proc/result()
. = announce_result()
var/restart = 0
@@ -146,6 +152,17 @@ SUBSYSTEM_DEF(vote)
restart = 1
else
GLOB.master_mode = .
if("dynamic")
if(SSticker.current_state > GAME_STATE_PREGAME)//Don't change the mode if the round already started.
return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.")
GLOB.dynamic_forced_extended = .=="extended"
if(GLOB.dynamic_forced_extended)
return message_admins("Dynamic extended has been voted for.")
var/mean = (choices["extended"]*-2+choices[PEACE2]*-2+choices[PEACE1]*-1+choices[CHAOS1]*1+choices[CHAOS2]*2)/voted.len
var/variance=(((-2-mean)**2)*choices["extended"]+((-2-mean)**2)*choices[PEACE2]+((-1-mean)**2)*choices[PEACE1]+((0-mean)**2)*choices[INDIFFERENT]+((1-mean)**2)*choices[CHAOS1]+((2-mean)**2)*choices[CHAOS2])/voted.len //Sorry. Im sorry. Im trying to remove it
GLOB.dynamic_curve_centre = mean*(5/2)
GLOB.dynamic_curve_width = max(variance,0.5)
message_admins("Dynamic curve centre set to [GLOB.dynamic_curve_centre] and width set to [GLOB.dynamic_curve_width]")
if("map")
var/datum/map_config/VM = config.maplist[.]
message_admins("The map has been voted for and will change to: [VM.map_name]")
@@ -213,6 +230,8 @@ SUBSYSTEM_DEF(vote)
choices[i] = 0
if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote
choices.Add("secret", "extended")
if("dynamic")
choices.Add("extended",PEACE2,PEACE1,INDIFFERENT,CHAOS1,CHAOS2)
if("custom")
question = stripped_input(usr,"What is the vote for?")
if(!question)
@@ -369,4 +388,4 @@ SUBSYSTEM_DEF(vote)
else if(owner.ckey)
var/datum/player_details/P = GLOB.player_details[owner.ckey]
if(P)
P.player_actions -= src
P.player_actions -= src