From 172417867b8f475dab0b31de0c221c115156d1dc Mon Sep 17 00:00:00 2001 From: Arbab Ahmed Date: Sun, 19 Feb 2023 20:01:32 +1100 Subject: [PATCH] add mins and maxs to point_bugbait --- sp/src/game/server/hl2/grenade_bugbait.cpp | 49 ++++++++++++++++++---- sp/src/game/server/hl2/grenade_bugbait.h | 28 +++++++++++++ 2 files changed, 70 insertions(+), 7 deletions(-) diff --git a/sp/src/game/server/hl2/grenade_bugbait.cpp b/sp/src/game/server/hl2/grenade_bugbait.cpp index 7d5d7a47..5480a980 100644 --- a/sp/src/game/server/hl2/grenade_bugbait.cpp +++ b/sp/src/game/server/hl2/grenade_bugbait.cpp @@ -50,10 +50,21 @@ 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 ), +#endif + // Function Pointers DEFINE_OUTPUT( m_OnBaited, "OnBaited" ), @@ -267,18 +278,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; diff --git a/sp/src/game/server/hl2/grenade_bugbait.h b/sp/src/game/server/hl2/grenade_bugbait.h index 7a5df993..af89657a 100644 --- a/sp/src/game/server/hl2/grenade_bugbait.h +++ b/sp/src/game/server/hl2/grenade_bugbait.h @@ -63,6 +63,16 @@ public: m_bEnabled = !m_bEnabled; } +#ifdef MAPBASE + void InputEnableRadius( inputdata_t &data ){ + m_bUseRadius = true; + } + + void InputDisableRadius( inputdata_t &data ){ + m_bUseRadius = false; + } +#endif + bool SuppressCall( void ) { return ( HasSpawnFlags( SF_BUGBAIT_SUPPRESS_CALL ) ); @@ -91,10 +101,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: