diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm
index 730a3f17f4..240f7de2d5 100644
--- a/code/controllers/configuration/configuration.dm
+++ b/code/controllers/configuration/configuration.dm
@@ -341,7 +341,7 @@
if(probabilities[M.config_tag]<=0)
qdel(M)
continue
- if(M.config_tag in SSvote.stored_modetier_results && SSvote.stored_modetier_results[M.config_tag] < Get(/datum/config_entry/number/dropped_modes))
+ if(!(M.config_tag in SSvote.stored_modetier_results))
qdel(M)
continue
if(min_pop[M.config_tag])
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index f82954276e..9603edacef 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -212,6 +212,7 @@ SUBSYSTEM_DEF(vote)
calculate_condorcet_votes(vote_title_text)
if(vote_system == SCORE_VOTING)
calculate_majority_judgement_vote(vote_title_text)
+ calculate_scores(vote_title_text)
var/list/winners = get_result()
var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic"
if(winners.len > 0)
@@ -219,13 +220,20 @@ SUBSYSTEM_DEF(vote)
stored_gamemode_votes = list()
if(!obfuscated && vote_system == RANKED_CHOICE_VOTING)
text += "\nIt should be noted that this is not a raw tally of votes (impossible in ranked choice) but the score determined by the schulze method of voting, so the numbers will look weird!"
- for(var/i=1,i<=choices.len,i++)
- var/votes = choices[choices[i]]
- if(!votes)
- votes = 0
- if(was_roundtype_vote)
- stored_gamemode_votes[choices[i]] = votes
- text += "\n[choices[i]]: [obfuscated ? "???" : votes]" //CIT CHANGE - adds obfuscated votes
+ if(mode == "mode tiers")
+ for(var/score_name in scores)
+ var/score = scores[score_name]
+ if(!score)
+ score = 0
+ text = "\n[score_name]: [obfuscated ? "???" : score]"
+ else
+ for(var/i=1,i<=choices.len,i++)
+ var/votes = choices[choices[i]]
+ if(!votes)
+ votes = 0
+ if(was_roundtype_vote)
+ stored_gamemode_votes[choices[i]] = votes
+ text += "\n[choices[i]]: [obfuscated ? "???" : votes]" //CIT CHANGE - adds obfuscated votes
if(mode != "custom")
if(winners.len > 1 && !obfuscated) //CIT CHANGE - adds obfuscated votes
text = "\nVote Tied Between:"
@@ -276,7 +284,7 @@ SUBSYSTEM_DEF(vote)
if(CONFIG_GET(flag/modetier_voting))
reset()
started_time = 0
- initiate_vote("mode tiers","server",hideresults=FALSE,votesystem=RANKED_CHOICE_VOTING,forced=TRUE, vote_time = 30 MINUTES)
+ initiate_vote("mode tiers","server",hideresults=FALSE,votesystem=SCORE_VOTING,forced=TRUE, vote_time = 30 MINUTES)
to_chat(world,"The vote will end right as the round starts.")
return .
if("restart")
@@ -290,7 +298,13 @@ SUBSYSTEM_DEF(vote)
else
GLOB.master_mode = .
if("mode tiers")
- stored_modetier_results = choices.Copy()
+ var/list/raw_score_numbers = list()
+ for(var/score_name in scores)
+ sorted_insert(raw_score_numbers,scores[score_name],/proc/cmp_numeric_asc)
+ stored_modetier_results = scores.Copy()
+ for(var/score_name in stored_modetier_results)
+ if(stored_modetier_results[score_name] <= raw_score_numbers[CONFIG_GET(number/dropped_modes)])
+ stored_modetier_results -= score_name
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.")