#pragma once
+#ifdef SVQC
+ #include <server/autocvars.qh>
+#endif
+
+#ifdef SVQC
+float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity); // returns the number of traces done, for benchmarking
+
+void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity);
+#endif
+
#ifdef GAMEQC
+/*
+==================
+findbetterlocation
+
+Returns a point at least 12 units away from walls
+(useful for explosion animations, although the blast is performed where it really happened)
+Ripped from DPMod
+==================
+*/
+vector findbetterlocation (vector org, float mindist);
+
vector real_origin(entity ent);
#endif
#ifdef SVQC
-// temporary array used to dump weapon and turret settings
-const int MAX_CONFIG_SETTINGS = 256;
+// temporary array used to dump settings for each weapon / turret
+const int MAX_CONFIG_SETTINGS = 70;
string config_queue[MAX_CONFIG_SETTINGS];
#endif
float matchacl(string acl, string str); // matches str against ACL acl (with entries +foo*, +foo, +*foo, +*foo*, and same with - for forbidding)
+void write_String_To_File(int fh, string str, bool alsoprint);
+
string get_model_datafilename(string mod, float skn, string fil); // skin -1 will return wildcard, mod string_null will also put wildcard there
string get_model_parameters_modelname;
float get_model_parameters_modelskin;
string get_model_parameters_desc;
float get_model_parameters(string mod, float skn); // call with string_null to clear; skin -1 means mod is the filename of the txt file and is to be split
+ERASEABLE
+string translate_key(string key);
+
// x-encoding (encoding as zero length invisible string)
// encodes approx. 14 bits into 5 bytes of color code string
const float XENCODE_MAX = 21295; // 2*22*22*22-1
#ifdef GAMEQC
#ifdef CSQC
+ bool autocvar_cl_gentle;
+ int autocvar_cl_gentle_messages;
#define GENTLE (autocvar_cl_gentle || autocvar_cl_gentle_messages)
#else
#define GENTLE autocvar_sv_gentle
#endif
- #define normal_or_gentle(normal, gentle) (GENTLE ? ((gentle != "") ? gentle : normal) : normal)
+ #define normal_or_gentle(normal, gentle) ((GENTLE && (gentle != "")) ? gentle : normal)
#endif
#ifdef GAMEQC
// Returns the correct difference between two always increasing numbers
#define COMPARE_INCREASING(to,from) (to < from ? from + to + 2 : to - from)
+
+#ifdef SVQC
+void attach_sameorigin(entity e, entity to, string tag);
+
+void detach_sameorigin(entity e);
+
+void follow_sameorigin(entity e, entity to);
+
+void SetMovetypeFollow(entity ent, entity e);
+
+void UnsetMovetypeFollow(entity ent);
+
+float LostMovetypeFollow(entity ent);
+#endif
+
+#ifdef GAMEQC
+string playername(string thename, int teamid, bool team_colorize);
+
+float trace_hits_box_1d(float end, float thmi, float thma);
+
+float trace_hits_box(vector start, vector end, vector thmi, vector thma);
+
+float tracebox_hits_box(vector start, vector mi, vector ma, vector end, vector thmi, vector thma);
+
+float tracebox_hits_box(vector start, vector mi, vector ma, vector end, vector thmi, vector thma);
+#endif
+
+float cvar_or(string cv, float v);
+
+float blink_synced(float base, float range, float freq, float start_time, int start_blink);
+
+float blink(float base, float range, float freq);