Files
DoomRTX/neo/doom3/game/ai/AI_monster_base.h
T
2026-05-23 14:30:21 -07:00

93 lines
4.4 KiB
C++

// AI_monster_base.h
// Native state-machine replacement for ai_monster_base.script.
#pragma once
class rvmMonsterBase : public rvmAIObject {
public:
CLASS_PROTOTYPE( rvmMonsterBase );
rvmMonsterBase();
virtual void Init( idAI* aiOwner ) override;
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
protected:
float run_distance;
float walk_turn;
bool run;
bool ambush;
bool ignoreEnemies;
bool stay_on_attackpath;
bool idle_sight_fov;
float customBlendOut;
idEntityPtr<idEntity> current_path;
idEntityPtr<idEntity> next_path;
bool resurrect;
bool ignore_lostcombat;
bool blocked;
bool ignore_sight;
// Animation state machines.
virtual stateResult_t Torso_CustomCycle( stateParms_t* parms );
virtual stateResult_t Torso_CustomAnim( stateParms_t* parms );
virtual stateResult_t Torso_Sight( stateParms_t* parms );
virtual stateResult_t Torso_Death( stateParms_t* parms );
virtual stateResult_t Torso_Idle( stateParms_t* parms );
virtual stateResult_t Legs_Idle( stateParms_t* parms );
virtual stateResult_t Legs_Death( stateParms_t* parms );
// Main/action state machines.
virtual stateResult_t state_Begin( stateParms_t* parms );
virtual stateResult_t state_Spawner( stateParms_t* parms );
virtual stateResult_t state_Resurrect( stateParms_t* parms );
virtual stateResult_t state_Killed( stateParms_t* parms );
virtual stateResult_t state_Dead( stateParms_t* parms );
virtual stateResult_t state_Combat( stateParms_t* parms );
virtual stateResult_t state_LostCombat( stateParms_t* parms );
virtual stateResult_t state_FollowAlternatePath( stateParms_t* parms );
virtual stateResult_t monster_begin( stateParms_t* parms );
virtual stateResult_t wait_for_enemy( stateParms_t* parms );
virtual stateResult_t sight_enemy( stateParms_t* parms );
virtual stateResult_t walk_on_trigger( stateParms_t* parms );
virtual stateResult_t wake_on_trigger( stateParms_t* parms );
virtual stateResult_t wake_on_enemy( stateParms_t* parms );
virtual stateResult_t wake_on_attackcone( stateParms_t* parms );
virtual stateResult_t idle_followPathEntities( stateParms_t* parms );
virtual stateResult_t path_corner( stateParms_t* parms );
virtual stateResult_t path_anim( stateParms_t* parms );
virtual stateResult_t path_cycleanim( stateParms_t* parms );
virtual stateResult_t path_turn( stateParms_t* parms );
virtual stateResult_t path_wait( stateParms_t* parms );
virtual stateResult_t path_waitfortrigger( stateParms_t* parms );
virtual stateResult_t path_hide( stateParms_t* parms );
virtual stateResult_t path_show( stateParms_t* parms );
virtual stateResult_t path_attack( stateParms_t* parms );
virtual stateResult_t combat_wander( stateParms_t* parms );
virtual stateResult_t combat_turret_node( stateParms_t* parms );
virtual stateResult_t combat_attack_cone( stateParms_t* parms );
virtual stateResult_t combat_ainode( stateParms_t* parms );
// Non-blocking helpers.
virtual int check_attacks();
virtual bool do_attack( int attack_flags );
virtual bool checkTurretAttack();
virtual void playCustomCycle( const char* animname, float blendTime );
virtual void playCustomAnim( const char* animname, float blendIn, float blendOut );
virtual void trigger_wakeup_targets();
virtual bool checkForEnemy( bool use_fov );
virtual void archvile_minion();
virtual bool can_resurrect();
virtual void monster_resurrect( idEntity* enemy );
virtual void enemy_dead();
virtual bool check_blocked();
virtual bool combat_chase();
virtual void combat_lost();
virtual void monster_base_lost_combat();
virtual void checkNodeAnim( idEntity* node, const char* prefix, const char* anim );
virtual void follow_alternate_path1();
virtual void follow_alternate_path2();
virtual void follow_alternate_path3();
};