mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-17 11:00:38 +02:00
93 lines
4.4 KiB
C++
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();
|
|
};
|