X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmiscfunctions.qh;h=3b5767373629a3d61c87899565b37681e7614b30;hb=531350c716ebfae99647bf632c7bb29cf31c0d8c;hp=97f85e5b53abbcd356a00bfe7a6bd20c0681da7d;hpb=7d1d7d64a791f5566057275f5797119f56bf644c;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/miscfunctions.qh b/qcsrc/server/miscfunctions.qh index 97f85e5b5..3b5767373 100644 --- a/qcsrc/server/miscfunctions.qh +++ b/qcsrc/server/miscfunctions.qh @@ -3,11 +3,12 @@ #include "t_items.qh" -#include "mutators/base.qh" +#include "mutators/events.qh" #include "mutators/gamemode_race.qh" #include "../common/constants.qh" #include "../common/mapinfo.qh" +#include "../common/turrets/turrets.qh" #ifdef RELEASE #define cvar_string_normal builtin_cvar_string @@ -15,7 +16,7 @@ #else string cvar_string_normal(string n) { - if (!(cvar_type(n) & 1)) + if (!(cvar_type(n) & CVAR_TYPEFLAG_EXISTS)) backtrace(strcat("Attempt to access undefined cvar: ", n)); return builtin_cvar_string(n); } @@ -32,10 +33,47 @@ float cvar_normal(string n) .float uncustomizeentityforclient_set; .float nottargeted; +entity eliminatedPlayers; +void EliminatedPlayers_Init(float(entity) isEliminated_func); + +string admin_name(void); + +void write_recordmarker(entity pl, float tstart, float dt); + +void play2all(string samp); + +void DistributeEvenly_Init(float amount, float totalweight); +float DistributeEvenly_Get(float weight); + +void modeleffect_spawn(string m, float s, float f, vector o, vector v, vector ang, vector angv, float s0, float s2, float a, float t1, float t2); + +void shockwave_spawn(string m, vector org, float sz, float t1, float t2); + +void play2team(float t, string filename); + +void GetCvars_handleFloat(string thisname, float f, .float field, string name); + +float spamsound(entity e, float chan, string samp, float vol, float _atten); + +void GetCvars_handleString(string thisname, float f, .string field, string name); + +void precache_all_playermodels(string pattern); + +void soundat(entity e, vector o, float chan, string samp, float vol, float _atten); + +void defer(float fdelay, void() func); + +void UncustomizeEntitiesRun(); +void InitializeEntitiesRun(); + +void stopsoundto(float _dest, entity e, float chan); +void soundtoat(float _dest, entity e, vector o, float chan, string samp, float vol, float _atten); +float ExponentialFalloff(float mindist, float maxdist, float halflifedist, float d); + +vector shotorg_adjust(vector vecs, float y_is_right, float visual); float DistributeEvenly_amount; float DistributeEvenly_totalweight; -var void remove(entity e); void objerror(string s); void droptofloor(); void() spawnfunc_info_player_deathmatch; // needed for the other spawnpoints @@ -68,6 +106,8 @@ float isPushable(entity e); float LostMovetypeFollow(entity ent); +string uid2name(string myuid); + float MoveToRandomMapLocation(entity e, float goodcontents, float badcontents, float badsurfaceflags, float attempts, float maxaboveground, float minviewdistance); string NearestLocation(vector p); @@ -99,15 +139,11 @@ void WarpZone_crosshair_trace(entity pl); void WarpZone_traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); -#define IFTARGETED if(!self.nottargeted && self.targetname != "") - #define ITEM_TOUCH_NEEDKILL() (((trace_dpstartcontents | trace_dphitcontents) & DPCONTENTS_NODROP) || (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SKY)) #define ITEM_DAMAGE_NEEDKILL(dt) (((dt) == DEATH_HURTTRIGGER) || ((dt) == DEATH_SLIME) || ((dt) == DEATH_LAVA) || ((dt) == DEATH_SWAMP)) #define PROJECTILE_TOUCH if(WarpZone_Projectile_Touch()) return -#define move_out_of_solid(e) WarpZoneLib_MoveOutOfSolid(e) - const string STR_PLAYER = "player"; const string STR_SPECTATOR = "spectator"; const string STR_OBSERVER = "observer"; @@ -120,6 +156,10 @@ const string STR_OBSERVER = "observer"; #define IS_REAL_CLIENT(v) (clienttype(v) == CLIENTTYPE_REAL) #define IS_NOT_A_CLIENT(v) (clienttype(v) == CLIENTTYPE_NOTACLIENT) +#define IS_MONSTER(v) (v.flags & FL_MONSTER) +#define IS_VEHICLE(v) (v.vehicle_flags & VHF_ISVEHICLE) +#define IS_TURRET(v) (v.turret_flags & TUR_FLAG_ISTURRET) + #define FOR_EACH_CLIENTSLOT(v) for(v = world; (v = nextent(v)) && (num_for_edict(v) <= maxclients); ) #define FOR_EACH_CLIENT(v) FOR_EACH_CLIENTSLOT(v) if(IS_CLIENT(v)) #define FOR_EACH_REALCLIENT(v) FOR_EACH_CLIENT(v) if(IS_REAL_CLIENT(v)) @@ -382,6 +422,9 @@ void readlevelcvars(void) if (!warmup_stage) game_starttime = time + cvar("g_start_delay"); + for(int i = WEP_FIRST; i <= WEP_LAST; ++i) + WEP_ACTION(i, WR_INIT); + readplayerstartcvars(); } @@ -398,10 +441,6 @@ const float SND_ATTENUATION = 2; const float SND_LARGEENTITY = 8; const float SND_LARGESOUND = 16; -// WARNING: this kills the trace globals -#define EXACTTRIGGER_TOUCH if(WarpZoneLib_ExactTrigger_Touch()) return -#define EXACTTRIGGER_INIT WarpZoneLib_ExactTrigger_Init() - const float INITPRIO_FIRST = 0; const float INITPRIO_GAMETYPE = 0; const float INITPRIO_GAMETYPE_FALLBACK = 1; @@ -423,6 +462,6 @@ entity initialize_entity_first; float sound_allowed(float dest, entity e); void InitializeEntity(entity e, void(void) func, float order); void SetCustomizer(entity e, float(void) customizer, void(void) uncustomizer); -void Net_LinkEntity(entity e, float docull, float dt, float(entity, float) sendfunc); +void Net_LinkEntity(entity e, bool docull, float dt, bool(entity, int) sendfunc); #endif