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

97 lines
3.1 KiB
C++

// AI_monster_demon_vulgar.h
// Native state-machine replacement for ai_monster_demon_vulgar.script.
#pragma once
#ifndef VULGAR_RUNDISTANCE
#define VULGAR_RUNDISTANCE 192
#endif
#ifndef VULGAR_WALKTURN
#define VULGAR_WALKTURN 65
#endif
#ifndef VULGAR_ATTACK_RATE
#define VULGAR_ATTACK_RATE 1
#endif
#ifndef VULGAR_DODGE_RATE
#define VULGAR_DODGE_RATE 1
#endif
#ifndef VULGAR_LEAP_RATE
#define VULGAR_LEAP_RATE 8
#endif
#ifndef VULGAR_LEAP_SPEED
#define VULGAR_LEAP_SPEED 650
#endif
#ifndef VULGAR_LEAP_MAXHEIGHT
#define VULGAR_LEAP_MAXHEIGHT 48
#endif
#ifndef VULGAR_LEAP_RANGE_MIN
#define VULGAR_LEAP_RANGE_MIN 200
#endif
#ifndef VULGAR_LEAP_RANGE_MAX
#define VULGAR_LEAP_RANGE_MAX 480
#endif
#ifndef VULGAR_PAIN_DELAY
#define VULGAR_PAIN_DELAY 0.25f
#endif
#ifndef VULGAR_PAIN_TO_IDLE
#define VULGAR_PAIN_TO_IDLE 8
#endif
#ifndef VULGAR_PAIN_TO_PAIN
#define VULGAR_PAIN_TO_PAIN 4
#endif
#ifndef VULGAR_MELEE_TO_IDLE
#define VULGAR_MELEE_TO_IDLE 4
#endif
#ifndef VULGAR_RANGE_TO_IDLE
#define VULGAR_RANGE_TO_IDLE 4
#endif
#ifndef VULGAR_LEAP_TO_IDLE
#define VULGAR_LEAP_TO_IDLE 4
#endif
#ifndef VULGAR_NOFOVTIME
#define VULGAR_NOFOVTIME 4
#endif
class rvmMonsterDemonVulgar : public rvmMonsterBase {
public:
CLASS_PROTOTYPE( rvmMonsterDemonVulgar );
rvmMonsterDemonVulgar();
virtual void Init( idAI* aiOwner ) override;
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
protected:
float nextDodge;
float nextAttack;
float nextNoFOVAttack;
float nextLeap;
float painNextTime;
idVec3 jumpVelocity;
idStr range_attack_anim;
idEntityPtr<idEntity> combat_node;
virtual stateResult_t Torso_Idle( stateParms_t* parms );
virtual stateResult_t Torso_Pain( stateParms_t* parms );
virtual stateResult_t Torso_MeleeAttack( stateParms_t* parms );
virtual stateResult_t Torso_RangeAttack( stateParms_t* parms );
virtual stateResult_t Torso_TurretAttack( stateParms_t* parms );
virtual stateResult_t Torso_LeapAttack( stateParms_t* parms );
virtual stateResult_t Legs_Idle( stateParms_t* parms );
virtual stateResult_t Legs_Walk( stateParms_t* parms );
virtual stateResult_t Legs_Run( stateParms_t* parms );
virtual stateResult_t Legs_DodgeLeft( stateParms_t* parms );
virtual stateResult_t Legs_DodgeRight( stateParms_t* parms );
virtual stateResult_t state_Begin( stateParms_t* parms );
virtual stateResult_t state_Idle( stateParms_t* parms );
virtual stateResult_t combat_range( stateParms_t* parms );
virtual stateResult_t combat_melee( stateParms_t* parms );
virtual stateResult_t combat_leap( stateParms_t* parms );
virtual stateResult_t path_jump( stateParms_t* parms );
virtual stateResult_t combat_dodge_left( stateParms_t* parms );
virtual stateResult_t combat_dodge_right( stateParms_t* parms );
virtual int check_attacks() override;
virtual bool do_attack( int attack_flags ) override;
};