mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-11 07:59:08 +01:00
Merge pull request #96 from SynnGraffkin/Extended-Plus
Initiate crew transfer vote instead of forcing a shift end at 2 hours.
This commit is contained in:
@@ -78,6 +78,16 @@
|
||||
config_entry_value = 600
|
||||
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/no_dead_vote // dead people can't vote
|
||||
|
||||
@@ -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)
|
||||
@@ -205,8 +205,6 @@ SUBSYSTEM_DEF(ticker)
|
||||
mode.process(wait * 0.1)
|
||||
check_queue()
|
||||
check_maprotate()
|
||||
scripture_states = scripture_unlock_alert(scripture_states)
|
||||
SSshuttle.autoEnd()
|
||||
|
||||
if(!roundend_check_paused && mode.check_finished(force_ending) || force_ending)
|
||||
current_state = GAME_STATE_FINISHED
|
||||
|
||||
@@ -76,6 +76,21 @@ SUBSYSTEM_DEF(vote)
|
||||
choices[GLOB.master_mode] += non_voters.len
|
||||
if(choices[GLOB.master_mode] >= greatest_votes)
|
||||
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
|
||||
. = list()
|
||||
if(greatest_votes)
|
||||
@@ -152,6 +167,13 @@ SUBSYSTEM_DEF(vote)
|
||||
log_admin("The map has been voted for and will change to: [VM.map_name]")
|
||||
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")
|
||||
//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)
|
||||
var/active_admins = 0
|
||||
for(var/client/C in GLOB.admins)
|
||||
@@ -200,6 +222,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>")
|
||||
return 0
|
||||
|
||||
SEND_SOUND(world, sound('sound/misc/notice2.ogg'))
|
||||
reset()
|
||||
obfuscated = hideresults //CIT CHANGE - adds obfuscated votes
|
||||
switch(vote_type)
|
||||
@@ -211,6 +234,8 @@ SUBSYSTEM_DEF(vote)
|
||||
choices.Add(config.maplist)
|
||||
for(var/i in choices)//this is necessary because otherwise we'll end up with a bunch of /datum/map_config's as the default vote value instead of 0 as intended
|
||||
choices[i] = 0
|
||||
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
|
||||
choices.Add("secret", "extended")
|
||||
if("custom")
|
||||
@@ -225,7 +250,7 @@ SUBSYSTEM_DEF(vote)
|
||||
else
|
||||
return 0
|
||||
mode = vote_type
|
||||
initiator = initiator_key
|
||||
initiator = initiator_key ? initiator_key : "the Server" // austation -- Crew autotransfer vote
|
||||
started_time = world.time
|
||||
var/text = "[capitalize(mode)] vote started by [initiator]."
|
||||
if(mode == "custom")
|
||||
|
||||
@@ -179,6 +179,12 @@ VOTE_DELAY 6000
|
||||
## time period (deciseconds) which voting session will last (default 1 minute)
|
||||
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
|
||||
# NO_DEAD_VOTE
|
||||
|
||||
|
||||
+2
-1
@@ -229,6 +229,7 @@
|
||||
#include "code\controllers\subsystem\assets.dm"
|
||||
#include "code\controllers\subsystem\atoms.dm"
|
||||
#include "code\controllers\subsystem\augury.dm"
|
||||
#include "code\controllers\subsystem\autotransfer.dm"
|
||||
#include "code\controllers\subsystem\blackbox.dm"
|
||||
#include "code\controllers\subsystem\communications.dm"
|
||||
#include "code\controllers\subsystem\dbcore.dm"
|
||||
@@ -2879,7 +2880,7 @@
|
||||
#include "modular_citadel\code\_onclick\hud\stamina.dm"
|
||||
#include "modular_citadel\code\controllers\configuration\entries\general.dm"
|
||||
#include "modular_citadel\code\controllers\subsystem\job.dm"
|
||||
#include "modular_citadel\code\controllers\subsystem\shuttle.dm"
|
||||
//#include "modular_citadel\code\controllers\subsystem\shuttle.dm"
|
||||
#include "modular_citadel\code\datums\components\material_container.dm"
|
||||
#include "modular_citadel\code\datums\components\phantomthief.dm"
|
||||
#include "modular_citadel\code\datums\components\souldeath.dm"
|
||||
|
||||
Reference in New Issue
Block a user