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