mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
206 lines
5.4 KiB
Plaintext
206 lines
5.4 KiB
Plaintext
/datum/next_map
|
|
var/name = "Name" // MUST be the same as /datum/map/var/nameLong
|
|
var/path = "Folder name" // MUST be the name of the folder inside maps/voting that contains the dmb
|
|
var/min_players = 0
|
|
var/max_players = 999
|
|
var/is_enabled = TRUE // If FALSE, it doesn't show up during the vote but can be rigged
|
|
|
|
/datum/next_map/proc/is_compiled()
|
|
return fexists("maps/voting/"+path+"/vgstation13.dmb")
|
|
|
|
/datum/next_map/proc/is_votable()
|
|
if(!is_compiled())
|
|
var/msg = "Skipping map [name] because it has not been compiled."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
if(clients.len < min_players)
|
|
var/msg = "Skipping map [name] due to not enough players. min = [min_players] || max = [max_players]"
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
if(clients.len > max_players)
|
|
var/msg = "Skipping map [name] due to too many players. min = [min_players] || max = [max_players]"
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/datum/next_map/bagel
|
|
name = "Bagelstation"
|
|
path = "Bagelstation"
|
|
var/bagel_requirement = 17
|
|
is_enabled = FALSE
|
|
|
|
/datum/next_map/bagel/is_votable()
|
|
if(score["bagelscooked"] < bagel_requirement)
|
|
var/msg = "Skipping map [name], fewer than [bagel_requirement] bagels made."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
return ..()
|
|
|
|
/datum/next_map/box
|
|
name = "Box Station"
|
|
path = "Box Station"
|
|
|
|
/datum/next_map/castle
|
|
name = "Castle Station"
|
|
path = "Castle Station"
|
|
|
|
/datum/next_map/castle/is_votable()
|
|
if(!ticker.revolutionary_victory)
|
|
var/msg = "Skipping map [name], revolutionaries have not won."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
return ..()
|
|
|
|
/datum/next_map/deff
|
|
name = "Defficiency"
|
|
path = "Defficiency"
|
|
min_players = 30
|
|
|
|
/datum/next_map/dorf
|
|
name = "DorfStation"
|
|
path = "Dorf"
|
|
|
|
/datum/next_map/dorf/is_votable()
|
|
var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
|
|
var/DD = text2num(time2text(world.timeofday, "DD")) // get the current date
|
|
if(!(MM == 8 && DD == 8)) // Dwarf fortress release date
|
|
var/msg = "Skipping map [name] as this is not the release date of Dwarf Fortress."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
return ..()
|
|
|
|
/datum/next_map/lamprey
|
|
name = "Lamprey Station"
|
|
path = "Lamprey"
|
|
is_enabled = FALSE
|
|
|
|
/datum/next_map/lamprey/is_votable()
|
|
var/crew_score = score["crewscore"] // So that we can use this in the admin messaging
|
|
if(crew_score > -20000)
|
|
var/msg = "Skipping map [name], station requires lower than -20000 score (is [crew_score])."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
return ..()
|
|
|
|
/datum/next_map/lowfat_bagel
|
|
name = "Lowfat Bagel"
|
|
path = "lowfatbagel"
|
|
min_players = 25
|
|
|
|
/datum/next_map/metaclub
|
|
name = "Meta Club"
|
|
path = "Metaclub"
|
|
min_players = 24
|
|
|
|
/datum/next_map/packed
|
|
name = "Packed Station"
|
|
path = "Packed Station"
|
|
max_players = 10
|
|
|
|
/datum/next_map/roid
|
|
name = "Asteroid Station"
|
|
path = "RoidStation"
|
|
min_players = 25
|
|
|
|
/datum/next_map/snaxi
|
|
name = "Snow Station"
|
|
path = "Snow Taxi"
|
|
min_players = 30
|
|
|
|
/datum/next_map/snaxi/is_votable()
|
|
var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
|
|
var/allowed_months = list(1, 2, 7, 12)
|
|
if (!(MM in allowed_months))
|
|
var/msg = "Skipping map [name] as this is no longer the Christmas season."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
return ..()
|
|
|
|
/datum/next_map/synergy
|
|
name = "Synergy Station"
|
|
path = "Synergy"
|
|
|
|
/datum/next_map/waystation
|
|
name = "Waystation"
|
|
path = "Waystation"
|
|
max_players = 25
|
|
|
|
/datum/next_map/xoq
|
|
name = "noitatS xoq"
|
|
path = "xoq"
|
|
is_enabled = FALSE
|
|
|
|
/datum/next_map/snowbox
|
|
name = "Snowbox Station"
|
|
path = "snowstation"
|
|
|
|
/datum/next_map/snowbox/is_votable()
|
|
var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
|
|
var/allowed_months = list(1, 2, 7, 12)
|
|
if (!(MM in allowed_months))
|
|
var/msg = "Skipping map [name] as this is no longer the Christmas season."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
|
|
var/avg_temp = 0
|
|
var/avg_divide = 0
|
|
for(var/obj/machinery/alarm/alarm in machines)
|
|
var/turf/simulated/location = alarm.loc
|
|
if(!istype(location))
|
|
continue
|
|
var/datum/gas_mixture/environment = location.return_air()
|
|
if(!environment)
|
|
continue
|
|
avg_temp += environment.temperature
|
|
avg_divide++
|
|
|
|
if(avg_divide)
|
|
avg_temp /= avg_divide // quick and easy way to get the mean, was calculating both values along the way
|
|
else
|
|
var/msg = "Skipping map [name] as no suitable air alarms were found to get average temperature."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
|
|
if(avg_temp > T0C)
|
|
var/msg = "Skipping map [name] as station average temperature is above 0C."
|
|
message_admins(msg)
|
|
warning(msg)
|
|
return FALSE
|
|
return ..()
|
|
|
|
/proc/get_votable_maps()
|
|
var/list/votable_maps = list()
|
|
for(var/map_path in subtypesof(/datum/next_map))
|
|
var/datum/next_map/candidate = new map_path
|
|
if(candidate.is_enabled && candidate.is_votable())
|
|
votable_maps += candidate.name
|
|
votable_maps[candidate.name] = candidate.path
|
|
|
|
var/list/maplist = get_list_of_keys(votable_maps)
|
|
var/msg = "A map vote was initiated with these options: [english_list(maplist)]."
|
|
send2maindiscord(msg)
|
|
send2mainirc(msg)
|
|
send2ickdiscord(config.kill_phrase) // This the magic kill phrase
|
|
|
|
return votable_maps
|
|
|
|
/proc/get_all_maps()
|
|
var/list/all_maps = list()
|
|
for(var/map_path in subtypesof(/datum/next_map))
|
|
var/datum/next_map/map = new map_path
|
|
if(!map.is_compiled())
|
|
continue
|
|
all_maps += map.name
|
|
all_maps[map.name] = map.path
|
|
return all_maps
|