diff options
author | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 17:39:27 +0000 |
---|---|---|
committer | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 17:39:27 +0000 |
commit | 6bf20c78f5b69d40bcc4931df93d29198435ab67 (patch) | |
tree | e3eda937a05d7db42de725b7013bd0344b987f34 /code/game/ai_main.h | |
parent | 872d4d7f55af706737ffb361bb76ad13e7496770 (diff) | |
download | ioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.tar.gz ioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.zip |
newlines fixed
git-svn-id: svn://svn.icculus.org/quake3/trunk@6 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/game/ai_main.h')
-rwxr-xr-x | code/game/ai_main.h | 598 |
1 files changed, 299 insertions, 299 deletions
diff --git a/code/game/ai_main.h b/code/game/ai_main.h index 91e8895..5d0e9ec 100755 --- a/code/game/ai_main.h +++ b/code/game/ai_main.h @@ -1,299 +1,299 @@ -/*
-===========================================================================
-Copyright (C) 1999-2005 Id Software, Inc.
-
-This file is part of Quake III Arena source code.
-
-Quake III Arena source code is free software; you can redistribute it
-and/or modify it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2 of the License,
-or (at your option) any later version.
-
-Quake III Arena source code is distributed in the hope that it will be
-useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Foobar; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-===========================================================================
-*/
-//
-
-/*****************************************************************************
- * name: ai_main.h
- *
- * desc: Quake3 bot AI
- *
- * $Archive: /source/code/botai/ai_chat.c $
- *
- *****************************************************************************/
-
-//#define DEBUG
-#define CTF
-
-#define MAX_ITEMS 256
-//bot flags
-#define BFL_STRAFERIGHT 1 //strafe to the right
-#define BFL_ATTACKED 2 //bot has attacked last ai frame
-#define BFL_ATTACKJUMPED 4 //bot jumped during attack last frame
-#define BFL_AIMATENEMY 8 //bot aimed at the enemy this frame
-#define BFL_AVOIDRIGHT 16 //avoid obstacles by going to the right
-#define BFL_IDEALVIEWSET 32 //bot has ideal view angles set
-#define BFL_FIGHTSUICIDAL 64 //bot is in a suicidal fight
-//long term goal types
-#define LTG_TEAMHELP 1 //help a team mate
-#define LTG_TEAMACCOMPANY 2 //accompany a team mate
-#define LTG_DEFENDKEYAREA 3 //defend a key area
-#define LTG_GETFLAG 4 //get the enemy flag
-#define LTG_RUSHBASE 5 //rush to the base
-#define LTG_RETURNFLAG 6 //return the flag
-#define LTG_CAMP 7 //camp somewhere
-#define LTG_CAMPORDER 8 //ordered to camp somewhere
-#define LTG_PATROL 9 //patrol
-#define LTG_GETITEM 10 //get an item
-#define LTG_KILL 11 //kill someone
-#define LTG_HARVEST 12 //harvest skulls
-#define LTG_ATTACKENEMYBASE 13 //attack the enemy base
-#define LTG_MAKELOVE_UNDER 14
-#define LTG_MAKELOVE_ONTOP 15
-//some goal dedication times
-#define TEAM_HELP_TIME 60 //1 minute teamplay help time
-#define TEAM_ACCOMPANY_TIME 600 //10 minutes teamplay accompany time
-#define TEAM_DEFENDKEYAREA_TIME 600 //10 minutes ctf defend base time
-#define TEAM_CAMP_TIME 600 //10 minutes camping time
-#define TEAM_PATROL_TIME 600 //10 minutes patrolling time
-#define TEAM_LEAD_TIME 600 //10 minutes taking the lead
-#define TEAM_GETITEM_TIME 60 //1 minute
-#define TEAM_KILL_SOMEONE 180 //3 minute to kill someone
-#define TEAM_ATTACKENEMYBASE_TIME 600 //10 minutes
-#define TEAM_HARVEST_TIME 120 //2 minutes
-#define CTF_GETFLAG_TIME 600 //10 minutes ctf get flag time
-#define CTF_RUSHBASE_TIME 120 //2 minutes ctf rush base time
-#define CTF_RETURNFLAG_TIME 180 //3 minutes to return the flag
-#define CTF_ROAM_TIME 60 //1 minute ctf roam time
-//patrol flags
-#define PATROL_LOOP 1
-#define PATROL_REVERSE 2
-#define PATROL_BACK 4
-//teamplay task preference
-#define TEAMTP_DEFENDER 1
-#define TEAMTP_ATTACKER 2
-//CTF strategy
-#define CTFS_AGRESSIVE 1
-//copied from the aas file header
-#define PRESENCE_NONE 1
-#define PRESENCE_NORMAL 2
-#define PRESENCE_CROUCH 4
-//
-#define MAX_PROXMINES 64
-
-//check points
-typedef struct bot_waypoint_s
-{
- int inuse;
- char name[32];
- bot_goal_t goal;
- struct bot_waypoint_s *next, *prev;
-} bot_waypoint_t;
-
-#define MAX_ACTIVATESTACK 8
-#define MAX_ACTIVATEAREAS 32
-
-typedef struct bot_activategoal_s
-{
- int inuse;
- bot_goal_t goal; //goal to activate (buttons etc.)
- float time; //time to activate something
- float start_time; //time starting to activate something
- float justused_time; //time the goal was used
- int shoot; //true if bot has to shoot to activate
- int weapon; //weapon to be used for activation
- vec3_t target; //target to shoot at to activate something
- vec3_t origin; //origin of the blocking entity to activate
- int areas[MAX_ACTIVATEAREAS]; //routing areas disabled by blocking entity
- int numareas; //number of disabled routing areas
- int areasdisabled; //true if the areas are disabled for the routing
- struct bot_activategoal_s *next; //next activate goal on stack
-} bot_activategoal_t;
-
-//bot state
-typedef struct bot_state_s
-{
- int inuse; //true if this state is used by a bot client
- int botthink_residual; //residual for the bot thinks
- int client; //client number of the bot
- int entitynum; //entity number of the bot
- playerState_t cur_ps; //current player state
- int last_eFlags; //last ps flags
- usercmd_t lastucmd; //usercmd from last frame
- int entityeventTime[1024]; //last entity event time
- //
- bot_settings_t settings; //several bot settings
- int (*ainode)(struct bot_state_s *bs); //current AI node
- float thinktime; //time the bot thinks this frame
- vec3_t origin; //origin of the bot
- vec3_t velocity; //velocity of the bot
- int presencetype; //presence type of the bot
- vec3_t eye; //eye coordinates of the bot
- int areanum; //the number of the area the bot is in
- int inventory[MAX_ITEMS]; //string with items amounts the bot has
- int tfl; //the travel flags the bot uses
- int flags; //several flags
- int respawn_wait; //wait until respawned
- int lasthealth; //health value previous frame
- int lastkilledplayer; //last killed player
- int lastkilledby; //player that last killed this bot
- int botdeathtype; //the death type of the bot
- int enemydeathtype; //the death type of the enemy
- int botsuicide; //true when the bot suicides
- int enemysuicide; //true when the enemy of the bot suicides
- int setupcount; //true when the bot has just been setup
- int map_restart; //true when the map is being restarted
- int entergamechat; //true when the bot used an enter game chat
- int num_deaths; //number of time this bot died
- int num_kills; //number of kills of this bot
- int revenge_enemy; //the revenge enemy
- int revenge_kills; //number of kills the enemy made
- int lastframe_health; //health value the last frame
- int lasthitcount; //number of hits last frame
- int chatto; //chat to all or team
- float walker; //walker charactertic
- float ltime; //local bot time
- float entergame_time; //time the bot entered the game
- float ltg_time; //long term goal time
- float nbg_time; //nearby goal time
- float respawn_time; //time the bot takes to respawn
- float respawnchat_time; //time the bot started a chat during respawn
- float chase_time; //time the bot will chase the enemy
- float enemyvisible_time; //time the enemy was last visible
- float check_time; //time to check for nearby items
- float stand_time; //time the bot is standing still
- float lastchat_time; //time the bot last selected a chat
- float kamikaze_time; //time to check for kamikaze usage
- float invulnerability_time; //time to check for invulnerability usage
- float standfindenemy_time; //time to find enemy while standing
- float attackstrafe_time; //time the bot is strafing in one dir
- float attackcrouch_time; //time the bot will stop crouching
- float attackchase_time; //time the bot chases during actual attack
- float attackjump_time; //time the bot jumped during attack
- float enemysight_time; //time before reacting to enemy
- float enemydeath_time; //time the enemy died
- float enemyposition_time; //time the position and velocity of the enemy were stored
- float defendaway_time; //time away while defending
- float defendaway_range; //max travel time away from defend area
- float rushbaseaway_time; //time away from rushing to the base
- float attackaway_time; //time away from attacking the enemy base
- float harvestaway_time; //time away from harvesting
- float ctfroam_time; //time the bot is roaming in ctf
- float killedenemy_time; //time the bot killed the enemy
- float arrive_time; //time arrived (at companion)
- float lastair_time; //last time the bot had air
- float teleport_time; //last time the bot teleported
- float camp_time; //last time camped
- float camp_range; //camp range
- float weaponchange_time; //time the bot started changing weapons
- float firethrottlewait_time; //amount of time to wait
- float firethrottleshoot_time; //amount of time to shoot
- float notblocked_time; //last time the bot was not blocked
- float blockedbyavoidspot_time; //time blocked by an avoid spot
- float predictobstacles_time; //last time the bot predicted obstacles
- int predictobstacles_goalareanum; //last goal areanum the bot predicted obstacles for
- vec3_t aimtarget;
- vec3_t enemyvelocity; //enemy velocity 0.5 secs ago during battle
- vec3_t enemyorigin; //enemy origin 0.5 secs ago during battle
- //
- int kamikazebody; //kamikaze body
- int proxmines[MAX_PROXMINES];
- int numproxmines;
- //
- int character; //the bot character
- int ms; //move state of the bot
- int gs; //goal state of the bot
- int cs; //chat state of the bot
- int ws; //weapon state of the bot
- //
- int enemy; //enemy entity number
- int lastenemyareanum; //last reachability area the enemy was in
- vec3_t lastenemyorigin; //last origin of the enemy in the reachability area
- int weaponnum; //current weapon number
- vec3_t viewangles; //current view angles
- vec3_t ideal_viewangles; //ideal view angles
- vec3_t viewanglespeed;
- //
- int ltgtype; //long term goal type
- // team goals
- int teammate; //team mate involved in this team goal
- int decisionmaker; //player who decided to go for this goal
- int ordered; //true if ordered to do something
- float order_time; //time ordered to do something
- int owndecision_time; //time the bot made it's own decision
- bot_goal_t teamgoal; //the team goal
- bot_goal_t altroutegoal; //alternative route goal
- float reachedaltroutegoal_time; //time the bot reached the alt route goal
- float teammessage_time; //time to message team mates what the bot is doing
- float teamgoal_time; //time to stop helping team mate
- float teammatevisible_time; //last time the team mate was NOT visible
- int teamtaskpreference; //team task preference
- // last ordered team goal
- int lastgoal_decisionmaker;
- int lastgoal_ltgtype;
- int lastgoal_teammate;
- bot_goal_t lastgoal_teamgoal;
- // for leading team mates
- int lead_teammate; //team mate the bot is leading
- bot_goal_t lead_teamgoal; //team goal while leading
- float lead_time; //time leading someone
- float leadvisible_time; //last time the team mate was visible
- float leadmessage_time; //last time a messaged was sent to the team mate
- float leadbackup_time; //time backing up towards team mate
- //
- char teamleader[32]; //netname of the team leader
- float askteamleader_time; //time asked for team leader
- float becometeamleader_time; //time the bot will become the team leader
- float teamgiveorders_time; //time to give team orders
- float lastflagcapture_time; //last time a flag was captured
- int numteammates; //number of team mates
- int redflagstatus; //0 = at base, 1 = not at base
- int blueflagstatus; //0 = at base, 1 = not at base
- int neutralflagstatus; //0 = at base, 1 = our team has flag, 2 = enemy team has flag, 3 = enemy team dropped the flag
- int flagstatuschanged; //flag status changed
- int forceorders; //true if forced to give orders
- int flagcarrier; //team mate carrying the enemy flag
- int ctfstrategy; //ctf strategy
- char subteam[32]; //sub team name
- float formation_dist; //formation team mate intervening space
- char formation_teammate[16]; //netname of the team mate the bot uses for relative positioning
- float formation_angle; //angle relative to the formation team mate
- vec3_t formation_dir; //the direction the formation is moving in
- vec3_t formation_origin; //origin the bot uses for relative positioning
- bot_goal_t formation_goal; //formation goal
-
- bot_activategoal_t *activatestack; //first activate goal on the stack
- bot_activategoal_t activategoalheap[MAX_ACTIVATESTACK]; //activate goal heap
-
- bot_waypoint_t *checkpoints; //check points
- bot_waypoint_t *patrolpoints; //patrol points
- bot_waypoint_t *curpatrolpoint; //current patrol point the bot is going for
- int patrolflags; //patrol flags
-} bot_state_t;
-
-//resets the whole bot state
-void BotResetState(bot_state_t *bs);
-//returns the number of bots in the game
-int NumBots(void);
-//returns info about the entity
-void BotEntityInfo(int entnum, aas_entityinfo_t *info);
-
-extern float floattime;
-#define FloatTime() floattime
-
-// from the game source
-void QDECL BotAI_Print(int type, char *fmt, ...);
-void QDECL QDECL BotAI_BotInitialChat( bot_state_t *bs, char *type, ... );
-void BotAI_Trace(bsp_trace_t *bsptrace, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int passent, int contentmask);
-int BotAI_GetClientState( int clientNum, playerState_t *state );
-int BotAI_GetEntityState( int entityNum, entityState_t *state );
-int BotAI_GetSnapshotEntity( int clientNum, int sequence, entityState_t *state );
-int BotTeamLeader(bot_state_t *bs);
+/* +=========================================================================== +Copyright (C) 1999-2005 Id Software, Inc. + +This file is part of Quake III Arena source code. + +Quake III Arena source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +Quake III Arena source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Foobar; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ +// + +/***************************************************************************** + * name: ai_main.h + * + * desc: Quake3 bot AI + * + * $Archive: /source/code/botai/ai_chat.c $ + * + *****************************************************************************/ + +//#define DEBUG +#define CTF + +#define MAX_ITEMS 256 +//bot flags +#define BFL_STRAFERIGHT 1 //strafe to the right +#define BFL_ATTACKED 2 //bot has attacked last ai frame +#define BFL_ATTACKJUMPED 4 //bot jumped during attack last frame +#define BFL_AIMATENEMY 8 //bot aimed at the enemy this frame +#define BFL_AVOIDRIGHT 16 //avoid obstacles by going to the right +#define BFL_IDEALVIEWSET 32 //bot has ideal view angles set +#define BFL_FIGHTSUICIDAL 64 //bot is in a suicidal fight +//long term goal types +#define LTG_TEAMHELP 1 //help a team mate +#define LTG_TEAMACCOMPANY 2 //accompany a team mate +#define LTG_DEFENDKEYAREA 3 //defend a key area +#define LTG_GETFLAG 4 //get the enemy flag +#define LTG_RUSHBASE 5 //rush to the base +#define LTG_RETURNFLAG 6 //return the flag +#define LTG_CAMP 7 //camp somewhere +#define LTG_CAMPORDER 8 //ordered to camp somewhere +#define LTG_PATROL 9 //patrol +#define LTG_GETITEM 10 //get an item +#define LTG_KILL 11 //kill someone +#define LTG_HARVEST 12 //harvest skulls +#define LTG_ATTACKENEMYBASE 13 //attack the enemy base +#define LTG_MAKELOVE_UNDER 14 +#define LTG_MAKELOVE_ONTOP 15 +//some goal dedication times +#define TEAM_HELP_TIME 60 //1 minute teamplay help time +#define TEAM_ACCOMPANY_TIME 600 //10 minutes teamplay accompany time +#define TEAM_DEFENDKEYAREA_TIME 600 //10 minutes ctf defend base time +#define TEAM_CAMP_TIME 600 //10 minutes camping time +#define TEAM_PATROL_TIME 600 //10 minutes patrolling time +#define TEAM_LEAD_TIME 600 //10 minutes taking the lead +#define TEAM_GETITEM_TIME 60 //1 minute +#define TEAM_KILL_SOMEONE 180 //3 minute to kill someone +#define TEAM_ATTACKENEMYBASE_TIME 600 //10 minutes +#define TEAM_HARVEST_TIME 120 //2 minutes +#define CTF_GETFLAG_TIME 600 //10 minutes ctf get flag time +#define CTF_RUSHBASE_TIME 120 //2 minutes ctf rush base time +#define CTF_RETURNFLAG_TIME 180 //3 minutes to return the flag +#define CTF_ROAM_TIME 60 //1 minute ctf roam time +//patrol flags +#define PATROL_LOOP 1 +#define PATROL_REVERSE 2 +#define PATROL_BACK 4 +//teamplay task preference +#define TEAMTP_DEFENDER 1 +#define TEAMTP_ATTACKER 2 +//CTF strategy +#define CTFS_AGRESSIVE 1 +//copied from the aas file header +#define PRESENCE_NONE 1 +#define PRESENCE_NORMAL 2 +#define PRESENCE_CROUCH 4 +// +#define MAX_PROXMINES 64 + +//check points +typedef struct bot_waypoint_s +{ + int inuse; + char name[32]; + bot_goal_t goal; + struct bot_waypoint_s *next, *prev; +} bot_waypoint_t; + +#define MAX_ACTIVATESTACK 8 +#define MAX_ACTIVATEAREAS 32 + +typedef struct bot_activategoal_s +{ + int inuse; + bot_goal_t goal; //goal to activate (buttons etc.) + float time; //time to activate something + float start_time; //time starting to activate something + float justused_time; //time the goal was used + int shoot; //true if bot has to shoot to activate + int weapon; //weapon to be used for activation + vec3_t target; //target to shoot at to activate something + vec3_t origin; //origin of the blocking entity to activate + int areas[MAX_ACTIVATEAREAS]; //routing areas disabled by blocking entity + int numareas; //number of disabled routing areas + int areasdisabled; //true if the areas are disabled for the routing + struct bot_activategoal_s *next; //next activate goal on stack +} bot_activategoal_t; + +//bot state +typedef struct bot_state_s +{ + int inuse; //true if this state is used by a bot client + int botthink_residual; //residual for the bot thinks + int client; //client number of the bot + int entitynum; //entity number of the bot + playerState_t cur_ps; //current player state + int last_eFlags; //last ps flags + usercmd_t lastucmd; //usercmd from last frame + int entityeventTime[1024]; //last entity event time + // + bot_settings_t settings; //several bot settings + int (*ainode)(struct bot_state_s *bs); //current AI node + float thinktime; //time the bot thinks this frame + vec3_t origin; //origin of the bot + vec3_t velocity; //velocity of the bot + int presencetype; //presence type of the bot + vec3_t eye; //eye coordinates of the bot + int areanum; //the number of the area the bot is in + int inventory[MAX_ITEMS]; //string with items amounts the bot has + int tfl; //the travel flags the bot uses + int flags; //several flags + int respawn_wait; //wait until respawned + int lasthealth; //health value previous frame + int lastkilledplayer; //last killed player + int lastkilledby; //player that last killed this bot + int botdeathtype; //the death type of the bot + int enemydeathtype; //the death type of the enemy + int botsuicide; //true when the bot suicides + int enemysuicide; //true when the enemy of the bot suicides + int setupcount; //true when the bot has just been setup + int map_restart; //true when the map is being restarted + int entergamechat; //true when the bot used an enter game chat + int num_deaths; //number of time this bot died + int num_kills; //number of kills of this bot + int revenge_enemy; //the revenge enemy + int revenge_kills; //number of kills the enemy made + int lastframe_health; //health value the last frame + int lasthitcount; //number of hits last frame + int chatto; //chat to all or team + float walker; //walker charactertic + float ltime; //local bot time + float entergame_time; //time the bot entered the game + float ltg_time; //long term goal time + float nbg_time; //nearby goal time + float respawn_time; //time the bot takes to respawn + float respawnchat_time; //time the bot started a chat during respawn + float chase_time; //time the bot will chase the enemy + float enemyvisible_time; //time the enemy was last visible + float check_time; //time to check for nearby items + float stand_time; //time the bot is standing still + float lastchat_time; //time the bot last selected a chat + float kamikaze_time; //time to check for kamikaze usage + float invulnerability_time; //time to check for invulnerability usage + float standfindenemy_time; //time to find enemy while standing + float attackstrafe_time; //time the bot is strafing in one dir + float attackcrouch_time; //time the bot will stop crouching + float attackchase_time; //time the bot chases during actual attack + float attackjump_time; //time the bot jumped during attack + float enemysight_time; //time before reacting to enemy + float enemydeath_time; //time the enemy died + float enemyposition_time; //time the position and velocity of the enemy were stored + float defendaway_time; //time away while defending + float defendaway_range; //max travel time away from defend area + float rushbaseaway_time; //time away from rushing to the base + float attackaway_time; //time away from attacking the enemy base + float harvestaway_time; //time away from harvesting + float ctfroam_time; //time the bot is roaming in ctf + float killedenemy_time; //time the bot killed the enemy + float arrive_time; //time arrived (at companion) + float lastair_time; //last time the bot had air + float teleport_time; //last time the bot teleported + float camp_time; //last time camped + float camp_range; //camp range + float weaponchange_time; //time the bot started changing weapons + float firethrottlewait_time; //amount of time to wait + float firethrottleshoot_time; //amount of time to shoot + float notblocked_time; //last time the bot was not blocked + float blockedbyavoidspot_time; //time blocked by an avoid spot + float predictobstacles_time; //last time the bot predicted obstacles + int predictobstacles_goalareanum; //last goal areanum the bot predicted obstacles for + vec3_t aimtarget; + vec3_t enemyvelocity; //enemy velocity 0.5 secs ago during battle + vec3_t enemyorigin; //enemy origin 0.5 secs ago during battle + // + int kamikazebody; //kamikaze body + int proxmines[MAX_PROXMINES]; + int numproxmines; + // + int character; //the bot character + int ms; //move state of the bot + int gs; //goal state of the bot + int cs; //chat state of the bot + int ws; //weapon state of the bot + // + int enemy; //enemy entity number + int lastenemyareanum; //last reachability area the enemy was in + vec3_t lastenemyorigin; //last origin of the enemy in the reachability area + int weaponnum; //current weapon number + vec3_t viewangles; //current view angles + vec3_t ideal_viewangles; //ideal view angles + vec3_t viewanglespeed; + // + int ltgtype; //long term goal type + // team goals + int teammate; //team mate involved in this team goal + int decisionmaker; //player who decided to go for this goal + int ordered; //true if ordered to do something + float order_time; //time ordered to do something + int owndecision_time; //time the bot made it's own decision + bot_goal_t teamgoal; //the team goal + bot_goal_t altroutegoal; //alternative route goal + float reachedaltroutegoal_time; //time the bot reached the alt route goal + float teammessage_time; //time to message team mates what the bot is doing + float teamgoal_time; //time to stop helping team mate + float teammatevisible_time; //last time the team mate was NOT visible + int teamtaskpreference; //team task preference + // last ordered team goal + int lastgoal_decisionmaker; + int lastgoal_ltgtype; + int lastgoal_teammate; + bot_goal_t lastgoal_teamgoal; + // for leading team mates + int lead_teammate; //team mate the bot is leading + bot_goal_t lead_teamgoal; //team goal while leading + float lead_time; //time leading someone + float leadvisible_time; //last time the team mate was visible + float leadmessage_time; //last time a messaged was sent to the team mate + float leadbackup_time; //time backing up towards team mate + // + char teamleader[32]; //netname of the team leader + float askteamleader_time; //time asked for team leader + float becometeamleader_time; //time the bot will become the team leader + float teamgiveorders_time; //time to give team orders + float lastflagcapture_time; //last time a flag was captured + int numteammates; //number of team mates + int redflagstatus; //0 = at base, 1 = not at base + int blueflagstatus; //0 = at base, 1 = not at base + int neutralflagstatus; //0 = at base, 1 = our team has flag, 2 = enemy team has flag, 3 = enemy team dropped the flag + int flagstatuschanged; //flag status changed + int forceorders; //true if forced to give orders + int flagcarrier; //team mate carrying the enemy flag + int ctfstrategy; //ctf strategy + char subteam[32]; //sub team name + float formation_dist; //formation team mate intervening space + char formation_teammate[16]; //netname of the team mate the bot uses for relative positioning + float formation_angle; //angle relative to the formation team mate + vec3_t formation_dir; //the direction the formation is moving in + vec3_t formation_origin; //origin the bot uses for relative positioning + bot_goal_t formation_goal; //formation goal + + bot_activategoal_t *activatestack; //first activate goal on the stack + bot_activategoal_t activategoalheap[MAX_ACTIVATESTACK]; //activate goal heap + + bot_waypoint_t *checkpoints; //check points + bot_waypoint_t *patrolpoints; //patrol points + bot_waypoint_t *curpatrolpoint; //current patrol point the bot is going for + int patrolflags; //patrol flags +} bot_state_t; + +//resets the whole bot state +void BotResetState(bot_state_t *bs); +//returns the number of bots in the game +int NumBots(void); +//returns info about the entity +void BotEntityInfo(int entnum, aas_entityinfo_t *info); + +extern float floattime; +#define FloatTime() floattime + +// from the game source +void QDECL BotAI_Print(int type, char *fmt, ...); +void QDECL QDECL BotAI_BotInitialChat( bot_state_t *bs, char *type, ... ); +void BotAI_Trace(bsp_trace_t *bsptrace, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int passent, int contentmask); +int BotAI_GetClientState( int clientNum, playerState_t *state ); +int BotAI_GetEntityState( int entityNum, entityState_t *state ); +int BotAI_GetSnapshotEntity( int clientNum, int sequence, entityState_t *state ); +int BotTeamLeader(bot_state_t *bs); |