// AI_monster_demon_trite.h // Native state-machine replacement for ai_monster_demon_trite.script. #pragma once #ifndef TRITE_RUNDISTANCE #define TRITE_RUNDISTANCE 192 #endif #ifndef TRITE_WALKTURN #define TRITE_WALKTURN 65 #endif #ifndef TRITE_LEAP_RATE #define TRITE_LEAP_RATE 2 #endif #ifndef TRITE_DODGE_RATE #define TRITE_DODGE_RATE 2 #endif #ifndef TRITE_LEAP_RANGE_MIN #define TRITE_LEAP_RANGE_MIN 64 #endif #ifndef TRITE_LEAP_RANGE_MAX #define TRITE_LEAP_RANGE_MAX 1024 #endif #ifndef TRITE_LEAP_SPEED #define TRITE_LEAP_SPEED 650 #endif #ifndef TRITE_LEAP_MAXHEIGHT #define TRITE_LEAP_MAXHEIGHT 48 #endif #ifndef TRITE_EXPLOSION_RADIUS #define TRITE_EXPLOSION_RADIUS 200 #endif class rvmMonsterDemonTrite : public rvmMonsterBase { public: CLASS_PROTOTYPE( rvmMonsterDemonTrite ); rvmMonsterDemonTrite(); virtual void Init( idAI* aiOwner ) override; virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override; protected: bool explode; float nextDodge; float nextLeap; float painNextTime; idVec3 jumpVelocity; 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_LeapAttack( stateParms_t* parms ); virtual stateResult_t Torso_Walk( stateParms_t* parms ); virtual stateResult_t Torso_Run( stateParms_t* parms ); virtual stateResult_t Torso_DodgeLeft( stateParms_t* parms ); virtual stateResult_t Torso_DodgeRight( stateParms_t* parms ); virtual stateResult_t state_Begin( stateParms_t* parms ); virtual stateResult_t state_Idle( stateParms_t* parms ); virtual stateResult_t combat_leap( 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 stateResult_t path_jump( stateParms_t* parms ); virtual stateResult_t state_LostCombat( stateParms_t* parms ); virtual stateResult_t state_Explode( stateParms_t* parms ); virtual stateResult_t combat_explode( stateParms_t* parms ); virtual stateResult_t state_Killed( stateParms_t* parms ); virtual int check_attacks() override; virtual bool do_attack( int attack_flags ) override; };