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

62 lines
2.1 KiB
C++

// AI_monster_flying_lostsoul.h
// Native state-machine replacement for ai_monster_flying_lostsoul.script.
#pragma once
#ifndef LOSTSOUL_CHARGE_SPEED
#define LOSTSOUL_CHARGE_SPEED 440
#endif
#ifndef LOSTSOUL_NORMAL_SPEED
#define LOSTSOUL_NORMAL_SPEED 140
#endif
#ifndef LOSTSOUL_ATTACK_RATE
#define LOSTSOUL_ATTACK_RATE 2
#endif
#ifndef LOSTSOUL_CHARGE_RANGE_MAX
#define LOSTSOUL_CHARGE_RANGE_MAX 768
#endif
#ifndef LOSTSOUL_CHARGE_RANGE_MIN
#define LOSTSOUL_CHARGE_RANGE_MIN 64
#endif
#ifndef LOSTSOUL_NOFOVTIME
#define LOSTSOUL_NOFOVTIME 4
#endif
#ifndef ATTACK_LOSTSOUL_CHARGE
#define ATTACK_LOSTSOUL_CHARGE ATTACK_SPECIAL1
#endif
#ifndef ATTACK_LOSTSOUL_RETREAT
#define ATTACK_LOSTSOUL_RETREAT ATTACK_SPECIAL2
#endif
class rvmMonsterFlyingLostsoul : public rvmMonsterBase {
public:
CLASS_PROTOTYPE( rvmMonsterFlyingLostsoul );
rvmMonsterFlyingLostsoul();
virtual void Init( idAI* aiOwner ) override;
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
protected:
float nextAttack;
float nextNoFOVAttack;
float noMeleeTime;
float fly_offset;
float painNextTime;
idVec3 chargeVelocity;
virtual stateResult_t Torso_Idle( stateParms_t* parms );
virtual stateResult_t Torso_Fly( stateParms_t* parms );
virtual stateResult_t Torso_Charge( stateParms_t* parms );
virtual stateResult_t Torso_Pain( stateParms_t* parms );
virtual stateResult_t Torso_MeleeAttack( stateParms_t* parms );
virtual stateResult_t state_Begin( stateParms_t* parms );
virtual stateResult_t state_Idle( stateParms_t* parms );
virtual stateResult_t combat_charge( stateParms_t* parms );
virtual stateResult_t combat_melee( stateParms_t* parms );
virtual stateResult_t combat_retreat( stateParms_t* parms );
virtual int check_attacks() override;
virtual bool do_attack( int attack_flags ) override;
};