-#ifdef FTEQCC
-#pragma flag enable subscope
-#pragma flag enable lo
+#ifndef UTIL_PRE_H
+#define UTIL_PRE_H
+
+#ifndef NOCOMPAT
+ #define COMPAT_NO_MOD_IS_XONOTIC
#endif
-// FTEQCC can do this
-#define HAVE_YO_DAWG_CPP
+#ifndef QCC_SUPPORT_ACCUMULATE
+ #ifdef GMQCC
+ #define QCC_SUPPORT_ACCUMULATE
+ #endif
+#endif
-#ifndef NOCOMPAT
-//# define WORKAROUND_XON010
-//# define COMPAT_XON010_CHANNELS
-//# define COMPAT_XON050_ENGINE
-# define COMPAT_NO_MOD_IS_XONOTIC
-# define COMPAT_XON060_DONTCRASH_CHECKPVS
+#ifndef QCC_SUPPORT_NIL
+ #ifdef GMQCC
+ #define QCC_SUPPORT_NIL
+ #endif
#endif
-#ifdef FTEQCC
-#ifdef WATERMARK
-const string FTEQCC_SUCKS_WATERMARKS_THROUGH_C60_FULLERENES = WATERMARK();
-#undef WATERMARK
-#define WATERMARK FTEQCC_SUCKS_WATERMARKS_THROUGH_C60_FULLERENES
+#ifndef QCC_SUPPORT_INT
+ #define int float
+
+ #define stoi(s) stof(s)
+ #define stob(s) stof(s)
+ #define itos(i) ftos(i)
+#else
+ #define stoi(s) ((int) stof(s))
+ #define stob(s) ((bool) stof(s))
+ #define itos(i) ftos(i)
#endif
+
+#ifndef QCC_SUPPORT_BOOL
+ #define bool float
+
+ // Boolean Constants
+ const int true = 1;
+ const int false = 0;
+#endif
+
+#ifndef QCC_SUPPORT_ENTITYCLASS
+ #define entityclass(name) typedef entity name
+ #define class(name)
+ #define new(class) spawn()
+#else
+ #define entityclass(name) entityclass name {}
+ #define class(name) [[class(name)]]
+ #define new(class) ((class) spawn())
+#endif
+
+// Transitional aliases
+[[deprecated("use true")]] [[alias("true")]] const bool TRUE;
+[[deprecated("use false")]] [[alias("false")]] const bool FALSE;
+
+#define BIT(n) (1 << (n))
+#define BITSET(var, mask, flag) (flag ? (var) | (mask) : (var) &~ (mask))
+
#endif