123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #ifndef __AI__
- #define __AI__
- //Distance ratings
- enum distance_e
- {
- DIST_MELEE,
- DIST_LONG,
- };
- //Attack types
- enum attack_e
- {
- ATTACK_MELEE,
- ATTACK_RANGE,
- };
- enum
- {
- SQUAD_IDLE, //No target found, waiting
- SQUAD_STAND_AND_SHOOT, //Standing in position and shoot (no cover)
- SQUAD_RETREAT, //Running away from combat
- SQUAD_COVER, //Under protective cover
- SQUAD_TRANSITION, //Moving between points, not firing
- SQUAD_POINT, //On point, laying down suppressive fire
- SQUAD_SCOUT, //Poking out to draw enemy
- NUM_SQUAD_STATES,
- };
- //sigh... had to move in here for groupInfo
- typedef enum //# rank_e
- {
- RANK_CIVILIAN,
- RANK_CREWMAN,
- RANK_ENSIGN,
- RANK_LT_JG,
- RANK_LT,
- RANK_LT_COMM,
- RANK_COMMANDER,
- RANK_CAPTAIN
- } rank_t;
- qboolean NPC_CheckPlayerTeamStealth( void );
- //AI_GRENADIER
- void NPC_BSGrenadier_Default( void );
- //AI_TUSKEN
- void NPC_BSTusken_Default( void );
- //AI_SNIPER
- void NPC_BSSniper_Default( void );
- //AI_STORMTROOPER
- void Saboteur_Decloak( gentity_t *self, int uncloakTime = 2000 );
- void NPC_BSST_Investigate( void );
- void NPC_BSST_Default( void );
- void NPC_BSST_Sleep( void );
- //AI_JEDI
- void NPC_BSJedi_Investigate( void );
- void NPC_BSJedi_Default( void );
- void NPC_BSJedi_FollowLeader( void );
- // AI_DROID
- void NPC_BSDroid_Default( void );
- // AI_ImperialProbe
- void NPC_BSImperialProbe_Default( void );
- // AI_atst
- void NPC_BSATST_Default( void );
- void NPC_BSInterrogator_Default( void );
- // AI Mark 1
- void NPC_BSMark1_Default( void );
- // AI Mark 2
- void NPC_BSMark2_Default( void );
- //monsters
- void NPC_BSMineMonster_Default( void );
- void NPC_BSHowler_Default( void );
- void NPC_BSRancor_Default( void );
- void NPC_BSWampa_Default( void );
- void NPC_BSSandCreature_Default( void );
- // animals
- void NPC_BSAnimal_Default( void );
- //Utilities
- //Group AI
- #define MAX_FRAME_GROUPS 32
- // !!!!!!!!!! LOADSAVE-affecting structure !!!!!!!!!!
- typedef struct AIGroupMember_s
- {
- int number;
- int waypoint;
- int pathCostToEnemy;
- int closestBuddy;
- } AIGroupMember_t;
- #define MAX_GROUP_MEMBERS 32
- // !!!!!!!!!! LOADSAVE-affecting structure !!!!!!!!!!
- typedef struct AIGroupInfo_s
- {
- int numGroup;
- qboolean processed;
- team_t team;
- gentity_t *enemy;
- int enemyWP;
- int speechDebounceTime;
- int lastClearShotTime;
- int lastSeenEnemyTime;
- int morale;
- int moraleAdjust;
- int moraleDebounce;
- int memberValidateTime;
- int activeMemberNum;
- gentity_t *commander;
- vec3_t enemyLastSeenPos;
- int numState[ NUM_SQUAD_STATES ];
- AIGroupMember_t member[ MAX_GROUP_MEMBERS ];
- } AIGroupInfo_t;
- int AI_GetGroupSize( vec3_t origin, int radius, team_t playerTeam, gentity_t *avoid = NULL );
- int AI_GetGroupSize( gentity_t *ent, int radius );
- void AI_GetGroup( gentity_t *self );
- gentity_t *AI_DistributeAttack( gentity_t *attacker, gentity_t *enemy, team_t team, int threshold );
- #endif //__AI__
|