1 /*
2 ===========================================================================
3 Copyright (C) 1999-2005 Id Software, Inc.
4
5 This file is part of Quake III Arena source code.
6
7 Quake III Arena source code is free software; you can redistribute it
8 and/or modify it under the terms of the GNU General Public License as
9 published by the Free Software Foundation; either version 2 of the License,
10 or (at your option) any later version.
11
12 Quake III Arena source code is distributed in the hope that it will be
13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Quake III Arena source code; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 ===========================================================================
21 */
22 //
23 #include "g_local.h"
24
25 // this file is only included when building a dll
26 // g_syscalls.asm is included instead when building a qvm
27 #ifdef Q3_VM
28 #error "Do not use in VM build"
29 #endif
30
31 static intptr_t (QDECL *syscall)( intptr_t arg, ... ) = (intptr_t (QDECL *)( intptr_t, ...))-1;
32
33
dllEntry(intptr_t (QDECL * syscallptr)(intptr_t arg,...))34 void dllEntry( intptr_t (QDECL *syscallptr)( intptr_t arg,... ) ) {
35 syscall = syscallptr;
36 }
37
PASSFLOAT(float x)38 int PASSFLOAT( float x ) {
39 floatint_t fi;
40 fi.f = x;
41 return fi.i;
42 }
43
trap_Printf(const char * fmt)44 void trap_Printf( const char *fmt ) {
45 syscall( G_PRINT, fmt );
46 }
47
trap_Error(const char * fmt)48 void trap_Error( const char *fmt ) {
49 syscall( G_ERROR, fmt );
50 }
51
trap_Milliseconds(void)52 int trap_Milliseconds( void ) {
53 return syscall( G_MILLISECONDS );
54 }
trap_Argc(void)55 int trap_Argc( void ) {
56 return syscall( G_ARGC );
57 }
58
trap_Argv(int n,char * buffer,int bufferLength)59 void trap_Argv( int n, char *buffer, int bufferLength ) {
60 syscall( G_ARGV, n, buffer, bufferLength );
61 }
62
trap_FS_FOpenFile(const char * qpath,fileHandle_t * f,fsMode_t mode)63 int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t mode ) {
64 return syscall( G_FS_FOPEN_FILE, qpath, f, mode );
65 }
66
trap_FS_Read(void * buffer,int len,fileHandle_t f)67 void trap_FS_Read( void *buffer, int len, fileHandle_t f ) {
68 syscall( G_FS_READ, buffer, len, f );
69 }
70
trap_FS_Write(const void * buffer,int len,fileHandle_t f)71 void trap_FS_Write( const void *buffer, int len, fileHandle_t f ) {
72 syscall( G_FS_WRITE, buffer, len, f );
73 }
74
trap_FS_FCloseFile(fileHandle_t f)75 void trap_FS_FCloseFile( fileHandle_t f ) {
76 syscall( G_FS_FCLOSE_FILE, f );
77 }
78
trap_FS_GetFileList(const char * path,const char * extension,char * listbuf,int bufsize)79 int trap_FS_GetFileList( const char *path, const char *extension, char *listbuf, int bufsize ) {
80 return syscall( G_FS_GETFILELIST, path, extension, listbuf, bufsize );
81 }
82
trap_FS_Seek(fileHandle_t f,long offset,int origin)83 int trap_FS_Seek( fileHandle_t f, long offset, int origin ) {
84 return syscall( G_FS_SEEK, f, offset, origin );
85 }
86
trap_SendConsoleCommand(int exec_when,const char * text)87 void trap_SendConsoleCommand( int exec_when, const char *text ) {
88 syscall( G_SEND_CONSOLE_COMMAND, exec_when, text );
89 }
90
trap_Cvar_Register(vmCvar_t * cvar,const char * var_name,const char * value,int flags)91 void trap_Cvar_Register( vmCvar_t *cvar, const char *var_name, const char *value, int flags ) {
92 syscall( G_CVAR_REGISTER, cvar, var_name, value, flags );
93 }
94
trap_Cvar_Update(vmCvar_t * cvar)95 void trap_Cvar_Update( vmCvar_t *cvar ) {
96 syscall( G_CVAR_UPDATE, cvar );
97 }
98
trap_Cvar_Set(const char * var_name,const char * value)99 void trap_Cvar_Set( const char *var_name, const char *value ) {
100 syscall( G_CVAR_SET, var_name, value );
101 }
102
trap_Cvar_VariableIntegerValue(const char * var_name)103 int trap_Cvar_VariableIntegerValue( const char *var_name ) {
104 return syscall( G_CVAR_VARIABLE_INTEGER_VALUE, var_name );
105 }
106
trap_Cvar_VariableStringBuffer(const char * var_name,char * buffer,int bufsize)107 void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ) {
108 syscall( G_CVAR_VARIABLE_STRING_BUFFER, var_name, buffer, bufsize );
109 }
110
111
trap_LocateGameData(gentity_t * gEnts,int numGEntities,int sizeofGEntity_t,playerState_t * clients,int sizeofGClient)112 void trap_LocateGameData( gentity_t *gEnts, int numGEntities, int sizeofGEntity_t,
113 playerState_t *clients, int sizeofGClient ) {
114 syscall( G_LOCATE_GAME_DATA, gEnts, numGEntities, sizeofGEntity_t, clients, sizeofGClient );
115 }
116
trap_DropClient(int clientNum,const char * reason)117 void trap_DropClient( int clientNum, const char *reason ) {
118 syscall( G_DROP_CLIENT, clientNum, reason );
119 }
120
trap_SendServerCommand(int clientNum,const char * text)121 void trap_SendServerCommand( int clientNum, const char *text ) {
122 syscall( G_SEND_SERVER_COMMAND, clientNum, text );
123 }
124
trap_SetConfigstring(int num,const char * string)125 void trap_SetConfigstring( int num, const char *string ) {
126 syscall( G_SET_CONFIGSTRING, num, string );
127 }
128
trap_GetConfigstring(int num,char * buffer,int bufferSize)129 void trap_GetConfigstring( int num, char *buffer, int bufferSize ) {
130 syscall( G_GET_CONFIGSTRING, num, buffer, bufferSize );
131 }
132
trap_GetUserinfo(int num,char * buffer,int bufferSize)133 void trap_GetUserinfo( int num, char *buffer, int bufferSize ) {
134 syscall( G_GET_USERINFO, num, buffer, bufferSize );
135 }
136
trap_SetUserinfo(int num,const char * buffer)137 void trap_SetUserinfo( int num, const char *buffer ) {
138 syscall( G_SET_USERINFO, num, buffer );
139 }
140
trap_GetServerinfo(char * buffer,int bufferSize)141 void trap_GetServerinfo( char *buffer, int bufferSize ) {
142 syscall( G_GET_SERVERINFO, buffer, bufferSize );
143 }
144
trap_SetBrushModel(gentity_t * ent,const char * name)145 void trap_SetBrushModel( gentity_t *ent, const char *name ) {
146 syscall( G_SET_BRUSH_MODEL, ent, name );
147 }
148
trap_Trace(trace_t * results,const vec3_t start,const vec3_t mins,const vec3_t maxs,const vec3_t end,int passEntityNum,int contentmask)149 void trap_Trace( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int passEntityNum, int contentmask ) {
150 syscall( G_TRACE, results, start, mins, maxs, end, passEntityNum, contentmask );
151 }
152
trap_TraceCapsule(trace_t * results,const vec3_t start,const vec3_t mins,const vec3_t maxs,const vec3_t end,int passEntityNum,int contentmask)153 void trap_TraceCapsule( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int passEntityNum, int contentmask ) {
154 syscall( G_TRACECAPSULE, results, start, mins, maxs, end, passEntityNum, contentmask );
155 }
156
trap_PointContents(const vec3_t point,int passEntityNum)157 int trap_PointContents( const vec3_t point, int passEntityNum ) {
158 return syscall( G_POINT_CONTENTS, point, passEntityNum );
159 }
160
161
trap_InPVS(const vec3_t p1,const vec3_t p2)162 qboolean trap_InPVS( const vec3_t p1, const vec3_t p2 ) {
163 return syscall( G_IN_PVS, p1, p2 );
164 }
165
trap_InPVSIgnorePortals(const vec3_t p1,const vec3_t p2)166 qboolean trap_InPVSIgnorePortals( const vec3_t p1, const vec3_t p2 ) {
167 return syscall( G_IN_PVS_IGNORE_PORTALS, p1, p2 );
168 }
169
trap_AdjustAreaPortalState(gentity_t * ent,qboolean open)170 void trap_AdjustAreaPortalState( gentity_t *ent, qboolean open ) {
171 syscall( G_ADJUST_AREA_PORTAL_STATE, ent, open );
172 }
173
trap_AreasConnected(int area1,int area2)174 qboolean trap_AreasConnected( int area1, int area2 ) {
175 return syscall( G_AREAS_CONNECTED, area1, area2 );
176 }
177
trap_LinkEntity(gentity_t * ent)178 void trap_LinkEntity( gentity_t *ent ) {
179 syscall( G_LINKENTITY, ent );
180 }
181
trap_UnlinkEntity(gentity_t * ent)182 void trap_UnlinkEntity( gentity_t *ent ) {
183 syscall( G_UNLINKENTITY, ent );
184 }
185
trap_EntitiesInBox(const vec3_t mins,const vec3_t maxs,int * list,int maxcount)186 int trap_EntitiesInBox( const vec3_t mins, const vec3_t maxs, int *list, int maxcount ) {
187 return syscall( G_ENTITIES_IN_BOX, mins, maxs, list, maxcount );
188 }
189
trap_EntityContact(const vec3_t mins,const vec3_t maxs,const gentity_t * ent)190 qboolean trap_EntityContact( const vec3_t mins, const vec3_t maxs, const gentity_t *ent ) {
191 return syscall( G_ENTITY_CONTACT, mins, maxs, ent );
192 }
193
trap_EntityContactCapsule(const vec3_t mins,const vec3_t maxs,const gentity_t * ent)194 qboolean trap_EntityContactCapsule( const vec3_t mins, const vec3_t maxs, const gentity_t *ent ) {
195 return syscall( G_ENTITY_CONTACTCAPSULE, mins, maxs, ent );
196 }
197
trap_BotAllocateClient(void)198 int trap_BotAllocateClient( void ) {
199 return syscall( G_BOT_ALLOCATE_CLIENT );
200 }
201
trap_BotFreeClient(int clientNum)202 void trap_BotFreeClient( int clientNum ) {
203 syscall( G_BOT_FREE_CLIENT, clientNum );
204 }
205
trap_GetUsercmd(int clientNum,usercmd_t * cmd)206 void trap_GetUsercmd( int clientNum, usercmd_t *cmd ) {
207 syscall( G_GET_USERCMD, clientNum, cmd );
208 }
209
trap_GetEntityToken(char * buffer,int bufferSize)210 qboolean trap_GetEntityToken( char *buffer, int bufferSize ) {
211 return syscall( G_GET_ENTITY_TOKEN, buffer, bufferSize );
212 }
213
trap_DebugPolygonCreate(int color,int numPoints,vec3_t * points)214 int trap_DebugPolygonCreate(int color, int numPoints, vec3_t *points) {
215 return syscall( G_DEBUG_POLYGON_CREATE, color, numPoints, points );
216 }
217
trap_DebugPolygonDelete(int id)218 void trap_DebugPolygonDelete(int id) {
219 syscall( G_DEBUG_POLYGON_DELETE, id );
220 }
221
trap_RealTime(qtime_t * qtime)222 int trap_RealTime( qtime_t *qtime ) {
223 return syscall( G_REAL_TIME, qtime );
224 }
225
trap_SnapVector(float * v)226 void trap_SnapVector( float *v ) {
227 syscall( G_SNAPVECTOR, v );
228 return;
229 }
230
231 // BotLib traps start here
trap_BotLibSetup(void)232 int trap_BotLibSetup( void ) {
233 return syscall( BOTLIB_SETUP );
234 }
235
trap_BotLibShutdown(void)236 int trap_BotLibShutdown( void ) {
237 return syscall( BOTLIB_SHUTDOWN );
238 }
239
trap_BotLibVarSet(char * var_name,char * value)240 int trap_BotLibVarSet(char *var_name, char *value) {
241 return syscall( BOTLIB_LIBVAR_SET, var_name, value );
242 }
243
trap_BotLibVarGet(char * var_name,char * value,int size)244 int trap_BotLibVarGet(char *var_name, char *value, int size) {
245 return syscall( BOTLIB_LIBVAR_GET, var_name, value, size );
246 }
247
trap_BotLibDefine(char * string)248 int trap_BotLibDefine(char *string) {
249 return syscall( BOTLIB_PC_ADD_GLOBAL_DEFINE, string );
250 }
251
trap_BotLibStartFrame(float time)252 int trap_BotLibStartFrame(float time) {
253 return syscall( BOTLIB_START_FRAME, PASSFLOAT( time ) );
254 }
255
trap_BotLibLoadMap(const char * mapname)256 int trap_BotLibLoadMap(const char *mapname) {
257 return syscall( BOTLIB_LOAD_MAP, mapname );
258 }
259
trap_BotLibUpdateEntity(int ent,void * bue)260 int trap_BotLibUpdateEntity(int ent, void /* struct bot_updateentity_s */ *bue) {
261 return syscall( BOTLIB_UPDATENTITY, ent, bue );
262 }
263
trap_BotLibTest(int parm0,char * parm1,vec3_t parm2,vec3_t parm3)264 int trap_BotLibTest(int parm0, char *parm1, vec3_t parm2, vec3_t parm3) {
265 return syscall( BOTLIB_TEST, parm0, parm1, parm2, parm3 );
266 }
267
trap_BotGetSnapshotEntity(int clientNum,int sequence)268 int trap_BotGetSnapshotEntity( int clientNum, int sequence ) {
269 return syscall( BOTLIB_GET_SNAPSHOT_ENTITY, clientNum, sequence );
270 }
271
trap_BotGetServerCommand(int clientNum,char * message,int size)272 int trap_BotGetServerCommand(int clientNum, char *message, int size) {
273 return syscall( BOTLIB_GET_CONSOLE_MESSAGE, clientNum, message, size );
274 }
275
trap_BotUserCommand(int clientNum,usercmd_t * ucmd)276 void trap_BotUserCommand(int clientNum, usercmd_t *ucmd) {
277 syscall( BOTLIB_USER_COMMAND, clientNum, ucmd );
278 }
279
trap_AAS_EntityInfo(int entnum,void * info)280 void trap_AAS_EntityInfo(int entnum, void /* struct aas_entityinfo_s */ *info) {
281 syscall( BOTLIB_AAS_ENTITY_INFO, entnum, info );
282 }
283
trap_AAS_Initialized(void)284 int trap_AAS_Initialized(void) {
285 return syscall( BOTLIB_AAS_INITIALIZED );
286 }
287
trap_AAS_PresenceTypeBoundingBox(int presencetype,vec3_t mins,vec3_t maxs)288 void trap_AAS_PresenceTypeBoundingBox(int presencetype, vec3_t mins, vec3_t maxs) {
289 syscall( BOTLIB_AAS_PRESENCE_TYPE_BOUNDING_BOX, presencetype, mins, maxs );
290 }
291
trap_AAS_Time(void)292 float trap_AAS_Time(void) {
293 floatint_t fi;
294 fi.i = syscall( BOTLIB_AAS_TIME );
295 return fi.f;
296 }
297
trap_AAS_PointAreaNum(vec3_t point)298 int trap_AAS_PointAreaNum(vec3_t point) {
299 return syscall( BOTLIB_AAS_POINT_AREA_NUM, point );
300 }
301
trap_AAS_PointReachabilityAreaIndex(vec3_t point)302 int trap_AAS_PointReachabilityAreaIndex(vec3_t point) {
303 return syscall( BOTLIB_AAS_POINT_REACHABILITY_AREA_INDEX, point );
304 }
305
trap_AAS_TraceAreas(vec3_t start,vec3_t end,int * areas,vec3_t * points,int maxareas)306 int trap_AAS_TraceAreas(vec3_t start, vec3_t end, int *areas, vec3_t *points, int maxareas) {
307 return syscall( BOTLIB_AAS_TRACE_AREAS, start, end, areas, points, maxareas );
308 }
309
trap_AAS_BBoxAreas(vec3_t absmins,vec3_t absmaxs,int * areas,int maxareas)310 int trap_AAS_BBoxAreas(vec3_t absmins, vec3_t absmaxs, int *areas, int maxareas) {
311 return syscall( BOTLIB_AAS_BBOX_AREAS, absmins, absmaxs, areas, maxareas );
312 }
313
trap_AAS_AreaInfo(int areanum,void * info)314 int trap_AAS_AreaInfo( int areanum, void /* struct aas_areainfo_s */ *info ) {
315 return syscall( BOTLIB_AAS_AREA_INFO, areanum, info );
316 }
317
trap_AAS_PointContents(vec3_t point)318 int trap_AAS_PointContents(vec3_t point) {
319 return syscall( BOTLIB_AAS_POINT_CONTENTS, point );
320 }
321
trap_AAS_NextBSPEntity(int ent)322 int trap_AAS_NextBSPEntity(int ent) {
323 return syscall( BOTLIB_AAS_NEXT_BSP_ENTITY, ent );
324 }
325
trap_AAS_ValueForBSPEpairKey(int ent,char * key,char * value,int size)326 int trap_AAS_ValueForBSPEpairKey(int ent, char *key, char *value, int size) {
327 return syscall( BOTLIB_AAS_VALUE_FOR_BSP_EPAIR_KEY, ent, key, value, size );
328 }
329
trap_AAS_VectorForBSPEpairKey(int ent,char * key,vec3_t v)330 int trap_AAS_VectorForBSPEpairKey(int ent, char *key, vec3_t v) {
331 return syscall( BOTLIB_AAS_VECTOR_FOR_BSP_EPAIR_KEY, ent, key, v );
332 }
333
trap_AAS_FloatForBSPEpairKey(int ent,char * key,float * value)334 int trap_AAS_FloatForBSPEpairKey(int ent, char *key, float *value) {
335 return syscall( BOTLIB_AAS_FLOAT_FOR_BSP_EPAIR_KEY, ent, key, value );
336 }
337
trap_AAS_IntForBSPEpairKey(int ent,char * key,int * value)338 int trap_AAS_IntForBSPEpairKey(int ent, char *key, int *value) {
339 return syscall( BOTLIB_AAS_INT_FOR_BSP_EPAIR_KEY, ent, key, value );
340 }
341
trap_AAS_AreaReachability(int areanum)342 int trap_AAS_AreaReachability(int areanum) {
343 return syscall( BOTLIB_AAS_AREA_REACHABILITY, areanum );
344 }
345
trap_AAS_AreaTravelTimeToGoalArea(int areanum,vec3_t origin,int goalareanum,int travelflags)346 int trap_AAS_AreaTravelTimeToGoalArea(int areanum, vec3_t origin, int goalareanum, int travelflags) {
347 return syscall( BOTLIB_AAS_AREA_TRAVEL_TIME_TO_GOAL_AREA, areanum, origin, goalareanum, travelflags );
348 }
349
trap_AAS_EnableRoutingArea(int areanum,int enable)350 int trap_AAS_EnableRoutingArea( int areanum, int enable ) {
351 return syscall( BOTLIB_AAS_ENABLE_ROUTING_AREA, areanum, enable );
352 }
353
trap_AAS_PredictRoute(void * route,int areanum,vec3_t origin,int goalareanum,int travelflags,int maxareas,int maxtime,int stopevent,int stopcontents,int stoptfl,int stopareanum)354 int trap_AAS_PredictRoute(void /*struct aas_predictroute_s*/ *route, int areanum, vec3_t origin,
355 int goalareanum, int travelflags, int maxareas, int maxtime,
356 int stopevent, int stopcontents, int stoptfl, int stopareanum) {
357 return syscall( BOTLIB_AAS_PREDICT_ROUTE, route, areanum, origin, goalareanum, travelflags, maxareas, maxtime, stopevent, stopcontents, stoptfl, stopareanum );
358 }
359
trap_AAS_AlternativeRouteGoals(vec3_t start,int startareanum,vec3_t goal,int goalareanum,int travelflags,void * altroutegoals,int maxaltroutegoals,int type)360 int trap_AAS_AlternativeRouteGoals(vec3_t start, int startareanum, vec3_t goal, int goalareanum, int travelflags,
361 void /*struct aas_altroutegoal_s*/ *altroutegoals, int maxaltroutegoals,
362 int type) {
363 return syscall( BOTLIB_AAS_ALTERNATIVE_ROUTE_GOAL, start, startareanum, goal, goalareanum, travelflags, altroutegoals, maxaltroutegoals, type );
364 }
365
trap_AAS_Swimming(vec3_t origin)366 int trap_AAS_Swimming(vec3_t origin) {
367 return syscall( BOTLIB_AAS_SWIMMING, origin );
368 }
369
trap_AAS_PredictClientMovement(void * move,int entnum,vec3_t origin,int presencetype,int onground,vec3_t velocity,vec3_t cmdmove,int cmdframes,int maxframes,float frametime,int stopevent,int stopareanum,int visualize)370 int trap_AAS_PredictClientMovement(void /* struct aas_clientmove_s */ *move, int entnum, vec3_t origin, int presencetype, int onground, vec3_t velocity, vec3_t cmdmove, int cmdframes, int maxframes, float frametime, int stopevent, int stopareanum, int visualize) {
371 return syscall( BOTLIB_AAS_PREDICT_CLIENT_MOVEMENT, move, entnum, origin, presencetype, onground, velocity, cmdmove, cmdframes, maxframes, PASSFLOAT(frametime), stopevent, stopareanum, visualize );
372 }
373
trap_EA_Say(int client,char * str)374 void trap_EA_Say(int client, char *str) {
375 syscall( BOTLIB_EA_SAY, client, str );
376 }
377
trap_EA_SayTeam(int client,char * str)378 void trap_EA_SayTeam(int client, char *str) {
379 syscall( BOTLIB_EA_SAY_TEAM, client, str );
380 }
381
trap_EA_Command(int client,char * command)382 void trap_EA_Command(int client, char *command) {
383 syscall( BOTLIB_EA_COMMAND, client, command );
384 }
385
trap_EA_Action(int client,int action)386 void trap_EA_Action(int client, int action) {
387 syscall( BOTLIB_EA_ACTION, client, action );
388 }
389
trap_EA_Gesture(int client)390 void trap_EA_Gesture(int client) {
391 syscall( BOTLIB_EA_GESTURE, client );
392 }
393
trap_EA_Talk(int client)394 void trap_EA_Talk(int client) {
395 syscall( BOTLIB_EA_TALK, client );
396 }
397
trap_EA_Attack(int client)398 void trap_EA_Attack(int client) {
399 syscall( BOTLIB_EA_ATTACK, client );
400 }
401
trap_EA_Use(int client)402 void trap_EA_Use(int client) {
403 syscall( BOTLIB_EA_USE, client );
404 }
405
trap_EA_Respawn(int client)406 void trap_EA_Respawn(int client) {
407 syscall( BOTLIB_EA_RESPAWN, client );
408 }
409
trap_EA_Crouch(int client)410 void trap_EA_Crouch(int client) {
411 syscall( BOTLIB_EA_CROUCH, client );
412 }
413
trap_EA_MoveUp(int client)414 void trap_EA_MoveUp(int client) {
415 syscall( BOTLIB_EA_MOVE_UP, client );
416 }
417
trap_EA_MoveDown(int client)418 void trap_EA_MoveDown(int client) {
419 syscall( BOTLIB_EA_MOVE_DOWN, client );
420 }
421
trap_EA_MoveForward(int client)422 void trap_EA_MoveForward(int client) {
423 syscall( BOTLIB_EA_MOVE_FORWARD, client );
424 }
425
trap_EA_MoveBack(int client)426 void trap_EA_MoveBack(int client) {
427 syscall( BOTLIB_EA_MOVE_BACK, client );
428 }
429
trap_EA_MoveLeft(int client)430 void trap_EA_MoveLeft(int client) {
431 syscall( BOTLIB_EA_MOVE_LEFT, client );
432 }
433
trap_EA_MoveRight(int client)434 void trap_EA_MoveRight(int client) {
435 syscall( BOTLIB_EA_MOVE_RIGHT, client );
436 }
437
trap_EA_SelectWeapon(int client,int weapon)438 void trap_EA_SelectWeapon(int client, int weapon) {
439 syscall( BOTLIB_EA_SELECT_WEAPON, client, weapon );
440 }
441
trap_EA_Jump(int client)442 void trap_EA_Jump(int client) {
443 syscall( BOTLIB_EA_JUMP, client );
444 }
445
trap_EA_DelayedJump(int client)446 void trap_EA_DelayedJump(int client) {
447 syscall( BOTLIB_EA_DELAYED_JUMP, client );
448 }
449
trap_EA_Move(int client,vec3_t dir,float speed)450 void trap_EA_Move(int client, vec3_t dir, float speed) {
451 syscall( BOTLIB_EA_MOVE, client, dir, PASSFLOAT(speed) );
452 }
453
trap_EA_View(int client,vec3_t viewangles)454 void trap_EA_View(int client, vec3_t viewangles) {
455 syscall( BOTLIB_EA_VIEW, client, viewangles );
456 }
457
trap_EA_EndRegular(int client,float thinktime)458 void trap_EA_EndRegular(int client, float thinktime) {
459 syscall( BOTLIB_EA_END_REGULAR, client, PASSFLOAT(thinktime) );
460 }
461
trap_EA_GetInput(int client,float thinktime,void * input)462 void trap_EA_GetInput(int client, float thinktime, void /* struct bot_input_s */ *input) {
463 syscall( BOTLIB_EA_GET_INPUT, client, PASSFLOAT(thinktime), input );
464 }
465
trap_EA_ResetInput(int client)466 void trap_EA_ResetInput(int client) {
467 syscall( BOTLIB_EA_RESET_INPUT, client );
468 }
469
trap_BotLoadCharacter(char * charfile,float skill)470 int trap_BotLoadCharacter(char *charfile, float skill) {
471 return syscall( BOTLIB_AI_LOAD_CHARACTER, charfile, PASSFLOAT(skill));
472 }
473
trap_BotFreeCharacter(int character)474 void trap_BotFreeCharacter(int character) {
475 syscall( BOTLIB_AI_FREE_CHARACTER, character );
476 }
477
trap_Characteristic_Float(int character,int index)478 float trap_Characteristic_Float(int character, int index) {
479 floatint_t fi;
480 fi.i = syscall( BOTLIB_AI_CHARACTERISTIC_FLOAT, character, index );
481 return fi.f;
482 }
483
trap_Characteristic_BFloat(int character,int index,float min,float max)484 float trap_Characteristic_BFloat(int character, int index, float min, float max) {
485 floatint_t fi;
486 fi.i = syscall( BOTLIB_AI_CHARACTERISTIC_BFLOAT, character, index, PASSFLOAT(min), PASSFLOAT(max) );
487 return fi.f;
488 }
489
trap_Characteristic_Integer(int character,int index)490 int trap_Characteristic_Integer(int character, int index) {
491 return syscall( BOTLIB_AI_CHARACTERISTIC_INTEGER, character, index );
492 }
493
trap_Characteristic_BInteger(int character,int index,int min,int max)494 int trap_Characteristic_BInteger(int character, int index, int min, int max) {
495 return syscall( BOTLIB_AI_CHARACTERISTIC_BINTEGER, character, index, min, max );
496 }
497
trap_Characteristic_String(int character,int index,char * buf,int size)498 void trap_Characteristic_String(int character, int index, char *buf, int size) {
499 syscall( BOTLIB_AI_CHARACTERISTIC_STRING, character, index, buf, size );
500 }
501
trap_BotAllocChatState(void)502 int trap_BotAllocChatState(void) {
503 return syscall( BOTLIB_AI_ALLOC_CHAT_STATE );
504 }
505
trap_BotFreeChatState(int handle)506 void trap_BotFreeChatState(int handle) {
507 syscall( BOTLIB_AI_FREE_CHAT_STATE, handle );
508 }
509
trap_BotQueueConsoleMessage(int chatstate,int type,char * message)510 void trap_BotQueueConsoleMessage(int chatstate, int type, char *message) {
511 syscall( BOTLIB_AI_QUEUE_CONSOLE_MESSAGE, chatstate, type, message );
512 }
513
trap_BotRemoveConsoleMessage(int chatstate,int handle)514 void trap_BotRemoveConsoleMessage(int chatstate, int handle) {
515 syscall( BOTLIB_AI_REMOVE_CONSOLE_MESSAGE, chatstate, handle );
516 }
517
trap_BotNextConsoleMessage(int chatstate,void * cm)518 int trap_BotNextConsoleMessage(int chatstate, void /* struct bot_consolemessage_s */ *cm) {
519 return syscall( BOTLIB_AI_NEXT_CONSOLE_MESSAGE, chatstate, cm );
520 }
521
trap_BotNumConsoleMessages(int chatstate)522 int trap_BotNumConsoleMessages(int chatstate) {
523 return syscall( BOTLIB_AI_NUM_CONSOLE_MESSAGE, chatstate );
524 }
525
trap_BotInitialChat(int chatstate,char * type,int mcontext,char * var0,char * var1,char * var2,char * var3,char * var4,char * var5,char * var6,char * var7)526 void trap_BotInitialChat(int chatstate, char *type, int mcontext, char *var0, char *var1, char *var2, char *var3, char *var4, char *var5, char *var6, char *var7 ) {
527 syscall( BOTLIB_AI_INITIAL_CHAT, chatstate, type, mcontext, var0, var1, var2, var3, var4, var5, var6, var7 );
528 }
529
trap_BotNumInitialChats(int chatstate,char * type)530 int trap_BotNumInitialChats(int chatstate, char *type) {
531 return syscall( BOTLIB_AI_NUM_INITIAL_CHATS, chatstate, type );
532 }
533
trap_BotReplyChat(int chatstate,char * message,int mcontext,int vcontext,char * var0,char * var1,char * var2,char * var3,char * var4,char * var5,char * var6,char * var7)534 int trap_BotReplyChat(int chatstate, char *message, int mcontext, int vcontext, char *var0, char *var1, char *var2, char *var3, char *var4, char *var5, char *var6, char *var7 ) {
535 return syscall( BOTLIB_AI_REPLY_CHAT, chatstate, message, mcontext, vcontext, var0, var1, var2, var3, var4, var5, var6, var7 );
536 }
537
trap_BotChatLength(int chatstate)538 int trap_BotChatLength(int chatstate) {
539 return syscall( BOTLIB_AI_CHAT_LENGTH, chatstate );
540 }
541
trap_BotEnterChat(int chatstate,int client,int sendto)542 void trap_BotEnterChat(int chatstate, int client, int sendto) {
543 syscall( BOTLIB_AI_ENTER_CHAT, chatstate, client, sendto );
544 }
545
trap_BotGetChatMessage(int chatstate,char * buf,int size)546 void trap_BotGetChatMessage(int chatstate, char *buf, int size) {
547 syscall( BOTLIB_AI_GET_CHAT_MESSAGE, chatstate, buf, size);
548 }
549
trap_StringContains(char * str1,char * str2,int casesensitive)550 int trap_StringContains(char *str1, char *str2, int casesensitive) {
551 return syscall( BOTLIB_AI_STRING_CONTAINS, str1, str2, casesensitive );
552 }
553
trap_BotFindMatch(char * str,void * match,unsigned long int context)554 int trap_BotFindMatch(char *str, void /* struct bot_match_s */ *match, unsigned long int context) {
555 return syscall( BOTLIB_AI_FIND_MATCH, str, match, context );
556 }
557
trap_BotMatchVariable(void * match,int variable,char * buf,int size)558 void trap_BotMatchVariable(void /* struct bot_match_s */ *match, int variable, char *buf, int size) {
559 syscall( BOTLIB_AI_MATCH_VARIABLE, match, variable, buf, size );
560 }
561
trap_UnifyWhiteSpaces(char * string)562 void trap_UnifyWhiteSpaces(char *string) {
563 syscall( BOTLIB_AI_UNIFY_WHITE_SPACES, string );
564 }
565
trap_BotReplaceSynonyms(char * string,unsigned long int context)566 void trap_BotReplaceSynonyms(char *string, unsigned long int context) {
567 syscall( BOTLIB_AI_REPLACE_SYNONYMS, string, context );
568 }
569
trap_BotLoadChatFile(int chatstate,char * chatfile,char * chatname)570 int trap_BotLoadChatFile(int chatstate, char *chatfile, char *chatname) {
571 return syscall( BOTLIB_AI_LOAD_CHAT_FILE, chatstate, chatfile, chatname );
572 }
573
trap_BotSetChatGender(int chatstate,int gender)574 void trap_BotSetChatGender(int chatstate, int gender) {
575 syscall( BOTLIB_AI_SET_CHAT_GENDER, chatstate, gender );
576 }
577
trap_BotSetChatName(int chatstate,char * name,int client)578 void trap_BotSetChatName(int chatstate, char *name, int client) {
579 syscall( BOTLIB_AI_SET_CHAT_NAME, chatstate, name, client );
580 }
581
trap_BotResetGoalState(int goalstate)582 void trap_BotResetGoalState(int goalstate) {
583 syscall( BOTLIB_AI_RESET_GOAL_STATE, goalstate );
584 }
585
trap_BotResetAvoidGoals(int goalstate)586 void trap_BotResetAvoidGoals(int goalstate) {
587 syscall( BOTLIB_AI_RESET_AVOID_GOALS, goalstate );
588 }
589
trap_BotRemoveFromAvoidGoals(int goalstate,int number)590 void trap_BotRemoveFromAvoidGoals(int goalstate, int number) {
591 syscall( BOTLIB_AI_REMOVE_FROM_AVOID_GOALS, goalstate, number);
592 }
593
trap_BotPushGoal(int goalstate,void * goal)594 void trap_BotPushGoal(int goalstate, void /* struct bot_goal_s */ *goal) {
595 syscall( BOTLIB_AI_PUSH_GOAL, goalstate, goal );
596 }
597
trap_BotPopGoal(int goalstate)598 void trap_BotPopGoal(int goalstate) {
599 syscall( BOTLIB_AI_POP_GOAL, goalstate );
600 }
601
trap_BotEmptyGoalStack(int goalstate)602 void trap_BotEmptyGoalStack(int goalstate) {
603 syscall( BOTLIB_AI_EMPTY_GOAL_STACK, goalstate );
604 }
605
trap_BotDumpAvoidGoals(int goalstate)606 void trap_BotDumpAvoidGoals(int goalstate) {
607 syscall( BOTLIB_AI_DUMP_AVOID_GOALS, goalstate );
608 }
609
trap_BotDumpGoalStack(int goalstate)610 void trap_BotDumpGoalStack(int goalstate) {
611 syscall( BOTLIB_AI_DUMP_GOAL_STACK, goalstate );
612 }
613
trap_BotGoalName(int number,char * name,int size)614 void trap_BotGoalName(int number, char *name, int size) {
615 syscall( BOTLIB_AI_GOAL_NAME, number, name, size );
616 }
617
trap_BotGetTopGoal(int goalstate,void * goal)618 int trap_BotGetTopGoal(int goalstate, void /* struct bot_goal_s */ *goal) {
619 return syscall( BOTLIB_AI_GET_TOP_GOAL, goalstate, goal );
620 }
621
trap_BotGetSecondGoal(int goalstate,void * goal)622 int trap_BotGetSecondGoal(int goalstate, void /* struct bot_goal_s */ *goal) {
623 return syscall( BOTLIB_AI_GET_SECOND_GOAL, goalstate, goal );
624 }
625
trap_BotChooseLTGItem(int goalstate,vec3_t origin,int * inventory,int travelflags)626 int trap_BotChooseLTGItem(int goalstate, vec3_t origin, int *inventory, int travelflags) {
627 return syscall( BOTLIB_AI_CHOOSE_LTG_ITEM, goalstate, origin, inventory, travelflags );
628 }
629
trap_BotChooseNBGItem(int goalstate,vec3_t origin,int * inventory,int travelflags,void * ltg,float maxtime)630 int trap_BotChooseNBGItem(int goalstate, vec3_t origin, int *inventory, int travelflags, void /* struct bot_goal_s */ *ltg, float maxtime) {
631 return syscall( BOTLIB_AI_CHOOSE_NBG_ITEM, goalstate, origin, inventory, travelflags, ltg, PASSFLOAT(maxtime) );
632 }
633
trap_BotTouchingGoal(vec3_t origin,void * goal)634 int trap_BotTouchingGoal(vec3_t origin, void /* struct bot_goal_s */ *goal) {
635 return syscall( BOTLIB_AI_TOUCHING_GOAL, origin, goal );
636 }
637
trap_BotItemGoalInVisButNotVisible(int viewer,vec3_t eye,vec3_t viewangles,void * goal)638 int trap_BotItemGoalInVisButNotVisible(int viewer, vec3_t eye, vec3_t viewangles, void /* struct bot_goal_s */ *goal) {
639 return syscall( BOTLIB_AI_ITEM_GOAL_IN_VIS_BUT_NOT_VISIBLE, viewer, eye, viewangles, goal );
640 }
641
trap_BotGetLevelItemGoal(int index,char * classname,void * goal)642 int trap_BotGetLevelItemGoal(int index, char *classname, void /* struct bot_goal_s */ *goal) {
643 return syscall( BOTLIB_AI_GET_LEVEL_ITEM_GOAL, index, classname, goal );
644 }
645
trap_BotGetNextCampSpotGoal(int num,void * goal)646 int trap_BotGetNextCampSpotGoal(int num, void /* struct bot_goal_s */ *goal) {
647 return syscall( BOTLIB_AI_GET_NEXT_CAMP_SPOT_GOAL, num, goal );
648 }
649
trap_BotGetMapLocationGoal(char * name,void * goal)650 int trap_BotGetMapLocationGoal(char *name, void /* struct bot_goal_s */ *goal) {
651 return syscall( BOTLIB_AI_GET_MAP_LOCATION_GOAL, name, goal );
652 }
653
trap_BotAvoidGoalTime(int goalstate,int number)654 float trap_BotAvoidGoalTime(int goalstate, int number) {
655 floatint_t fi;
656 fi.i = syscall( BOTLIB_AI_AVOID_GOAL_TIME, goalstate, number );
657 return fi.f;
658 }
659
trap_BotSetAvoidGoalTime(int goalstate,int number,float avoidtime)660 void trap_BotSetAvoidGoalTime(int goalstate, int number, float avoidtime) {
661 syscall( BOTLIB_AI_SET_AVOID_GOAL_TIME, goalstate, number, PASSFLOAT(avoidtime));
662 }
663
trap_BotInitLevelItems(void)664 void trap_BotInitLevelItems(void) {
665 syscall( BOTLIB_AI_INIT_LEVEL_ITEMS );
666 }
667
trap_BotUpdateEntityItems(void)668 void trap_BotUpdateEntityItems(void) {
669 syscall( BOTLIB_AI_UPDATE_ENTITY_ITEMS );
670 }
671
trap_BotLoadItemWeights(int goalstate,char * filename)672 int trap_BotLoadItemWeights(int goalstate, char *filename) {
673 return syscall( BOTLIB_AI_LOAD_ITEM_WEIGHTS, goalstate, filename );
674 }
675
trap_BotFreeItemWeights(int goalstate)676 void trap_BotFreeItemWeights(int goalstate) {
677 syscall( BOTLIB_AI_FREE_ITEM_WEIGHTS, goalstate );
678 }
679
trap_BotInterbreedGoalFuzzyLogic(int parent1,int parent2,int child)680 void trap_BotInterbreedGoalFuzzyLogic(int parent1, int parent2, int child) {
681 syscall( BOTLIB_AI_INTERBREED_GOAL_FUZZY_LOGIC, parent1, parent2, child );
682 }
683
trap_BotSaveGoalFuzzyLogic(int goalstate,char * filename)684 void trap_BotSaveGoalFuzzyLogic(int goalstate, char *filename) {
685 syscall( BOTLIB_AI_SAVE_GOAL_FUZZY_LOGIC, goalstate, filename );
686 }
687
trap_BotMutateGoalFuzzyLogic(int goalstate,float range)688 void trap_BotMutateGoalFuzzyLogic(int goalstate, float range) {
689 syscall( BOTLIB_AI_MUTATE_GOAL_FUZZY_LOGIC, goalstate, range );
690 }
691
trap_BotAllocGoalState(int state)692 int trap_BotAllocGoalState(int state) {
693 return syscall( BOTLIB_AI_ALLOC_GOAL_STATE, state );
694 }
695
trap_BotFreeGoalState(int handle)696 void trap_BotFreeGoalState(int handle) {
697 syscall( BOTLIB_AI_FREE_GOAL_STATE, handle );
698 }
699
trap_BotResetMoveState(int movestate)700 void trap_BotResetMoveState(int movestate) {
701 syscall( BOTLIB_AI_RESET_MOVE_STATE, movestate );
702 }
703
trap_BotAddAvoidSpot(int movestate,vec3_t origin,float radius,int type)704 void trap_BotAddAvoidSpot(int movestate, vec3_t origin, float radius, int type) {
705 syscall( BOTLIB_AI_ADD_AVOID_SPOT, movestate, origin, PASSFLOAT(radius), type);
706 }
707
trap_BotMoveToGoal(void * result,int movestate,void * goal,int travelflags)708 void trap_BotMoveToGoal(void /* struct bot_moveresult_s */ *result, int movestate, void /* struct bot_goal_s */ *goal, int travelflags) {
709 syscall( BOTLIB_AI_MOVE_TO_GOAL, result, movestate, goal, travelflags );
710 }
711
trap_BotMoveInDirection(int movestate,vec3_t dir,float speed,int type)712 int trap_BotMoveInDirection(int movestate, vec3_t dir, float speed, int type) {
713 return syscall( BOTLIB_AI_MOVE_IN_DIRECTION, movestate, dir, PASSFLOAT(speed), type );
714 }
715
trap_BotResetAvoidReach(int movestate)716 void trap_BotResetAvoidReach(int movestate) {
717 syscall( BOTLIB_AI_RESET_AVOID_REACH, movestate );
718 }
719
trap_BotResetLastAvoidReach(int movestate)720 void trap_BotResetLastAvoidReach(int movestate) {
721 syscall( BOTLIB_AI_RESET_LAST_AVOID_REACH,movestate );
722 }
723
trap_BotReachabilityArea(vec3_t origin,int testground)724 int trap_BotReachabilityArea(vec3_t origin, int testground) {
725 return syscall( BOTLIB_AI_REACHABILITY_AREA, origin, testground );
726 }
727
trap_BotMovementViewTarget(int movestate,void * goal,int travelflags,float lookahead,vec3_t target)728 int trap_BotMovementViewTarget(int movestate, void /* struct bot_goal_s */ *goal, int travelflags, float lookahead, vec3_t target) {
729 return syscall( BOTLIB_AI_MOVEMENT_VIEW_TARGET, movestate, goal, travelflags, PASSFLOAT(lookahead), target );
730 }
731
trap_BotPredictVisiblePosition(vec3_t origin,int areanum,void * goal,int travelflags,vec3_t target)732 int trap_BotPredictVisiblePosition(vec3_t origin, int areanum, void /* struct bot_goal_s */ *goal, int travelflags, vec3_t target) {
733 return syscall( BOTLIB_AI_PREDICT_VISIBLE_POSITION, origin, areanum, goal, travelflags, target );
734 }
735
trap_BotAllocMoveState(void)736 int trap_BotAllocMoveState(void) {
737 return syscall( BOTLIB_AI_ALLOC_MOVE_STATE );
738 }
739
trap_BotFreeMoveState(int handle)740 void trap_BotFreeMoveState(int handle) {
741 syscall( BOTLIB_AI_FREE_MOVE_STATE, handle );
742 }
743
trap_BotInitMoveState(int handle,void * initmove)744 void trap_BotInitMoveState(int handle, void /* struct bot_initmove_s */ *initmove) {
745 syscall( BOTLIB_AI_INIT_MOVE_STATE, handle, initmove );
746 }
747
trap_BotChooseBestFightWeapon(int weaponstate,int * inventory)748 int trap_BotChooseBestFightWeapon(int weaponstate, int *inventory) {
749 return syscall( BOTLIB_AI_CHOOSE_BEST_FIGHT_WEAPON, weaponstate, inventory );
750 }
751
trap_BotGetWeaponInfo(int weaponstate,int weapon,void * weaponinfo)752 void trap_BotGetWeaponInfo(int weaponstate, int weapon, void /* struct weaponinfo_s */ *weaponinfo) {
753 syscall( BOTLIB_AI_GET_WEAPON_INFO, weaponstate, weapon, weaponinfo );
754 }
755
trap_BotLoadWeaponWeights(int weaponstate,char * filename)756 int trap_BotLoadWeaponWeights(int weaponstate, char *filename) {
757 return syscall( BOTLIB_AI_LOAD_WEAPON_WEIGHTS, weaponstate, filename );
758 }
759
trap_BotAllocWeaponState(void)760 int trap_BotAllocWeaponState(void) {
761 return syscall( BOTLIB_AI_ALLOC_WEAPON_STATE );
762 }
763
trap_BotFreeWeaponState(int weaponstate)764 void trap_BotFreeWeaponState(int weaponstate) {
765 syscall( BOTLIB_AI_FREE_WEAPON_STATE, weaponstate );
766 }
767
trap_BotResetWeaponState(int weaponstate)768 void trap_BotResetWeaponState(int weaponstate) {
769 syscall( BOTLIB_AI_RESET_WEAPON_STATE, weaponstate );
770 }
771
trap_GeneticParentsAndChildSelection(int numranks,float * ranks,int * parent1,int * parent2,int * child)772 int trap_GeneticParentsAndChildSelection(int numranks, float *ranks, int *parent1, int *parent2, int *child) {
773 return syscall( BOTLIB_AI_GENETIC_PARENTS_AND_CHILD_SELECTION, numranks, ranks, parent1, parent2, child );
774 }
775
trap_PC_LoadSource(const char * filename)776 int trap_PC_LoadSource( const char *filename ) {
777 return syscall( BOTLIB_PC_LOAD_SOURCE, filename );
778 }
779
trap_PC_FreeSource(int handle)780 int trap_PC_FreeSource( int handle ) {
781 return syscall( BOTLIB_PC_FREE_SOURCE, handle );
782 }
783
trap_PC_ReadToken(int handle,pc_token_t * pc_token)784 int trap_PC_ReadToken( int handle, pc_token_t *pc_token ) {
785 return syscall( BOTLIB_PC_READ_TOKEN, handle, pc_token );
786 }
787
trap_PC_SourceFileAndLine(int handle,char * filename,int * line)788 int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ) {
789 return syscall( BOTLIB_PC_SOURCE_FILE_AND_LINE, handle, filename, line );
790 }
791