88 lines
2.4 KiB
C
88 lines
2.4 KiB
C
// Copyright (C) 2001-2002 Raven Software
|
|
//
|
|
|
|
/*****************************************************************************
|
|
* name: be_ai_weap.h
|
|
*
|
|
* desc: weapon AI
|
|
*
|
|
* $Archive: /source/code/botlib/be_ai_weap.h $
|
|
* $Author: Mrelusive $
|
|
* $Revision: 2 $
|
|
* $Modtime: 10/05/99 3:32p $
|
|
* $Date: 10/05/99 3:42p $
|
|
*
|
|
*****************************************************************************/
|
|
|
|
//projectile flags
|
|
#define PFL_WINDOWDAMAGE 1 //projectile damages through window
|
|
#define PFL_RETURN 2 //set when projectile returns to owner
|
|
//weapon flags
|
|
#define WFL_FIRERELEASED 1 //set when projectile is fired with key-up event
|
|
//damage types
|
|
#define DAMAGETYPE_IMPACT 1 //damage on impact
|
|
#define DAMAGETYPE_RADIAL 2 //radial damage
|
|
#define DAMAGETYPE_VISIBLE 4 //damage to all entities visible to the projectile
|
|
|
|
typedef struct projectileinfo_s
|
|
{
|
|
char name[MAX_STRINGFIELD];
|
|
char model[MAX_STRINGFIELD];
|
|
int flags;
|
|
float gravity;
|
|
int damage;
|
|
float radius;
|
|
int visdamage;
|
|
int damagetype;
|
|
int healthinc;
|
|
float push;
|
|
float detonation;
|
|
float bounce;
|
|
float bouncefric;
|
|
float bouncestop;
|
|
} projectileinfo_t;
|
|
|
|
typedef struct weaponinfo_s
|
|
{
|
|
int valid; //true if the weapon info is valid
|
|
int number; //number of the weapon
|
|
char name[MAX_STRINGFIELD];
|
|
char model[MAX_STRINGFIELD];
|
|
int level;
|
|
int weaponindex;
|
|
int flags;
|
|
char projectile[MAX_STRINGFIELD];
|
|
int numprojectiles;
|
|
float hspread;
|
|
float vspread;
|
|
float speed;
|
|
float acceleration;
|
|
vec3_t recoil;
|
|
vec3_t offset;
|
|
vec3_t angleoffset;
|
|
float extrazvelocity;
|
|
int ammoamount;
|
|
int ammoindex;
|
|
float activate;
|
|
float reload;
|
|
float spinup;
|
|
float spindown;
|
|
projectileinfo_t proj; //pointer to the used projectile
|
|
} weaponinfo_t;
|
|
|
|
//setup the weapon AI
|
|
int BotSetupWeaponAI(void);
|
|
//shut down the weapon AI
|
|
void BotShutdownWeaponAI(void);
|
|
//returns the best weapon to fight with
|
|
int BotChooseBestFightWeapon(int weaponstate, int *inventory);
|
|
//returns the information of the current weapon
|
|
void BotGetWeaponInfo(int weaponstate, int weapon, weaponinfo_t *weaponinfo);
|
|
//loads the weapon weights
|
|
int BotLoadWeaponWeights(int weaponstate, char *filename);
|
|
//returns a handle to a newly allocated weapon state
|
|
int BotAllocWeaponState(void);
|
|
//frees the weapon state
|
|
void BotFreeWeaponState(int weaponstate);
|
|
//resets the whole weapon state
|
|
void BotResetWeaponState(int weaponstate);
|