// AI_monster_boss_guardian_seeker.h // Native state-machine replacement for ai_monster_boss_guardian_seeker.script. #pragma once #ifndef SEEKER_TOOCLOSE_RANGE #define SEEKER_TOOCLOSE_RANGE 200 #endif #ifndef SEEKER_TOOFAR_RANGE #define SEEKER_TOOFAR_RANGE 650 #endif #ifndef SEEKER_IDEAL_RANGE #define SEEKER_IDEAL_RANGE 430 #endif #ifndef SEEKER_MAXIMUM_RETREAT_RANGE #define SEEKER_MAXIMUM_RETREAT_RANGE ( SEEKER_TOOFAR_RANGE + 200 ) #endif #ifndef SEEKER_RUNTIME #define SEEKER_RUNTIME 2 #endif #ifndef SEEKER_GETCLOSER_DELAY #define SEEKER_GETCLOSER_DELAY 3 #endif #ifndef SEEKER_GETCLOSER_TIME #define SEEKER_GETCLOSER_TIME 1 #endif #ifndef SEEKER_SIGHTTIME #define SEEKER_SIGHTTIME 2 #endif #ifndef SEEKER_ESCAPE_SPEED #define SEEKER_ESCAPE_SPEED 800 #endif class rvmMonsterBossGuardianSeeker : public rvmSeekerBase { public: CLASS_PROTOTYPE( rvmMonsterBossGuardianSeeker ); rvmMonsterBossGuardianSeeker(); virtual void Init( idAI* aiOwner ) override; virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override; protected: float painNextTime; float nextEnemyCheck; float getCloserEndTime; float retreatEndTime; idEntityPtr guardian; virtual stateResult_t Torso_Idle( stateParms_t* parms ); virtual stateResult_t Torso_Fly( stateParms_t* parms ); virtual stateResult_t Torso_Pain( stateParms_t* parms ); virtual stateResult_t Torso_MeleeAttack( stateParms_t* parms ); virtual stateResult_t Torso_Death( stateParms_t* parms ); virtual stateResult_t see_enemy( stateParms_t* parms ); virtual stateResult_t lost_enemy( stateParms_t* parms ); virtual stateResult_t respawnSeeker( stateParms_t* parms ); virtual stateResult_t state_Respawn( stateParms_t* parms ); virtual stateResult_t state_Inactive( stateParms_t* parms ); virtual stateResult_t state_Idle( stateParms_t* parms ); virtual stateResult_t state_Killed( stateParms_t* parms ); virtual stateResult_t state_WatchPlayer( stateParms_t* parms ); virtual stateResult_t state_GetCloser( stateParms_t* parms ); virtual stateResult_t state_FindPlayer( stateParms_t* parms ); virtual stateResult_t state_Retreat( stateParms_t* parms ); virtual stateResult_t state_RunAway( stateParms_t* parms ); };