Merge pull request #229 from arbabf/develop

Extend point_bugbait functionality
This commit is contained in:
Blixibon 2023-10-24 22:26:50 -05:00 committed by GitHub
commit 68ea86ec4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 88 additions and 7 deletions

View File

@ -35,6 +35,9 @@ CBugBaitSensor* GetBugBaitSensorList()
CBugBaitSensor::CBugBaitSensor( void )
{
g_BugBaitSensorList.Insert( this );
#ifdef MAPBASE
m_bUseRadius = true;
#endif
}
CBugBaitSensor::~CBugBaitSensor( void )
@ -50,10 +53,24 @@ BEGIN_DATADESC( CBugBaitSensor )
DEFINE_KEYFIELD( m_bEnabled, FIELD_BOOLEAN, "Enabled" ),
DEFINE_KEYFIELD( m_flRadius, FIELD_FLOAT, "radius" ),
#ifdef MAPBASE
DEFINE_KEYFIELD( m_bUseRadius, FIELD_BOOLEAN, "useradius" ),
DEFINE_KEYFIELD( m_vecMins, FIELD_VECTOR, "bmins" ),
DEFINE_KEYFIELD( m_vecMaxs, FIELD_VECTOR, "bmaxs" ),
#endif
DEFINE_INPUTFUNC( FIELD_VOID, "Enable", InputEnable ),
DEFINE_INPUTFUNC( FIELD_VOID, "Disable", InputDisable ),
DEFINE_INPUTFUNC( FIELD_VOID, "Toggle", InputToggle ),
#ifdef MAPBASE
DEFINE_INPUTFUNC( FIELD_VOID, "EnableRadius", InputEnableRadius ),
DEFINE_INPUTFUNC( FIELD_VOID, "DisableRadius", InputDisableRadius ),
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetRadius", InputSetRadius ),
DEFINE_INPUTFUNC( FIELD_VECTOR, "SetMins", InputSetMins ),
DEFINE_INPUTFUNC( FIELD_VECTOR, "SetMaxs", InputSetMaxs ),
#endif
// Function Pointers
DEFINE_OUTPUT( m_OnBaited, "OnBaited" ),
@ -267,18 +284,42 @@ bool CGrenadeBugBait::ActivateBugbaitTargets( CBaseEntity *pOwner, Vector vecOri
continue;
//Make sure we're within range of the sensor
if ( pSensor->GetRadius() > ( pSensor->GetAbsOrigin() - vecOrigin ).Length() )
{
//Tell the sensor it's been hit
if ( pSensor->Baited( pOwner ) )
#ifdef MAPBASE
if ( pSensor->UsesRadius() ){
#endif
if ( pSensor->GetRadius() > (pSensor->GetAbsOrigin() - vecOrigin).Length() )
{
//If we're suppressing the call to antlions, then don't make a bugbait sound
if ( pSensor->SuppressCall() )
//Tell the sensor it's been hit
if ( pSensor->Baited( pOwner ) )
{
suppressCall = true;
//If we're suppressing the call to antlions, then don't make a bugbait sound
if ( pSensor->SuppressCall() )
{
suppressCall = true;
}
}
}
#ifdef MAPBASE
}
else{
Vector vMins = pSensor->GetAbsMins();
Vector vMaxs = pSensor->GetAbsMaxs();
bool inBox = ((vecOrigin.x >= vMins.x && vecOrigin.x <= vMaxs.x) &&
(vecOrigin.y >= vMins.y && vecOrigin.y <= vMaxs.y) &&
(vecOrigin.z >= vMins.z && vecOrigin.z <= vMaxs.z));
if ( inBox ){
//Tell the sensor it's been hit
if ( pSensor->Baited( pOwner ) )
{
//If we're suppressing the call to antlions, then don't make a bugbait sound
if ( pSensor->SuppressCall() )
{
suppressCall = true;
}
}
}
}
#endif
}
return suppressCall;

View File

@ -63,6 +63,28 @@ public:
m_bEnabled = !m_bEnabled;
}
#ifdef MAPBASE
void InputEnableRadius( inputdata_t &data ){
m_bUseRadius = true;
}
void InputDisableRadius( inputdata_t &data ){
m_bUseRadius = false;
}
void InputSetRadius( inputdata_t &data ){
m_flRadius = data.value.Int();
}
void InputSetMins( inputdata_t &data ){
data.value.Vector3D( m_vecMins );
}
void InputSetMaxs( inputdata_t &data ){
data.value.Vector3D( m_vecMaxs );
}
#endif
bool SuppressCall( void )
{
return ( HasSpawnFlags( SF_BUGBAIT_SUPPRESS_CALL ) );
@ -91,10 +113,28 @@ public:
return !m_bEnabled;
}
#ifdef MAPBASE
bool UsesRadius( void ) const {
return m_bUseRadius;
}
Vector GetAbsMins( void ) const {
return GetAbsOrigin() + m_vecMins;
}
Vector GetAbsMaxs( void ) const {
return GetAbsOrigin() + m_vecMaxs;
}
#endif
protected:
float m_flRadius;
bool m_bEnabled;
#ifdef MAPBASE
bool m_bUseRadius;
Vector m_vecMins;
Vector m_vecMaxs;
#endif
COutputEvent m_OnBaited;
public: