// AI_monster_zombie_sawyer.h // Native state-machine replacement for ai_monster_zombie_sawyer.script. #pragma once #ifndef SAWYER_SMOKE_PARTICLES #define SAWYER_SMOKE_PARTICLES 0 #define SAWYER_BLOOD_PARTICLES 1 #endif class rvmMonsterZombieSawyer : public rvmMonsterZombieBase { public: CLASS_PROTOTYPE( rvmMonsterZombieSawyer ); rvmMonsterZombieSawyer(); virtual void Init( idAI* aiOwner ) override; virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override; protected: bool attack; float painNextTime; float nextHitTime; int bloodSmokeFrames; virtual stateResult_t Torso_Idle( stateParms_t* parms ) override; virtual stateResult_t Torso_Pain( stateParms_t* parms ); virtual stateResult_t Torso_MeleeAttack( stateParms_t* parms ); virtual stateResult_t Legs_Idle( stateParms_t* parms ) override; virtual stateResult_t Legs_Run( stateParms_t* parms ); virtual stateResult_t state_Begin( stateParms_t* parms ) override; virtual stateResult_t state_Idle( stateParms_t* parms ); virtual stateResult_t combat_melee( stateParms_t* parms ); virtual int check_attacks() override; virtual bool do_attack( int attack_flags ) override; virtual void start_smoke(); virtual void start_attack(); virtual void end_attack(); };