diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm new file mode 100644 index 0000000000..982fda8fa1 --- /dev/null +++ b/code/__byond_version_compat.dm @@ -0,0 +1,74 @@ +#if DM_VERSION >= 515 +#error PLEASE MAKE SURE THAT 515 IS PROPERLY TESTED AND WORKS. ESPECIALLY THE SAVE-FILES HAVE TO WORK. +#error Additionally: Make sure that the GitHub Workflow was updated to BYOND 515 as well. +#endif + +// These defines are from __513_compatibility.dm -- Please Sort +#define CLAMP(CLVALUE, CLMIN, CLMAX) clamp(CLVALUE, CLMIN, CLMAX) +#define TAN(x) tan(x) +#define ATAN2(x, y) arctan(x, y) +#define between(x, y, z) clamp(y, x, z) + +// This file contains defines allowing targeting byond versions newer than the supported + +//Update this whenever you need to take advantage of more recent byond features +#define MIN_COMPILER_VERSION 514 +#define MIN_COMPILER_BUILD 1556 +#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) +//Don't forget to update this part +#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. +#error You need version 514.1556 or higher +#endif + +#if (DM_VERSION == 514 && DM_BUILD > 1575 && DM_BUILD <= 1577) +#error Your version of BYOND currently has a crashing issue that will prevent you from running Dream Daemon test servers. +#error We require developers to test their content, so an inability to test means we cannot allow the compile. +#error Please consider downgrading to 514.1575 or lower. +#endif + +// Keep savefile compatibilty at minimum supported level +#if DM_VERSION >= 515 +/savefile/byond_version = MIN_COMPILER_VERSION +#endif + +// 515 split call for external libraries into call_ext +#if DM_VERSION < 515 +#define LIBCALL call +#else +#define LIBCALL call_ext +#endif + +// So we want to have compile time guarantees these methods exist on local type, unfortunately 515 killed the .proc/procname and .verb/verbname syntax so we have to use nameof() +// For the record: GLOBAL_VERB_REF would be useless as verbs can't be global. + +#if DM_VERSION < 515 + +/// Call by name proc references, checks if the proc exists on either this type or as a global proc. +#define PROC_REF(X) (.proc/##X) +/// Call by name verb references, checks if the verb exists on either this type or as a global verb. +#define VERB_REF(X) (.verb/##X) + +/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc +#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X) +/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb +#define TYPE_VERB_REF(TYPE, X) (##TYPE.verb/##X) + +/// Call by name proc reference, checks if the proc is an existing global proc +#define GLOBAL_PROC_REF(X) (/proc/##X) + +#else + +/// Call by name proc references, checks if the proc exists on either this type or as a global proc. +#define PROC_REF(X) (nameof(.proc/##X)) +/// Call by name verb references, checks if the verb exists on either this type or as a global verb. +#define VERB_REF(X) (nameof(.verb/##X)) + +/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc +#define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X)) +/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb +#define TYPE_VERB_REF(TYPE, X) (nameof(##TYPE.verb/##X)) + +/// Call by name proc reference, checks if the proc is an existing global proc +#define GLOBAL_PROC_REF(X) (/proc/##X) + +#endif diff --git a/code/__defines/__513_compatibility.dm b/code/__defines/__513_compatibility.dm deleted file mode 100644 index f4a3a8177e..0000000000 --- a/code/__defines/__513_compatibility.dm +++ /dev/null @@ -1,33 +0,0 @@ -#if DM_VERSION < 513 - -#define ismovable(A) (istype(A, /atom/movable)) - -#define islist(L) (istype(L, /list)) - -#define CLAMP01(x) (CLAMP(x, 0, 1)) - -#define CLAMP(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) - -#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) ) - -#define TAN(x) (sin(x) / cos(x)) - -#define arctan(x) (arcsin(x/sqrt(1+x*x))) - -#define between(x, y, z) max(min(y, z), x) - -////////////////////////////////////////////////// - -#else - -#define CLAMP01(x) clamp(x, 0, 1) - -#define CLAMP(CLVALUE, CLMIN, CLMAX) clamp(CLVALUE, CLMIN, CLMAX) - -#define TAN(x) tan(x) - -#define ATAN2(x, y) arctan(x, y) - -#define between(x, y, z) clamp(y, x, z) - -#endif \ No newline at end of file diff --git a/code/__defines/__outdated_compatibility.dm b/code/__defines/__outdated_compatibility.dm deleted file mode 100644 index 764fde7887..0000000000 --- a/code/__defines/__outdated_compatibility.dm +++ /dev/null @@ -1,8 +0,0 @@ -//Update this whenever you need to take advantage of more recent byond features -#define MIN_COMPILER_VERSION 514 -#define MIN_COMPILER_BUILD 1556 -#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) -//Don't forget to update this part -#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. -#error You need version 514.1556 or higher -#endif \ No newline at end of file diff --git a/code/__defines/math.dm b/code/__defines/math.dm index 2053b762d2..7b5fcd8c7a 100644 --- a/code/__defines/math.dm +++ b/code/__defines/math.dm @@ -16,6 +16,7 @@ #define TICK_USAGE_TO_MS(starting_tickusage) (TICK_DELTA_TO_MS(world.tick_usage - starting_tickusage)) #define PERCENT(val) (round((val)*100, 0.1)) +#define CLAMP01(x) clamp(x, 0, 1) //time of day but automatically adjusts to the server going into the next day within the same round. //for when you need a reliable time number that doesn't depend on byond time. diff --git a/code/hub.dm b/code/hub.dm deleted file mode 100644 index d351388cca..0000000000 --- a/code/hub.dm +++ /dev/null @@ -1,16 +0,0 @@ -/world - - hub = "Exadv1.spacestation13" - //hub_password = "SORRYNOPASSWORD" - hub_password = "kMZy3U5jJHSiBQjr" - name = "VOREStation" //VOREStation Edit - visibility = 0 //VOREStation Edit - -/* This is for any host that would like their server to appear on the main SS13 hub. -To use it, simply replace the password above, with the password found below, and it should work. -If not, let us know on the main tgstation IRC channel of irc.rizon.net #tgstation13 we can help you there. - - hub = "Exadv1.spacestation13" - hub_password = "kMZy3U5jJHSiBQjr" - name = "Space Station 13" -*/ diff --git a/code/world.dm b/code/world.dm index 8e76fd11d7..de9d4261c4 100644 --- a/code/world.dm +++ b/code/world.dm @@ -1,8 +1,21 @@ -//Global init and the rest of world's code have been moved to code/global_init.dm and code/game/world.dm respectively. +//This file is just for the necessary /world definition +//Try looking in /code/game/world.dm, where initialization order is defined + +/** + * # World + * + * Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke + * + * The byond world object stores some basic byond level config, and has a few hub specific procs for managing hub visiblity + */ /world mob = /mob/new_player turf = /turf/space area = /area/space view = "15x15" + hub = "Exadv1.spacestation13" + hub_password = "kMZy3U5jJHSiBQjr" + name = "VOREStation" //VOREStation Edit + visibility = 0 //VOREStation Edit cache_lifespan = 7 fps = 20 // If this isnt hard-defined, anything relying on this variable before world load will cry a lot diff --git a/vorestation.dme b/vorestation.dme index 0427dce9b6..e16a1b5cc6 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -10,6 +10,7 @@ #define DEBUG // END_PREFERENCES // BEGIN_INCLUDE +#include "code\__byond_version_compat.dm" #include "code\__spaceman_dmm.dm" #include "code\_away_mission_tests.dm" #include "code\_macros.dm" @@ -19,13 +20,10 @@ #include "code\global.dm" #include "code\global_init.dm" #include "code\global_vr.dm" -#include "code\hub.dm" #include "code\names.dm" #include "code\stylesheet.dm" #include "code\world.dm" #include "code\__datastructures\globals.dm" -#include "code\__defines\__513_compatibility.dm" -#include "code\__defines\__outdated_compatibility.dm" #include "code\__defines\_compile_options.dm" #include "code\__defines\_lists.dm" #include "code\__defines\_planes+layers.dm"