Files
DoomRTX/neo/prey/Prey/game_deathwraith.h
T
2026-05-05 15:01:01 -07:00

48 lines
1.7 KiB
C++

#ifndef __GAME_DEATHWRAITH_H__
#define __GAME_DEATHWRAITH_H__
class hhDeathWraith : public hhWraith {
public:
CLASS_PROTOTYPE( hhDeathWraith );
void Spawn();
virtual void FlyToEnemy();
virtual void SetEnemy( idActor *newEnemy ) { enemy = newEnemy; }
virtual void Damage( idEntity *inflictor, idEntity *attacker, const idVec3 &dir, const char *damageDefName, const float damageScale, const int location );
virtual void Think( void );
protected:
virtual int PlayAnim( const char *name, int blendFrame );
virtual void PlayCycle( const char *name, int blendFrame );
virtual void Killed( idEntity *inflictor, idEntity *attacker, int damage, const idVec3 &dir, int location );
virtual void NotifyDeath( idEntity *inflictor, idEntity *attacker );
void SpawnEnergy(hhPlayer *player);
void EnterAttackState();
void ExitAttackState();
virtual bool ChargeEnemy();
bool CheckEnemy();
void HitEnemy();
void ApplyImpulseToEnemy();
virtual void FlyUp();
virtual void FlyMove( void );
virtual void EnemyDead();
void Event_FindEnemy( int useFOV );
void TeleportIn( idEntity *activator );
protected:
// Variables for controlling the movement of the wraith around the anchor point
// These variables are unique for each wraith for variety
float circleDist; // Distance to stay from the anchor point
float circleSpeed; // Orbit speed
float circleHeight; // Height above the point
bool circleClockwise; // if true, orbit clockwise
int attackTimeMin; // Range for the attack time
int attackTimeDelta; // Range for the attack time
idMat3 chargeAxis;
bool healthWraith; // true if a health type
};
#endif