mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-19 04:04:54 +02:00
173 lines
5.6 KiB
C++
173 lines
5.6 KiB
C++
// AI_monster_boss_guardian.h
|
|
#pragma once
|
|
#ifndef SPAWNER_PAIN_FADEOUT
|
|
#define SPAWNER_PAIN_FADEOUT 2.5f
|
|
#endif
|
|
#ifndef SPAWNER_FADEOUT
|
|
#define SPAWNER_FADEOUT 1.0f
|
|
#endif
|
|
#ifndef SPAWNER_FADEIN_TIME
|
|
#define SPAWNER_FADEIN_TIME 0.25f
|
|
#endif
|
|
#ifndef GUARDIAN_PAIN_DELAY
|
|
#define GUARDIAN_PAIN_DELAY 0.25f
|
|
#endif
|
|
#ifndef GUARDIAN_RANGE_ATTACK_RANGE
|
|
#define GUARDIAN_RANGE_ATTACK_RANGE 1024
|
|
#endif
|
|
#ifndef GUARDIAN_RANGE_ATTACK_DELAY
|
|
#define GUARDIAN_RANGE_ATTACK_DELAY 7
|
|
#endif
|
|
#ifndef GUARDIAN_CHARGE_ATTACK_RANGE
|
|
#define GUARDIAN_CHARGE_ATTACK_RANGE 680
|
|
#endif
|
|
#ifndef GUARDIAN_NUM_PROJECTILES
|
|
#define GUARDIAN_NUM_PROJECTILES 12
|
|
#endif
|
|
#ifndef GUARDIAN_PAIN_TO_IDLE
|
|
#define GUARDIAN_PAIN_TO_IDLE 3
|
|
#endif
|
|
#ifndef GUARDIAN_PAIN_TO_PAIN
|
|
#define GUARDIAN_PAIN_TO_PAIN 3
|
|
#endif
|
|
#ifndef GUARDIAN_SIGHT_TO_IDLE
|
|
#define GUARDIAN_SIGHT_TO_IDLE 8
|
|
#endif
|
|
#ifndef GUARDIAN_MELEE_TO_IDLE
|
|
#define GUARDIAN_MELEE_TO_IDLE 12
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_PAIN
|
|
#define GUARDIAN_IDLE_TO_PAIN 3
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_WALK
|
|
#define GUARDIAN_IDLE_TO_WALK 12
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_CHARGE
|
|
#define GUARDIAN_IDLE_TO_CHARGE 12
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_MELEE
|
|
#define GUARDIAN_IDLE_TO_MELEE 12
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_RANGE
|
|
#define GUARDIAN_IDLE_TO_RANGE 12
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_SIGHT
|
|
#define GUARDIAN_IDLE_TO_SIGHT 12
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_LOST
|
|
#define GUARDIAN_IDLE_TO_LOST 12
|
|
#endif
|
|
#ifndef GUARDIAN_WALK_TO_IDLE
|
|
#define GUARDIAN_WALK_TO_IDLE 12
|
|
#endif
|
|
#ifndef GUARDIAN_WALK_TO_PAIN
|
|
#define GUARDIAN_WALK_TO_PAIN 3
|
|
#endif
|
|
#ifndef GUARDIAN_WALK_TO_CHARGE
|
|
#define GUARDIAN_WALK_TO_CHARGE 8
|
|
#endif
|
|
#ifndef GUARDIAN_CHARGE_TO_WALK
|
|
#define GUARDIAN_CHARGE_TO_WALK 0
|
|
#endif
|
|
#ifndef GUARDIAN_CHARGE_TO_IDLE
|
|
#define GUARDIAN_CHARGE_TO_IDLE 12
|
|
#endif
|
|
#ifndef GUARDIAN_CHARGE_TO_PAIN
|
|
#define GUARDIAN_CHARGE_TO_PAIN 3
|
|
#endif
|
|
#ifndef GUARDIAN_LOST_TO_IDLE
|
|
#define GUARDIAN_LOST_TO_IDLE 10
|
|
#endif
|
|
#ifndef GUARDIAN_LOST_TO_PAIN
|
|
#define GUARDIAN_LOST_TO_PAIN 3
|
|
#endif
|
|
#ifndef GUARDIAN_LOST_TO_WALK
|
|
#define GUARDIAN_LOST_TO_WALK 24
|
|
#endif
|
|
#ifndef GUARDIAN_LOST_TO_CHARGE
|
|
#define GUARDIAN_LOST_TO_CHARGE 24
|
|
#endif
|
|
#ifndef GUARDIAN_RANGEATTACK_TO_IDLE
|
|
#define GUARDIAN_RANGEATTACK_TO_IDLE 4
|
|
#endif
|
|
#ifndef GUARDIAN_SPAWN_TO_IDLE
|
|
#define GUARDIAN_SPAWN_TO_IDLE 4
|
|
#endif
|
|
#ifndef GUARDIAN_IDLE_TO_SPAWN
|
|
#define GUARDIAN_IDLE_TO_SPAWN 4
|
|
#endif
|
|
|
|
class rvmSeekerBase : public rvmMonsterBase {
|
|
public:
|
|
CLASS_PROTOTYPE( rvmSeekerBase );
|
|
rvmSeekerBase();
|
|
virtual void Init( idAI* aiOwner ) override;
|
|
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
|
|
virtual bool isAlive() const;
|
|
protected:
|
|
virtual stateResult_t respawnSeeker( stateParms_t* parms );
|
|
};
|
|
|
|
class rvmMonsterBossGuardianSpawner : public rvmMonsterBase {
|
|
public:
|
|
CLASS_PROTOTYPE( rvmMonsterBossGuardianSpawner );
|
|
rvmMonsterBossGuardianSpawner();
|
|
virtual void Init( idAI* aiOwner ) override;
|
|
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
|
|
protected:
|
|
idEntityPtr<idEntity> guardian;
|
|
float inactive_time;
|
|
float active_time;
|
|
float pain_time;
|
|
virtual stateResult_t update_effects( stateParms_t* parms );
|
|
virtual stateResult_t setGuardian( stateParms_t* parms );
|
|
virtual stateResult_t state_Inactive( stateParms_t* parms );
|
|
virtual stateResult_t state_Active( stateParms_t* parms );
|
|
virtual stateResult_t state_Killed( stateParms_t* parms );
|
|
};
|
|
|
|
class rvmMonsterBossGuardian : public rvmMonsterBase {
|
|
public:
|
|
CLASS_PROTOTYPE( rvmMonsterBossGuardian );
|
|
rvmMonsterBossGuardian();
|
|
virtual void Init( idAI* aiOwner ) override;
|
|
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
|
|
protected:
|
|
float nextAttack;
|
|
float painNextTime;
|
|
bool in_melee;
|
|
bool rightfoot;
|
|
bool charge;
|
|
idEntityPtr<idEntity> seeker1;
|
|
idEntityPtr<idEntity> seeker2;
|
|
idEntityPtr<idEntity> seeker3;
|
|
idEntityPtr<idEntity> spawner;
|
|
virtual stateResult_t Legs_Sight( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Death( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Pain( stateParms_t* parms );
|
|
virtual stateResult_t Legs_RangeAttack( stateParms_t* parms );
|
|
virtual stateResult_t Legs_MeleeAttack( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Walk_Melee_Left( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Walk_Melee_Right( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Walk( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Run_Melee_Left( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Run_Melee_Right( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Charge( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Lost( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Idle( stateParms_t* parms );
|
|
virtual stateResult_t Legs_SpawnSeeker( stateParms_t* parms );
|
|
virtual stateResult_t addSeeker( stateParms_t* parms );
|
|
virtual stateResult_t sightEnemy( stateParms_t* parms );
|
|
virtual stateResult_t state_Idle( stateParms_t* parms );
|
|
virtual stateResult_t state_Killed( stateParms_t* parms );
|
|
virtual stateResult_t state_Combat( stateParms_t* parms );
|
|
virtual stateResult_t combat_melee( stateParms_t* parms );
|
|
virtual stateResult_t combat_range( stateParms_t* parms );
|
|
virtual stateResult_t combat_charge( stateParms_t* parms );
|
|
virtual stateResult_t pound_impact( stateParms_t* parms );
|
|
virtual stateResult_t pound_attack( stateParms_t* parms );
|
|
virtual stateResult_t pound_attack_left( stateParms_t* parms );
|
|
virtual stateResult_t pound_attack_right( stateParms_t* parms );
|
|
virtual stateResult_t smash_ground( stateParms_t* parms );
|
|
};
|