mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-08-24 05:39:04 +01:00
Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13
This commit is contained in:
@@ -5,6 +5,9 @@
|
||||
#define HIGHEST_MEDIAN_VOTING "HIGHEST_MEDIAN"
|
||||
#define INSTANT_RUNOFF_VOTING "IRV"
|
||||
|
||||
#define VOTE_TRANSFER "Initiate Crew Transfer"
|
||||
#define VOTE_CONTINUE "Continue Playing"
|
||||
|
||||
#define SHOW_RESULTS (1<<0)
|
||||
#define SHOW_VOTES (1<<1)
|
||||
#define SHOW_WINNER (1<<2)
|
||||
|
||||
@@ -32,6 +32,8 @@ SUBSYSTEM_DEF(vote)
|
||||
|
||||
var/list/stored_modetier_results = list() // The aggregated tier list of the modes available in secret.
|
||||
|
||||
var/transfer_votes_done = 0
|
||||
|
||||
/datum/controller/subsystem/vote/fire() //called by master_controller
|
||||
if(mode)
|
||||
if(end_time < world.time)
|
||||
@@ -248,8 +250,18 @@ SUBSYSTEM_DEF(vote)
|
||||
if(vote_system == SCORE_VOTING)
|
||||
calculate_scores(vote_title_text)
|
||||
if(vote_system == HIGHEST_MEDIAN_VOTING)
|
||||
calculate_highest_median(vote_title_text) // nothing uses this at the moment
|
||||
var/list/winners = vote_system == INSTANT_RUNOFF_VOTING ? get_runoff_results() : get_result()
|
||||
calculate_highest_median(vote_title_text)
|
||||
var/list/winners = list()
|
||||
if(mode == "transfer")
|
||||
var/amount_required = 3 + transfer_votes_done
|
||||
transfer_votes_done += 1
|
||||
text += "\nExtending requires at least [amount_required] votes to win."
|
||||
if(choices[VOTE_CONTINUE] < amount_required || choices[VOTE_TRANSFER] >= choices[VOTE_CONTINUE])
|
||||
winners = list(VOTE_TRANSFER)
|
||||
else
|
||||
winners = list(VOTE_CONTINUE)
|
||||
else
|
||||
winners = vote_system == INSTANT_RUNOFF_VOTING ? get_runoff_results() : get_result()
|
||||
var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic"
|
||||
if(winners.len > 0)
|
||||
if(was_roundtype_vote)
|
||||
@@ -305,7 +317,7 @@ SUBSYSTEM_DEF(vote)
|
||||
if(vote_system == SCHULZE_VOTING)
|
||||
admintext += "\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!"
|
||||
else if(vote_system == HIGHEST_MEDIAN_VOTING)
|
||||
admintext += "\nIt should be noted that this is not a raw tally of votes but the number of runoffs done by majority judgement!"
|
||||
admintext += "\nIt should be noted that this is not a raw tally of votes but rather the median score plus a tiebreaker!"
|
||||
for(var/i=1,i<=choices.len,i++)
|
||||
var/votes = choices[choices[i]]
|
||||
admintext += "\n<b>[choices[i]]:</b> [votes]"
|
||||
@@ -339,7 +351,7 @@ SUBSYSTEM_DEF(vote)
|
||||
if(SSmapping.changemap(config.maplist[.]))
|
||||
to_chat(world, "<span class='boldannounce'>The map vote has chosen [VM.map_name] for next round!</span>")
|
||||
if("transfer") // austation begin -- Crew autotransfer vote
|
||||
if(. == "Initiate Crew Transfer")
|
||||
if(. == VOTE_TRANSFER)
|
||||
SSshuttle.autoEnd()
|
||||
var/obj/machinery/computer/communications/C = locate() in GLOB.machines
|
||||
if(C)
|
||||
@@ -446,7 +458,7 @@ SUBSYSTEM_DEF(vote)
|
||||
continue
|
||||
choices |= M
|
||||
if("transfer") // austation begin -- Crew autotranfer vote
|
||||
choices.Add("Initiate Crew Transfer","Continue Playing") // austation end
|
||||
choices.Add(VOTE_TRANSFER,VOTE_CONTINUE) // austation end
|
||||
if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote
|
||||
choices.Add("dynamic", "extended")
|
||||
if("custom")
|
||||
|
||||
@@ -469,15 +469,20 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
//((((some value between 0.5 and 1 * temp - ((273.15 + 40) * some values between 1 and 10)) * some number between 0.25 and knock your socks off / 150) * 0.25
|
||||
//Heat and mols account for each other, a lot of hot mols are more damaging then a few
|
||||
//Mols start to have a positive effect on damage after 350
|
||||
var/spaced = 0
|
||||
for(var/turf/open/space/_space_turf in range(2,src))
|
||||
spaced++
|
||||
damage = max(damage + (max(clamp(removed.total_moles() / 200, 0.5, 1) * removed.return_temperature() - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0)
|
||||
//Power only starts affecting damage when it is above 5000
|
||||
damage = max(damage + (max(power - POWER_PENALTY_THRESHOLD, 0)/500) * DAMAGE_INCREASE_MULTIPLIER, 0)
|
||||
//Molar count only starts affecting damage when it is above 1800
|
||||
damage = max(damage + (max(combined_gas - MOLE_PENALTY_THRESHOLD, 0)/80) * DAMAGE_INCREASE_MULTIPLIER, 0)
|
||||
|
||||
damage = max(damage + spaced * 0.1 * DAMAGE_INCREASE_MULTIPLIER, 0)
|
||||
|
||||
//There might be a way to integrate healing and hurting via heat
|
||||
//healing damage
|
||||
if(combined_gas < MOLE_PENALTY_THRESHOLD)
|
||||
if(combined_gas < MOLE_PENALTY_THRESHOLD && !spaced)
|
||||
//Only has a net positive effect when the temp is below 313.15, heals up to 2 damage. Psycologists increase this temp min by up to 45
|
||||
damage = max(damage + (min(removed.return_temperature() - (T0C + HEAT_PENALTY_THRESHOLD), 0) / 150), 0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user