diff --git a/code/_compile_options.dm b/code/_compile_options.dm index b4d60d75401..4f4fef2c952 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -57,5 +57,5 @@ #ifndef SERVERTOOLS -#define SERVERTOOLS 1 +#define SERVERTOOLS 0 #endif diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 925a3383440..fa91e9de1d2 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -464,17 +464,17 @@ var/datum/subsystem/ticker/ticker queue_delay = 0 /datum/subsystem/ticker/proc/check_maprotate(var/force = 0) - if (!config.maprotation && !force) + if (!config.maprotation || !SERVERTOOLS) return - if ((SSshuttle.emergency.mode != SHUTTLE_ESCAPE || SSshuttle.canRecall()) && !force) + if (SSshuttle.emergency.mode != SHUTTLE_ESCAPE || SSshuttle.canRecall()) return - if (maprotatechecked && !force) + if (maprotatechecked) return maprotatechecked = 1 //map rotate chance is length of the round (in minutes) divided by 2 - if (!prob((world.time/600)/2) && !force) + if (!prob((world.time/600)/2)) return var/players = clients.len @@ -523,13 +523,13 @@ var/datum/subsystem/ticker/ticker if (0) var/datum/votablemap/VM = config.maplist[pickedmap] world << "Map rotation has choosen [VM.friendlyname] for next round!" - if (1) + if (11) message_admins("Failed to rotate map: Map rotator script couldn't find file listing new map") log_game("Failed to rotate map: Map rotator script couldn't find file listing new map") - if (2) + if (12) message_admins("Failed to rotate map: Map rotator script couldn't find tgstation-tools framework") log_game("Failed to rotate map: Map rotator script couldn't find tgstation-tools framework") - if (3) + if (13) message_admins("Failed to rotate map: Could not compile new map:[pickedmap]") log_game("Failed to rotate map: Could not compile new map:[pickedmap]") else diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index a44b767179f..e8e18041d66 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -357,7 +357,21 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set dat += "Ghost Form: [ghost_form]
" if (SERVERTOOLS && config.maprotation) - dat += "Preferred Map: [preferred_map ? preferred_map : "Default[config.defaultmap ? " ([config.defaultmap.friendlyname])":""]"]" + var/p_map = preferred_map + if (!p_map) + p_map = "Default" + if (config.defaultmap) + p_map += " ([config.defaultmap.friendlyname])" + else + if (p_map in config.maplist) + var/datum/votablemap/VM = config.maplist[p_map] + if (!VM) + p_map += " (No longer exists)" + else + p_map = VM.friendlyname + else + p_map += " (No longer exists)" + dat += "Preferred Map: [p_map]" dat += "" diff --git a/code/world.dm b/code/world.dm index 5a76035831c..e03868be844 100644 --- a/code/world.dm +++ b/code/world.dm @@ -192,7 +192,7 @@ config.load("config/config.txt") config.load("config/game_options.txt","game_options") config.loadsql("config/dbconfig.txt") - if (config.maprotation) + if (config.maprotation && SERVERTOOLS) config.loadmaplist("config/maps.txt") // apply some settings from config.. diff --git a/config/config.txt b/config/config.txt index c1bed2e1a60..c7d25266922 100644 --- a/config/config.txt +++ b/config/config.txt @@ -202,4 +202,9 @@ AUTOCONVERT_NOTES ANNOUNCE_ADMIN_LOGOUT ##Uncomment to have an admin message sent anytime an admin connects to a round in play, you can edit the messages in admin.dm -#ANNOUNCE_ADMIN_LOGIN \ No newline at end of file +#ANNOUNCE_ADMIN_LOGIN + +##Map rotation +##This feature requires you are running a Windows OS (or can other wise run .bat files) and that you are using the tgstation-server toolset in tools/ +##You should edit maps.txt to match your configuration when you enable this. +#MAPROTATION \ No newline at end of file diff --git a/config/maps.txt b/config/maps.txt new file mode 100644 index 00000000000..4e6ebcc3f57 --- /dev/null +++ b/config/maps.txt @@ -0,0 +1,32 @@ +This file contains a list of maps for use in map rotation. +This feature requires you are running a Windows OS (or can other wise run .bat files) and that you are using the tgstation-server toolset in tools/ +#Lines starting with # are ignored. +Lines not inside map blocks are also ignored +Duplicated entries use the latter one. +All whitespace at the start and end of lines is ignored. (including indentation, thats just for show) +Format: +#map [map name] (name of .dm file in _maps folder without the .dm part) + friendlyname [name] (name shown to players) + minplayers [number] (0 or less disables this requirement) + maxplayers [number] (0 or less disables this requirement) + default (The last map with this defined will get all votes of players who have not explicitly voted for a map) + voteweight [number] (How much to count each player vote as, defaults to 1, setting to 0.5 counts each vote as half a vote, 2 as double, etc, Setting to 0 disables the map but allows players to still pick it) +endmap + +map tgstation2 + friendlyname Box Station + default + #voteweight 1.5 +endmap + +map metastation + friendlyname Meta Station + minplayers 25 + #voteweight 0.5 +endmap + +#map ministation + friendlyname Mini Station + maxplayers 30 + voteweight 0 +endmap \ No newline at end of file