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

49 lines
1.7 KiB
C++

// AI_monster_turret.h
// Native state-machine replacement for ai_monster_turret.script.
#pragma once
#ifndef TURRET_FIRE_RATE
#define TURRET_FIRE_RATE 0.1f
#endif
#ifndef TURRET_MIN_ATTACK_TIME
#define TURRET_MIN_ATTACK_TIME 1.5f
#endif
#ifndef TURRET_SHUTDOWN_TIME
#define TURRET_SHUTDOWN_TIME 4
#endif
class rvmMonsterTurret : public rvmMonsterBase {
public:
CLASS_PROTOTYPE( rvmMonsterTurret );
rvmMonsterTurret();
virtual void Init( idAI* aiOwner ) override;
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
protected:
bool fire;
bool attack_monsters;
bool light_is_on;
float attackTime;
float nextFireTime;
float shutdownTime;
idEntityPtr<idEntity> light;
virtual stateResult_t Torso_Death( stateParms_t* parms );
virtual stateResult_t Torso_Idle( stateParms_t* parms );
virtual stateResult_t Torso_Attack( stateParms_t* parms );
virtual stateResult_t state_Begin( stateParms_t* parms );
virtual stateResult_t state_Idle( stateParms_t* parms );
virtual stateResult_t state_Disabled( stateParms_t* parms );
virtual stateResult_t state_Killed( stateParms_t* parms );
virtual stateResult_t state_Combat( stateParms_t* parms );
virtual stateResult_t combat_attack( stateParms_t* parms );
virtual stateResult_t spawn_light( stateParms_t* parms );
virtual stateResult_t light_off( stateParms_t* parms );
virtual stateResult_t light_on( stateParms_t* parms );
virtual bool checkForEnemy( bool use_fov );
};