mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2025-03-15 23:21:35 +00:00
160 lines
3.7 KiB
Text
160 lines
3.7 KiB
Text
/***********************************************************************
|
|
|
|
ai_base.script
|
|
|
|
Base object for AI characters and player. Contains variables required by game code.
|
|
|
|
***********************************************************************/
|
|
|
|
//
|
|
// move types
|
|
//
|
|
#define MOVETYPE_DEAD 0 // no enemy tracking or steering. just runs physics and script.
|
|
#define MOVETYPE_ANIM 1 // movement based on animation deltas
|
|
#define MOVETYPE_SLIDE 2 // movement based on velocity. set speed using setFlySpeed.
|
|
#define MOVETYPE_FLY 3 // flying monsters.
|
|
#define MOVETYPE_STATIC 4 // no movement or gravity.
|
|
|
|
//
|
|
// move results
|
|
//
|
|
#define MOVE_STATUS_DONE 0 // move succeeded, or not moving
|
|
#define MOVE_STATUS_MOVING 1 // move in progress
|
|
#define MOVE_STATUS_WAITING 2 //
|
|
#define MOVE_STATUS_DEST_NOT_FOUND 3 // destination doesn't exist
|
|
#define MOVE_STATUS_DEST_UNREACHABLE 4 //
|
|
#define MOVE_STATUS_BLOCKED_BY_WALL 5
|
|
#define MOVE_STATUS_BLOCKED_BY_OBJECT 6
|
|
#define MOVE_STATUS_BLOCKED_BY_ENEMY 7
|
|
#define MOVE_STATUS_BLOCKED_BY_MONSTER 8
|
|
|
|
//
|
|
// talk states
|
|
//
|
|
#define TALK_NEVER 0
|
|
#define TALK_DEAD 1
|
|
#define TALK_OK 2
|
|
#define TALK_BUSY 3
|
|
|
|
/***********************************************************************
|
|
|
|
ai object
|
|
|
|
***********************************************************************/
|
|
|
|
object ai {
|
|
boolean AI_TALK;
|
|
boolean AI_DAMAGE;
|
|
boolean AI_PAIN;
|
|
float AI_SPECIAL_DAMAGE; // value of "special_damage" on projectile
|
|
boolean AI_DEAD;
|
|
boolean AI_ENEMY_VISIBLE;
|
|
boolean AI_ENEMY_IN_FOV;
|
|
boolean AI_ENEMY_DEAD;
|
|
boolean AI_MOVE_DONE;
|
|
boolean AI_ONGROUND;
|
|
boolean AI_ACTIVATED;
|
|
boolean AI_FORWARD;
|
|
boolean AI_JUMP;
|
|
boolean AI_DEST_UNREACHABLE;
|
|
boolean AI_BLOCKED;
|
|
boolean AI_HIT_ENEMY;
|
|
boolean AI_OBSTACLE_IN_PATH;
|
|
boolean AI_PUSHED;
|
|
};
|
|
|
|
/***********************************************************************
|
|
|
|
player base object
|
|
|
|
***********************************************************************/
|
|
|
|
object player_base {
|
|
boolean AI_FORWARD;
|
|
boolean AI_BACKWARD;
|
|
boolean AI_STRAFE_LEFT;
|
|
boolean AI_STRAFE_RIGHT;
|
|
boolean AI_ATTACK_HELD;
|
|
boolean AI_WEAPON_FIRED;
|
|
boolean AI_JUMP;
|
|
boolean AI_DEAD;
|
|
boolean AI_CROUCH;
|
|
boolean AI_ONGROUND;
|
|
boolean AI_ONLADDER;
|
|
boolean AI_RUN;
|
|
boolean AI_HARDLANDING;
|
|
boolean AI_SOFTLANDING;
|
|
boolean AI_RELOAD;
|
|
boolean AI_PAIN;
|
|
boolean AI_TELEPORT;
|
|
boolean AI_TURN_LEFT;
|
|
boolean AI_TURN_RIGHT;
|
|
|
|
// called by game
|
|
void EnterCinematic();
|
|
void ExitCinematic();
|
|
void LowerWeapon();
|
|
void RaiseWeapon();
|
|
void ReloadWeapon();
|
|
void NetCatchup();
|
|
};
|
|
|
|
/*
|
|
=====================
|
|
player_base::EnterCinematic
|
|
|
|
Required by game code for cinematics. Implemented in subclasses.
|
|
=====================
|
|
*/
|
|
void player_base::EnterCinematic() {
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player_base::ExitCinematic
|
|
|
|
Required by game code for cinematics. Implemented in subclasses.
|
|
=====================
|
|
*/
|
|
void player_base::ExitCinematic() {
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player_base::LowerWeapon
|
|
|
|
Required by game code for weapon switches. Implemented in subclasses.
|
|
=====================
|
|
*/
|
|
void player_base::LowerWeapon() {
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player_base::RaiseWeapon
|
|
|
|
Required by game code for weapon switches. Implemented in subclasses.
|
|
=====================
|
|
*/
|
|
void player_base::RaiseWeapon() {
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player_base::ReloadWeapon
|
|
|
|
Required by game code for weapon reloading. Implemented in subclasses.
|
|
=====================
|
|
*/
|
|
void player_base::ReloadWeapon() {
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player_base::NetCatchup
|
|
|
|
Required by game code for networking. Implemented in subclasses.
|
|
=====================
|
|
*/
|
|
void player_base::NetCatchup() {
|
|
}
|