mirror of
https://github.com/blendogames/thirtyflightsofloving.git
synced 2024-11-15 00:41:21 +00:00
eb97af1598
Added GetFileList() to game function imports in misison pack DLL game.h.
429 lines
No EOL
12 KiB
C
429 lines
No EOL
12 KiB
C
#ifndef BOTHEAD
|
||
#define BOTHEAD
|
||
#include "g_local.h"
|
||
|
||
//general func
|
||
void player_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point);
|
||
|
||
//bot spawn & remove
|
||
qboolean SpawnBot(int i);
|
||
void Bot_LevelChange();
|
||
void Load_BotInfo();
|
||
void Bot_SpawnCall();
|
||
void RemoveBot();
|
||
void SpawnBotReserving();
|
||
|
||
//weapon
|
||
void Weapon_Blaster (edict_t *ent);
|
||
void Weapon_Shotgun (edict_t *ent);
|
||
void Weapon_SuperShotgun (edict_t *ent);
|
||
void Weapon_Machinegun (edict_t *ent);
|
||
void Weapon_Chaingun (edict_t *ent);
|
||
void Weapon_HyperBlaster (edict_t *ent);
|
||
void Weapon_RocketLauncher (edict_t *ent);
|
||
void Weapon_Grenade (edict_t *ent);
|
||
void Weapon_GrenadeLauncher (edict_t *ent);
|
||
void Weapon_Railgun (edict_t *ent);
|
||
void Weapon_BFG (edict_t *ent);
|
||
void CTFWeapon_Grapple (edict_t *ent);
|
||
|
||
// RAFAEL
|
||
void Weapon_Ionripper (edict_t *ent);
|
||
void Weapon_Phalanx (edict_t *ent);
|
||
void Weapon_Trap (edict_t *ent);
|
||
|
||
// wideuse
|
||
qboolean Bot_trace (edict_t *ent,edict_t *other);
|
||
qboolean Bot_trace2 (edict_t *ent,vec3_t ttz);
|
||
float Get_yaw (vec3_t vec); //
|
||
float Get_pitch (vec3_t vec); //
|
||
float Get_vec_yaw (vec3_t vec,float yaw);
|
||
void ShowGun(edict_t *ent);
|
||
void SpawnItem3 (edict_t *ent, gitem_t *item);
|
||
int Bot_moveT ( edict_t *ent,float ryaw,vec3_t pos,float dist,float *bottom);
|
||
void Set_BotAnim(edict_t *ent,int anim,int frame,int end);
|
||
void plat_go_up (edict_t *ent);
|
||
int Get_KindWeapon(gitem_t *it);
|
||
qboolean TargetJump(edict_t *ent,vec3_t tpos);
|
||
qboolean Bot_traceS (edict_t *ent,edict_t *other);
|
||
qboolean Bot_Fall(edict_t *ent,vec3_t pos,float dist);
|
||
|
||
void SelectSpawnPoint (edict_t *ent, vec3_t origin, vec3_t angles);
|
||
void ClientUserinfoChanged (edict_t *ent, char *userinfo);
|
||
void CopyToBodyQue (edict_t *ent);
|
||
|
||
//route util
|
||
qboolean TraceX (edict_t *ent,vec3_t p2);
|
||
void Move_LastRouteIndex();
|
||
void Get_RouteOrigin(int index,vec3_t pos);
|
||
|
||
//Bot Func
|
||
void ZigockJoinMenu(edict_t *ent);
|
||
qboolean ZigockStartClient(edict_t *ent);
|
||
void Cmd_AirStrike(edict_t *ent);
|
||
void BotEndServerFrame (edict_t *ent);
|
||
void SpawnItem2 (edict_t *ent, gitem_t *item);
|
||
void Get_WaterState(edict_t *ent);
|
||
void Bot_Think (edict_t *self);
|
||
void PutBotInServer (edict_t *ent);
|
||
void SpawnBotReserving2(int *red,int *blue);
|
||
|
||
//Combat AI
|
||
void Combat_Level0(edict_t *ent,int foundedenemy,int enewep,float aim,float distance,int skill);
|
||
void Combat_LevelX(edict_t *ent,int foundedenemy,int enewep,float aim,float distance,int skill);
|
||
void UsePrimaryWeapon(edict_t *ent);
|
||
|
||
//Explotion Index
|
||
void UpdateExplIndex(edict_t* ent);
|
||
|
||
//flag
|
||
qboolean ZIGDrop_Flag(edict_t *ent, gitem_t *item);
|
||
|
||
//p_view.c
|
||
void BotEndServerFrame (edict_t *ent);
|
||
|
||
//Bot AI routine
|
||
void Bots_Move_NORM (edict_t *ent); //normal AI
|
||
|
||
//spawn
|
||
void SetBotFlag1(edict_t *ent); //<2F>`<60>[<5B><>1<EFBFBD>̊<EFBFBD>
|
||
void SetBotFlag2(edict_t *ent); //<2F>`<60>[<5B><>2<EFBFBD>̊<EFBFBD>
|
||
void CTFSetupNavSpawn(); //<2F>i<EFBFBD>r<EFBFBD>̐ݒu
|
||
|
||
//ctf
|
||
void CTFJobAssign (void); //job assign
|
||
|
||
//VWep
|
||
// ### Hentai ### BEGIN
|
||
//void ShowGun(edict_t *ent);
|
||
// ### Hentai ### END
|
||
|
||
//----------------------------------------------------------------
|
||
|
||
//moving speed
|
||
#define MOVE_SPD_WALK 20
|
||
#define MOVE_SPD_RUN 32
|
||
#define MOVE_SPD_DUCK 10
|
||
#define MOVE_SPD_WATER 16
|
||
#define MOVE_SPD_JUMP 32
|
||
#define VEL_BOT_JUMP 340//341 //jump vel
|
||
//#define VEL_BOT_ROCJ 500 //roc jump
|
||
#define VEL_BOT_WJUMP 341//150 //waterjump vel
|
||
#define VEL_BOT_LADRUP 200 //ladderup vel
|
||
#define VEL_BOT_WLADRUP 200 //0 //water ladderup gain
|
||
|
||
|
||
//classes
|
||
#define CLS_NONE 0 //normal
|
||
#define CLS_ALPHA 1 //sniper
|
||
#define CLS_BETA 2
|
||
#define CLS_GAMMA 3
|
||
#define CLS_DELTA 4
|
||
#define CLS_EPSILON 5
|
||
#define CLS_ZETA 6
|
||
#define CLS_ETA 7
|
||
|
||
// function's state P
|
||
#define PSTATE_TOP 0
|
||
#define PSTATE_BOTTOM 1
|
||
#define PSTATE_UP 2
|
||
#define PSTATE_DOWN 3
|
||
|
||
#define PDOOR_TOGGLE 32
|
||
|
||
// height
|
||
#define TOP_LIMIT 52
|
||
#define TOP_LIMIT_WATER 100
|
||
#define BOTTOM_LIMIT -52
|
||
#define BOTTOM_LIMIT_WATER -8190
|
||
#define BOTTOM_LIMITM -300
|
||
|
||
//waterstate
|
||
#define WAS_NONE 0
|
||
#define WAS_FLOAT 1
|
||
#define WAS_IN 2
|
||
|
||
//route
|
||
//chaining pod state
|
||
#define GRS_NORMAL 0
|
||
#define GRS_ONROTATE 1
|
||
#define GRS_TELEPORT 2
|
||
#define GRS_ITEMS 3
|
||
#define GRS_ONPLAT 4
|
||
#define GRS_ONTRAIN 5
|
||
#define GRS_ONDOOR 6
|
||
#define GRS_PUSHBUTTON 7
|
||
|
||
#define GRS_GRAPSHOT 20
|
||
#define GRS_GRAPHOOK 21
|
||
#define GRS_GRAPRELEASE 22
|
||
|
||
#define GRS_REDFLAG -10
|
||
#define GRS_BLUEFLAG -11
|
||
|
||
#define POD_LOCKFRAME 15 //20
|
||
#define POD_RELEFRAME 20 //25
|
||
|
||
#define MAX_SEARCH 12 //max search count/FRAMETIME
|
||
#define MAX_DOORSEARCH 10
|
||
|
||
//trace param
|
||
#define TRP_NOT 0 //don't trace
|
||
#define TRP_NORMAL 1 //trace normal
|
||
#define TRP_ANGLEKEEP 2 //trace and keep angle
|
||
#define TRP_MOVEKEEP 3 //angle and move vec keep but move
|
||
#define TRP_ALLKEEP 4 //don't move
|
||
|
||
// bot spawning status
|
||
#define BOT_SPAWNNOT 0
|
||
#define BOT_SPRESERVED 1
|
||
#define BOT_SPAWNED 2
|
||
#define BOT_NEXTLEVEL 3
|
||
|
||
//combat
|
||
#define AIMING_POSGAP 5
|
||
#define AIMING_ANGLEGAP_S 0.75 //shot gun
|
||
#define AIMING_ANGLEGAP_M 0.35 //machine gun
|
||
|
||
//team play state
|
||
#define TMS_NONE 0
|
||
#define TMS_LEADER 1
|
||
#define TMS_FOLLOWER 2
|
||
|
||
//ctf state
|
||
#define CTFS_NONE 0
|
||
#define CTFS_CARRIER 1
|
||
#define CTFS_ROAMER 2
|
||
#define CTFS_OFFENCER 3
|
||
#define CTFS_DEFENDER 4
|
||
#define CTFS_SUPPORTER 5
|
||
|
||
#define FOR_FLAG1 1
|
||
#define FOR_FLAG2 2
|
||
|
||
//fire----------------------------------------------------------
|
||
#define FIRE_SLIDEMODE 0x00000001 //slide with route
|
||
#define FIRE_PRESTAYFIRE 0x00000002 //X pre don't move fire
|
||
#define FIRE_STAYFIRE 0x00000004 //X don't move
|
||
#define FIRE_CHIKEN 0x00000008 //X chiken fire
|
||
#define FIRE_RUSH 0x00000010 //X rush
|
||
#define FIRE_JUMPNRUSH 0x00000020 //
|
||
#define FIRE_ESTIMATE 0x00000040 //X estimate <20>\<5C><>
|
||
#define FIRE_SCATTER 0x00000080 //scatter <20>o<EFBFBD><6F><EFBFBD>T<EFBFBD><54>
|
||
#define FIRE_RUNNIN 0x00000100 //run & shot(normal)
|
||
#define FIRE_JUMPROC 0x00000200 //X <20>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>ӂ<EFBFBD><D382><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define FIRE_REFUGE 0x00001000 //X <09><><EFBFBD><EFBFBD>
|
||
#define FIRE_EXPAVOID 0x00002000 //X <09><><EFBFBD><EFBFBD><EFBFBD>悯
|
||
|
||
#define FIRE_QUADUSE 0x00004000 //X Quad<61><64><EFBFBD>̘A<CC98>˕<EFBFBD><CB95><EFBFBD><EFBFBD>I<EFBFBD><49>
|
||
#define FIRE_AVOIDINV 0x00008000 //X <20><><EFBFBD>肪<EFBFBD>y<EFBFBD><79><EFBFBD>^<5E>̎<EFBFBD><CC8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define FIRE_BFG 0x00010000 //X <20><><EFBFBD>ʂ<EFBFBD>BFG<46><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define FIRE_SHIFT_R 0x00020000 //X <20>E<EFBFBD>X<EFBFBD><58><EFBFBD>C<EFBFBD>h
|
||
#define FIRE_SHIFT_L 0x00040000 //X <20><><EFBFBD>X<EFBFBD><58><EFBFBD>C<EFBFBD>h
|
||
|
||
#define FIRE_SHIFT (FIRE_SHIFT_R | FIRE_SHIFT_L)//X <20>E<EFBFBD>X<EFBFBD><58><EFBFBD>C<EFBFBD>h
|
||
|
||
#define FIRE_REFLECT 0x00080000 // <20>ǂɔ<C782><C994>˂<EFBFBD><CB82><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define FIRE_IGNORE 0x10000000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ē<EFBFBD><C493><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
// means of death
|
||
|
||
#define MOD_SNIPERAIL 50 //SNIPE RAIL
|
||
#define MOD_LOCMISSILE 51 //LOCKON MISSILE
|
||
|
||
#define MOD_BFG100K 52 //
|
||
|
||
#define MOD_AIRSTRIKE 70 //AIRSTRIKE
|
||
//----------------------------------------------------------------
|
||
//general status list
|
||
#define STS_IDLE 0x00000000 //normal running
|
||
#define STS_THINK 0x00000001 //stand and analise
|
||
#define STS_LADDERUP 0x00000002 //crimb the ladder
|
||
#define STS_ROCJ 0x00000004 //rocket jumping
|
||
#define STS_TURBOJ 0x00000008 //turbo jump
|
||
#define STS_WATERJ 0x00000010 //turbo jump
|
||
|
||
#define STS_SJMASK (STS_ROCJ | STS_TURBOJ | STS_WATERJ) //special jump mask
|
||
#define STS_SJMASKEXW (STS_ROCJ | STS_TURBOJ ) //special jump mask ex. water
|
||
|
||
|
||
#define STS_TALKING 0x00000200 //talking
|
||
#define STS_ESC_WXPL 0x00000400 //escape from explode
|
||
|
||
#define STS_MOVE_WPOINT 0x00000800 //moving waiting point
|
||
//#define STS_W_EXPL 0x00001000 //wait for end of explode
|
||
|
||
//wait
|
||
#define STS_W_DONT 0x00001000 //don't wait door or plat
|
||
#define STS_W_DOOROPEN 0x00002000 //wait for door open or down to bottom
|
||
#define STS_W_ONPLAT 0x00004000 //wait for plat or door reach to da top
|
||
#define STS_W_ONDOORUP 0x00008000 //wait for door reach to da top
|
||
#define STS_W_ONDOORDWN 0x00010000 //wait for door reach to da bottom
|
||
#define STS_W_ONTRAIN 0x00020000 //wait for plat or door reach to da top
|
||
#define STS_W_COMETRAIN 0x00040000 //wait for train come
|
||
#define STS_W_COMEPLAT 0x00080000 //wait for plat come
|
||
|
||
#define STS_WAITS (STS_W_DONT | STS_W_DOOROPEN | STS_W_COMEPLAT | STS_W_ONPLAT | STS_W_ONDOORUP | STS_W_ONDOORDWN | STS_W_ONTRAIN)
|
||
#define STS_WAITSMASK (STS_W_DOOROPEN | STS_W_ONPLAT | STS_W_ONDOORUP | STS_W_COMEPLAT | STS_W_ONDOORDWN | STS_W_ONTRAIN)
|
||
#define STS_WAITSMASK2 (STS_W_ONDOORDWN |STS_W_ONDOORUP | STS_W_ONPLAT | STS_W_ONTRAIN)
|
||
#define STS_WAITSMASKCOM (STS_W_DOOROPEN | STS_W_ONPLAT | STS_W_ONDOORUP | STS_W_ONDOORDWN | STS_W_ONTRAIN)
|
||
//----------------------------------------------------------------
|
||
//general status list
|
||
#define CTS_ENEM_NSEE 0x00000001 //have enemy but can't see
|
||
#define CTS_AGRBATTLE 0x00000002 //aglessive battle
|
||
#define CTS_ESCBATTLE 0x00000004 //escaping battle(item want)
|
||
#define CTS_HIPBATTLE 0x00000008 //high position battle(camp)
|
||
|
||
|
||
//shoot
|
||
#define CTS_PREAIMING 0x00000010 //prepare for snipe or lockon
|
||
#define CTS_AIMING 0x00000020 //aimning for snipe or lockon
|
||
#define CTS_GRENADE 0x00000040 //hand grenade mode
|
||
#define CTS_JUMPSHOT 0x00000080 //jump shot
|
||
|
||
#define CTS_COMBS (CTS_AGRBATTLE | CTS_ESCBATTLE | CTS_HIPBATTLE | CTS_ENEM_NSEE)
|
||
|
||
//----------------------------------------------------------------
|
||
//route struct
|
||
#define MAXNODES 10000 //5000 added 5000 pods
|
||
#define MAXLINKPOD 6 //don't modify this
|
||
#define CTF_FLAG1_FLAG 0x0000
|
||
#define CTF_FLAG2_FLAG 0x8000
|
||
|
||
typedef struct
|
||
{
|
||
vec3_t Pt; //target point
|
||
union
|
||
{
|
||
vec3_t Tcourner; //target courner(train and grap-shot only)
|
||
unsigned short linkpod[MAXLINKPOD]; //(GRS_NORMAL,GRS_ITEMS only 0 = do not select pod)
|
||
};
|
||
edict_t *ent; //target ent
|
||
short index; //index num
|
||
short state; //targetstate
|
||
} route_t;
|
||
|
||
//----------------------------------------------------------------
|
||
//bot info struct
|
||
#define MAXBOTS 64
|
||
#define MAXBOP 16
|
||
|
||
// bot params
|
||
#define BOP_WALK 0 //flags
|
||
#define BOP_AIM 1 //aiming
|
||
#define BOP_PICKUP 2 //frq PICKUP
|
||
#define BOP_OFFENCE 3 //chiken fire etc.
|
||
#define BOP_COMBATSKILL 4 //combat skill
|
||
#define BOP_ROCJ 5 //rocket jump
|
||
#define BOP_REACTION 6 //reaction skill exp. frq SEARCH ENEMY
|
||
#define BOP_VRANGE 7 //V-View of RANGE <09>c
|
||
#define BOP_HRANGE 8 //H-View of Range <09><>
|
||
#define BOP_PRIWEP 9 //primary weapon
|
||
#define BOP_SECWEP 10 //secondary weapon
|
||
#define BOP_DODGE 11 //dodge
|
||
#define BOP_ESTIMATE 12 //estimate
|
||
#define BOP_NOISECHK 13 //noisecheck
|
||
#define BOP_NOSTHRWATER 14 //can't see through water
|
||
#define BOP_TEAMWORK 15 //teamwork
|
||
|
||
typedef struct
|
||
{
|
||
char netname[21]; //netname
|
||
char model[21]; //model
|
||
char skin[21]; //skin
|
||
int spflg; //spawned flag 0-not 1-waiting 2-spawned
|
||
int team; //team NO. 0-noteam 1-RED 2-BLUE
|
||
int arena; //if arena is on
|
||
unsigned char param[MAXBOP]; //Params
|
||
} botinfo_t;
|
||
|
||
//----------------------------------------------------------------
|
||
//message section name
|
||
#define MESS_DEATHMATCH "[MessDeathMatch]"
|
||
#define MESS_CHAIN_DM "[MessChainDM]"
|
||
#define MESS_CTF "[MessCTF]"
|
||
#define MESS_CHAIN_CTF "[MessChainCTF]"
|
||
|
||
//----------------------------------------------------------------
|
||
//bot list section name
|
||
#define BOTLIST_SECTION_DM "[BotList]"
|
||
#define BOTLIST_SECTION_TM "[BotListTM]"
|
||
|
||
//----------------------------------------------------------------
|
||
#define MAX_BOTSKILL 10
|
||
|
||
#define FALLCHK_LOOPMAX 30
|
||
|
||
//laser Index
|
||
#define MAX_LASERINDEX 30
|
||
extern edict_t* LaserIndex[MAX_LASERINDEX];
|
||
|
||
//Explotion Index
|
||
#define MAX_EXPLINDEX 12
|
||
extern edict_t* ExplIndex[MAX_EXPLINDEX];
|
||
//
|
||
|
||
|
||
extern int cumsindex;
|
||
extern int targetindex; //debugtarget
|
||
|
||
extern int ListedBotCount; //bot count of list
|
||
|
||
extern int SpawnWaitingBots;
|
||
extern char ClientMessage[MAX_STRING_CHARS];
|
||
extern botinfo_t Bot[MAXBOTS];
|
||
extern route_t Route[MAXNODES];
|
||
extern int CurrentIndex;
|
||
extern float JumpMax;
|
||
extern int botskill;
|
||
extern int trace_priority;
|
||
extern int FFlg[MAX_BOTSKILL];
|
||
|
||
extern int ListedBots;
|
||
|
||
//for avoid abnormal frame error
|
||
extern int skullindex;
|
||
extern int headindex;
|
||
|
||
extern gitem_t *zflag_item;
|
||
extern edict_t *zflag_ent;
|
||
extern int zigflag_spawn;
|
||
|
||
//item index
|
||
extern int mpindex[MPI_INDEX];
|
||
|
||
//PON-CTF
|
||
extern edict_t *bot_team_flag1;
|
||
extern edict_t *bot_team_flag2;
|
||
//PON-CTF
|
||
|
||
//pre searched items
|
||
extern gitem_t *Fdi_GRAPPLE;
|
||
extern gitem_t *Fdi_BLASTER;
|
||
extern gitem_t *Fdi_SHOTGUN;
|
||
extern gitem_t *Fdi_SUPERSHOTGUN;
|
||
extern gitem_t *Fdi_MACHINEGUN;
|
||
extern gitem_t *Fdi_CHAINGUN;
|
||
extern gitem_t *Fdi_GRENADES;
|
||
extern gitem_t *Fdi_GRENADELAUNCHER;
|
||
extern gitem_t *Fdi_ROCKETLAUNCHER;
|
||
extern gitem_t *Fdi_HYPERBLASTER;
|
||
extern gitem_t *Fdi_RAILGUN;
|
||
extern gitem_t *Fdi_BFG;
|
||
extern gitem_t *Fdi_PHALANX;
|
||
extern gitem_t *Fdi_BOOMER;
|
||
extern gitem_t *Fdi_TRAP;
|
||
|
||
extern gitem_t *Fdi_SHELLS;
|
||
extern gitem_t *Fdi_BULLETS;
|
||
extern gitem_t *Fdi_CELLS;
|
||
extern gitem_t *Fdi_ROCKETS;
|
||
extern gitem_t *Fdi_SLUGS;
|
||
extern gitem_t *Fdi_MAGSLUGS;
|
||
|
||
extern float ctfjob_update;
|
||
#endif |