mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
extendies
This commit is contained in:
@@ -82,6 +82,16 @@
|
|||||||
config_entry_value = 600
|
config_entry_value = 600
|
||||||
min_val = 0
|
min_val = 0
|
||||||
|
|
||||||
|
/datum/config_entry/number/vote_autotransfer_initial //length of time before the first autotransfer vote is called (deciseconds, default 2 hours)
|
||||||
|
config_entry_value = 72000
|
||||||
|
integer = FALSE
|
||||||
|
min_val = 0
|
||||||
|
|
||||||
|
/datum/config_entry/number/vote_autotransfer_interval //length of time to wait before subsequent autotransfer votes (deciseconds, default 30 minutes)
|
||||||
|
config_entry_value = 18000
|
||||||
|
integer = FALSE
|
||||||
|
min_val = 0
|
||||||
|
|
||||||
/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart
|
/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart
|
||||||
|
|
||||||
/datum/config_entry/flag/no_dead_vote // dead people can't vote
|
/datum/config_entry/flag/no_dead_vote // dead people can't vote
|
||||||
|
|||||||
17
code/controllers/subsystem/autotransfer.dm
Normal file
17
code/controllers/subsystem/autotransfer.dm
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
SUBSYSTEM_DEF(autotransfer)
|
||||||
|
name = "Autotransfer Vote"
|
||||||
|
flags = SS_KEEP_TIMING | SS_BACKGROUND
|
||||||
|
wait = 1 MINUTES
|
||||||
|
|
||||||
|
var/starttime
|
||||||
|
var/targettime
|
||||||
|
|
||||||
|
/datum/controller/subsystem/autotransfer/Initialize(timeofday)
|
||||||
|
starttime = world.time
|
||||||
|
targettime = starttime + CONFIG_GET(number/vote_autotransfer_initial)
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/datum/controller/subsystem/autotransfer/fire()
|
||||||
|
if (world.time > targettime)
|
||||||
|
SSvote.initiate_vote("transfer",null) //TODO figure out how to not use null as the user
|
||||||
|
targettime = targettime + CONFIG_GET(number/vote_autotransfer_interval)
|
||||||
@@ -213,7 +213,7 @@ SUBSYSTEM_DEF(ticker)
|
|||||||
check_queue()
|
check_queue()
|
||||||
check_maprotate()
|
check_maprotate()
|
||||||
scripture_states = scripture_unlock_alert(scripture_states)
|
scripture_states = scripture_unlock_alert(scripture_states)
|
||||||
SSshuttle.autoEnd()
|
//SSshuttle.autoEnd()
|
||||||
|
|
||||||
if(!roundend_check_paused && mode.check_finished(force_ending) || force_ending)
|
if(!roundend_check_paused && mode.check_finished(force_ending) || force_ending)
|
||||||
current_state = GAME_STATE_FINISHED
|
current_state = GAME_STATE_FINISHED
|
||||||
|
|||||||
@@ -89,6 +89,20 @@ SUBSYSTEM_DEF(vote)
|
|||||||
choices[GLOB.master_mode] += non_voters.len
|
choices[GLOB.master_mode] += non_voters.len
|
||||||
if(choices[GLOB.master_mode] >= greatest_votes)
|
if(choices[GLOB.master_mode] >= greatest_votes)
|
||||||
greatest_votes = choices[GLOB.master_mode]
|
greatest_votes = choices[GLOB.master_mode]
|
||||||
|
else if(mode == "transfer") // austation begin -- Crew autotransfer vote
|
||||||
|
var/factor = 1
|
||||||
|
switch(world.time / (1 MINUTES ))
|
||||||
|
if(0 to 60)
|
||||||
|
factor = 0.5
|
||||||
|
if(61 to 120)
|
||||||
|
factor = 0.8
|
||||||
|
if(121 to 240)
|
||||||
|
factor = 1
|
||||||
|
if(241 to 300)
|
||||||
|
factor = 1.2
|
||||||
|
else
|
||||||
|
factor = 1.4
|
||||||
|
choices["Initiate Crew Transfer"] += round(non_voters.len * factor) // austation end
|
||||||
//get all options with that many votes and return them in a list
|
//get all options with that many votes and return them in a list
|
||||||
. = list()
|
. = list()
|
||||||
if(greatest_votes)
|
if(greatest_votes)
|
||||||
@@ -365,6 +379,13 @@ SUBSYSTEM_DEF(vote)
|
|||||||
log_admin("The map has been voted for and will change to: [VM.map_name]")
|
log_admin("The map has been voted for and will change to: [VM.map_name]")
|
||||||
if(SSmapping.changemap(config.maplist[.]))
|
if(SSmapping.changemap(config.maplist[.]))
|
||||||
to_chat(world, "<span class='boldannounce'>The map vote has chosen [VM.map_name] for next round!</span>")
|
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")
|
||||||
|
//TODO find a cleaner way to do this
|
||||||
|
SSshuttle.requestEvac(null,"Crew transfer requested.")
|
||||||
|
var/obj/machinery/computer/communications/C = locate() in GLOB.machines
|
||||||
|
if(C)
|
||||||
|
C.post_status("shuttle") // austation end
|
||||||
if(restart)
|
if(restart)
|
||||||
var/active_admins = 0
|
var/active_admins = 0
|
||||||
for(var/client/C in GLOB.admins)
|
for(var/client/C in GLOB.admins)
|
||||||
@@ -444,6 +465,7 @@ SUBSYSTEM_DEF(vote)
|
|||||||
to_chat(usr, "<span class='warning'>A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!</span>")
|
to_chat(usr, "<span class='warning'>A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!</span>")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
SEND_SOUND(world, sound('sound/misc/notice2.ogg'))
|
||||||
reset()
|
reset()
|
||||||
obfuscated = hideresults //CIT CHANGE - adds obfuscated votes
|
obfuscated = hideresults //CIT CHANGE - adds obfuscated votes
|
||||||
switch(vote_type)
|
switch(vote_type)
|
||||||
@@ -465,6 +487,8 @@ SUBSYSTEM_DEF(vote)
|
|||||||
if(targetmap.max_round_search_span && count_occurences_of_value(lastmaps, M, targetmap.max_round_search_span) >= targetmap.max_rounds_played)
|
if(targetmap.max_round_search_span && count_occurences_of_value(lastmaps, M, targetmap.max_round_search_span) >= targetmap.max_rounds_played)
|
||||||
continue
|
continue
|
||||||
choices |= M
|
choices |= M
|
||||||
|
if("transfer") // austation begin -- Crew autotranfer vote
|
||||||
|
choices.Add("Initiate Crew Transfer","Continue Playing") // austation end
|
||||||
if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote
|
if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote
|
||||||
choices.Add("secret", "extended")
|
choices.Add("secret", "extended")
|
||||||
if("mode tiers")
|
if("mode tiers")
|
||||||
@@ -496,7 +520,7 @@ SUBSYSTEM_DEF(vote)
|
|||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
mode = vote_type
|
mode = vote_type
|
||||||
initiator = initiator_key
|
initiator = initiator_key ? initiator_key : "the Server" // austation -- Crew autotransfer vote
|
||||||
started_time = world.time
|
started_time = world.time
|
||||||
var/text = "[capitalize(mode)] vote started by [initiator]."
|
var/text = "[capitalize(mode)] vote started by [initiator]."
|
||||||
if(mode == "custom")
|
if(mode == "custom")
|
||||||
|
|||||||
@@ -184,6 +184,12 @@ VOTE_DELAY 6000
|
|||||||
## time period (deciseconds) which voting session will last (default 1 minute)
|
## time period (deciseconds) which voting session will last (default 1 minute)
|
||||||
VOTE_PERIOD 600
|
VOTE_PERIOD 600
|
||||||
|
|
||||||
|
## autovote initial delay (deciseconds) before first automatic transfer vote call (default 120 minutes)
|
||||||
|
VOTE_AUTOTRANSFER_INITIAL 72000
|
||||||
|
|
||||||
|
##autovote delay (deciseconds) before sequential automatic transfer votes are called (default 30 minutes)
|
||||||
|
VOTE_AUTOTRANSFER_INTERVAL 18000
|
||||||
|
|
||||||
## prevents dead players from voting or starting votes
|
## prevents dead players from voting or starting votes
|
||||||
# NO_DEAD_VOTE
|
# NO_DEAD_VOTE
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user