Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
2.2 KiB

#ifndef _DEFINED_ASW_ALIEN_JUMPER_H
#define _DEFINED_ASW_ALIEN_JUMPER_H
#ifdef _WIN32
#pragma once
#endif
#include "asw_alien_shover.h"
// this class implements aliens that can jump
#define ALIEN_SHOVER_FARTHEST_PHYSICS_OBJECT 350
class CASW_Alien_Jumper : public CASW_Alien_Shover
{
public:
DECLARE_CLASS( CASW_Alien_Jumper, CASW_Alien_Shover );
DECLARE_DATADESC();
CASW_Alien_Jumper();
DEFINE_CUSTOM_AI;
void ManageFleeCapabilities( bool bEnable );
void HandleAnimEvent( animevent_t *pEvent );
bool IsUnusableNode(int iNodeID, CAI_Hint *pHint);
bool AllowedToBePushed( void );
void StartTask( const Task_t *pTask );
void RunTask( const Task_t *pTask );
void Spawn();
bool CheckLanding();
void CreateDust( bool placeDecal );
bool OnObstructionPreSteer( AILocalMoveGoal_t *pMoveGoal, float distClear, AIMoveResult_t *pResult );
virtual int SelectCombatSchedule( void );
void BuildScheduleTestBits( void );
void PrescheduleThink();
bool IsJumpLegal( const Vector &startPos, const Vector &apex, const Vector &endPos ) const;
float GetMaxJumpSpeed() const { return 1024.0f; }
float m_flNextJumpPushTime;
void InputDisableJump( inputdata_t &inputdata );
void InputEnableJump( inputdata_t &inputdata );
virtual bool ShouldJump( void );
bool IsJumping();
void StartJump( void );
void LockJumpNode( void );
virtual bool DoJumpOffHead();
virtual bool DoJumpTo( Vector &vecDest ); // causes an immediate jump to this vector, if a viable jump
virtual bool DoForcedJump( Vector &vecVelocity );
virtual void WaitAndRetryJump(Vector &vecDest);
float m_flJumpTime;
virtual float GetMinJumpHeight() const { return 64; }
Vector m_vecSavedJump;
Vector m_vecLastJumpAttempt;
bool m_bDisableJump;
bool m_bForcedStuckJump;
bool m_bTriggerJumped; // has this jumper done a trigger jump?
enum
{
COND_ASW_ALIEN_CAN_JUMP = BaseClass::NEXT_CONDITION,
NEXT_CONDITION,
};
protected:
};
enum
{
SCHED_ASW_ALIEN_JUMP = LAST_ASW_ALIEN_SHOVER_SHARED_SCHEDULE,
SCHED_ASW_WAIT_AND_RETRY_JUMP,
LAST_ASW_ALIEN_JUMPER_SHARED_SCHEDULE,
};
enum
{
TASK_ASW_ALIEN_JUMP = LAST_ASW_ALIEN_SHOVER_SHARED_TASK,
TASK_ASW_ALIEN_FACE_JUMP,
TASK_ASW_ALIEN_RETRY_JUMP,
LAST_ASW_ALIEN_JUMPER_SHARED_TASK,
};
#endif // _DEFINED_ASW_ALIEN_JUMPER_H