// AI_monster_demon_pinky.h // Native state-machine replacement for ai_monster_demon_pinky.script. #pragma once #ifndef PINKY_ROAR_RATE #define PINKY_ROAR_RATE 5 #endif #ifndef PINKY_DODGE_RATE #define PINKY_DODGE_RATE 5 #endif class rvmMonsterDemonPinky : public rvmMonsterBase { public: CLASS_PROTOTYPE( rvmMonsterDemonPinky ); rvmMonsterDemonPinky(); virtual void Init( idAI* aiOwner ) override; virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override; protected: float nextDodge; float nextRoar; float painNextTime; idEntityPtr 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_Roar( 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_roar( stateParms_t* parms ); virtual stateResult_t combat_melee( 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; };