game-source/fbxa/libfrikbot.h

186 lines
5.7 KiB
C

#define FALSE 0
#define TRUE 1
// ----- entity fields ---
@extern .float wallhug, keys, oldkeys, ishuman;
@extern .float b_frags;
@extern .integer b_clientno;
@extern .float b_shirt, b_pants;
@extern .float priority, ai_time, b_sound, missile_speed;
@extern .float portal_time, b_skill, switch_wallhug;
@extern .float b_aiflags, b_num, b_chattime;
@extern .float b_entertime, b_userid; // QW shtuff
@extern .float b_menu, b_menu_time, b_menu_value;
@extern .float route_failed, dyn_flags, dyn_time;
@extern .float dyn_plat;
@extern .entity temp_way, last_way, phys_obj;
@extern .entity target1, target2, target3, target4;
@extern .entity _next, _last;
@extern .entity current_way;
@extern .vector b_angle, b_dest, mouse_emu, obs_dir;
@extern .vector movevect, b_dir;
@extern .vector dyn_dest;
@extern .vector punchangle; // HACK - Don't want to screw with bot_phys
// --------defines-----
#define SVC_UPDATENAME 13
#define SVC_UPDATEFRAGS 14
#define SVC_UPDATECOLORS 17
// used for the physics & movement AI
#define KEY_MOVEUP 1
#define KEY_MOVEDOWN 2
#define KEY_MOVELEFT 4
#define KEY_MOVERIGHT 8
#define KEY_MOVEFORWARD 16
#define KEY_MOVEBACK 32
#define KEY_LOOKUP 64
#define KEY_LOOKDOWN 128
#define KEY_LOOKLEFT 256
#define KEY_LOOKRIGHT 512
// these are aiflags for waypoints
// some overlap to the bot
#define AI_TELELINK_1 1 // link type
#define AI_TELELINK_2 2 // link type
#define AI_TELELINK_3 4 // link type
#define AI_TELELINK_4 8 // link type
#define AI_DOORFLAG 16 // read ahead
#define AI_PRECISION 32 // read ahead + point
#define AI_SURFACE 64 // point
#define AI_BLIND 128 // read ahead + point
#define AI_JUMP 256 // point + ignore
#define AI_DIRECTIONAL 512 // read ahead + ignore
#define AI_PLAT_BOTTOM 1024 // read ahead
#define AI_RIDE_TRAIN 2048 // read ahead
#define AI_SUPER_JUMP 4096 // point + ignore + route test
#define AI_SNIPER 8192 // point type
#define AI_AMBUSH 16384 // point type
#define AI_DOOR_NO_OPEN 32768 // read ahead
#define AI_DIFFICULT 65536 // route test
#define AI_TRACE_TEST 131072 // route test
// these are flags for bots/players (dynamic/editor flags)
#define AI_OBSTRUCTED 1
#define AI_HOLD_SELECT 2
#define AI_ROUTE_FAILED 2
#define AI_WAIT 4
#define AI_DANGER 8
// addition masks
#define AI_POINT_TYPES 29152
#define AI_READAHEAD_TYPES 36528
#define AI_IGNORE_TYPES 4864
#define WM_UNINIT 0
#define WM_DYNAMIC 1
#define WM_LOADING 2
#define WM_LOADED 3
// editor modes aren't available in QW, but we retain support of them
// since the editor is still built into the AI in places
#define WM_EDITOR 4
#define WM_EDITOR_DYNAMIC 5
#define WM_EDITOR_DYNLINK 6
#define OPT_NOCHAT 2
// -------globals-----
@extern entity [32] players;
@extern integer max_clients;
@extern float real_frametime;
@extern float bot_count, b_options, lasttime;
@extern float waypoint_mode, dump_mode;
@extern float waypoints, direct_route, userid;
@extern float sv_friction, sv_gravity;
@extern float sv_accelerate, sv_maxspeed, sv_stopspeed;
@extern entity fixer;
@extern entity route_table;
@extern entity b_temp1, b_temp2, b_temp3;
@extern entity way_head;
@extern float busy_waypoints;
@extern float coop;
// -------ProtoTypes------
// external
@extern void() ClientConnect;
@extern void() ClientDisconnect;
@extern void() SetNewParms;
// fight
@extern void(float brange) bot_weapon_switch;
@extern void() bot_fight_style;
@extern void() bot_dodge_stuff;
// rankings
@extern integer (entity e) ClientNumber;
@extern float(integer clientno) ClientBitFlag;
@extern integer() ClientNextAvailable;
@extern void(float whatbot, float whatskill) BotConnect;
@extern void(entity bot) BotDisconnect;
@extern void(float clientno) BotInvalidClientNo;
@extern void(entity who) UpdateClient;
// waypointing
@extern void() DynamicWaypoint;
@extern entity(vector org) make_waypoint;
@extern void() ClearAllWays;
@extern void() FixWaypoints;
@extern float() begin_route;
@extern void(entity this, float direct) bot_get_path;
@extern void() WaypointThink;
@extern entity(entity start) FindWayPoint;
@extern void() ClearMyRoute;
@extern entity(entity lastone) FindRoute;
@extern float (entity e1, entity e2) CheckLinked;
@extern void(vector org) SpawnTempWaypoint;
@extern void(vector org, vector bit1, float bit4, float flargs) make_way;
@extern void () map_dm1;
@extern void () map_dm2;
@extern void () map_dm3;
@extern void () map_dm4;
@extern void () map_dm5;
@extern void () map_dm6;
// physics & movement
@extern float(entity e) bot_can_rj;
@extern void() bot_jump;
@extern void() frik_bot_roam;
@extern float(vector weird) frik_walkmove;
@extern void() frik_movetogoal;
@extern void() frik_obstacles;
@extern float(float flag) frik_recognize_plat;
@extern float(vector sdir) frik_KeysForDir;
@extern void(vector whichway, float danger) frik_obstructed;
@extern void() SV_Physics_Client;
@extern void() SV_ClientThink;
@extern void() CL_KeyMove;
@extern entity(string s) FindThing;
// ai & misc
@extern void() BotAI;
@extern string() PickARandomName;
@extern float(entity targ) fov;
@extern float(float y1, float y2) angcomp;
@extern float(entity targ1, entity targ2) wisible;
@extern float(entity targ) sisible;
@extern float(entity targ) fisible;
@extern vector(entity ent) realorigin;
@extern void(entity ent) target_drop;
@extern void(entity ent) target_add;
@extern void() KickABot;
@extern void() BotImpulses;
@extern void(entity targ, float success) bot_lost;
@extern string(float r) BotName;
@extern float(float v) frik_anglemod;
@extern void() bot_chat;
@extern void(float tpic) bot_start_topic;
@extern void(string h) BotSay;
@extern void() BotSayInit;
@extern void(string h) BotSay2;
@extern void(string h) BotSayTeam;
@extern void(entity e1, entity e2, float flag) DeveloperLightning;
#include "defs.h"