#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