]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/util.qh
Nades code: don't use booleans as array indexes for m_projectile, optimize spawn_held...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / util.qh
index 1334f5ec35c392d41be44559cade95dc561931c7..1a1ebdba7fb9593faebb5a13301fe0fc0c59c4e9 100644 (file)
@@ -44,6 +44,40 @@ void wordwrap_cb(string s, float l, void(string) callback);
 #ifndef SVQC
 string draw_currentSkin;
 string draw_UseSkinFor(string pic);
+
+// NOTE they aren't all registered mutators, e.g. jetpack, low gravity
+// TODO add missing "mutators"
+const int MUT_DODGING = 0;
+const int MUT_INSTAGIB = 1;
+const int MUT_NEW_TOYS = 2;
+const int MUT_NIX = 3;
+const int MUT_ROCKET_FLYING = 4;
+const int MUT_INVINCIBLE_PROJECTILES = 5;
+const int MUT_GRAVITY = 6;
+const int MUT_CLOAKED = 7;
+const int MUT_GRAPPLING_HOOK = 8;
+const int MUT_MIDAIR = 9;
+const int MUT_MELEE_ONLY = 10;
+const int MUT_VAMPIRE = 11;
+const int MUT_PINATA = 12;
+const int MUT_WEAPON_STAY = 13;
+const int MUT_BLOODLOSS = 14;
+const int MUT_JETPACK = 15;
+const int MUT_BUFFS = 16;
+const int MUT_OVERKILL = 17;
+const int MUT_NO_POWERUPS = 18;
+const int MUT_POWERUPS = 19;
+const int MUT_TOUCHEXPLODE = 20;
+const int MUT_WALLJUMP = 21;
+const int MUT_NO_START_WEAPONS = 22;
+const int MUT_NADES = 23;
+const int MUT_OFFHAND_BLASTER = 24;
+
+const int MUT_MAX = 47;
+
+int active_mutators[2];
+bool mut_is_active(int mut);
+string build_mutator_list(string s);
 #endif
 
 // iterative depth-first search, with fields that go "up", "down left" and "right" in a tree
@@ -54,7 +88,7 @@ void depthfirst(entity start, .entity up, .entity downleft, .entity right, void(
 
 const int TIME_DECIMALS = 2;
 const float TIME_FACTOR = 100;
-#define TIME_ENCODED_TOSTRING(n) mmssth(n)
+#define TIME_ENCODED_TOSTRING(n, compact) mmssth(n, compact)
 #define RACE_RECORD "/race100record/"
 #define CTS_RECORD "/cts100record/"
 #define CTF_RECORD "/ctf100record/"
@@ -62,7 +96,7 @@ const float TIME_FACTOR = 100;
 #define TIME_DECODE(n) ((n) / TIME_FACTOR)
 
 #ifdef GAMEQC
-string ScoreString(float vflags, float value);
+string ScoreString(float vflags, float value, int rounds_played);
 #endif
 
 vector decompressShortVector(float data);
@@ -102,13 +136,14 @@ USING(textLengthUpToWidth_widthFunction_t, float(string s, vector size));
 USING(textLengthUpToLength_lenFunction_t, float(string s));
 float textLengthUpToWidth(string theText, float maxWidth, vector size, textLengthUpToWidth_widthFunction_t tw);
 string textShortenToWidth(string theText, float maxWidth, vector size, textLengthUpToWidth_widthFunction_t tw);
-float textLengthUpToLength(string theText, float maxWidth, textLengthUpToLength_lenFunction_t tw);
-string textShortenToLength(string theText, float maxWidth, textLengthUpToLength_lenFunction_t tw);
+float textLengthUpToLength(string theText, int maxLength, textLengthUpToLength_lenFunction_t tw);
+string textShortenToLength(string theText, int maxLength, textLengthUpToLength_lenFunction_t tw);
 
 string getWrappedLine_remaining;
 string getWrappedLine(float w, vector size, textLengthUpToWidth_widthFunction_t tw);
 string getWrappedLineLen(float w, textLengthUpToLength_lenFunction_t tw);
 
+// FIXME can't use Gametype gt because Gitlab compilation unit test fails
 float isGametypeInFilter(entity gt, float tp, float ts, string pattern);
 
 vector solve_shotdirection(vector myorg, vector myvel, vector eorg, vector evel, float spd, float newton_style);