This commit is contained in:
Walter Julius Hennecke 2014-03-09 23:49:29 +01:00
parent 7b03b70668
commit d4d5f3f521
20 changed files with 2492 additions and 2517 deletions

View File

@ -1,45 +1,45 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: ai_chat.h * name: ai_chat.h
* *
* desc: Quake3 bot AI * desc: Quake3 bot AI
* *
* $Archive: /Code/DLLs/game/ai_chat.h $ * $Archive: /Code/DLLs/game/ai_chat.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 7/25/02 11:48a $ * $Modtime: 7/25/02 11:48a $
* $Date: 7/30/02 1:10p $ * $Date: 7/30/02 1:10p $
* *
*****************************************************************************/ *****************************************************************************/
// //
int BotChat_EnterGame(bot_state_t *bs); int BotChat_EnterGame(bot_state_t* bs);
// //
int BotChat_ExitGame(bot_state_t *bs); int BotChat_ExitGame(bot_state_t* bs);
// //
int BotChat_StartLevel(bot_state_t *bs); int BotChat_StartLevel(bot_state_t* bs);
// //
int BotChat_EndLevel(bot_state_t *bs); int BotChat_EndLevel(bot_state_t* bs);
// //
int BotChat_HitTalking(bot_state_t *bs); int BotChat_HitTalking(bot_state_t* bs);
// //
int BotChat_HitNoDeath(bot_state_t *bs); int BotChat_HitNoDeath(bot_state_t* bs);
// //
int BotChat_HitNoKill(bot_state_t *bs); int BotChat_HitNoKill(bot_state_t* bs);
// //
int BotChat_Death(bot_state_t *bs); int BotChat_Death(bot_state_t* bs);
// //
int BotChat_Kill(bot_state_t *bs); int BotChat_Kill(bot_state_t* bs);
// //
int BotChat_EnemySuicide(bot_state_t *bs); int BotChat_EnemySuicide(bot_state_t* bs);
// //
int BotChat_Random(bot_state_t *bs); int BotChat_Random(bot_state_t* bs);
// time the selected chat takes to type in // time the selected chat takes to type in
float BotChatTime(bot_state_t *bs); float BotChatTime(bot_state_t* bs);
// returns true if the bot can chat at the current position // returns true if the bot can chat at the current position
int BotValidChatPosition(bot_state_t *bs); int BotValidChatPosition(bot_state_t* bs);
// test the initial bot chats // test the initial bot chats
void BotChatTest(bot_state_t *bs); void BotChatTest(bot_state_t* bs);

View File

@ -1,21 +1,21 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: ai_cmd.h * name: ai_cmd.h
* *
* desc: Quake3 bot AI * desc: Quake3 bot AI
* *
* $Archive: /Code/DLLs/game/ai_cmd.h $ * $Archive: /Code/DLLs/game/ai_cmd.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 7/25/02 11:48a $ * $Modtime: 7/25/02 11:48a $
* $Date: 7/30/02 1:10p $ * $Date: 7/30/02 1:10p $
* *
*****************************************************************************/ *****************************************************************************/
extern int notleader[MAX_CLIENTS]; extern int notleader[MAX_CLIENTS];
int BotMatchMessage(bot_state_t *bs, char *message); int BotMatchMessage(bot_state_t* bs, char* message);
void BotPrintTeamGoal(bot_state_t *bs); void BotPrintTeamGoal(bot_state_t* bs);

View File

@ -1,44 +1,44 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: ai_dmnet.h * name: ai_dmnet.h
* *
* desc: Quake3 bot AI * desc: Quake3 bot AI
* *
* $Archive: /Code/DLLs/game/ai_dmnet.h $ * $Archive: /Code/DLLs/game/ai_dmnet.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 7/25/02 11:48a $ * $Modtime: 7/25/02 11:48a $
* $Date: 7/30/02 1:10p $ * $Date: 7/30/02 1:10p $
* *
*****************************************************************************/ *****************************************************************************/
#define MAX_NODESWITCHES 50 #define MAX_NODESWITCHES 50
void AIEnter_Intermission(bot_state_t *bs, const char *s); void AIEnter_Intermission(bot_state_t* bs, const char* s);
void AIEnter_Observer(bot_state_t *bs, const char *s); void AIEnter_Observer(bot_state_t* bs, const char* s);
void AIEnter_Respawn(bot_state_t *bs, const char *s); void AIEnter_Respawn(bot_state_t* bs, const char* s);
void AIEnter_Stand(bot_state_t *bs, const char *s); void AIEnter_Stand(bot_state_t* bs, const char* s);
void AIEnter_Seek_ActivateEntity(bot_state_t *bs, const char *s); void AIEnter_Seek_ActivateEntity(bot_state_t* bs, const char* s);
void AIEnter_Seek_NBG(bot_state_t *bs, const char *s); void AIEnter_Seek_NBG(bot_state_t* bs, const char* s);
void AIEnter_Seek_LTG(bot_state_t *bs, const char *s); void AIEnter_Seek_LTG(bot_state_t* bs, const char* s);
void AIEnter_Battle_Fight(bot_state_t *bs, const char *s); void AIEnter_Battle_Fight(bot_state_t* bs, const char* s);
void AIEnter_Battle_Chase(bot_state_t *bs, const char *s); void AIEnter_Battle_Chase(bot_state_t* bs, const char* s);
void AIEnter_Battle_Retreat(bot_state_t *bs, const char *s); void AIEnter_Battle_Retreat(bot_state_t* bs, const char* s);
void AIEnter_Battle_NBG(bot_state_t *bs, const char *s); void AIEnter_Battle_NBG(bot_state_t* bs, const char* s);
int AINode_Intermission(bot_state_t *bs); int AINode_Intermission(bot_state_t* bs);
int AINode_Observer(bot_state_t *bs); int AINode_Observer(bot_state_t* bs);
int AINode_Respawn(bot_state_t *bs); int AINode_Respawn(bot_state_t* bs);
int AINode_Stand(bot_state_t *bs); int AINode_Stand(bot_state_t* bs);
int AINode_Seek_ActivateEntity(bot_state_t *bs); int AINode_Seek_ActivateEntity(bot_state_t* bs);
int AINode_Seek_NBG(bot_state_t *bs); int AINode_Seek_NBG(bot_state_t* bs);
int AINode_Seek_LTG(bot_state_t *bs); int AINode_Seek_LTG(bot_state_t* bs);
int AINode_Battle_Fight(bot_state_t *bs); int AINode_Battle_Fight(bot_state_t* bs);
int AINode_Battle_Chase(bot_state_t *bs); int AINode_Battle_Chase(bot_state_t* bs);
int AINode_Battle_Retreat(bot_state_t *bs); int AINode_Battle_Retreat(bot_state_t* bs);
int AINode_Battle_NBG(bot_state_t *bs); int AINode_Battle_NBG(bot_state_t* bs);
void BotResetNodeSwitches(void); void BotResetNodeSwitches(void);
void BotDumpNodeSwitches(bot_state_t *bs); void BotDumpNodeSwitches(bot_state_t* bs);

View File

@ -1,191 +1,191 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: ai_dmq3.h * name: ai_dmq3.h
* *
* desc: Quake3 bot AI * desc: Quake3 bot AI
* *
* $Archive: /Code/DLLs/game/ai_dmq3.h $ * $Archive: /Code/DLLs/game/ai_dmq3.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 2 $ * $Revision: 2 $
* $Modtime: 8/25/02 1:03p $ * $Modtime: 8/25/02 1:03p $
* $Date: 8/25/02 6:26p $ * $Date: 8/25/02 6:26p $
* *
*****************************************************************************/ *****************************************************************************/
//setup the deathmatch AI //setup the deathmatch AI
void BotSetupDeathmatchAI(void); void BotSetupDeathmatchAI(void);
//shutdown the deathmatch AI //shutdown the deathmatch AI
void BotShutdownDeathmatchAI(void); void BotShutdownDeathmatchAI(void);
//let the bot live within it's deathmatch AI net //let the bot live within it's deathmatch AI net
void BotDeathmatchAI(bot_state_t *bs, float thinktime); void BotDeathmatchAI(bot_state_t* bs, float thinktime);
//free waypoints //free waypoints
void BotFreeWaypoints(bot_waypoint_t *wp); void BotFreeWaypoints(bot_waypoint_t* wp);
//choose a weapon //choose a weapon
void BotChooseWeapon(bot_state_t *bs); void BotChooseWeapon(bot_state_t* bs);
//setup movement stuff //setup movement stuff
void BotSetupForMovement(bot_state_t *bs); void BotSetupForMovement(bot_state_t* bs);
//update the inventory //update the inventory
void BotUpdateInventory(bot_state_t *bs); void BotUpdateInventory(bot_state_t* bs);
//update the inventory during battle //update the inventory during battle
void BotUpdateBattleInventory(bot_state_t *bs, int enemy); void BotUpdateBattleInventory(bot_state_t* bs, int enemy);
//use holdable items during battle //use holdable items during battle
void BotBattleUseItems(bot_state_t *bs); void BotBattleUseItems(bot_state_t* bs);
//return true if the bot is dead //return true if the bot is dead
qboolean BotIsDead(bot_state_t *bs); qboolean BotIsDead(bot_state_t* bs);
//returns true if the bot is in observer mode //returns true if the bot is in observer mode
qboolean BotIsObserver(bot_state_t *bs); qboolean BotIsObserver(bot_state_t* bs);
//returns true if the bot is in the intermission //returns true if the bot is in the intermission
qboolean BotIntermission(bot_state_t *bs); qboolean BotIntermission(bot_state_t* bs);
//returns true if the bot is in lava or slime //returns true if the bot is in lava or slime
qboolean BotInLavaOrSlime(bot_state_t *bs); qboolean BotInLavaOrSlime(bot_state_t* bs);
//returns true if the entity is dead //returns true if the entity is dead
qboolean EntityIsDead(aas_entityinfo_t *entinfo); qboolean EntityIsDead(aas_entityinfo_t* entinfo);
//returns true if the entity is invisible //returns true if the entity is invisible
qboolean EntityIsInvisible(aas_entityinfo_t *entinfo); qboolean EntityIsInvisible(aas_entityinfo_t* entinfo);
//returns true if the entity is shooting //returns true if the entity is shooting
qboolean EntityIsShooting(aas_entityinfo_t *entinfo); qboolean EntityIsShooting(aas_entityinfo_t* entinfo);
#ifdef MISSIONPACK #ifdef MISSIONPACK
//returns true if this entity has the kamikaze //returns true if this entity has the kamikaze
qboolean EntityHasKamikaze(aas_entityinfo_t *entinfo); qboolean EntityHasKamikaze(aas_entityinfo_t* entinfo);
#endif #endif
// set a user info key/value pair // set a user info key/value pair
void BotSetUserInfo(bot_state_t *bs, char *key, char *value); void BotSetUserInfo(bot_state_t* bs, char* key, char* value);
// set the team status (offense, defense etc.) // set the team status (offense, defense etc.)
void BotSetTeamStatus(bot_state_t *bs); void BotSetTeamStatus(bot_state_t* bs);
//returns the name of the client //returns the name of the client
char *ClientName(int client, char *name, int size); char* ClientName(int client, char* name, int size);
//returns an simplyfied client name //returns an simplyfied client name
char *EasyClientName(int client, char *name, int size); char* EasyClientName(int client, char* name, int size);
//returns the skin used by the client //returns the skin used by the client
char *ClientSkin(int client, char *skin, int size); char* ClientSkin(int client, char* skin, int size);
// returns the appropriate synonym context for the current game type and situation // returns the appropriate synonym context for the current game type and situation
int BotSynonymContext(bot_state_t *bs); int BotSynonymContext(bot_state_t* bs);
// set last ordered task // set last ordered task
int BotSetLastOrderedTask(bot_state_t *bs); int BotSetLastOrderedTask(bot_state_t* bs);
// selection of goals for teamplay // selection of goals for teamplay
void BotTeamGoals(bot_state_t *bs, int retreat); void BotTeamGoals(bot_state_t* bs, int retreat);
//returns the aggression of the bot in the range [0, 100] //returns the aggression of the bot in the range [0, 100]
float BotAggression(bot_state_t *bs); float BotAggression(bot_state_t* bs);
//returns how bad the bot feels //returns how bad the bot feels
float BotFeelingBad(bot_state_t *bs); float BotFeelingBad(bot_state_t* bs);
//returns true if the bot wants to retreat //returns true if the bot wants to retreat
int BotWantsToRetreat(bot_state_t *bs); int BotWantsToRetreat(bot_state_t* bs);
//returns true if the bot wants to chase //returns true if the bot wants to chase
int BotWantsToChase(bot_state_t *bs); int BotWantsToChase(bot_state_t* bs);
//returns true if the bot wants to help //returns true if the bot wants to help
int BotWantsToHelp(bot_state_t *bs); int BotWantsToHelp(bot_state_t* bs);
//returns true if the bot can and wants to rocketjump //returns true if the bot can and wants to rocketjump
int BotCanAndWantsToRocketJump(bot_state_t *bs); int BotCanAndWantsToRocketJump(bot_state_t* bs);
// returns true if the bot has a persistant powerup and a weapon // returns true if the bot has a persistant powerup and a weapon
int BotHasPersistantPowerupAndWeapon(bot_state_t *bs); int BotHasPersistantPowerupAndWeapon(bot_state_t* bs);
//returns true if the bot wants to and goes camping //returns true if the bot wants to and goes camping
int BotWantsToCamp(bot_state_t *bs); int BotWantsToCamp(bot_state_t* bs);
//the bot will perform attack movements //the bot will perform attack movements
bot_moveresult_t BotAttackMove(bot_state_t *bs, int tfl); bot_moveresult_t BotAttackMove(bot_state_t* bs, int tfl);
//returns true if the bot and the entity are in the same team //returns true if the bot and the entity are in the same team
int BotSameTeam(bot_state_t *bs, int entnum); int BotSameTeam(bot_state_t* bs, int entnum);
//returns true if teamplay is on //returns true if teamplay is on
int TeamPlayIsOn(void); int TeamPlayIsOn(void);
// returns the client number of the team mate flag carrier (-1 if none) // returns the client number of the team mate flag carrier (-1 if none)
int BotTeamFlagCarrier(bot_state_t *bs); int BotTeamFlagCarrier(bot_state_t* bs);
//returns visible team mate flag carrier if available //returns visible team mate flag carrier if available
int BotTeamFlagCarrierVisible(bot_state_t *bs); int BotTeamFlagCarrierVisible(bot_state_t* bs);
//returns visible enemy flag carrier if available //returns visible enemy flag carrier if available
int BotEnemyFlagCarrierVisible(bot_state_t *bs); int BotEnemyFlagCarrierVisible(bot_state_t* bs);
//get the number of visible teammates and enemies //get the number of visible teammates and enemies
void BotVisibleTeamMatesAndEnemies(bot_state_t *bs, int *teammates, int *enemies, float range); void BotVisibleTeamMatesAndEnemies(bot_state_t* bs, int* teammates, int* enemies, float range);
//returns true if within the field of vision for the given angles //returns true if within the field of vision for the given angles
qboolean InFieldOfVision(vec3_t viewangles, float fov, vec3_t angles); qboolean InFieldOfVision(vec3_t viewangles, float fov, vec3_t angles);
//returns true and sets the .enemy field when an enemy is found //returns true and sets the .enemy field when an enemy is found
int BotFindEnemy(bot_state_t *bs, int curenemy); int BotFindEnemy(bot_state_t* bs, int curenemy);
//returns a roam goal //returns a roam goal
void BotRoamGoal(bot_state_t *bs, vec3_t goal); void BotRoamGoal(bot_state_t* bs, vec3_t goal);
//returns entity visibility in the range [0, 1] //returns entity visibility in the range [0, 1]
float BotEntityVisible(int viewer, vec3_t eye, vec3_t viewangles, float fov, int ent); float BotEntityVisible(int viewer, vec3_t eye, vec3_t viewangles, float fov, int ent);
//the bot will aim at the current enemy //the bot will aim at the current enemy
void BotAimAtEnemy(bot_state_t *bs); void BotAimAtEnemy(bot_state_t* bs);
//check if the bot should attack //check if the bot should attack
void BotCheckAttack(bot_state_t *bs); void BotCheckAttack(bot_state_t* bs);
//AI when the bot is blocked //AI when the bot is blocked
void BotAIBlocked(bot_state_t *bs, bot_moveresult_t *moveresult, int activate); void BotAIBlocked(bot_state_t* bs, bot_moveresult_t* moveresult, int activate);
//AI to predict obstacles //AI to predict obstacles
int BotAIPredictObstacles(bot_state_t *bs, bot_goal_t *goal); int BotAIPredictObstacles(bot_state_t* bs, bot_goal_t* goal);
//enable or disable the areas the blocking entity is in //enable or disable the areas the blocking entity is in
void BotEnableActivateGoalAreas(bot_activategoal_t *activategoal, int enable); void BotEnableActivateGoalAreas(bot_activategoal_t* activategoal, int enable);
//pop an activate goal from the stack //pop an activate goal from the stack
int BotPopFromActivateGoalStack(bot_state_t *bs); int BotPopFromActivateGoalStack(bot_state_t* bs);
//clear the activate goal stack //clear the activate goal stack
void BotClearActivateGoalStack(bot_state_t *bs); void BotClearActivateGoalStack(bot_state_t* bs);
//returns the team the bot is in //returns the team the bot is in
int BotTeam(bot_state_t *bs); int BotTeam(bot_state_t* bs);
//retuns the opposite team of the bot //retuns the opposite team of the bot
int BotOppositeTeam(bot_state_t *bs); int BotOppositeTeam(bot_state_t* bs);
//returns the flag the bot is carrying (CTFFLAG_?) //returns the flag the bot is carrying (CTFFLAG_?)
int BotCTFCarryingFlag(bot_state_t *bs); int BotCTFCarryingFlag(bot_state_t* bs);
//remember the last ordered task //remember the last ordered task
void BotRememberLastOrderedTask(bot_state_t *bs); void BotRememberLastOrderedTask(bot_state_t* bs);
//set ctf goals (defend base, get enemy flag) during seek //set ctf goals (defend base, get enemy flag) during seek
void BotCTFSeekGoals(bot_state_t *bs); void BotCTFSeekGoals(bot_state_t* bs);
//set ctf goals (defend base, get enemy flag) during retreat //set ctf goals (defend base, get enemy flag) during retreat
void BotCTFRetreatGoals(bot_state_t *bs); void BotCTFRetreatGoals(bot_state_t* bs);
// //
#ifdef MISSIONPACK #ifdef MISSIONPACK
int Bot1FCTFCarryingFlag(bot_state_t *bs); int Bot1FCTFCarryingFlag(bot_state_t* bs);
int BotHarvesterCarryingCubes(bot_state_t *bs); int BotHarvesterCarryingCubes(bot_state_t* bs);
void Bot1FCTFSeekGoals(bot_state_t *bs); void Bot1FCTFSeekGoals(bot_state_t* bs);
void Bot1FCTFRetreatGoals(bot_state_t *bs); void Bot1FCTFRetreatGoals(bot_state_t* bs);
void BotObeliskSeekGoals(bot_state_t *bs); void BotObeliskSeekGoals(bot_state_t* bs);
void BotObeliskRetreatGoals(bot_state_t *bs); void BotObeliskRetreatGoals(bot_state_t* bs);
void BotGoHarvest(bot_state_t *bs); void BotGoHarvest(bot_state_t* bs);
void BotHarvesterSeekGoals(bot_state_t *bs); void BotHarvesterSeekGoals(bot_state_t* bs);
void BotHarvesterRetreatGoals(bot_state_t *bs); void BotHarvesterRetreatGoals(bot_state_t* bs);
int BotTeamCubeCarrierVisible(bot_state_t *bs); int BotTeamCubeCarrierVisible(bot_state_t* bs);
int BotEnemyCubeCarrierVisible(bot_state_t *bs); int BotEnemyCubeCarrierVisible(bot_state_t* bs);
#endif #endif
//get a random alternate route goal towards the given base //get a random alternate route goal towards the given base
int BotGetAlternateRouteGoal(bot_state_t *bs, int base); int BotGetAlternateRouteGoal(bot_state_t* bs, int base);
//returns either the alternate route goal or the given goal //returns either the alternate route goal or the given goal
bot_goal_t *BotAlternateRoute(bot_state_t *bs, bot_goal_t *goal); bot_goal_t* BotAlternateRoute(bot_state_t* bs, bot_goal_t* goal);
//create a new waypoint //create a new waypoint
bot_waypoint_t *BotCreateWayPoint(char *name, vec3_t origin, int areanum); bot_waypoint_t* BotCreateWayPoint(char* name, vec3_t origin, int areanum);
//find a waypoint with the given name //find a waypoint with the given name
bot_waypoint_t *BotFindWayPoint(bot_waypoint_t *waypoints, char *name); bot_waypoint_t* BotFindWayPoint(bot_waypoint_t* waypoints, char* name);
//strstr but case insensitive //strstr but case insensitive
char *stristr(char *str, char *charset); char* stristr(char* str, char* charset);
//returns the number of the client with the given name //returns the number of the client with the given name
int ClientFromName(char *name); int ClientFromName(char* name);
int ClientOnSameTeamFromName(bot_state_t *bs, char *name); int ClientOnSameTeamFromName(bot_state_t* bs, char* name);
// //
int BotPointAreaNum(vec3_t origin); int BotPointAreaNum(vec3_t origin);
// //
void BotMapScripts(bot_state_t *bs); void BotMapScripts(bot_state_t* bs);
//ctf flags //ctf flags
#define CTF_FLAG_NONE 0 #define CTF_FLAG_NONE 0
#define CTF_FLAG_RED 1 #define CTF_FLAG_RED 1
#define CTF_FLAG_BLUE 2 #define CTF_FLAG_BLUE 2
//CTF skins //CTF skins
#define CTF_SKIN_REDTEAM "red" #define CTF_SKIN_REDTEAM "red"
#define CTF_SKIN_BLUETEAM "blue" #define CTF_SKIN_BLUETEAM "blue"
extern int gametype; //game type extern int gametype; //game type
//extern int maxclients; //maximum number of clients //extern int maxclients; //maximum number of clients
extern vmCvar_t bot_grapple; extern vmCvar_t bot_grapple;
extern vmCvar_t bot_rocketjump; extern vmCvar_t bot_rocketjump;
extern vmCvar_t bot_fastchat; extern vmCvar_t bot_fastchat;
extern vmCvar_t bot_nochat; extern vmCvar_t bot_nochat;
extern vmCvar_t bot_testrchat; extern vmCvar_t bot_testrchat;
extern vmCvar_t bot_challenge; extern vmCvar_t bot_challenge;
extern vmCvar_t bot_showstates; extern vmCvar_t bot_showstates;
extern bot_goal_t ctf_redflag; extern bot_goal_t ctf_redflag;
extern bot_goal_t ctf_blueflag; extern bot_goal_t ctf_blueflag;
#ifdef MISSIONPACK #ifdef MISSIONPACK
extern bot_goal_t ctf_neutralflag; extern bot_goal_t ctf_neutralflag;
extern bot_goal_t redobelisk; extern bot_goal_t redobelisk;
extern bot_goal_t blueobelisk; extern bot_goal_t blueobelisk;
extern bot_goal_t neutralobelisk; extern bot_goal_t neutralobelisk;
#endif #endif

View File

@ -1,286 +1,284 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: ai_main.h * name: ai_main.h
* *
* desc: Quake3 bot AI * desc: Quake3 bot AI
* *
* $Archive: /Code/DLLs/game/ai_main.h $ * $Archive: /Code/DLLs/game/ai_main.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 2 $ * $Revision: 2 $
* $Modtime: 8/05/02 5:51p $ * $Modtime: 8/05/02 5:51p $
* $Date: 8/06/02 6:28p $ * $Date: 8/06/02 6:28p $
* *
*****************************************************************************/ *****************************************************************************/
#ifndef __AI_MAIN__ #ifndef __AI_MAIN__
#define __AI_MAIN__ #define __AI_MAIN__
//#define DEBUG //#define DEBUG
#define CTF #define CTF
//#define MAX_ITEMS 256 // already in q_shared.h //#define MAX_ITEMS 256 // already in q_shared.h
//bot flags //bot flags
#define BFL_STRAFERIGHT 1 //strafe to the right #define BFL_STRAFERIGHT 1 //strafe to the right
#define BFL_ATTACKED 2 //bot has attacked last ai frame #define BFL_ATTACKED 2 //bot has attacked last ai frame
#define BFL_ATTACKJUMPED 4 //bot jumped during attack last frame #define BFL_ATTACKJUMPED 4 //bot jumped during attack last frame
#define BFL_AIMATENEMY 8 //bot aimed at the enemy this 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_AVOIDRIGHT 16 //avoid obstacles by going to the right
#define BFL_IDEALVIEWSET 32 //bot has ideal view angles set #define BFL_IDEALVIEWSET 32 //bot has ideal view angles set
#define BFL_FIGHTSUICIDAL 64 //bot is in a suicidal fight #define BFL_FIGHTSUICIDAL 64 //bot is in a suicidal fight
//long term goal types //long term goal types
#define LTG_TEAMHELP 1 //help a team mate #define LTG_TEAMHELP 1 //help a team mate
#define LTG_TEAMACCOMPANY 2 //accompany a team mate #define LTG_TEAMACCOMPANY 2 //accompany a team mate
#define LTG_DEFENDKEYAREA 3 //defend a key area #define LTG_DEFENDKEYAREA 3 //defend a key area
#define LTG_GETFLAG 4 //get the enemy flag #define LTG_GETFLAG 4 //get the enemy flag
#define LTG_RUSHBASE 5 //rush to the base #define LTG_RUSHBASE 5 //rush to the base
#define LTG_RETURNFLAG 6 //return the flag #define LTG_RETURNFLAG 6 //return the flag
#define LTG_CAMP 7 //camp somewhere #define LTG_CAMP 7 //camp somewhere
#define LTG_CAMPORDER 8 //ordered to camp somewhere #define LTG_CAMPORDER 8 //ordered to camp somewhere
#define LTG_PATROL 9 //patrol #define LTG_PATROL 9 //patrol
#define LTG_GETITEM 10 //get an item #define LTG_GETITEM 10 //get an item
#define LTG_KILL 11 //kill someone #define LTG_KILL 11 //kill someone
#define LTG_HARVEST 12 //harvest skulls #define LTG_HARVEST 12 //harvest skulls
#define LTG_ATTACKENEMYBASE 13 //attack the enemy base #define LTG_ATTACKENEMYBASE 13 //attack the enemy base
#define LTG_MAKELOVE_UNDER 14 #define LTG_MAKELOVE_UNDER 14
#define LTG_MAKELOVE_ONTOP 15 #define LTG_MAKELOVE_ONTOP 15
//some goal dedication times //some goal dedication times
#define TEAM_HELP_TIME 60 //1 minute teamplay help time #define TEAM_HELP_TIME 60 //1 minute teamplay help time
#define TEAM_ACCOMPANY_TIME 600 //10 minutes teamplay accompany time #define TEAM_ACCOMPANY_TIME 600 //10 minutes teamplay accompany time
#define TEAM_DEFENDKEYAREA_TIME 600 //10 minutes ctf defend base time #define TEAM_DEFENDKEYAREA_TIME 600 //10 minutes ctf defend base time
#define TEAM_CAMP_TIME 600 //10 minutes camping time #define TEAM_CAMP_TIME 600 //10 minutes camping time
#define TEAM_PATROL_TIME 600 //10 minutes patrolling time #define TEAM_PATROL_TIME 600 //10 minutes patrolling time
#define TEAM_LEAD_TIME 600 //10 minutes taking the lead #define TEAM_LEAD_TIME 600 //10 minutes taking the lead
#define TEAM_GETITEM_TIME 60 //1 minute #define TEAM_GETITEM_TIME 60 //1 minute
#define TEAM_KILL_SOMEONE 180 //3 minute to kill someone #define TEAM_KILL_SOMEONE 180 //3 minute to kill someone
#define TEAM_ATTACKENEMYBASE_TIME 600 //10 minutes #define TEAM_ATTACKENEMYBASE_TIME 600 //10 minutes
#define TEAM_HARVEST_TIME 120 //2 minutes #define TEAM_HARVEST_TIME 120 //2 minutes
#define CTF_GETFLAG_TIME 600 //10 minutes ctf get flag time #define CTF_GETFLAG_TIME 600 //10 minutes ctf get flag time
#define CTF_RUSHBASE_TIME 120 //2 minutes ctf rush base 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_RETURNFLAG_TIME 180 //3 minutes to return the flag
#define CTF_ROAM_TIME 60 //1 minute ctf roam time #define CTF_ROAM_TIME 60 //1 minute ctf roam time
//patrol flags //patrol flags
#define PATROL_LOOP 1 #define PATROL_LOOP 1
#define PATROL_REVERSE 2 #define PATROL_REVERSE 2
#define PATROL_BACK 4 #define PATROL_BACK 4
//teamplay task preference //teamplay task preference
#define TEAMTP_DEFENDER 1 #define TEAMTP_DEFENDER 1
#define TEAMTP_ATTACKER 2 #define TEAMTP_ATTACKER 2
//CTF strategy //CTF strategy
#define CTFS_AGRESSIVE 1 #define CTFS_AGRESSIVE 1
//copied from the aas file header //copied from the aas file header
#define PRESENCE_NONE 1 #define PRESENCE_NONE 1
#define PRESENCE_NORMAL 2 #define PRESENCE_NORMAL 2
#define PRESENCE_CROUCH 4 #define PRESENCE_CROUCH 4
// //
#define MAX_PROXMINES 64 #define MAX_PROXMINES 64
//check points //check points
typedef struct bot_waypoint_s typedef struct bot_waypoint_s {
{ int inuse;
int inuse; char name[32];
char name[32]; bot_goal_t goal;
bot_goal_t goal; struct bot_waypoint_s* next;
struct bot_waypoint_s *next, *prev; struct bot_waypoint_s* prev;
} bot_waypoint_t; } bot_waypoint_t;
#define MAX_ACTIVATESTACK 8 #define MAX_ACTIVATESTACK 8
#define MAX_ACTIVATEAREAS 32 #define MAX_ACTIVATEAREAS 32
typedef struct bot_activategoal_s typedef struct bot_activategoal_s {
{ int inuse;
int inuse; bot_goal_t goal; //goal to activate (buttons etc.)
bot_goal_t goal; //goal to activate (buttons etc.) float time; //time to activate something
float time; //time to activate something float start_time; //time starting to activate something
float start_time; //time starting to activate something float justused_time; //time the goal was used
float justused_time; //time the goal was used int shoot; //true if bot has to shoot to activate
int shoot; //true if bot has to shoot to activate int weapon; //weapon to be used for activation
int weapon; //weapon to be used for activation vec3_t target; //target to shoot at to activate something
vec3_t target; //target to shoot at to activate something vec3_t origin; //origin of the blocking entity to activate
vec3_t origin; //origin of the blocking entity to activate int areas[MAX_ACTIVATEAREAS]; //routing areas disabled by blocking entity
int areas[MAX_ACTIVATEAREAS]; //routing areas disabled by blocking entity int numareas; //number of disabled routing areas
int numareas; //number of disabled routing areas int areasdisabled; //true if the areas are disabled for the routing
int areasdisabled; //true if the areas are disabled for the routing struct bot_activategoal_s* next; //next activate goal on stack
struct bot_activategoal_s *next; //next activate goal on stack } bot_activategoal_t;
} bot_activategoal_t;
//bot state
//bot state typedef struct bot_state_s {
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 inuse; //true if this state is used by a bot client int client; //client number of the bot
int botthink_residual; //residual for the bot thinks int entitynum; //entity number of the bot
int client; //client number of the bot playerState_t cur_ps; //current player state
int entitynum; //entity number of the bot int last_eFlags; //last ps flags
playerState_t cur_ps; //current player state usercmd_t lastucmd; //usercmd from last frame
int last_eFlags; //last ps flags int entityeventTime[1024]; //last entity event time
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
bot_settings_t settings; //several bot settings float thinktime; //time the bot thinks this frame
int (*ainode)(struct bot_state_s *bs); //current AI node vec3_t origin; //origin of the bot
float thinktime; //time the bot thinks this frame vec3_t velocity; //velocity of the bot
vec3_t origin; //origin of the bot int presencetype; //presence type of the bot
vec3_t velocity; //velocity of the bot vec3_t eye; //eye coordinates of the bot
int presencetype; //presence type of the bot int areanum; //the number of the area the bot is in
vec3_t eye; //eye coordinates of the bot int inventory[256]; // was MAX_INVENTORY, but they have different defs in bot code FIXME //string with items amounts the bot has
int areanum; //the number of the area the bot is in int tfl; //the travel flags the bot uses
int inventory[256]; // was MAX_INVENTORY, but they have different defs in bot code FIXME //string with items amounts the bot has int flags; //several flags
int tfl; //the travel flags the bot uses int respawn_wait; //wait until respawned
int flags; //several flags int lasthealth; //health value previous frame
int respawn_wait; //wait until respawned int lastkilledplayer; //last killed player
int lasthealth; //health value previous frame int lastkilledby; //player that last killed this bot
int lastkilledplayer; //last killed player int botdeathtype; //the death type of the bot
int lastkilledby; //player that last killed this bot int enemydeathtype; //the death type of the enemy
int botdeathtype; //the death type of the bot int botsuicide; //true when the bot suicides
int enemydeathtype; //the death type of the enemy int enemysuicide; //true when the enemy of the bot suicides
int botsuicide; //true when the bot suicides int setupcount; //true when the bot has just been setup
int enemysuicide; //true when the enemy of the bot suicides int map_restart; //true when the map is being restarted
int setupcount; //true when the bot has just been setup int entergamechat; //true when the bot used an enter game chat
int map_restart; //true when the map is being restarted int num_deaths; //number of time this bot died
int entergamechat; //true when the bot used an enter game chat int num_kills; //number of kills of this bot
int num_deaths; //number of time this bot died int revenge_enemy; //the revenge enemy
int num_kills; //number of kills of this bot int revenge_kills; //number of kills the enemy made
int revenge_enemy; //the revenge enemy int lastframe_health; //health value the last frame
int revenge_kills; //number of kills the enemy made int lasthitcount; //number of hits last frame
int lastframe_health; //health value the last frame int chatto; //chat to all or team
int lasthitcount; //number of hits last frame float walker; //walker charactertic
int chatto; //chat to all or team float ltime; //local bot time
float walker; //walker charactertic float entergame_time; //time the bot entered the game
float ltime; //local bot time float ltg_time; //long term goal time
float entergame_time; //time the bot entered the game float nbg_time; //nearby goal time
float ltg_time; //long term goal time float respawn_time; //time the bot takes to respawn
float nbg_time; //nearby goal time float respawnchat_time; //time the bot started a chat during respawn
float respawn_time; //time the bot takes to respawn float chase_time; //time the bot will chase the enemy
float respawnchat_time; //time the bot started a chat during respawn float enemyvisible_time; //time the enemy was last visible
float chase_time; //time the bot will chase the enemy float check_time; //time to check for nearby items
float enemyvisible_time; //time the enemy was last visible float stand_time; //time the bot is standing still
float check_time; //time to check for nearby items float lastchat_time; //time the bot last selected a chat
float stand_time; //time the bot is standing still float kamikaze_time; //time to check for kamikaze usage
float lastchat_time; //time the bot last selected a chat float invulnerability_time; //time to check for invulnerability usage
float kamikaze_time; //time to check for kamikaze usage float standfindenemy_time; //time to find enemy while standing
float invulnerability_time; //time to check for invulnerability usage float attackstrafe_time; //time the bot is strafing in one dir
float standfindenemy_time; //time to find enemy while standing float attackcrouch_time; //time the bot will stop crouching
float attackstrafe_time; //time the bot is strafing in one dir float attackchase_time; //time the bot chases during actual attack
float attackcrouch_time; //time the bot will stop crouching float attackjump_time; //time the bot jumped during attack
float attackchase_time; //time the bot chases during actual attack float enemysight_time; //time before reacting to enemy
float attackjump_time; //time the bot jumped during attack float enemydeath_time; //time the enemy died
float enemysight_time; //time before reacting to enemy float enemyposition_time; //time the position and velocity of the enemy were stored
float enemydeath_time; //time the enemy died float defendaway_time; //time away while defending
float enemyposition_time; //time the position and velocity of the enemy were stored float defendaway_range; //max travel time away from defend area
float defendaway_time; //time away while defending float rushbaseaway_time; //time away from rushing to the base
float defendaway_range; //max travel time away from defend area float attackaway_time; //time away from attacking the enemy base
float rushbaseaway_time; //time away from rushing to the base float harvestaway_time; //time away from harvesting
float attackaway_time; //time away from attacking the enemy base float ctfroam_time; //time the bot is roaming in ctf
float harvestaway_time; //time away from harvesting float killedenemy_time; //time the bot killed the enemy
float ctfroam_time; //time the bot is roaming in ctf float arrive_time; //time arrived (at companion)
float killedenemy_time; //time the bot killed the enemy float lastair_time; //last time the bot had air
float arrive_time; //time arrived (at companion) float teleport_time; //last time the bot teleported
float lastair_time; //last time the bot had air float camp_time; //last time camped
float teleport_time; //last time the bot teleported float camp_range; //camp range
float camp_time; //last time camped float weaponchange_time; //time the bot started changing weapons
float camp_range; //camp range float firethrottlewait_time; //amount of time to wait
float weaponchange_time; //time the bot started changing weapons float firethrottleshoot_time; //amount of time to shoot
float firethrottlewait_time; //amount of time to wait float notblocked_time; //last time the bot was not blocked
float firethrottleshoot_time; //amount of time to shoot float blockedbyavoidspot_time; //time blocked by an avoid spot
float notblocked_time; //last time the bot was not blocked float predictobstacles_time; //last time the bot predicted obstacles
float blockedbyavoidspot_time; //time blocked by an avoid spot int predictobstacles_goalareanum; //last goal areanum the bot predicted obstacles for
float predictobstacles_time; //last time the bot predicted obstacles vec3_t aimtarget;
int predictobstacles_goalareanum; //last goal areanum the bot predicted obstacles for vec3_t enemyvelocity; //enemy velocity 0.5 secs ago during battle
vec3_t aimtarget; vec3_t enemyorigin; //enemy origin 0.5 secs ago during battle
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 kamikazebody; //kamikaze body int numproxmines;
int proxmines[MAX_PROXMINES]; //
int numproxmines; int character; //the bot character
// int ms; //move state of the bot
int character; //the bot character int gs; //goal state of the bot
int ms; //move state of the bot int cs; //chat state of the bot
int gs; //goal state of the bot int ws; //weapon 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
int enemy; //enemy entity number vec3_t lastenemyorigin; //last origin of the enemy in the reachability area
int lastenemyareanum; //last reachability area the enemy was in int weaponnum; //current weapon number
vec3_t lastenemyorigin; //last origin of the enemy in the reachability area vec3_t viewangles; //current view angles
int weaponnum; //current weapon number vec3_t ideal_viewangles; //ideal view angles
vec3_t viewangles; //current view angles vec3_t viewanglespeed;
vec3_t ideal_viewangles; //ideal view angles //
vec3_t viewanglespeed; int ltgtype; //long term goal type
// // team goals
int ltgtype; //long term goal type int teammate; //team mate involved in this team goal
// team goals int decisionmaker; //player who decided to go for this goal
int teammate; //team mate involved in this team goal int ordered; //true if ordered to do something
int decisionmaker; //player who decided to go for this goal float order_time; //time ordered to do something
int ordered; //true if ordered to do something int owndecision_time; //time the bot made it's own decision
float order_time; //time ordered to do something bot_goal_t teamgoal; //the team goal
int owndecision_time; //time the bot made it's own decision bot_goal_t altroutegoal; //alternative route goal
bot_goal_t teamgoal; //the team goal float reachedaltroutegoal_time; //time the bot reached the alt route goal
bot_goal_t altroutegoal; //alternative route goal float teammessage_time; //time to message team mates what the bot is doing
float reachedaltroutegoal_time; //time the bot reached the alt route goal float teamgoal_time; //time to stop helping team mate
float teammessage_time; //time to message team mates what the bot is doing float teammatevisible_time; //last time the team mate was NOT visible
float teamgoal_time; //time to stop helping team mate int teamtaskpreference; //team task preference
float teammatevisible_time; //last time the team mate was NOT visible // last ordered team goal
int teamtaskpreference; //team task preference int lastgoal_decisionmaker;
// last ordered team goal int lastgoal_ltgtype;
int lastgoal_decisionmaker; int lastgoal_teammate;
int lastgoal_ltgtype; bot_goal_t lastgoal_teamgoal;
int lastgoal_teammate; // for leading team mates
bot_goal_t lastgoal_teamgoal; int lead_teammate; //team mate the bot is leading
// for leading team mates bot_goal_t lead_teamgoal; //team goal while leading
int lead_teammate; //team mate the bot is leading float lead_time; //time leading someone
bot_goal_t lead_teamgoal; //team goal while leading float leadvisible_time; //last time the team mate was visible
float lead_time; //time leading someone float leadmessage_time; //last time a messaged was sent to the team mate
float leadvisible_time; //last time the team mate was visible float leadbackup_time; //time backing up towards team mate
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
char teamleader[32]; //netname of the team leader float becometeamleader_time; //time the bot will become the team leader
float askteamleader_time; //time asked for team leader float teamgiveorders_time; //time to give team orders
float becometeamleader_time; //time the bot will become the team leader float lastflagcapture_time; //last time a flag was captured
float teamgiveorders_time; //time to give team orders int numteammates; //number of team mates
float lastflagcapture_time; //last time a flag was captured int redflagstatus; //0 = at base, 1 = not at base
int numteammates; //number of team mates int blueflagstatus; //0 = at base, 1 = not at base
int redflagstatus; //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 blueflagstatus; //0 = at base, 1 = not at base int flagstatuschanged; //flag status changed
int neutralflagstatus; //0 = at base, 1 = our team has flag, 2 = enemy team has flag, 3 = enemy team dropped the flag int forceorders; //true if forced to give orders
int flagstatuschanged; //flag status changed int flagcarrier; //team mate carrying the enemy flag
int forceorders; //true if forced to give orders int ctfstrategy; //ctf strategy
int flagcarrier; //team mate carrying the enemy flag char subteam[32]; //sub team name
int ctfstrategy; //ctf strategy float formation_dist; //formation team mate intervening space
char subteam[32]; //sub team name char formation_teammate[16]; //netname of the team mate the bot uses for relative positioning
float formation_dist; //formation team mate intervening space float formation_angle; //angle relative to the formation team mate
char formation_teammate[16]; //netname of the team mate the bot uses for relative positioning vec3_t formation_dir; //the direction the formation is moving in
float formation_angle; //angle relative to the formation team mate vec3_t formation_origin; //origin the bot uses for relative positioning
vec3_t formation_dir; //the direction the formation is moving in bot_goal_t formation_goal; //formation goal
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_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 *checkpoints; //check points bot_waypoint_t* curpatrolpoint; //current patrol point the bot is going for
bot_waypoint_t *patrolpoints; //patrol points int patrolflags; //patrol flags
bot_waypoint_t *curpatrolpoint; //current patrol point the bot is going for } bot_state_t;
int patrolflags; //patrol flags
} bot_state_t; //resets the whole bot state
void BotResetState(bot_state_t* bs);
//resets the whole bot state //returns the number of bots in the game
void BotResetState(bot_state_t *bs); int NumBots(void);
//returns the number of bots in the game //returns info about the entity
int NumBots(void); void BotEntityInfo(int entnum, aas_entityinfo_t* info);
//returns info about the entity
void BotEntityInfo(int entnum, aas_entityinfo_t *info); extern float floattime;
#define FloatTime() level.time
extern float floattime;
#define FloatTime() level.time // from the game source
void QDECL BotAI_Print(int type, const char* fmt, ...);
// from the game source void QDECL QDECL BotAI_BotInitialChat(bot_state_t* bs, const char* type, ...);
void QDECL BotAI_Print(int type, const char *fmt, ...); void BotAI_Trace(bsp_trace_t* bsptrace, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int passent, int contentmask);
void QDECL QDECL BotAI_BotInitialChat( bot_state_t *bs, const char *type, ... ); int BotAI_GetClientState(int clientNum, playerState_t* state);
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_GetEntityState(int entityNum, entityState_t* state);
int BotAI_GetClientState( int clientNum, playerState_t *state ); int BotAI_GetSnapshotEntity(int clientNum, int sequence, entityState_t* state);
int BotAI_GetEntityState( int entityNum, entityState_t *state ); int BotTeamLeader(bot_state_t* bs);
int BotAI_GetSnapshotEntity( int clientNum, int sequence, entityState_t *state ); #endif // __AI_MAIN__
int BotTeamLeader(bot_state_t *bs);
#endif // __AI_MAIN__

View File

@ -1,23 +1,23 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: ai_team.h * name: ai_team.h
* *
* desc: Quake3 bot AI * desc: Quake3 bot AI
* *
* $Archive: /Code/DLLs/game/ai_team.h $ * $Archive: /Code/DLLs/game/ai_team.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 7/25/02 11:48a $ * $Modtime: 7/25/02 11:48a $
* $Date: 7/30/02 1:10p $ * $Date: 7/30/02 1:10p $
* *
*****************************************************************************/ *****************************************************************************/
void BotTeamAI(bot_state_t *bs); void BotTeamAI(bot_state_t* bs);
int BotGetTeamMateTaskPreference(bot_state_t *bs, int teammate); int BotGetTeamMateTaskPreference(bot_state_t* bs, int teammate);
void BotSetTeamMateTaskPreference(bot_state_t *bs, int teammate, int preference); void BotSetTeamMateTaskPreference(bot_state_t* bs, int teammate, int preference);
void BotVoiceChat(bot_state_t *bs, int toclient, const char *voicechat); void BotVoiceChat(bot_state_t* bs, int toclient, const char* voicechat);
void BotVoiceChatOnly(bot_state_t *bs, int toclient, const char *voicechat); void BotVoiceChatOnly(bot_state_t* bs, int toclient, const char* voicechat);

View File

@ -1,20 +1,20 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: ai_vcmd.h * name: ai_vcmd.h
* *
* desc: Quake3 bot AI * desc: Quake3 bot AI
* *
* $Archive: /Code/DLLs/game/ai_vcmd.h $ * $Archive: /Code/DLLs/game/ai_vcmd.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 7/25/02 11:48a $ * $Modtime: 7/25/02 11:48a $
* $Date: 7/30/02 1:10p $ * $Date: 7/30/02 1:10p $
* *
*****************************************************************************/ *****************************************************************************/
int BotVoiceChatCommand(bot_state_t *bs, int mode, char *voicechat); int BotVoiceChatCommand(bot_state_t* bs, int mode, char* voicechat);
void BotVoiceChat_Defend(bot_state_t *bs, int client, int mode); void BotVoiceChat_Defend(bot_state_t* bs, int client, int mode);

View File

@ -1,210 +1,204 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: be_aas.h * name: be_aas.h
* *
* desc: Area Awareness System, stuff exported to the AI * desc: Area Awareness System, stuff exported to the AI
* *
* $Archive: /Code/DLLs/game/be_aas.h $ * $Archive: /Code/DLLs/game/be_aas.h $
* $Author: Steven $ * $Author: Steven $
* $Revision: 2 $ * $Revision: 2 $
* $Modtime: 10/13/03 9:01a $ * $Modtime: 10/13/03 9:01a $
* $Date: 10/13/03 9:11a $ * $Date: 10/13/03 9:11a $
* *
*****************************************************************************/ *****************************************************************************/
#ifndef MAX_STRINGFIELD #ifndef MAX_STRINGFIELD
#define MAX_STRINGFIELD 80 #define MAX_STRINGFIELD 80
#endif #endif
//travel flags //travel flags
#define TFL_INVALID 0x00000001 //traveling temporary not possible #define TFL_INVALID 0x00000001 //traveling temporary not possible
#define TFL_WALK 0x00000002 //walking #define TFL_WALK 0x00000002 //walking
#define TFL_CROUCH 0x00000004 //crouching #define TFL_CROUCH 0x00000004 //crouching
#define TFL_BARRIERJUMP 0x00000008 //jumping onto a barrier #define TFL_BARRIERJUMP 0x00000008 //jumping onto a barrier
#define TFL_JUMP 0x00000010 //jumping #define TFL_JUMP 0x00000010 //jumping
#define TFL_LADDER 0x00000020 //climbing a ladder #define TFL_LADDER 0x00000020 //climbing a ladder
#define TFL_WALKOFFLEDGE 0x00000080 //walking of a ledge #define TFL_WALKOFFLEDGE 0x00000080 //walking of a ledge
#define TFL_SWIM 0x00000100 //swimming #define TFL_SWIM 0x00000100 //swimming
#define TFL_WATERJUMP 0x00000200 //jumping out of the water #define TFL_WATERJUMP 0x00000200 //jumping out of the water
#define TFL_TELEPORT 0x00000400 //teleporting #define TFL_TELEPORT 0x00000400 //teleporting
#define TFL_ELEVATOR 0x00000800 //elevator #define TFL_ELEVATOR 0x00000800 //elevator
#define TFL_ROCKETJUMP 0x00001000 //rocket jumping #define TFL_ROCKETJUMP 0x00001000 //rocket jumping
#define TFL_BFGJUMP 0x00002000 //bfg jumping #define TFL_BFGJUMP 0x00002000 //bfg jumping
#define TFL_GRAPPLEHOOK 0x00004000 //grappling hook #define TFL_GRAPPLEHOOK 0x00004000 //grappling hook
#define TFL_DOUBLEJUMP 0x00008000 //double jump #define TFL_DOUBLEJUMP 0x00008000 //double jump
#define TFL_RAMPJUMP 0x00010000 //ramp jump #define TFL_RAMPJUMP 0x00010000 //ramp jump
#define TFL_STRAFEJUMP 0x00020000 //strafe jump #define TFL_STRAFEJUMP 0x00020000 //strafe jump
#define TFL_JUMPPAD 0x00040000 //jump pad #define TFL_JUMPPAD 0x00040000 //jump pad
#define TFL_AIR 0x00080000 //travel through air #define TFL_AIR 0x00080000 //travel through air
#define TFL_WATER 0x00100000 //travel through water #define TFL_WATER 0x00100000 //travel through water
#define TFL_SLIME 0x00200000 //travel through slime #define TFL_SLIME 0x00200000 //travel through slime
#define TFL_LAVA 0x00400000 //travel through lava #define TFL_LAVA 0x00400000 //travel through lava
#define TFL_DONOTENTER 0x00800000 //travel through donotenter area #define TFL_DONOTENTER 0x00800000 //travel through donotenter area
#define TFL_FUNCBOB 0x01000000 //func bobbing #define TFL_FUNCBOB 0x01000000 //func bobbing
#define TFL_FLIGHT 0x02000000 //flight #define TFL_FLIGHT 0x02000000 //flight
#define TFL_BRIDGE 0x04000000 //move over a bridge #define TFL_BRIDGE 0x04000000 //move over a bridge
// //
#define TFL_NOTTEAM1 0x08000000 //not team 1 #define TFL_NOTTEAM1 0x08000000 //not team 1
#define TFL_NOTTEAM2 0x10000000 //not team 2 #define TFL_NOTTEAM2 0x10000000 //not team 2
//default travel flags //default travel flags
#define TFL_DEFAULT TFL_WALK|TFL_CROUCH|TFL_BARRIERJUMP|\ #define TFL_DEFAULT TFL_WALK|TFL_CROUCH|TFL_BARRIERJUMP|\
TFL_JUMP|TFL_LADDER|\ TFL_JUMP | TFL_LADDER | \
TFL_WALKOFFLEDGE|TFL_SWIM|TFL_WATERJUMP|\ TFL_WALKOFFLEDGE | TFL_SWIM | TFL_WATERJUMP | \
TFL_TELEPORT|TFL_ELEVATOR|\ TFL_TELEPORT | TFL_ELEVATOR | \
TFL_AIR|TFL_WATER|TFL_JUMPPAD|TFL_FUNCBOB TFL_AIR | TFL_WATER | TFL_JUMPPAD | TFL_FUNCBOB
// already defined in g_public.h in tiki tech, moved to l_util.h so the botlib stuff compiles but the gamecode also compiles // already defined in g_public.h in tiki tech, moved to l_util.h so the botlib stuff compiles but the gamecode also compiles
/* /*
typedef enum typedef enum
{ {
SOLID_NOT, // no interaction with other objects SOLID_NOT, // no interaction with other objects
SOLID_TRIGGER, // only touch when inside, after moving SOLID_TRIGGER, // only touch when inside, after moving
SOLID_BBOX, // touch on edge SOLID_BBOX, // touch on edge
SOLID_BSP // bsp clip, touch on edge SOLID_BSP // bsp clip, touch on edge
} solid_t; } solid_t;
*/ */
//a trace is returned when a box is swept through the AAS world //a trace is returned when a box is swept through the AAS world
typedef struct aas_trace_s typedef struct aas_trace_s {
{ qboolean startsolid;// if true, the initial point was in a solid area
qboolean startsolid; // if true, the initial point was in a solid area float fraction; // time completed, 1.0 = didn't hit anything
float fraction; // time completed, 1.0 = didn't hit anything vec3_t endpos; // final position
vec3_t endpos; // final position int ent; // entity blocking the trace
int ent; // entity blocking the trace int lastarea; // last area the trace was in (zero if none)
int lastarea; // last area the trace was in (zero if none) int area; // area blocking the trace (zero if none)
int area; // area blocking the trace (zero if none) int planenum; // number of the plane that was hit
int planenum; // number of the plane that was hit } aas_trace_t;
} aas_trace_t;
// Defined in botlib.h
// Defined in botlib.h
//bsp_trace_t hit surface
//bsp_trace_t hit surface /*
/* typedef struct bsp_surface_s
typedef struct bsp_surface_s {
{ char name[16];
char name[16]; int flags;
int flags; int value;
int value; } bsp_surface_t;
} bsp_surface_t;
//a trace is returned when a box is swept through the BSP world
//a trace is returned when a box is swept through the BSP world typedef struct bsp_trace_s
typedef struct bsp_trace_s {
{ qboolean allsolid; // if true, plane is not valid
qboolean allsolid; // if true, plane is not valid qboolean startsolid; // if true, the initial point was in a solid area
qboolean startsolid; // if true, the initial point was in a solid area float fraction; // time completed, 1.0 = didn't hit anything
float fraction; // time completed, 1.0 = didn't hit anything vec3_t endpos; // final position
vec3_t endpos; // final position cplane_t plane; // surface normal at impact
cplane_t plane; // surface normal at impact float exp_dist; // expanded plane distance
float exp_dist; // expanded plane distance int sidenum; // number of the brush side hit
int sidenum; // number of the brush side hit bsp_surface_t surface; // hit surface
bsp_surface_t surface; // hit surface int contents; // contents on other side of surface hit
int contents; // contents on other side of surface hit int ent; // number of entity hit
int ent; // number of entity hit } bsp_trace_t;
} bsp_trace_t; */
*/ //
//
//entity info
//entity info typedef struct aas_entityinfo_s {
typedef struct aas_entityinfo_s int valid; // true if updated this frame
{ int type; // entity type
int valid; // true if updated this frame int flags; // entity flags
int type; // entity type float ltime; // local time
int flags; // entity flags float update_time; // time between last and current update
float ltime; // local time int number; // number of the entity
float update_time; // time between last and current update vec3_t origin; // origin of the entity
int number; // number of the entity vec3_t angles; // angles of the model
vec3_t origin; // origin of the entity vec3_t old_origin; // for lerping
vec3_t angles; // angles of the model vec3_t lastvisorigin; // last visible origin
vec3_t old_origin; // for lerping vec3_t mins; // bounding box minimums
vec3_t lastvisorigin; // last visible origin vec3_t maxs; // bounding box maximums
vec3_t mins; // bounding box minimums int groundent; // ground entity
vec3_t maxs; // bounding box maximums int solid; // solid type
int groundent; // ground entity int modelindex; // model used
int solid; // solid type int modelindex2; // weapons, CTF flags, etc
int modelindex; // model used int frame; // model frame number
int modelindex2; // weapons, CTF flags, etc int event; // impulse events -- muzzle flashes, footsteps, etc
int frame; // model frame number int eventParm; // even parameter
int event; // impulse events -- muzzle flashes, footsteps, etc int powerups; // bit flags
int eventParm; // even parameter int weapon; // determines weapon and flash model, etc
int powerups; // bit flags int legsAnim; // mask off ANIM_TOGGLEBIT
int weapon; // determines weapon and flash model, etc int torsoAnim; // mask off ANIM_TOGGLEBIT
int legsAnim; // mask off ANIM_TOGGLEBIT } aas_entityinfo_t;
int torsoAnim; // mask off ANIM_TOGGLEBIT
} aas_entityinfo_t; // area info
typedef struct aas_areainfo_s {
// area info int contents;
typedef struct aas_areainfo_s int flags;
{ int presencetype;
int contents; int cluster;
int flags; vec3_t mins;
int presencetype; vec3_t maxs;
int cluster; vec3_t center;
vec3_t mins; } aas_areainfo_t;
vec3_t maxs;
vec3_t center; // client movement prediction stop events, stop as soon as:
} aas_areainfo_t; #define SE_NONE 0
#define SE_HITGROUND 1 // the ground is hit
// client movement prediction stop events, stop as soon as: #define SE_LEAVEGROUND 2 // there's no ground
#define SE_NONE 0 #define SE_ENTERWATER 4 // water is entered
#define SE_HITGROUND 1 // the ground is hit #define SE_ENTERSLIME 8 // slime is entered
#define SE_LEAVEGROUND 2 // there's no ground #define SE_ENTERLAVA 16 // lava is entered
#define SE_ENTERWATER 4 // water is entered #define SE_HITGROUNDDAMAGE 32 // the ground is hit with damage
#define SE_ENTERSLIME 8 // slime is entered #define SE_GAP 64 // there's a gap
#define SE_ENTERLAVA 16 // lava is entered #define SE_TOUCHJUMPPAD 128 // touching a jump pad area
#define SE_HITGROUNDDAMAGE 32 // the ground is hit with damage #define SE_TOUCHTELEPORTER 256 // touching teleporter
#define SE_GAP 64 // there's a gap #define SE_ENTERAREA 512 // the given stoparea is entered
#define SE_TOUCHJUMPPAD 128 // touching a jump pad area #define SE_HITGROUNDAREA 1024 // a ground face in the area is hit
#define SE_TOUCHTELEPORTER 256 // touching teleporter #define SE_HITBOUNDINGBOX 2048 // hit the specified bounding box
#define SE_ENTERAREA 512 // the given stoparea is entered #define SE_TOUCHCLUSTERPORTAL 4096 // touching a cluster portal
#define SE_HITGROUNDAREA 1024 // a ground face in the area is hit
#define SE_HITBOUNDINGBOX 2048 // hit the specified bounding box typedef struct aas_clientmove_s {
#define SE_TOUCHCLUSTERPORTAL 4096 // touching a cluster portal vec3_t endpos; //position at the end of movement prediction
int endarea; //area at end of movement prediction
typedef struct aas_clientmove_s vec3_t velocity; //velocity at the end of movement prediction
{ aas_trace_t trace; //last trace
vec3_t endpos; //position at the end of movement prediction int presencetype; //presence type at end of movement prediction
int endarea; //area at end of movement prediction int stopevent; //event that made the prediction stop
vec3_t velocity; //velocity at the end of movement prediction int endcontents; //contents at the end of movement prediction
aas_trace_t trace; //last trace float time; //time predicted ahead
int presencetype; //presence type at end of movement prediction int frames; //number of frames predicted ahead
int stopevent; //event that made the prediction stop } aas_clientmove_t;
int endcontents; //contents at the end of movement prediction
float time; //time predicted ahead // alternate route goals
int frames; //number of frames predicted ahead #define ALTROUTEGOAL_ALL 1
} aas_clientmove_t; #define ALTROUTEGOAL_CLUSTERPORTALS 2
#define ALTROUTEGOAL_VIEWPORTALS 4
// alternate route goals
#define ALTROUTEGOAL_ALL 1 typedef struct aas_altroutegoal_s {
#define ALTROUTEGOAL_CLUSTERPORTALS 2 vec3_t origin;
#define ALTROUTEGOAL_VIEWPORTALS 4 int areanum;
unsigned short starttraveltime;
typedef struct aas_altroutegoal_s unsigned short goaltraveltime;
{ unsigned short extratraveltime;
vec3_t origin; } aas_altroutegoal_t;
int areanum;
unsigned short starttraveltime; // route prediction stop events
unsigned short goaltraveltime; #define RSE_NONE 0
unsigned short extratraveltime; #define RSE_NOROUTE 1 //no route to goal
} aas_altroutegoal_t; #define RSE_USETRAVELTYPE 2 //stop as soon as on of the given travel types is used
#define RSE_ENTERCONTENTS 4 //stop when entering the given contents
// route prediction stop events #define RSE_ENTERAREA 8 //stop when entering the given area
#define RSE_NONE 0
#define RSE_NOROUTE 1 //no route to goal typedef struct aas_predictroute_s {
#define RSE_USETRAVELTYPE 2 //stop as soon as on of the given travel types is used vec3_t endpos; //position at the end of movement prediction
#define RSE_ENTERCONTENTS 4 //stop when entering the given contents int endarea; //area at end of movement prediction
#define RSE_ENTERAREA 8 //stop when entering the given area int stopevent; //event that made the prediction stop
int endcontents; //contents at the end of movement prediction
typedef struct aas_predictroute_s int endtravelflags; //end travel flags
{ int numareas; //number of areas predicted ahead
vec3_t endpos; //position at the end of movement prediction int time; //time predicted ahead (in hundreth of a sec)
int endarea; //area at end of movement prediction } aas_predictroute_t;
int stopevent; //event that made the prediction stop
int endcontents; //contents at the end of movement prediction
int endtravelflags; //end travel flags
int numareas; //number of areas predicted ahead
int time; //time predicted ahead (in hundreth of a sec)
} aas_predictroute_t;

View File

@ -1,32 +1,32 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: be_ai_char.h * name: be_ai_char.h
* *
* desc: bot characters * desc: bot characters
* *
* $Archive: /Code/DLLs/game/be_ai_char.h $ * $Archive: /Code/DLLs/game/be_ai_char.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 5/17/02 11:35a $ * $Modtime: 5/17/02 11:35a $
* $Date: 7/31/02 10:45a $ * $Date: 7/31/02 10:45a $
* *
*****************************************************************************/ *****************************************************************************/
//loads a bot character from a file //loads a bot character from a file
int BotLoadCharacter(char *charfile, float skill); int BotLoadCharacter(char* charfile, float skill);
//frees a bot character //frees a bot character
void BotFreeCharacter(int character); void BotFreeCharacter(int character);
//returns a float characteristic //returns a float characteristic
float Characteristic_Float(int character, int index); float Characteristic_Float(int character, int index);
//returns a bounded float characteristic //returns a bounded float characteristic
float Characteristic_BFloat(int character, int index, float min, float max); float Characteristic_BFloat(int character, int index, float min, float max);
//returns an integer characteristic //returns an integer characteristic
int Characteristic_Integer(int character, int index); int Characteristic_Integer(int character, int index);
//returns a bounded integer characteristic //returns a bounded integer characteristic
int Characteristic_BInteger(int character, int index, int min, int max); int Characteristic_BInteger(int character, int index, int min, int max);
//returns a string characteristic //returns a string characteristic
void Characteristic_String(int character, int index, char *buf, int size); void Characteristic_String(int character, int index, char* buf, int size);
//free cached bot characters //free cached bot characters
void BotShutdownCharacters(void); void BotShutdownCharacters(void);

View File

@ -1,97 +1,95 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: be_ai_chat.h * name: be_ai_chat.h
* *
* desc: char AI * desc: char AI
* *
* $Archive: /Code/DLLs/game/be_ai_chat.h $ * $Archive: /Code/DLLs/game/be_ai_chat.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 5/17/02 11:35a $ * $Modtime: 5/17/02 11:35a $
* $Date: 7/31/02 10:45a $ * $Date: 7/31/02 10:45a $
* *
*****************************************************************************/ *****************************************************************************/
#define MAX_MESSAGE_SIZE 256 #define MAX_MESSAGE_SIZE 256
#define MAX_CHATTYPE_NAME 32 #define MAX_CHATTYPE_NAME 32
#define MAX_MATCHVARIABLES 8 #define MAX_MATCHVARIABLES 8
#define CHAT_GENDERLESS 0 #define CHAT_GENDERLESS 0
#define CHAT_GENDERFEMALE 1 #define CHAT_GENDERFEMALE 1
#define CHAT_GENDERMALE 2 #define CHAT_GENDERMALE 2
#define CHAT_ALL 0 #define CHAT_ALL 0
#define CHAT_TEAM 1 #define CHAT_TEAM 1
#define CHAT_TELL 2 #define CHAT_TELL 2
//a console message //a console message
typedef struct bot_consolemessage_s typedef struct bot_consolemessage_s {
{ int handle;
int handle; float time; //message time
float time; //message time int type; //message type
int type; //message type char message[MAX_MESSAGE_SIZE]; //message
char message[MAX_MESSAGE_SIZE]; //message struct bot_consolemessage_s* prev; // prev in list
struct bot_consolemessage_s *prev, *next; //prev and next in list struct bot_consolemessage_s* next; // next in list
} bot_consolemessage_t; } bot_consolemessage_t;
//match variable //match variable
typedef struct bot_matchvariable_s typedef struct bot_matchvariable_s {
{ char offset;
char offset; int length;
int length; } bot_matchvariable_t;
} bot_matchvariable_t; //returned to AI when a match is found
//returned to AI when a match is found typedef struct bot_match_s {
typedef struct bot_match_s char string[MAX_MESSAGE_SIZE];
{ int type;
char string[MAX_MESSAGE_SIZE]; int subtype;
int type; bot_matchvariable_t variables[MAX_MATCHVARIABLES];
int subtype; } bot_match_t;
bot_matchvariable_t variables[MAX_MATCHVARIABLES];
} bot_match_t; //setup the chat AI
int BotSetupChatAI(void);
//setup the chat AI //shutdown the chat AI
int BotSetupChatAI(void); void BotShutdownChatAI(void);
//shutdown the chat AI //returns the handle to a newly allocated chat state
void BotShutdownChatAI(void); int BotAllocChatState(void);
//returns the handle to a newly allocated chat state //frees the chatstate
int BotAllocChatState(void); void BotFreeChatState(int handle);
//frees the chatstate //adds a console message to the chat state
void BotFreeChatState(int handle); void BotQueueConsoleMessage(int chatstate, int type, char* message);
//adds a console message to the chat state //removes the console message from the chat state
void BotQueueConsoleMessage(int chatstate, int type, char *message); void BotRemoveConsoleMessage(int chatstate, int handle);
//removes the console message from the chat state //returns the next console message from the state
void BotRemoveConsoleMessage(int chatstate, int handle); int BotNextConsoleMessage(int chatstate, bot_consolemessage_t* cm);
//returns the next console message from the state //returns the number of console messages currently stored in the state
int BotNextConsoleMessage(int chatstate, bot_consolemessage_t *cm); int BotNumConsoleMessages(int chatstate);
//returns the number of console messages currently stored in the state //selects a chat message of the given type
int BotNumConsoleMessages(int chatstate); void BotInitialChat(int chatstate, char* type, int mcontext, char* var0, char* var1, char* var2, char* var3, char* var4, char* var5, char* var6, char* var7);
//selects a chat message of the given type //returns the number of initial chat messages of the given type
void BotInitialChat(int chatstate, char *type, int mcontext, char *var0, char *var1, char *var2, char *var3, char *var4, char *var5, char *var6, char *var7); int BotNumInitialChats(int chatstate, char* type);
//returns the number of initial chat messages of the given type //find and select a reply for the given message
int BotNumInitialChats(int chatstate, char *type); int 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);
//find and select a reply for the given message //returns the length of the currently selected chat message
int 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); int BotChatLength(int chatstate);
//returns the length of the currently selected chat message //enters the selected chat message
int BotChatLength(int chatstate); void BotEnterChat(int chatstate, int clientto, int sendto);
//enters the selected chat message //get the chat message ready to be output
void BotEnterChat(int chatstate, int clientto, int sendto); void BotGetChatMessage(int chatstate, char* buf, int size);
//get the chat message ready to be output //checks if the first string contains the second one, returns index into first string or -1 if not found
void BotGetChatMessage(int chatstate, char *buf, int size); int StringContains(char* str1, char* str2, int casesensitive);
//checks if the first string contains the second one, returns index into first string or -1 if not found //finds a match for the given string using the match templates
int StringContains(char *str1, char *str2, int casesensitive); int BotFindMatch(char* str, bot_match_t* match, unsigned long int context);
//finds a match for the given string using the match templates //returns a variable from a match
int BotFindMatch(char *str, bot_match_t *match, unsigned long int context); void BotMatchVariable(bot_match_t* match, int variable, char* buf, int size);
//returns a variable from a match //unify all the white spaces in the string
void BotMatchVariable(bot_match_t *match, int variable, char *buf, int size); void UnifyWhiteSpaces(char* string);
//unify all the white spaces in the string //replace all the context related synonyms in the string
void UnifyWhiteSpaces(char *string); void BotReplaceSynonyms(char* string, unsigned long int context);
//replace all the context related synonyms in the string //loads a chat file for the chat state
void BotReplaceSynonyms(char *string, unsigned long int context); int BotLoadChatFile(int chatstate, char* chatfile, char* chatname);
//loads a chat file for the chat state //store the gender of the bot in the chat state
int BotLoadChatFile(int chatstate, char *chatfile, char *chatname); void BotSetChatGender(int chatstate, int gender);
//store the gender of the bot in the chat state //store the bot name in the chat state
void BotSetChatGender(int chatstate, int gender); void BotSetChatName(int chatstate, char* name, int client);
//store the bot name in the chat state
void BotSetChatName(int chatstate, char *name, int client);

View File

@ -1,17 +1,17 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: be_ai_gen.h * name: be_ai_gen.h
* *
* desc: genetic selection * desc: genetic selection
* *
* $Archive: /Code/DLLs/game/be_ai_gen.h $ * $Archive: /Code/DLLs/game/be_ai_gen.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 5/17/02 11:35a $ * $Modtime: 5/17/02 11:35a $
* $Date: 7/31/02 10:45a $ * $Date: 7/31/02 10:45a $
* *
*****************************************************************************/ *****************************************************************************/
int GeneticParentsAndChildSelection(int numranks, float *ranks, int *parent1, int *parent2, int *child); int GeneticParentsAndChildSelection(int numranks, float* ranks, int* parent1, int* parent2, int* child);

View File

@ -1,102 +1,101 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: be_ai_goal.h * name: be_ai_goal.h
* *
* desc: goal AI * desc: goal AI
* *
* $Archive: /Code/DLLs/game/be_ai_goal.h $ * $Archive: /Code/DLLs/game/be_ai_goal.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 5/17/02 11:35a $ * $Modtime: 5/17/02 11:35a $
* $Date: 7/31/02 10:45a $ * $Date: 7/31/02 10:45a $
* *
*****************************************************************************/ *****************************************************************************/
#define MAX_AVOIDGOALS 256 #define MAX_AVOIDGOALS 256
#define MAX_GOALSTACK 8 #define MAX_GOALSTACK 8
#define GFL_NONE 0 #define GFL_NONE 0
#define GFL_ITEM 1 #define GFL_ITEM 1
#define GFL_ROAM 2 #define GFL_ROAM 2
#define GFL_DROPPED 4 #define GFL_DROPPED 4
//a bot goal //a bot goal
typedef struct bot_goal_s typedef struct bot_goal_s {
{ vec3_t origin; //origin of the goal
vec3_t origin; //origin of the goal int areanum; //area number of the goal
int areanum; //area number of the goal vec3_t mins, maxs; //mins and maxs of the goal
vec3_t mins, maxs; //mins and maxs of the goal int entitynum; //number of the goal entity
int entitynum; //number of the goal entity int number; //goal number
int number; //goal number int flags; //goal flags
int flags; //goal flags int iteminfo; //item information
int iteminfo; //item information } bot_goal_t;
} bot_goal_t;
//reset the whole goal state, but keep the item weights
//reset the whole goal state, but keep the item weights void BotResetGoalState(int goalstate);
void BotResetGoalState(int goalstate); //reset avoid goals
//reset avoid goals void BotResetAvoidGoals(int goalstate);
void BotResetAvoidGoals(int goalstate); //remove the goal with the given number from the avoid goals
//remove the goal with the given number from the avoid goals void BotRemoveFromAvoidGoals(int goalstate, int number);
void BotRemoveFromAvoidGoals(int goalstate, int number); //push a goal onto the goal stack
//push a goal onto the goal stack void BotPushGoal(int goalstate, bot_goal_t* goal);
void BotPushGoal(int goalstate, bot_goal_t *goal); //pop a goal from the goal stack
//pop a goal from the goal stack void BotPopGoal(int goalstate);
void BotPopGoal(int goalstate); //empty the bot's goal stack
//empty the bot's goal stack void BotEmptyGoalStack(int goalstate);
void BotEmptyGoalStack(int goalstate); //dump the avoid goals
//dump the avoid goals void BotDumpAvoidGoals(int goalstate);
void BotDumpAvoidGoals(int goalstate); //dump the goal stack
//dump the goal stack void BotDumpGoalStack(int goalstate);
void BotDumpGoalStack(int goalstate); //get the name name of the goal with the given number
//get the name name of the goal with the given number void BotGoalName(int number, char* name, int size);
void BotGoalName(int number, char *name, int size); //get the top goal from the stack
//get the top goal from the stack int BotGetTopGoal(int goalstate, bot_goal_t* goal);
int BotGetTopGoal(int goalstate, bot_goal_t *goal); //get the second goal on the stack
//get the second goal on the stack int BotGetSecondGoal(int goalstate, bot_goal_t* goal);
int BotGetSecondGoal(int goalstate, bot_goal_t *goal); //choose the best long term goal item for the bot
//choose the best long term goal item for the bot int BotChooseLTGItem(int goalstate, vec3_t origin, int* inventory, int travelflags);
int BotChooseLTGItem(int goalstate, vec3_t origin, int *inventory, int travelflags); //choose the best nearby goal item for the bot
//choose the best nearby goal item for the bot //the item may not be further away from the current bot position than maxtime
//the item may not be further away from the current bot position than maxtime //also the travel time from the nearby goal towards the long term goal may not
//also the travel time from the nearby goal towards the long term goal may not //be larger than the travel time towards the long term goal from the current bot position
//be larger than the travel time towards the long term goal from the current bot position int BotChooseNBGItem(int goalstate, vec3_t origin, int* inventory, int travelflags,
int BotChooseNBGItem(int goalstate, vec3_t origin, int *inventory, int travelflags, bot_goal_t* ltg, float maxtime);
bot_goal_t *ltg, float maxtime); //returns true if the bot touches the goal
//returns true if the bot touches the goal int BotTouchingGoal(vec3_t origin, bot_goal_t* goal);
int BotTouchingGoal(vec3_t origin, bot_goal_t *goal); //returns true if the goal should be visible but isn't
//returns true if the goal should be visible but isn't int BotItemGoalInVisButNotVisible(int viewer, vec3_t eye, vec3_t viewangles, bot_goal_t* goal);
int BotItemGoalInVisButNotVisible(int viewer, vec3_t eye, vec3_t viewangles, bot_goal_t *goal); //search for a goal for the given classname, the index can be used
//search for a goal for the given classname, the index can be used //as a start point for the search when multiple goals are available with that same classname
//as a start point for the search when multiple goals are available with that same classname int BotGetLevelItemGoal(int index, char* classname, bot_goal_t* goal);
int BotGetLevelItemGoal(int index, char *classname, bot_goal_t *goal); //get the next camp spot in the map
//get the next camp spot in the map int BotGetNextCampSpotGoal(int num, bot_goal_t* goal);
int BotGetNextCampSpotGoal(int num, bot_goal_t *goal); //get the map location with the given name
//get the map location with the given name int BotGetMapLocationGoal(char* name, bot_goal_t* goal);
int BotGetMapLocationGoal(char *name, bot_goal_t *goal); //returns the avoid goal time
//returns the avoid goal time float BotAvoidGoalTime(int goalstate, int number);
float BotAvoidGoalTime(int goalstate, int number); //set the avoid goal time
//set the avoid goal time void BotSetAvoidGoalTime(int goalstate, int number, float avoidtime);
void BotSetAvoidGoalTime(int goalstate, int number, float avoidtime); //initializes the items in the level
//initializes the items in the level void BotInitLevelItems(void);
void BotInitLevelItems(void); //regularly update dynamic entity items (dropped weapons, flags etc.)
//regularly update dynamic entity items (dropped weapons, flags etc.) void BotUpdateEntityItems(void);
void BotUpdateEntityItems(void); //interbreed the goal fuzzy logic
//interbreed the goal fuzzy logic void BotInterbreedGoalFuzzyLogic(int parent1, int parent2, int child);
void BotInterbreedGoalFuzzyLogic(int parent1, int parent2, int child); //save the goal fuzzy logic to disk
//save the goal fuzzy logic to disk void BotSaveGoalFuzzyLogic(int goalstate, char* filename);
void BotSaveGoalFuzzyLogic(int goalstate, char *filename); //mutate the goal fuzzy logic
//mutate the goal fuzzy logic void BotMutateGoalFuzzyLogic(int goalstate, float range);
void BotMutateGoalFuzzyLogic(int goalstate, float range); //loads item weights for the bot
//loads item weights for the bot int BotLoadItemWeights(int goalstate, char* filename);
int BotLoadItemWeights(int goalstate, char *filename); //frees the item weights of the bot
//frees the item weights of the bot void BotFreeItemWeights(int goalstate);
void BotFreeItemWeights(int goalstate); //returns the handle of a newly allocated goal state
//returns the handle of a newly allocated goal state int BotAllocGoalState(int client);
int BotAllocGoalState(int client); //free the given goal state
//free the given goal state void BotFreeGoalState(int handle);
void BotFreeGoalState(int handle); //setup the goal AI
//setup the goal AI int BotSetupGoalAI(void);
int BotSetupGoalAI(void); //shut down the goal AI
//shut down the goal AI void BotShutdownGoalAI(void);
void BotShutdownGoalAI(void);

View File

@ -1,126 +1,123 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: be_ai_move.h * name: be_ai_move.h
* *
* desc: movement AI * desc: movement AI
* *
* $Archive: /Code/DLLs/game/be_ai_move.h $ * $Archive: /Code/DLLs/game/be_ai_move.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 1 $ * $Revision: 1 $
* $Modtime: 5/17/02 11:35a $ * $Modtime: 5/17/02 11:35a $
* $Date: 7/31/02 10:45a $ * $Date: 7/31/02 10:45a $
* *
*****************************************************************************/ *****************************************************************************/
//movement types //movement types
#define MOVE_WALK 1 #define MOVE_WALK 1
#define MOVE_CROUCH 2 #define MOVE_CROUCH 2
#define MOVE_JUMP 4 #define MOVE_JUMP 4
#define MOVE_GRAPPLE 8 #define MOVE_GRAPPLE 8
#define MOVE_ROCKETJUMP 16 #define MOVE_ROCKETJUMP 16
#define MOVE_BFGJUMP 32 #define MOVE_BFGJUMP 32
//move flags //move flags
#define MFL_BARRIERJUMP 1 //bot is performing a barrier jump #define MFL_BARRIERJUMP 1 //bot is performing a barrier jump
#define MFL_ONGROUND 2 //bot is in the ground #define MFL_ONGROUND 2 //bot is in the ground
#define MFL_SWIMMING 4 //bot is swimming #define MFL_SWIMMING 4 //bot is swimming
#define MFL_AGAINSTLADDER 8 //bot is against a ladder #define MFL_AGAINSTLADDER 8 //bot is against a ladder
#define MFL_WATERJUMP 16 //bot is waterjumping #define MFL_WATERJUMP 16 //bot is waterjumping
#define MFL_TELEPORTED 32 //bot is being teleported #define MFL_TELEPORTED 32 //bot is being teleported
#define MFL_GRAPPLEPULL 64 //bot is being pulled by the grapple #define MFL_GRAPPLEPULL 64 //bot is being pulled by the grapple
#define MFL_ACTIVEGRAPPLE 128 //bot is using the grapple hook #define MFL_ACTIVEGRAPPLE 128 //bot is using the grapple hook
#define MFL_GRAPPLERESET 256 //bot has reset the grapple #define MFL_GRAPPLERESET 256 //bot has reset the grapple
#define MFL_WALK 512 //bot should walk slowly #define MFL_WALK 512 //bot should walk slowly
// move result flags // move result flags
#define MOVERESULT_MOVEMENTVIEW 1 //bot uses view for movement #define MOVERESULT_MOVEMENTVIEW 1 //bot uses view for movement
#define MOVERESULT_SWIMVIEW 2 //bot uses view for swimming #define MOVERESULT_SWIMVIEW 2 //bot uses view for swimming
#define MOVERESULT_WAITING 4 //bot is waiting for something #define MOVERESULT_WAITING 4 //bot is waiting for something
#define MOVERESULT_MOVEMENTVIEWSET 8 //bot has set the view in movement code #define MOVERESULT_MOVEMENTVIEWSET 8 //bot has set the view in movement code
#define MOVERESULT_MOVEMENTWEAPON 16 //bot uses weapon for movement #define MOVERESULT_MOVEMENTWEAPON 16 //bot uses weapon for movement
#define MOVERESULT_ONTOPOFOBSTACLE 32 //bot is ontop of obstacle #define MOVERESULT_ONTOPOFOBSTACLE 32 //bot is ontop of obstacle
#define MOVERESULT_ONTOPOF_FUNCBOB 64 //bot is ontop of a func_bobbing #define MOVERESULT_ONTOPOF_FUNCBOB 64 //bot is ontop of a func_bobbing
#define MOVERESULT_ONTOPOF_ELEVATOR 128 //bot is ontop of an elevator (func_plat) #define MOVERESULT_ONTOPOF_ELEVATOR 128 //bot is ontop of an elevator (func_plat)
#define MOVERESULT_BLOCKEDBYAVOIDSPOT 256 //bot is blocked by an avoid spot #define MOVERESULT_BLOCKEDBYAVOIDSPOT 256 //bot is blocked by an avoid spot
// //
#define MAX_AVOIDREACH 1 #define MAX_AVOIDREACH 1
#define MAX_AVOIDSPOTS 32 #define MAX_AVOIDSPOTS 32
// avoid spot types // avoid spot types
#define AVOID_CLEAR 0 //clear all avoid spots #define AVOID_CLEAR 0 //clear all avoid spots
#define AVOID_ALWAYS 1 //avoid always #define AVOID_ALWAYS 1 //avoid always
#define AVOID_DONTBLOCK 2 //never totally block #define AVOID_DONTBLOCK 2 //never totally block
// restult types // restult types
#define RESULTTYPE_ELEVATORUP 1 //elevator is up #define RESULTTYPE_ELEVATORUP 1 //elevator is up
#define RESULTTYPE_WAITFORFUNCBOBBING 2 //waiting for func bobbing to arrive #define RESULTTYPE_WAITFORFUNCBOBBING 2 //waiting for func bobbing to arrive
#define RESULTTYPE_BADGRAPPLEPATH 4 //grapple path is obstructed #define RESULTTYPE_BADGRAPPLEPATH 4 //grapple path is obstructed
#define RESULTTYPE_INSOLIDAREA 8 //stuck in solid area, this is bad #define RESULTTYPE_INSOLIDAREA 8 //stuck in solid area, this is bad
//structure used to initialize the movement state //structure used to initialize the movement state
//the or_moveflags MFL_ONGROUND, MFL_TELEPORTED and MFL_WATERJUMP come from the playerstate //the or_moveflags MFL_ONGROUND, MFL_TELEPORTED and MFL_WATERJUMP come from the playerstate
typedef struct bot_initmove_s typedef struct bot_initmove_s {
{ vec3_t origin; //origin of the bot
vec3_t origin; //origin of the bot vec3_t velocity; //velocity of the bot
vec3_t velocity; //velocity of the bot vec3_t viewoffset; //view offset
vec3_t viewoffset; //view offset int entitynum; //entity number of the bot
int entitynum; //entity number of the bot int client; //client number of the bot
int client; //client number of the bot float thinktime; //time the bot thinks
float thinktime; //time the bot thinks int presencetype; //presencetype of the bot
int presencetype; //presencetype of the bot vec3_t viewangles; //view angles of the bot
vec3_t viewangles; //view angles of the bot int or_moveflags; //values ored to the movement flags
int or_moveflags; //values ored to the movement flags } bot_initmove_t;
} bot_initmove_t;
//NOTE: the ideal_viewangles are only valid if MFL_MOVEMENTVIEW is set
//NOTE: the ideal_viewangles are only valid if MFL_MOVEMENTVIEW is set typedef struct bot_moveresult_s {
typedef struct bot_moveresult_s int failure; //true if movement failed all together
{ int type; //failure or blocked type
int failure; //true if movement failed all together int blocked; //true if blocked by an entity
int type; //failure or blocked type int blockentity; //entity blocking the bot
int blocked; //true if blocked by an entity int traveltype; //last executed travel type
int blockentity; //entity blocking the bot int flags; //result flags
int traveltype; //last executed travel type int weapon; //weapon used for movement
int flags; //result flags vec3_t movedir; //movement direction
int weapon; //weapon used for movement vec3_t ideal_viewangles; //ideal viewangles for the movement
vec3_t movedir; //movement direction } bot_moveresult_t;
vec3_t ideal_viewangles; //ideal viewangles for the movement
} bot_moveresult_t; // bk001204: from code/botlib/be_ai_move.c
// TTimo 04/12/2001 was moved here to avoid dup defines
// bk001204: from code/botlib/be_ai_move.c typedef struct bot_avoidspot_s {
// TTimo 04/12/2001 was moved here to avoid dup defines vec3_t origin;
typedef struct bot_avoidspot_s float radius;
{ int type;
vec3_t origin; } bot_avoidspot_t;
float radius;
int type; //resets the whole move state
} bot_avoidspot_t; void BotResetMoveState(int movestate);
//moves the bot to the given goal
//resets the whole move state void BotMoveToGoal(bot_moveresult_t* result, int movestate, bot_goal_t* goal, int travelflags);
void BotResetMoveState(int movestate); //moves the bot in the specified direction using the specified type of movement
//moves the bot to the given goal int BotMoveInDirection(int movestate, vec3_t dir, float speed, int type);
void BotMoveToGoal(bot_moveresult_t *result, int movestate, bot_goal_t *goal, int travelflags); //reset avoid reachability
//moves the bot in the specified direction using the specified type of movement void BotResetAvoidReach(int movestate);
int BotMoveInDirection(int movestate, vec3_t dir, float speed, int type); //resets the last avoid reachability
//reset avoid reachability void BotResetLastAvoidReach(int movestate);
void BotResetAvoidReach(int movestate); //returns a reachability area if the origin is in one
//resets the last avoid reachability int BotReachabilityArea(vec3_t origin, int client);
void BotResetLastAvoidReach(int movestate); //view target based on movement
//returns a reachability area if the origin is in one int BotMovementViewTarget(int movestate, bot_goal_t* goal, int travelflags, float lookahead, vec3_t target);
int BotReachabilityArea(vec3_t origin, int client); //predict the position of a player based on movement towards a goal
//view target based on movement int BotPredictVisiblePosition(vec3_t origin, int areanum, bot_goal_t* goal, int travelflags, vec3_t target);
int BotMovementViewTarget(int movestate, bot_goal_t *goal, int travelflags, float lookahead, vec3_t target); //returns the handle of a newly allocated movestate
//predict the position of a player based on movement towards a goal int BotAllocMoveState(void);
int BotPredictVisiblePosition(vec3_t origin, int areanum, bot_goal_t *goal, int travelflags, vec3_t target); //frees the movestate with the given handle
//returns the handle of a newly allocated movestate void BotFreeMoveState(int handle);
int BotAllocMoveState(void); //initialize movement state before performing any movement
//frees the movestate with the given handle void BotInitMoveState(int handle, bot_initmove_t* initmove);
void BotFreeMoveState(int handle); //add a spot to avoid (if type == AVOID_CLEAR all spots are removed)
//initialize movement state before performing any movement void BotAddAvoidSpot(int movestate, vec3_t origin, float radius, int type);
void BotInitMoveState(int handle, bot_initmove_t *initmove); //must be called every map change
//add a spot to avoid (if type == AVOID_CLEAR all spots are removed) void BotSetBrushModelTypes(void);
void BotAddAvoidSpot(int movestate, vec3_t origin, float radius, int type); //setup movement AI
//must be called every map change int BotSetupMoveAI(void);
void BotSetBrushModelTypes(void); //shutdown movement AI
//setup movement AI void BotShutdownMoveAI(void);
int BotSetupMoveAI(void);
//shutdown movement AI
void BotShutdownMoveAI(void);

View File

@ -1,90 +1,88 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
/***************************************************************************** /*****************************************************************************
* name: be_ai_weap.h * name: be_ai_weap.h
* *
* desc: weapon AI * desc: weapon AI
* *
* $Archive: /Code/DLLs/game/be_ai_weap.h $ * $Archive: /Code/DLLs/game/be_ai_weap.h $
* $Author: Jwaters $ * $Author: Jwaters $
* $Revision: 4 $ * $Revision: 4 $
* $Modtime: 8/19/02 3:51p $ * $Modtime: 8/19/02 3:51p $
* $Date: 8/19/02 4:08p $ * $Date: 8/19/02 4:08p $
* *
*****************************************************************************/ *****************************************************************************/
//projectile flags //projectile flags
#define PFL_WINDOWDAMAGE 1 //projectile damages through window #define PFL_WINDOWDAMAGE 1 //projectile damages through window
#define PFL_RETURN 2 //set when projectile returns to owner #define PFL_RETURN 2 //set when projectile returns to owner
//weapon flags //weapon flags
#define WFL_FIRERELEASED 1 //set when projectile is fired with key-up event #define WFL_FIRERELEASED 1 //set when projectile is fired with key-up event
//damage types //damage types
#define DAMAGETYPE_IMPACT 1 //damage on impact #define DAMAGETYPE_IMPACT 1 //damage on impact
#define DAMAGETYPE_RADIAL 2 //radial damage #define DAMAGETYPE_RADIAL 2 //radial damage
#define DAMAGETYPE_VISIBLE 4 //damage to all entities visible to the projectile #define DAMAGETYPE_VISIBLE 4 //damage to all entities visible to the projectile
typedef struct projectileinfo_s typedef struct projectileinfo_s {
{ char name[MAX_STRINGFIELD];
char name[MAX_STRINGFIELD]; char model[MAX_STRINGFIELD];
char model[MAX_STRINGFIELD]; int flags;
int flags; float gravity;
float gravity; int damage;
int damage; float radius;
float radius; int visdamage;
int visdamage; int damagetype;
int damagetype; int healthinc;
int healthinc; float push;
float push; float detonation;
float detonation; float bounce;
float bounce; float bouncefric;
float bouncefric; float bouncestop;
float bouncestop; } projectileinfo_t;
} projectileinfo_t;
typedef struct weaponinfo_s {
typedef struct weaponinfo_s int valid; //true if the weapon info is valid
{ int number; //number of the weapon
int valid; //true if the weapon info is valid char name[MAX_STRINGFIELD];
int number; //number of the weapon char model[MAX_STRINGFIELD];
char name[MAX_STRINGFIELD]; int level;
char model[MAX_STRINGFIELD]; int weaponindex;
int level; int flags;
int weaponindex; char projectile[MAX_STRINGFIELD];
int flags; int numprojectiles;
char projectile[MAX_STRINGFIELD]; float hspread;
int numprojectiles; float vspread;
float hspread; float speed;
float vspread; float acceleration;
float speed; vec3_t recoil;
float acceleration; vec3_t offset;
vec3_t recoil; vec3_t angleoffset;
vec3_t offset; float extrazvelocity;
vec3_t angleoffset; int ammoamount;
float extrazvelocity; int ammoindex;
int ammoamount; float activate;
int ammoindex; float reload;
float activate; float spinup;
float reload; float spindown;
float spinup; int primarydangerous; // if primary and/or alternate fire are REALLY DANGEROUS
float spindown; int altdangerous;
int primarydangerous; // if primary and/or alternate fire are REALLY DANGEROUS projectileinfo_t proj; //pointer to the used projectile
int altdangerous; } weaponinfo_t;
projectileinfo_t proj; //pointer to the used projectile
} weaponinfo_t; //setup the weapon AI
int BotSetupWeaponAI(void);
//setup the weapon AI //shut down the weapon AI
int BotSetupWeaponAI(void); void BotShutdownWeaponAI(void);
//shut down the weapon AI //returns the best weapon to fight with
void BotShutdownWeaponAI(void); int BotChooseBestFightWeapon(int weaponstate, int* inventory);
//returns the best weapon to fight with //returns the information of the current weapon
int BotChooseBestFightWeapon(int weaponstate, int *inventory); void BotGetWeaponInfo(int weaponstate, int weapon, weaponinfo_t* weaponinfo);
//returns the information of the current weapon //loads the weapon weights
void BotGetWeaponInfo(int weaponstate, int weapon, weaponinfo_t *weaponinfo); int BotLoadWeaponWeights(int weaponstate, char* filename);
//loads the weapon weights //returns a handle to a newly allocated weapon state
int BotLoadWeaponWeights(int weaponstate, char *filename); int BotAllocWeaponState(void);
//returns a handle to a newly allocated weapon state //frees the weapon state
int BotAllocWeaponState(void); void BotFreeWeaponState(int weaponstate);
//frees the weapon state //resets the whole weapon state
void BotFreeWeaponState(int weaponstate); void BotResetWeaponState(int weaponstate);
//resets the whole weapon state
void BotResetWeaponState(int weaponstate);

File diff suppressed because it is too large Load Diff

View File

@ -1,287 +1,287 @@
#define ITEM_TYPE_TEXT 0 // simple text #define ITEM_TYPE_TEXT 0 // simple text
#define ITEM_TYPE_BUTTON 1 // button, basically text with a border #define ITEM_TYPE_BUTTON 1 // button, basically text with a border
#define ITEM_TYPE_RADIOBUTTON 2 // toggle button, may be grouped #define ITEM_TYPE_RADIOBUTTON 2 // toggle button, may be grouped
#define ITEM_TYPE_CHECKBOX 3 // check box #define ITEM_TYPE_CHECKBOX 3 // check box
#define ITEM_TYPE_EDITFIELD 4 // editable text, associated with a cvar #define ITEM_TYPE_EDITFIELD 4 // editable text, associated with a cvar
#define ITEM_TYPE_COMBO 5 // drop down list #define ITEM_TYPE_COMBO 5 // drop down list
#define ITEM_TYPE_LISTBOX 6 // scrollable list #define ITEM_TYPE_LISTBOX 6 // scrollable list
#define ITEM_TYPE_MODEL 7 // model #define ITEM_TYPE_MODEL 7 // model
#define ITEM_TYPE_OWNERDRAW 8 // owner draw, name specs what it is #define ITEM_TYPE_OWNERDRAW 8 // owner draw, name specs what it is
#define ITEM_TYPE_NUMERICFIELD 9 // editable text, associated with a cvar #define ITEM_TYPE_NUMERICFIELD 9 // editable text, associated with a cvar
#define ITEM_TYPE_SLIDER 10 // mouse speed, volume, etc. #define ITEM_TYPE_SLIDER 10 // mouse speed, volume, etc.
#define ITEM_TYPE_YESNO 11 // yes no cvar setting #define ITEM_TYPE_YESNO 11 // yes no cvar setting
#define ITEM_TYPE_MULTI 12 // multiple list setting, enumerated #define ITEM_TYPE_MULTI 12 // multiple list setting, enumerated
#define ITEM_TYPE_BIND 13 // multiple list setting, enumerated #define ITEM_TYPE_BIND 13 // multiple list setting, enumerated
#define ITEM_ALIGN_LEFT 0 // left alignment #define ITEM_ALIGN_LEFT 0 // left alignment
#define ITEM_ALIGN_CENTER 1 // center alignment #define ITEM_ALIGN_CENTER 1 // center alignment
#define ITEM_ALIGN_RIGHT 2 // right alignment #define ITEM_ALIGN_RIGHT 2 // right alignment
#define ITEM_TEXTSTYLE_NORMAL 0 // normal text #define ITEM_TEXTSTYLE_NORMAL 0 // normal text
#define ITEM_TEXTSTYLE_BLINK 1 // fast blinking #define ITEM_TEXTSTYLE_BLINK 1 // fast blinking
#define ITEM_TEXTSTYLE_PULSE 2 // slow pulsing #define ITEM_TEXTSTYLE_PULSE 2 // slow pulsing
#define ITEM_TEXTSTYLE_SHADOWED 3 // drop shadow ( need a color for this ) #define ITEM_TEXTSTYLE_SHADOWED 3 // drop shadow ( need a color for this )
#define ITEM_TEXTSTYLE_OUTLINED 4 // drop shadow ( need a color for this ) #define ITEM_TEXTSTYLE_OUTLINED 4 // drop shadow ( need a color for this )
#define ITEM_TEXTSTYLE_OUTLINESHADOWED 5 // drop shadow ( need a color for this ) #define ITEM_TEXTSTYLE_OUTLINESHADOWED 5 // drop shadow ( need a color for this )
#define ITEM_TEXTSTYLE_SHADOWEDMORE 6 // drop shadow ( need a color for this ) #define ITEM_TEXTSTYLE_SHADOWEDMORE 6 // drop shadow ( need a color for this )
#define WINDOW_BORDER_NONE 0 // no border #define WINDOW_BORDER_NONE 0 // no border
#define WINDOW_BORDER_FULL 1 // full border based on border color ( single pixel ) #define WINDOW_BORDER_FULL 1 // full border based on border color ( single pixel )
#define WINDOW_BORDER_HORZ 2 // horizontal borders only #define WINDOW_BORDER_HORZ 2 // horizontal borders only
#define WINDOW_BORDER_VERT 3 // vertical borders only #define WINDOW_BORDER_VERT 3 // vertical borders only
#define WINDOW_BORDER_KCGRADIENT 4 // horizontal border using the gradient bars #define WINDOW_BORDER_KCGRADIENT 4 // horizontal border using the gradient bars
#define WINDOW_STYLE_EMPTY 0 // no background #define WINDOW_STYLE_EMPTY 0 // no background
#define WINDOW_STYLE_FILLED 1 // filled with background color #define WINDOW_STYLE_FILLED 1 // filled with background color
#define WINDOW_STYLE_GRADIENT 2 // gradient bar based on background color #define WINDOW_STYLE_GRADIENT 2 // gradient bar based on background color
#define WINDOW_STYLE_SHADER 3 // gradient bar based on background color #define WINDOW_STYLE_SHADER 3 // gradient bar based on background color
#define WINDOW_STYLE_TEAMCOLOR 4 // team color #define WINDOW_STYLE_TEAMCOLOR 4 // team color
#define WINDOW_STYLE_CINEMATIC 5 // cinematic #define WINDOW_STYLE_CINEMATIC 5 // cinematic
#define MENU_TRUE 1 // uh.. true #define MENU_TRUE 1 // uh.. true
#define MENU_FALSE 0 // and false #define MENU_FALSE 0 // and false
#define HUD_VERTICAL 0x00 #define HUD_VERTICAL 0x00
#define HUD_HORIZONTAL 0x01 #define HUD_HORIZONTAL 0x01
// list box element types // list box element types
#define LISTBOX_TEXT 0x00 #define LISTBOX_TEXT 0x00
#define LISTBOX_IMAGE 0x01 #define LISTBOX_IMAGE 0x01
// list feeders // list feeders
#define FEEDER_HEADS 0x00 // model heads #define FEEDER_HEADS 0x00 // model heads
#define FEEDER_MAPS 0x01 // text maps based on game type #define FEEDER_MAPS 0x01 // text maps based on game type
#define FEEDER_SERVERS 0x02 // servers #define FEEDER_SERVERS 0x02 // servers
#define FEEDER_CLANS 0x03 // clan names #define FEEDER_CLANS 0x03 // clan names
#define FEEDER_ALLMAPS 0x04 // all maps available, in graphic format #define FEEDER_ALLMAPS 0x04 // all maps available, in graphic format
#define FEEDER_REDTEAM_LIST 0x05 // red team members #define FEEDER_REDTEAM_LIST 0x05 // red team members
#define FEEDER_BLUETEAM_LIST 0x06 // blue team members #define FEEDER_BLUETEAM_LIST 0x06 // blue team members
#define FEEDER_PLAYER_LIST 0x07 // players #define FEEDER_PLAYER_LIST 0x07 // players
#define FEEDER_TEAM_LIST 0x08 // team members for team voting #define FEEDER_TEAM_LIST 0x08 // team members for team voting
#define FEEDER_MODS 0x09 // team members for team voting #define FEEDER_MODS 0x09 // team members for team voting
#define FEEDER_DEMOS 0x0a // team members for team voting #define FEEDER_DEMOS 0x0a // team members for team voting
#define FEEDER_SCOREBOARD 0x0b // team members for team voting #define FEEDER_SCOREBOARD 0x0b // team members for team voting
#define FEEDER_Q3HEADS 0x0c // model heads #define FEEDER_Q3HEADS 0x0c // model heads
#define FEEDER_SERVERSTATUS 0x0d // server status #define FEEDER_SERVERSTATUS 0x0d // server status
#define FEEDER_FINDPLAYER 0x0e // find player #define FEEDER_FINDPLAYER 0x0e // find player
#define FEEDER_CINEMATICS 0x0f // cinematics #define FEEDER_CINEMATICS 0x0f // cinematics
// display flags // display flags
#define CG_SHOW_BLUE_TEAM_HAS_REDFLAG 0x00000001 #define CG_SHOW_BLUE_TEAM_HAS_REDFLAG 0x00000001
#define CG_SHOW_RED_TEAM_HAS_BLUEFLAG 0x00000002 #define CG_SHOW_RED_TEAM_HAS_BLUEFLAG 0x00000002
#define CG_SHOW_ANYTEAMGAME 0x00000004 #define CG_SHOW_ANYTEAMGAME 0x00000004
#define CG_SHOW_HARVESTER 0x00000008 #define CG_SHOW_HARVESTER 0x00000008
#define CG_SHOW_ONEFLAG 0x00000010 #define CG_SHOW_ONEFLAG 0x00000010
#define CG_SHOW_CTF 0x00000020 #define CG_SHOW_CTF 0x00000020
#define CG_SHOW_OBELISK 0x00000040 #define CG_SHOW_OBELISK 0x00000040
#define CG_SHOW_HEALTHCRITICAL 0x00000080 #define CG_SHOW_HEALTHCRITICAL 0x00000080
#define CG_SHOW_SINGLEPLAYER 0x00000100 #define CG_SHOW_SINGLEPLAYER 0x00000100
#define CG_SHOW_TOURNAMENT 0x00000200 #define CG_SHOW_TOURNAMENT 0x00000200
#define CG_SHOW_DURINGINCOMINGVOICE 0x00000400 #define CG_SHOW_DURINGINCOMINGVOICE 0x00000400
#define CG_SHOW_IF_PLAYER_HAS_FLAG 0x00000800 #define CG_SHOW_IF_PLAYER_HAS_FLAG 0x00000800
#define CG_SHOW_LANPLAYONLY 0x00001000 #define CG_SHOW_LANPLAYONLY 0x00001000
#define CG_SHOW_MINED 0x00002000 #define CG_SHOW_MINED 0x00002000
#define CG_SHOW_HEALTHOK 0x00004000 #define CG_SHOW_HEALTHOK 0x00004000
#define CG_SHOW_TEAMINFO 0x00008000 #define CG_SHOW_TEAMINFO 0x00008000
#define CG_SHOW_NOTEAMINFO 0x00010000 #define CG_SHOW_NOTEAMINFO 0x00010000
#define CG_SHOW_OTHERTEAMHASFLAG 0x00020000 #define CG_SHOW_OTHERTEAMHASFLAG 0x00020000
#define CG_SHOW_YOURTEAMHASENEMYFLAG 0x00040000 #define CG_SHOW_YOURTEAMHASENEMYFLAG 0x00040000
#define CG_SHOW_ANYNONTEAMGAME 0x00080000 #define CG_SHOW_ANYNONTEAMGAME 0x00080000
#define CG_SHOW_2DONLY 0x10000000 #define CG_SHOW_2DONLY 0x10000000
#define UI_SHOW_LEADER 0x00000001 #define UI_SHOW_LEADER 0x00000001
#define UI_SHOW_NOTLEADER 0x00000002 #define UI_SHOW_NOTLEADER 0x00000002
#define UI_SHOW_FAVORITESERVERS 0x00000004 #define UI_SHOW_FAVORITESERVERS 0x00000004
#define UI_SHOW_ANYNONTEAMGAME 0x00000008 #define UI_SHOW_ANYNONTEAMGAME 0x00000008
#define UI_SHOW_ANYTEAMGAME 0x00000010 #define UI_SHOW_ANYTEAMGAME 0x00000010
#define UI_SHOW_NEWHIGHSCORE 0x00000020 #define UI_SHOW_NEWHIGHSCORE 0x00000020
#define UI_SHOW_DEMOAVAILABLE 0x00000040 #define UI_SHOW_DEMOAVAILABLE 0x00000040
#define UI_SHOW_NEWBESTTIME 0x00000080 #define UI_SHOW_NEWBESTTIME 0x00000080
#define UI_SHOW_FFA 0x00000100 #define UI_SHOW_FFA 0x00000100
#define UI_SHOW_NOTFFA 0x00000200 #define UI_SHOW_NOTFFA 0x00000200
#define UI_SHOW_NETANYNONTEAMGAME 0x00000400 #define UI_SHOW_NETANYNONTEAMGAME 0x00000400
#define UI_SHOW_NETANYTEAMGAME 0x00000800 #define UI_SHOW_NETANYTEAMGAME 0x00000800
#define UI_SHOW_NOTFAVORITESERVERS 0x00001000 #define UI_SHOW_NOTFAVORITESERVERS 0x00001000
// owner draw types // owner draw types
// ideally these should be done outside of this file but // ideally these should be done outside of this file but
// this makes it much easier for the macro expansion to // this makes it much easier for the macro expansion to
// convert them for the designers ( from the .menu files ) // convert them for the designers ( from the .menu files )
#define CG_OWNERDRAW_BASE 1 #define CG_OWNERDRAW_BASE 1
#define CG_PLAYER_ARMOR_ICON 1 #define CG_PLAYER_ARMOR_ICON 1
#define CG_PLAYER_ARMOR_VALUE 2 #define CG_PLAYER_ARMOR_VALUE 2
#define CG_PLAYER_HEAD 3 #define CG_PLAYER_HEAD 3
#define CG_PLAYER_HEALTH 4 #define CG_PLAYER_HEALTH 4
#define CG_PLAYER_AMMO_ICON 5 #define CG_PLAYER_AMMO_ICON 5
#define CG_PLAYER_AMMO_VALUE 6 #define CG_PLAYER_AMMO_VALUE 6
#define CG_SELECTEDPLAYER_HEAD 7 #define CG_SELECTEDPLAYER_HEAD 7
#define CG_SELECTEDPLAYER_NAME 8 #define CG_SELECTEDPLAYER_NAME 8
#define CG_SELECTEDPLAYER_LOCATION 9 #define CG_SELECTEDPLAYER_LOCATION 9
#define CG_SELECTEDPLAYER_STATUS 10 #define CG_SELECTEDPLAYER_STATUS 10
#define CG_SELECTEDPLAYER_WEAPON 11 #define CG_SELECTEDPLAYER_WEAPON 11
#define CG_SELECTEDPLAYER_POWERUP 12 #define CG_SELECTEDPLAYER_POWERUP 12
#define CG_FLAGCARRIER_HEAD 13 #define CG_FLAGCARRIER_HEAD 13
#define CG_FLAGCARRIER_NAME 14 #define CG_FLAGCARRIER_NAME 14
#define CG_FLAGCARRIER_LOCATION 15 #define CG_FLAGCARRIER_LOCATION 15
#define CG_FLAGCARRIER_STATUS 16 #define CG_FLAGCARRIER_STATUS 16
#define CG_FLAGCARRIER_WEAPON 17 #define CG_FLAGCARRIER_WEAPON 17
#define CG_FLAGCARRIER_POWERUP 18 #define CG_FLAGCARRIER_POWERUP 18
#define CG_PLAYER_ITEM 19 #define CG_PLAYER_ITEM 19
#define CG_PLAYER_SCORE 20 #define CG_PLAYER_SCORE 20
#define CG_BLUE_FLAGHEAD 21 #define CG_BLUE_FLAGHEAD 21
#define CG_BLUE_FLAGSTATUS 22 #define CG_BLUE_FLAGSTATUS 22
#define CG_BLUE_FLAGNAME 23 #define CG_BLUE_FLAGNAME 23
#define CG_RED_FLAGHEAD 24 #define CG_RED_FLAGHEAD 24
#define CG_RED_FLAGSTATUS 25 #define CG_RED_FLAGSTATUS 25
#define CG_RED_FLAGNAME 26 #define CG_RED_FLAGNAME 26
#define CG_BLUE_SCORE 27 #define CG_BLUE_SCORE 27
#define CG_RED_SCORE 28 #define CG_RED_SCORE 28
#define CG_RED_NAME 29 #define CG_RED_NAME 29
#define CG_BLUE_NAME 30 #define CG_BLUE_NAME 30
#define CG_HARVESTER_SKULLS 31 // only shows in harvester #define CG_HARVESTER_SKULLS 31 // only shows in harvester
#define CG_ONEFLAG_STATUS 32 // only shows in one flag #define CG_ONEFLAG_STATUS 32 // only shows in one flag
#define CG_PLAYER_LOCATION 33 #define CG_PLAYER_LOCATION 33
#define CG_TEAM_COLOR 34 #define CG_TEAM_COLOR 34
#define CG_CTF_POWERUP 35 #define CG_CTF_POWERUP 35
#define CG_AREA_POWERUP 36 #define CG_AREA_POWERUP 36
#define CG_AREA_LAGOMETER 37 // painted with old system #define CG_AREA_LAGOMETER 37 // painted with old system
#define CG_PLAYER_HASFLAG 38 #define CG_PLAYER_HASFLAG 38
#define CG_GAME_TYPE 39 // not done #define CG_GAME_TYPE 39 // not done
#define CG_SELECTEDPLAYER_ARMOR 40 #define CG_SELECTEDPLAYER_ARMOR 40
#define CG_SELECTEDPLAYER_HEALTH 41 #define CG_SELECTEDPLAYER_HEALTH 41
#define CG_PLAYER_STATUS 42 #define CG_PLAYER_STATUS 42
#define CG_FRAGGED_MSG 43 // painted with old system #define CG_FRAGGED_MSG 43 // painted with old system
#define CG_PROXMINED_MSG 44 // painted with old system #define CG_PROXMINED_MSG 44 // painted with old system
#define CG_AREA_FPSINFO 45 // painted with old system #define CG_AREA_FPSINFO 45 // painted with old system
#define CG_AREA_SYSTEMCHAT 46 // painted with old system #define CG_AREA_SYSTEMCHAT 46 // painted with old system
#define CG_AREA_TEAMCHAT 47 // painted with old system #define CG_AREA_TEAMCHAT 47 // painted with old system
#define CG_AREA_CHAT 48 // painted with old system #define CG_AREA_CHAT 48 // painted with old system
#define CG_GAME_STATUS 49 #define CG_GAME_STATUS 49
#define CG_KILLER 50 #define CG_KILLER 50
#define CG_PLAYER_ARMOR_ICON2D 51 #define CG_PLAYER_ARMOR_ICON2D 51
#define CG_PLAYER_AMMO_ICON2D 52 #define CG_PLAYER_AMMO_ICON2D 52
#define CG_ACCURACY 53 #define CG_ACCURACY 53
#define CG_ASSISTS 54 #define CG_ASSISTS 54
#define CG_DEFEND 55 #define CG_DEFEND 55
#define CG_EXCELLENT 56 #define CG_EXCELLENT 56
#define CG_IMPRESSIVE 57 #define CG_IMPRESSIVE 57
#define CG_PERFECT 58 #define CG_PERFECT 58
#define CG_GAUNTLET 59 #define CG_GAUNTLET 59
#define CG_SPECTATORS 60 #define CG_SPECTATORS 60
#define CG_TEAMINFO 61 #define CG_TEAMINFO 61
#define CG_VOICE_HEAD 62 #define CG_VOICE_HEAD 62
#define CG_VOICE_NAME 63 #define CG_VOICE_NAME 63
#define CG_PLAYER_HASFLAG2D 64 #define CG_PLAYER_HASFLAG2D 64
#define CG_HARVESTER_SKULLS2D 65 // only shows in harvester #define CG_HARVESTER_SKULLS2D 65 // only shows in harvester
#define CG_CAPFRAGLIMIT 66 #define CG_CAPFRAGLIMIT 66
#define CG_1STPLACE 67 #define CG_1STPLACE 67
#define CG_2NDPLACE 68 #define CG_2NDPLACE 68
#define CG_CAPTURES 69 #define CG_CAPTURES 69
#define UI_OWNERDRAW_BASE 200 #define UI_OWNERDRAW_BASE 200
#define UI_HANDICAP 200 #define UI_HANDICAP 200
#define UI_EFFECTS 201 #define UI_EFFECTS 201
#define UI_PLAYERMODEL 202 #define UI_PLAYERMODEL 202
#define UI_CLANNAME 203 #define UI_CLANNAME 203
#define UI_CLANLOGO 204 #define UI_CLANLOGO 204
#define UI_GAMETYPE 205 #define UI_GAMETYPE 205
#define UI_MAPPREVIEW 206 #define UI_MAPPREVIEW 206
#define UI_SKILL 207 #define UI_SKILL 207
#define UI_BLUETEAMNAME 208 #define UI_BLUETEAMNAME 208
#define UI_REDTEAMNAME 209 #define UI_REDTEAMNAME 209
#define UI_BLUETEAM1 210 #define UI_BLUETEAM1 210
#define UI_BLUETEAM2 211 #define UI_BLUETEAM2 211
#define UI_BLUETEAM3 212 #define UI_BLUETEAM3 212
#define UI_BLUETEAM4 213 #define UI_BLUETEAM4 213
#define UI_BLUETEAM5 214 #define UI_BLUETEAM5 214
#define UI_REDTEAM1 215 #define UI_REDTEAM1 215
#define UI_REDTEAM2 216 #define UI_REDTEAM2 216
#define UI_REDTEAM3 217 #define UI_REDTEAM3 217
#define UI_REDTEAM4 218 #define UI_REDTEAM4 218
#define UI_REDTEAM5 219 #define UI_REDTEAM5 219
#define UI_NETSOURCE 220 #define UI_NETSOURCE 220
#define UI_NETMAPPREVIEW 221 #define UI_NETMAPPREVIEW 221
#define UI_NETFILTER 222 #define UI_NETFILTER 222
#define UI_TIER 223 #define UI_TIER 223
#define UI_OPPONENTMODEL 224 #define UI_OPPONENTMODEL 224
#define UI_TIERMAP1 225 #define UI_TIERMAP1 225
#define UI_TIERMAP2 226 #define UI_TIERMAP2 226
#define UI_TIERMAP3 227 #define UI_TIERMAP3 227
#define UI_PLAYERLOGO 228 #define UI_PLAYERLOGO 228
#define UI_OPPONENTLOGO 229 #define UI_OPPONENTLOGO 229
#define UI_PLAYERLOGO_METAL 230 #define UI_PLAYERLOGO_METAL 230
#define UI_OPPONENTLOGO_METAL 231 #define UI_OPPONENTLOGO_METAL 231
#define UI_PLAYERLOGO_NAME 232 #define UI_PLAYERLOGO_NAME 232
#define UI_OPPONENTLOGO_NAME 233 #define UI_OPPONENTLOGO_NAME 233
#define UI_TIER_MAPNAME 234 #define UI_TIER_MAPNAME 234
#define UI_TIER_GAMETYPE 235 #define UI_TIER_GAMETYPE 235
#define UI_ALLMAPS_SELECTION 236 #define UI_ALLMAPS_SELECTION 236
#define UI_OPPONENT_NAME 237 #define UI_OPPONENT_NAME 237
#define UI_VOTE_KICK 238 #define UI_VOTE_KICK 238
#define UI_BOTNAME 239 #define UI_BOTNAME 239
#define UI_BOTSKILL 240 #define UI_BOTSKILL 240
#define UI_REDBLUE 241 #define UI_REDBLUE 241
#define UI_CROSSHAIR 242 #define UI_CROSSHAIR 242
#define UI_SELECTEDPLAYER 243 #define UI_SELECTEDPLAYER 243
#define UI_MAPCINEMATIC 244 #define UI_MAPCINEMATIC 244
#define UI_NETGAMETYPE 245 #define UI_NETGAMETYPE 245
#define UI_NETMAPCINEMATIC 246 #define UI_NETMAPCINEMATIC 246
#define UI_SERVERREFRESHDATE 247 #define UI_SERVERREFRESHDATE 247
#define UI_SERVERMOTD 248 #define UI_SERVERMOTD 248
#define UI_GLINFO 249 #define UI_GLINFO 249
#define UI_KEYBINDSTATUS 250 #define UI_KEYBINDSTATUS 250
#define UI_CLANCINEMATIC 251 #define UI_CLANCINEMATIC 251
#define UI_MAP_TIMETOBEAT 252 #define UI_MAP_TIMETOBEAT 252
#define UI_JOINGAMETYPE 253 #define UI_JOINGAMETYPE 253
#define UI_PREVIEWCINEMATIC 254 #define UI_PREVIEWCINEMATIC 254
#define UI_STARTMAPCINEMATIC 255 #define UI_STARTMAPCINEMATIC 255
#define UI_MAPS_SELECTION 256 #define UI_MAPS_SELECTION 256
#define VOICECHAT_GETFLAG "getflag" // command someone to get the flag #define VOICECHAT_GETFLAG "getflag" // command someone to get the flag
#define VOICECHAT_OFFENSE "offense" // command someone to go on offense #define VOICECHAT_OFFENSE "offense" // command someone to go on offense
#define VOICECHAT_DEFEND "defend" // command someone to go on defense #define VOICECHAT_DEFEND "defend" // command someone to go on defense
#define VOICECHAT_DEFENDFLAG "defendflag" // command someone to defend the flag #define VOICECHAT_DEFENDFLAG "defendflag" // command someone to defend the flag
#define VOICECHAT_PATROL "patrol" // command someone to go on patrol (roam) #define VOICECHAT_PATROL "patrol" // command someone to go on patrol (roam)
#define VOICECHAT_CAMP "camp" // command someone to camp (we don't have sounds for this one) #define VOICECHAT_CAMP "camp" // command someone to camp (we don't have sounds for this one)
#define VOICECHAT_FOLLOWME "followme" // command someone to follow you #define VOICECHAT_FOLLOWME "followme" // command someone to follow you
#define VOICECHAT_RETURNFLAG "returnflag" // command someone to return our flag #define VOICECHAT_RETURNFLAG "returnflag" // command someone to return our flag
#define VOICECHAT_FOLLOWFLAGCARRIER "followflagcarrier" // command someone to follow the flag carrier #define VOICECHAT_FOLLOWFLAGCARRIER "followflagcarrier" // command someone to follow the flag carrier
#define VOICECHAT_YES "yes" // yes, affirmative, etc. #define VOICECHAT_YES "yes" // yes, affirmative, etc.
#define VOICECHAT_NO "no" // no, negative, etc. #define VOICECHAT_NO "no" // no, negative, etc.
#define VOICECHAT_ONGETFLAG "ongetflag" // I'm getting the flag #define VOICECHAT_ONGETFLAG "ongetflag" // I'm getting the flag
#define VOICECHAT_ONOFFENSE "onoffense" // I'm on offense #define VOICECHAT_ONOFFENSE "onoffense" // I'm on offense
#define VOICECHAT_ONDEFENSE "ondefense" // I'm on defense #define VOICECHAT_ONDEFENSE "ondefense" // I'm on defense
#define VOICECHAT_ONPATROL "onpatrol" // I'm on patrol (roaming) #define VOICECHAT_ONPATROL "onpatrol" // I'm on patrol (roaming)
#define VOICECHAT_ONCAMPING "oncamp" // I'm camping somewhere #define VOICECHAT_ONCAMPING "oncamp" // I'm camping somewhere
#define VOICECHAT_ONFOLLOW "onfollow" // I'm following #define VOICECHAT_ONFOLLOW "onfollow" // I'm following
#define VOICECHAT_ONFOLLOWCARRIER "onfollowcarrier" // I'm following the flag carrier #define VOICECHAT_ONFOLLOWCARRIER "onfollowcarrier" // I'm following the flag carrier
#define VOICECHAT_ONRETURNFLAG "onreturnflag" // I'm returning our flag #define VOICECHAT_ONRETURNFLAG "onreturnflag" // I'm returning our flag
#define VOICECHAT_INPOSITION "inposition" // I'm in position #define VOICECHAT_INPOSITION "inposition" // I'm in position
#define VOICECHAT_IHAVEFLAG "ihaveflag" // I have the flag #define VOICECHAT_IHAVEFLAG "ihaveflag" // I have the flag
#define VOICECHAT_BASEATTACK "baseattack" // the base is under attack #define VOICECHAT_BASEATTACK "baseattack" // the base is under attack
#define VOICECHAT_ENEMYHASFLAG "enemyhasflag" // the enemy has our flag (CTF) #define VOICECHAT_ENEMYHASFLAG "enemyhasflag" // the enemy has our flag (CTF)
#define VOICECHAT_STARTLEADER "startleader" // I'm the leader #define VOICECHAT_STARTLEADER "startleader" // I'm the leader
#define VOICECHAT_STOPLEADER "stopleader" // I resign leadership #define VOICECHAT_STOPLEADER "stopleader" // I resign leadership
#define VOICECHAT_TRASH "trash" // lots of trash talk #define VOICECHAT_TRASH "trash" // lots of trash talk
#define VOICECHAT_WHOISLEADER "whoisleader" // who is the team leader #define VOICECHAT_WHOISLEADER "whoisleader" // who is the team leader
#define VOICECHAT_WANTONDEFENSE "wantondefense" // I want to be on defense #define VOICECHAT_WANTONDEFENSE "wantondefense" // I want to be on defense
#define VOICECHAT_WANTONOFFENSE "wantonoffense" // I want to be on offense #define VOICECHAT_WANTONOFFENSE "wantonoffense" // I want to be on offense
#define VOICECHAT_KILLINSULT "kill_insult" // I just killed you #define VOICECHAT_KILLINSULT "kill_insult" // I just killed you
#define VOICECHAT_TAUNT "taunt" // I want to taunt you #define VOICECHAT_TAUNT "taunt" // I want to taunt you
#define VOICECHAT_DEATHINSULT "death_insult" // you just killed me #define VOICECHAT_DEATHINSULT "death_insult" // you just killed me
#define VOICECHAT_KILLGAUNTLET "kill_gauntlet" // I just killed you with the gauntlet #define VOICECHAT_KILLGAUNTLET "kill_gauntlet" // I just killed you with the gauntlet
#define VOICECHAT_PRAISE "praise" // you did something good #define VOICECHAT_PRAISE "praise" // you did something good

View File

@ -1,124 +1,124 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
//=========================================================================== //===========================================================================
// //
// Name: chars.h // Name: chars.h
// Function: bot characteristics // Function: bot characteristics
// Programmer: Mr Elusive (MrElusive@idsoftware.com) // Programmer: Mr Elusive (MrElusive@idsoftware.com)
// Last update: 1999-09-08 // Last update: 1999-09-08
// Tab Size: 4 (real tabs) // Tab Size: 4 (real tabs)
//=========================================================================== //===========================================================================
//======================================================== //========================================================
//======================================================== //========================================================
//name //name
#define CHARACTERISTIC_NAME 0 //string #define CHARACTERISTIC_NAME 0 //string
//gender of the bot //gender of the bot
#define CHARACTERISTIC_GENDER 1 //string ("male", "female", "it") #define CHARACTERISTIC_GENDER 1 //string ("male", "female", "it")
//attack skill //attack skill
// > 0.0 && < 0.2 = don't move // > 0.0 && < 0.2 = don't move
// > 0.3 && < 1.0 = aim at enemy during retreat // > 0.3 && < 1.0 = aim at enemy during retreat
// > 0.0 && < 0.4 = only move forward/backward // > 0.0 && < 0.4 = only move forward/backward
// >= 0.4 && < 1.0 = circle strafing // >= 0.4 && < 1.0 = circle strafing
// > 0.7 && < 1.0 = random strafe direction change // > 0.7 && < 1.0 = random strafe direction change
#define CHARACTERISTIC_ATTACK_SKILL 2 //float [0, 1] #define CHARACTERISTIC_ATTACK_SKILL 2 //float [0, 1]
//weapon weight file //weapon weight file
#define CHARACTERISTIC_WEAPONWEIGHTS 3 //string #define CHARACTERISTIC_WEAPONWEIGHTS 3 //string
//view angle difference to angle change factor //view angle difference to angle change factor
#define CHARACTERISTIC_VIEW_FACTOR 4 //float <0, 1] #define CHARACTERISTIC_VIEW_FACTOR 4 //float <0, 1]
//maximum view angle change //maximum view angle change
#define CHARACTERISTIC_VIEW_MAXCHANGE 5 //float [1, 360] #define CHARACTERISTIC_VIEW_MAXCHANGE 5 //float [1, 360]
//reaction time in seconds //reaction time in seconds
#define CHARACTERISTIC_REACTIONTIME 6 //float [0, 5] #define CHARACTERISTIC_REACTIONTIME 6 //float [0, 5]
//accuracy when aiming //accuracy when aiming
#define CHARACTERISTIC_AIM_ACCURACY 7 //float [0, 1] #define CHARACTERISTIC_AIM_ACCURACY 7 //float [0, 1]
//weapon specific aim accuracy //weapon specific aim accuracy
#define CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 8 //float [0, 1] #define CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 8 //float [0, 1]
#define CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 9 //float [0, 1] #define CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 9 //float [0, 1]
#define CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 10 //float [0, 1] #define CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 10 //float [0, 1]
#define CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 11 //float [0, 1] #define CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 11 //float [0, 1]
#define CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 12 #define CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 12
#define CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 13 //float [0, 1] #define CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 13 //float [0, 1]
#define CHARACTERISTIC_AIM_ACCURACY_RAILGUN 14 #define CHARACTERISTIC_AIM_ACCURACY_RAILGUN 14
#define CHARACTERISTIC_AIM_ACCURACY_BFG10K 15 //float [0, 1] #define CHARACTERISTIC_AIM_ACCURACY_BFG10K 15 //float [0, 1]
//skill when aiming //skill when aiming
// > 0.0 && < 0.9 = aim is affected by enemy movement // > 0.0 && < 0.9 = aim is affected by enemy movement
// > 0.4 && <= 0.8 = enemy linear leading // > 0.4 && <= 0.8 = enemy linear leading
// > 0.8 && <= 1.0 = enemy exact movement leading // > 0.8 && <= 1.0 = enemy exact movement leading
// > 0.5 && <= 1.0 = prediction shots when enemy is not visible // > 0.5 && <= 1.0 = prediction shots when enemy is not visible
// > 0.6 && <= 1.0 = splash damage by shooting nearby geometry // > 0.6 && <= 1.0 = splash damage by shooting nearby geometry
#define CHARACTERISTIC_AIM_SKILL 16 //float [0, 1] #define CHARACTERISTIC_AIM_SKILL 16 //float [0, 1]
//weapon specific aim skill //weapon specific aim skill
#define CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 17 //float [0, 1] #define CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 17 //float [0, 1]
#define CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 18 //float [0, 1] #define CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 18 //float [0, 1]
#define CHARACTERISTIC_AIM_SKILL_PLASMAGUN 19 //float [0, 1] #define CHARACTERISTIC_AIM_SKILL_PLASMAGUN 19 //float [0, 1]
#define CHARACTERISTIC_AIM_SKILL_BFG10K 20 //float [0, 1] #define CHARACTERISTIC_AIM_SKILL_BFG10K 20 //float [0, 1]
//======================================================== //========================================================
//chat //chat
//======================================================== //========================================================
//file with chats //file with chats
#define CHARACTERISTIC_CHAT_FILE 21 //string #define CHARACTERISTIC_CHAT_FILE 21 //string
//name of the chat character //name of the chat character
#define CHARACTERISTIC_CHAT_NAME 22 //string #define CHARACTERISTIC_CHAT_NAME 22 //string
//characters per minute type speed //characters per minute type speed
#define CHARACTERISTIC_CHAT_CPM 23 //integer [1, 4000] #define CHARACTERISTIC_CHAT_CPM 23 //integer [1, 4000]
//tendency to insult/praise //tendency to insult/praise
#define CHARACTERISTIC_CHAT_INSULT 24 //float [0, 1] #define CHARACTERISTIC_CHAT_INSULT 24 //float [0, 1]
//tendency to chat misc //tendency to chat misc
#define CHARACTERISTIC_CHAT_MISC 25 //float [0, 1] #define CHARACTERISTIC_CHAT_MISC 25 //float [0, 1]
//tendency to chat at start or end of level //tendency to chat at start or end of level
#define CHARACTERISTIC_CHAT_STARTENDLEVEL 26 //float [0, 1] #define CHARACTERISTIC_CHAT_STARTENDLEVEL 26 //float [0, 1]
//tendency to chat entering or exiting the game //tendency to chat entering or exiting the game
#define CHARACTERISTIC_CHAT_ENTEREXITGAME 27 //float [0, 1] #define CHARACTERISTIC_CHAT_ENTEREXITGAME 27 //float [0, 1]
//tendency to chat when killed someone //tendency to chat when killed someone
#define CHARACTERISTIC_CHAT_KILL 28 //float [0, 1] #define CHARACTERISTIC_CHAT_KILL 28 //float [0, 1]
//tendency to chat when died //tendency to chat when died
#define CHARACTERISTIC_CHAT_DEATH 29 //float [0, 1] #define CHARACTERISTIC_CHAT_DEATH 29 //float [0, 1]
//tendency to chat when enemy suicides //tendency to chat when enemy suicides
#define CHARACTERISTIC_CHAT_ENEMYSUICIDE 30 //float [0, 1] #define CHARACTERISTIC_CHAT_ENEMYSUICIDE 30 //float [0, 1]
//tendency to chat when hit while talking //tendency to chat when hit while talking
#define CHARACTERISTIC_CHAT_HITTALKING 31 //float [0, 1] #define CHARACTERISTIC_CHAT_HITTALKING 31 //float [0, 1]
//tendency to chat when bot was hit but didn't dye //tendency to chat when bot was hit but didn't dye
#define CHARACTERISTIC_CHAT_HITNODEATH 32 //float [0, 1] #define CHARACTERISTIC_CHAT_HITNODEATH 32 //float [0, 1]
//tendency to chat when bot hit the enemy but enemy didn't dye //tendency to chat when bot hit the enemy but enemy didn't dye
#define CHARACTERISTIC_CHAT_HITNOKILL 33 //float [0, 1] #define CHARACTERISTIC_CHAT_HITNOKILL 33 //float [0, 1]
//tendency to randomly chat //tendency to randomly chat
#define CHARACTERISTIC_CHAT_RANDOM 34 //float [0, 1] #define CHARACTERISTIC_CHAT_RANDOM 34 //float [0, 1]
//tendency to reply //tendency to reply
#define CHARACTERISTIC_CHAT_REPLY 35 //float [0, 1] #define CHARACTERISTIC_CHAT_REPLY 35 //float [0, 1]
//======================================================== //========================================================
//movement //movement
//======================================================== //========================================================
//tendency to crouch //tendency to crouch
#define CHARACTERISTIC_CROUCHER 36 //float [0, 1] #define CHARACTERISTIC_CROUCHER 36 //float [0, 1]
//tendency to jump //tendency to jump
#define CHARACTERISTIC_JUMPER 37 //float [0, 1] #define CHARACTERISTIC_JUMPER 37 //float [0, 1]
//tendency to walk //tendency to walk
#define CHARACTERISTIC_WALKER 48 //float [0, 1] #define CHARACTERISTIC_WALKER 48 //float [0, 1]
//tendency to jump using a weapon //tendency to jump using a weapon
#define CHARACTERISTIC_WEAPONJUMPING 38 //float [0, 1] #define CHARACTERISTIC_WEAPONJUMPING 38 //float [0, 1]
//tendency to use the grapple hook when available //tendency to use the grapple hook when available
#define CHARACTERISTIC_GRAPPLE_USER 39 //float [0, 1] //use this!! #define CHARACTERISTIC_GRAPPLE_USER 39 //float [0, 1] //use this!!
//======================================================== //========================================================
//goal //goal
//======================================================== //========================================================
//item weight file //item weight file
#define CHARACTERISTIC_ITEMWEIGHTS 40 //string #define CHARACTERISTIC_ITEMWEIGHTS 40 //string
//the aggression of the bot //the aggression of the bot
#define CHARACTERISTIC_AGGRESSION 41 //float [0, 1] #define CHARACTERISTIC_AGGRESSION 41 //float [0, 1]
//the self preservation of the bot (rockets near walls etc.) //the self preservation of the bot (rockets near walls etc.)
#define CHARACTERISTIC_SELFPRESERVATION 42 //float [0, 1] #define CHARACTERISTIC_SELFPRESERVATION 42 //float [0, 1]
//how likely the bot is to take revenge //how likely the bot is to take revenge
#define CHARACTERISTIC_VENGEFULNESS 43 //float [0, 1] //use this!! #define CHARACTERISTIC_VENGEFULNESS 43 //float [0, 1] //use this!!
//tendency to camp //tendency to camp
#define CHARACTERISTIC_CAMPER 44 //float [0, 1] #define CHARACTERISTIC_CAMPER 44 //float [0, 1]
//======================================================== //========================================================
//======================================================== //========================================================
//tendency to get easy frags //tendency to get easy frags
#define CHARACTERISTIC_EASY_FRAGGER 45 //float [0, 1] #define CHARACTERISTIC_EASY_FRAGGER 45 //float [0, 1]
//how alert the bot is (view distance) //how alert the bot is (view distance)
#define CHARACTERISTIC_ALERTNESS 46 //float [0, 1] #define CHARACTERISTIC_ALERTNESS 46 //float [0, 1]
//how much the bot fires it's weapon //how much the bot fires it's weapon
#define CHARACTERISTIC_FIRETHROTTLE 47 //float [0, 1] #define CHARACTERISTIC_FIRETHROTTLE 47 //float [0, 1]

View File

@ -1,152 +1,152 @@
#define INVENTORY_NONE 0 #define INVENTORY_NONE 0
//armor //armor
#define INVENTORY_ARMOR 1 #define INVENTORY_ARMOR 1
//weapons //weapons
#define INVENTORY_PHASER 4 #define INVENTORY_PHASER 4
#define INVENTORY_SHOTGUN 5 #define INVENTORY_SHOTGUN 5
#define INVENTORY_MACHINEGUN 6 #define INVENTORY_MACHINEGUN 6
#define INVENTORY_GRENADELAUNCHER 7 #define INVENTORY_GRENADELAUNCHER 7
#define INVENTORY_ROCKETLAUNCHER 8 #define INVENTORY_ROCKETLAUNCHER 8
#define INVENTORY_LIGHTNING 9 #define INVENTORY_LIGHTNING 9
#define INVENTORY_RAILGUN 10 #define INVENTORY_RAILGUN 10
#define INVENTORY_PLASMAGUN 11 #define INVENTORY_PLASMAGUN 11
#define INVENTORY_BFG10K 13 #define INVENTORY_BFG10K 13
#define INVENTORY_GRAPPLINGHOOK 14 #define INVENTORY_GRAPPLINGHOOK 14
#define INVENTORY_NAILGUN 15 #define INVENTORY_NAILGUN 15
#define INVENTORY_PROXLAUNCHER 16 #define INVENTORY_PROXLAUNCHER 16
#define INVENTORY_CHAINGUN 17 #define INVENTORY_CHAINGUN 17
//ammo //ammo
#define INVENTORY_PLASMA 18 #define INVENTORY_PLASMA 18
#define INVENTORY_BULLETS 19 #define INVENTORY_BULLETS 19
#define INVENTORY_FED 20 #define INVENTORY_FED 20
#define INVENTORY_IDRYLL 21 #define INVENTORY_IDRYLL 21
#define INVENTORY_BURSTRIFLE 22 #define INVENTORY_BURSTRIFLE 22
/* /*
#define INVENTORY_GRENADES 20 #define INVENTORY_GRENADES 20
#define INVENTORY_CELLS 21 #define INVENTORY_CELLS 21
#define INVENTORY_LIGHTNINGAMMO 22 #define INVENTORY_LIGHTNINGAMMO 22
#define INVENTORY_ROCKETS 23 #define INVENTORY_ROCKETS 23
#define INVENTORY_SLUGS 24 #define INVENTORY_SLUGS 24
#define INVENTORY_BFGAMMO 25 #define INVENTORY_BFGAMMO 25
#define INVENTORY_NAILS 26 #define INVENTORY_NAILS 26
#define INVENTORY_MINES 27 #define INVENTORY_MINES 27
#define INVENTORY_BELT 28 #define INVENTORY_BELT 28
*/ */
//powerups //powerups
#define INVENTORY_HEALTH 29 #define INVENTORY_HEALTH 29
#define INVENTORY_TELEPORTER 30 #define INVENTORY_TELEPORTER 30
#define INVENTORY_MEDKIT 31 #define INVENTORY_MEDKIT 31
#define INVENTORY_KAMIKAZE 32 #define INVENTORY_KAMIKAZE 32
#define INVENTORY_PORTAL 33 #define INVENTORY_PORTAL 33
#define INVENTORY_INVULNERABILITY 34 #define INVENTORY_INVULNERABILITY 34
#define INVENTORY_QUAD 35 #define INVENTORY_QUAD 35
#define INVENTORY_ENVIRONMENTSUIT 36 #define INVENTORY_ENVIRONMENTSUIT 36
#define INVENTORY_HASTE 37 #define INVENTORY_HASTE 37
#define INVENTORY_INVISIBILITY 38 #define INVENTORY_INVISIBILITY 38
#define INVENTORY_REGEN 39 #define INVENTORY_REGEN 39
#define INVENTORY_FLIGHT 40 #define INVENTORY_FLIGHT 40
#define INVENTORY_SCOUT 41 #define INVENTORY_SCOUT 41
#define INVENTORY_GUARD 42 #define INVENTORY_GUARD 42
#define INVENTORY_DOUBLER 43 #define INVENTORY_DOUBLER 43
#define INVENTORY_AMMOREGEN 44 #define INVENTORY_AMMOREGEN 44
#define INVENTORY_REDFLAG 45 #define INVENTORY_REDFLAG 45
#define INVENTORY_BLUEFLAG 46 #define INVENTORY_BLUEFLAG 46
#define INVENTORY_NEUTRALFLAG 47 #define INVENTORY_NEUTRALFLAG 47
#define INVENTORY_REDCUBE 48 #define INVENTORY_REDCUBE 48
#define INVENTORY_BLUECUBE 49 #define INVENTORY_BLUECUBE 49
//enemy stuff //enemy stuff
#define ENEMY_HORIZONTAL_DIST 200 #define ENEMY_HORIZONTAL_DIST 200
#define ENEMY_HEIGHT 201 #define ENEMY_HEIGHT 201
#define NUM_VISIBLE_ENEMIES 202 #define NUM_VISIBLE_ENEMIES 202
#define NUM_VISIBLE_TEAMMATES 203 #define NUM_VISIBLE_TEAMMATES 203
// if running the mission pack // if running the mission pack
#ifdef MISSIONPACK #ifdef MISSIONPACK
//#error "running mission pack" //#error "running mission pack"
#endif #endif
//item numbers (make sure they are in sync with bg_itemlist in bg_misc.c) //item numbers (make sure they are in sync with bg_itemlist in bg_misc.c)
#define MODELINDEX_ARMORSHARD 1 #define MODELINDEX_ARMORSHARD 1
#define MODELINDEX_ARMORCOMBAT 2 #define MODELINDEX_ARMORCOMBAT 2
#define MODELINDEX_ARMORBODY 3 #define MODELINDEX_ARMORBODY 3
#define MODELINDEX_HEALTHSMALL 4 #define MODELINDEX_HEALTHSMALL 4
#define MODELINDEX_HEALTH 5 #define MODELINDEX_HEALTH 5
#define MODELINDEX_HEALTHLARGE 6 #define MODELINDEX_HEALTHLARGE 6
#define MODELINDEX_HEALTHMEGA 7 #define MODELINDEX_HEALTHMEGA 7
#define MODELINDEX_GAUNTLET 8 #define MODELINDEX_GAUNTLET 8
#define MODELINDEX_SHOTGUN 9 #define MODELINDEX_SHOTGUN 9
#define MODELINDEX_MACHINEGUN 10 #define MODELINDEX_MACHINEGUN 10
#define MODELINDEX_GRENADELAUNCHER 11 #define MODELINDEX_GRENADELAUNCHER 11
#define MODELINDEX_ROCKETLAUNCHER 12 #define MODELINDEX_ROCKETLAUNCHER 12
#define MODELINDEX_LIGHTNING 13 #define MODELINDEX_LIGHTNING 13
#define MODELINDEX_RAILGUN 14 #define MODELINDEX_RAILGUN 14
#define MODELINDEX_PLASMAGUN 15 #define MODELINDEX_PLASMAGUN 15
#define MODELINDEX_BFG10K 16 #define MODELINDEX_BFG10K 16
#define MODELINDEX_GRAPPLINGHOOK 17 #define MODELINDEX_GRAPPLINGHOOK 17
#define MODELINDEX_SHELLS 18 #define MODELINDEX_SHELLS 18
#define MODELINDEX_BULLETS 19 #define MODELINDEX_BULLETS 19
#define MODELINDEX_GRENADES 20 #define MODELINDEX_GRENADES 20
#define MODELINDEX_CELLS 21 #define MODELINDEX_CELLS 21
#define MODELINDEX_LIGHTNINGAMMO 22 #define MODELINDEX_LIGHTNINGAMMO 22
#define MODELINDEX_ROCKETS 23 #define MODELINDEX_ROCKETS 23
#define MODELINDEX_SLUGS 24 #define MODELINDEX_SLUGS 24
#define MODELINDEX_BFGAMMO 25 #define MODELINDEX_BFGAMMO 25
#define MODELINDEX_TELEPORTER 26 #define MODELINDEX_TELEPORTER 26
#define MODELINDEX_MEDKIT 27 #define MODELINDEX_MEDKIT 27
#define MODELINDEX_QUAD 28 #define MODELINDEX_QUAD 28
#define MODELINDEX_ENVIRONMENTSUIT 29 #define MODELINDEX_ENVIRONMENTSUIT 29
#define MODELINDEX_HASTE 30 #define MODELINDEX_HASTE 30
#define MODELINDEX_INVISIBILITY 31 #define MODELINDEX_INVISIBILITY 31
#define MODELINDEX_REGEN 32 #define MODELINDEX_REGEN 32
#define MODELINDEX_FLIGHT 33 #define MODELINDEX_FLIGHT 33
#define MODELINDEX_REDFLAG 34 #define MODELINDEX_REDFLAG 34
#define MODELINDEX_BLUEFLAG 35 #define MODELINDEX_BLUEFLAG 35
// mission pack only defines // mission pack only defines
#define MODELINDEX_KAMIKAZE 36 #define MODELINDEX_KAMIKAZE 36
#define MODELINDEX_PORTAL 37 #define MODELINDEX_PORTAL 37
#define MODELINDEX_INVULNERABILITY 38 #define MODELINDEX_INVULNERABILITY 38
#define MODELINDEX_NAILS 39 #define MODELINDEX_NAILS 39
#define MODELINDEX_MINES 40 #define MODELINDEX_MINES 40
#define MODELINDEX_BELT 41 #define MODELINDEX_BELT 41
#define MODELINDEX_SCOUT 42 #define MODELINDEX_SCOUT 42
#define MODELINDEX_GUARD 43 #define MODELINDEX_GUARD 43
#define MODELINDEX_DOUBLER 44 #define MODELINDEX_DOUBLER 44
#define MODELINDEX_AMMOREGEN 45 #define MODELINDEX_AMMOREGEN 45
#define MODELINDEX_NEUTRALFLAG 46 #define MODELINDEX_NEUTRALFLAG 46
#define MODELINDEX_REDCUBE 47 #define MODELINDEX_REDCUBE 47
#define MODELINDEX_BLUECUBE 48 #define MODELINDEX_BLUECUBE 48
#define MODELINDEX_NAILGUN 49 #define MODELINDEX_NAILGUN 49
#define MODELINDEX_PROXLAUNCHER 50 #define MODELINDEX_PROXLAUNCHER 50
#define MODELINDEX_CHAINGUN 51 #define MODELINDEX_CHAINGUN 51
// //
#define WEAPONINDEX_PHASER 2 #define WEAPONINDEX_PHASER 2
#define WEAPONINDEX_MACHINEGUN 3 #define WEAPONINDEX_MACHINEGUN 3
#define WEAPONINDEX_SHOTGUN 4 #define WEAPONINDEX_SHOTGUN 4
#define WEAPONINDEX_GRENADE_LAUNCHER 5 #define WEAPONINDEX_GRENADE_LAUNCHER 5
#define WEAPONINDEX_ROCKET_LAUNCHER 6 #define WEAPONINDEX_ROCKET_LAUNCHER 6
#define WEAPONINDEX_LIGHTNING 7 #define WEAPONINDEX_LIGHTNING 7
#define WEAPONINDEX_RAILGUN 8 #define WEAPONINDEX_RAILGUN 8
#define WEAPONINDEX_PLASMAGUN 9 #define WEAPONINDEX_PLASMAGUN 9
#define WEAPONINDEX_BFG 10 #define WEAPONINDEX_BFG 10
#define WEAPONINDEX_GRAPPLING_HOOK 10 #define WEAPONINDEX_GRAPPLING_HOOK 10
#define WEAPONINDEX_NAILGUN 11 #define WEAPONINDEX_NAILGUN 11
#define WEAPONINDEX_PROXLAUNCHER 12 #define WEAPONINDEX_PROXLAUNCHER 12
#define WEAPONINDEX_CHAINGUN 13 #define WEAPONINDEX_CHAINGUN 13

View File

@ -1,122 +1,122 @@
//=========================================================================== //===========================================================================
// //
// Name: match.h // Name: match.h
// Function: match template defines // Function: match template defines
// Programmer: Mr Elusive // Programmer: Mr Elusive
// Last update: // Last update:
// Tab Size: 4 (real tabs) // Tab Size: 4 (real tabs)
// //
//=========================================================================== //===========================================================================
// make sure this is the same character as we use in chats in g_cmd.c // make sure this is the same character as we use in chats in g_cmd.c
#define EC "\x19" #define EC "\x19"
//match template contexts //match template contexts
#define MTCONTEXT_MISC 2 #define MTCONTEXT_MISC 2
#define MTCONTEXT_INITIALTEAMCHAT 4 #define MTCONTEXT_INITIALTEAMCHAT 4
#define MTCONTEXT_TIME 8 #define MTCONTEXT_TIME 8
#define MTCONTEXT_TEAMMATE 16 #define MTCONTEXT_TEAMMATE 16
#define MTCONTEXT_ADDRESSEE 32 #define MTCONTEXT_ADDRESSEE 32
#define MTCONTEXT_PATROLKEYAREA 64 #define MTCONTEXT_PATROLKEYAREA 64
#define MTCONTEXT_REPLYCHAT 128 #define MTCONTEXT_REPLYCHAT 128
#define MTCONTEXT_CTF 256 #define MTCONTEXT_CTF 256
//message types //message types
#define MSG_NEWLEADER 1 //new leader #define MSG_NEWLEADER 1 //new leader
#define MSG_ENTERGAME 2 //enter game message #define MSG_ENTERGAME 2 //enter game message
#define MSG_HELP 3 //help someone #define MSG_HELP 3 //help someone
#define MSG_ACCOMPANY 4 //accompany someone #define MSG_ACCOMPANY 4 //accompany someone
#define MSG_DEFENDKEYAREA 5 //defend a key area #define MSG_DEFENDKEYAREA 5 //defend a key area
#define MSG_RUSHBASE 6 //everyone rush to base #define MSG_RUSHBASE 6 //everyone rush to base
#define MSG_GETFLAG 7 //get the enemy flag #define MSG_GETFLAG 7 //get the enemy flag
#define MSG_STARTTEAMLEADERSHIP 8 //someone wants to become the team leader #define MSG_STARTTEAMLEADERSHIP 8 //someone wants to become the team leader
#define MSG_STOPTEAMLEADERSHIP 9 //someone wants to stop being the team leader #define MSG_STOPTEAMLEADERSHIP 9 //someone wants to stop being the team leader
#define MSG_WHOISTEAMLAEDER 10 //who is the team leader #define MSG_WHOISTEAMLAEDER 10 //who is the team leader
#define MSG_WAIT 11 //wait for someone #define MSG_WAIT 11 //wait for someone
#define MSG_WHATAREYOUDOING 12 //what are you doing? #define MSG_WHATAREYOUDOING 12 //what are you doing?
#define MSG_JOINSUBTEAM 13 //join a sub-team #define MSG_JOINSUBTEAM 13 //join a sub-team
#define MSG_LEAVESUBTEAM 14 //leave a sub-team #define MSG_LEAVESUBTEAM 14 //leave a sub-team
#define MSG_CREATENEWFORMATION 15 //create a new formation #define MSG_CREATENEWFORMATION 15 //create a new formation
#define MSG_FORMATIONPOSITION 16 //tell someone his/her position in a formation #define MSG_FORMATIONPOSITION 16 //tell someone his/her position in a formation
#define MSG_FORMATIONSPACE 17 //set the formation intervening space #define MSG_FORMATIONSPACE 17 //set the formation intervening space
#define MSG_DOFORMATION 18 //form a known formation #define MSG_DOFORMATION 18 //form a known formation
#define MSG_DISMISS 19 //dismiss commanded team mates #define MSG_DISMISS 19 //dismiss commanded team mates
#define MSG_CAMP 20 //camp somewhere #define MSG_CAMP 20 //camp somewhere
#define MSG_CHECKPOINT 21 //remember a check point #define MSG_CHECKPOINT 21 //remember a check point
#define MSG_PATROL 22 //patrol between certain keypoints #define MSG_PATROL 22 //patrol between certain keypoints
#define MSG_LEADTHEWAY 23 //lead the way #define MSG_LEADTHEWAY 23 //lead the way
#define MSG_GETITEM 24 //get an item #define MSG_GETITEM 24 //get an item
#define MSG_KILL 25 //kill someone #define MSG_KILL 25 //kill someone
#define MSG_WHEREAREYOU 26 //where is someone #define MSG_WHEREAREYOU 26 //where is someone
#define MSG_RETURNFLAG 27 //return the flag #define MSG_RETURNFLAG 27 //return the flag
#define MSG_WHATISMYCOMMAND 28 //ask the team leader what to do #define MSG_WHATISMYCOMMAND 28 //ask the team leader what to do
#define MSG_WHICHTEAM 29 //ask which team a bot is in #define MSG_WHICHTEAM 29 //ask which team a bot is in
#define MSG_TASKPREFERENCE 30 //tell your teamplay task preference #define MSG_TASKPREFERENCE 30 //tell your teamplay task preference
#define MSG_ATTACKENEMYBASE 31 //attack the enemy base #define MSG_ATTACKENEMYBASE 31 //attack the enemy base
#define MSG_HARVEST 32 //go harvest #define MSG_HARVEST 32 //go harvest
#define MSG_SUICIDE 33 //order to suicide #define MSG_SUICIDE 33 //order to suicide
// //
#define MSG_ME 100 #define MSG_ME 100
#define MSG_EVERYONE 101 #define MSG_EVERYONE 101
#define MSG_MULTIPLENAMES 102 #define MSG_MULTIPLENAMES 102
#define MSG_NAME 103 #define MSG_NAME 103
#define MSG_PATROLKEYAREA 104 #define MSG_PATROLKEYAREA 104
#define MSG_MINUTES 105 #define MSG_MINUTES 105
#define MSG_SECONDS 106 #define MSG_SECONDS 106
#define MSG_FOREVER 107 #define MSG_FOREVER 107
#define MSG_FORALONGTIME 108 #define MSG_FORALONGTIME 108
#define MSG_FORAWHILE 109 #define MSG_FORAWHILE 109
// //
#define MSG_CHATALL 200 #define MSG_CHATALL 200
#define MSG_CHATTEAM 201 #define MSG_CHATTEAM 201
#define MSG_CHATTELL 202 #define MSG_CHATTELL 202
// //
#define MSG_CTF 300 //ctf message #define MSG_CTF 300 //ctf message
//command sub types //command sub types
#define ST_SOMEWHERE 0 #define ST_SOMEWHERE 0
#define ST_NEARITEM 1 #define ST_NEARITEM 1
#define ST_ADDRESSED 2 #define ST_ADDRESSED 2
#define ST_METER 4 #define ST_METER 4
#define ST_FEET 8 #define ST_FEET 8
#define ST_TIME 16 #define ST_TIME 16
#define ST_HERE 32 #define ST_HERE 32
#define ST_THERE 64 #define ST_THERE 64
#define ST_I 128 #define ST_I 128
#define ST_MORE 256 #define ST_MORE 256
#define ST_BACK 512 #define ST_BACK 512
#define ST_REVERSE 1024 #define ST_REVERSE 1024
#define ST_SOMEONE 2048 #define ST_SOMEONE 2048
#define ST_GOTFLAG 4096 #define ST_GOTFLAG 4096
#define ST_CAPTUREDFLAG 8192 #define ST_CAPTUREDFLAG 8192
#define ST_RETURNEDFLAG 16384 #define ST_RETURNEDFLAG 16384
#define ST_TEAM 32768 #define ST_TEAM 32768
#define ST_1FCTFGOTFLAG 65535 #define ST_1FCTFGOTFLAG 65535
//ctf task preferences //ctf task preferences
#define ST_DEFENDER 1 #define ST_DEFENDER 1
#define ST_ATTACKER 2 #define ST_ATTACKER 2
#define ST_ROAMER 4 #define ST_ROAMER 4
//word replacement variables //word replacement variables
#define THE_ENEMY 7 #define THE_ENEMY 7
#define THE_TEAM 7 #define THE_TEAM 7
//team message variables //team message variables
#define NETNAME 0 #define NETNAME 0
#define PLACE 1 #define PLACE 1
#define FLAG 1 #define FLAG 1
#define MESSAGE 2 #define MESSAGE 2
#define ADDRESSEE 2 #define ADDRESSEE 2
#define ITEM 3 #define ITEM 3
#define TEAMMATE 4 #define TEAMMATE 4
#define TEAMNAME 4 #define TEAMNAME 4
#define ENEMY 4 #define ENEMY 4
#define KEYAREA 5 #define KEYAREA 5
#define FORMATION 5 #define FORMATION 5
#define POSITION 5 #define POSITION 5
#define NUMBER 5 #define NUMBER 5
#define TIME 6 #define TIME 6
#define NAME 6 #define NAME 6
#define MORE 6 #define MORE 6

View File

@ -1,22 +1,22 @@
//=========================================================================== //===========================================================================
// //
// Name: syn.h // Name: syn.h
// Function: synonyms // Function: synonyms
// Programmer: Mr Elusive // Programmer: Mr Elusive
// Last update: - // Last update: -
// Tab Size: 4 (real tabs) // Tab Size: 4 (real tabs)
// Notes: - // Notes: -
//=========================================================================== //===========================================================================
#define CONTEXT_ALL 0xFFFFFFFF #define CONTEXT_ALL 0xFFFFFFFF
#define CONTEXT_NORMAL 1 #define CONTEXT_NORMAL 1
#define CONTEXT_NEARBYITEM 2 #define CONTEXT_NEARBYITEM 2
#define CONTEXT_CTFREDTEAM 4 #define CONTEXT_CTFREDTEAM 4
#define CONTEXT_CTFBLUETEAM 8 #define CONTEXT_CTFBLUETEAM 8
#define CONTEXT_REPLY 16 #define CONTEXT_REPLY 16
#define CONTEXT_OBELISKREDTEAM 32 #define CONTEXT_OBELISKREDTEAM 32
#define CONTEXT_OBELISKBLUETEAM 64 #define CONTEXT_OBELISKBLUETEAM 64
#define CONTEXT_HARVESTERREDTEAM 128 #define CONTEXT_HARVESTERREDTEAM 128
#define CONTEXT_HARVESTERBLUETEAM 256 #define CONTEXT_HARVESTERBLUETEAM 256
#define CONTEXT_NAMES 1024 #define CONTEXT_NAMES 1024