Merge branch 'ValveSoftware:master' into ejectbrass_fix

This commit is contained in:
NachosChipeados 2025-04-02 19:48:53 -04:00 committed by GitHub
commit edbbc0b37f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 69 additions and 54 deletions

View file

@ -121,7 +121,7 @@ inline ClientThinkHandle_t CClientThinkList::GetInvalidThinkHandle()
inline CClientThinkList::ThinkEntry_t* CClientThinkList::GetThinkEntry( ClientThinkHandle_t hThink )
{
return &m_ThinkEntries[ (unsigned long)hThink ];
return &m_ThinkEntries[ (uintp)hThink ];
}

View file

@ -146,6 +146,7 @@ CParticleEffectBinding::CParticleEffectBinding()
m_LastMin = m_Min;
m_LastMax = m_Max;
m_flParticleCullRadius = -1.f; // dummy value, is overwritten below
SetParticleCullRadius( 0.0f );
m_nActiveParticles = 0;

View file

@ -574,6 +574,17 @@ void CTFHudMatchStatus::FireGameEvent( IGameEvent * event )
}
const IMatchGroupDescription* pMatchDesc = GetMatchGroupDescription( TFGameRules()->GetCurrentMatchGroup() );
// FIX: Refresh versus doors so late-joiners do not see the wrong skin
int nSkin = 0;
int nSubModel = 0;
if (pMatchDesc->BGetRoundDoorParameters(nSkin, nSubModel))
{
m_pMatchStartModelPanel->SetBodyGroup( "logos", nSubModel );
m_pMatchStartModelPanel->UpdateModel();
m_pMatchStartModelPanel->SetSkin( nSkin );
}
bool bForceDoors = false;
if ( bForceDoors || ( pMatchDesc && pMatchDesc->BUsesPostRoundDoors() ) )
{

View file

@ -385,14 +385,6 @@ void CTFMapInfoMenu::LoadMapPage()
{
m_pMapInfo->SetText( wszMapDescription );
}
else if ( StringHasPrefix( m_szMapName, "vsh_" ) )
{
m_pMapInfo->SetText( "#default_vsh_description" );
}
else if ( StringHasPrefix( m_szMapName, "zi_" ) )
{
m_pMapInfo->SetText( "#default_zi_description" );
}
else
{
// try loading map descriptions from .txt files first
@ -497,7 +489,15 @@ void CTFMapInfoMenu::LoadMapPage()
if( !g_pVGuiLocalize->Find( mapInfoKey ) )
{
if ( TFGameRules() )
if ( StringHasPrefix( m_szMapName, "vsh_" ) )
{
pszDescription = "#default_vsh_description";
}
else if ( StringHasPrefix( m_szMapName, "zi_" ) )
{
pszDescription = "#default_zi_description";
}
else if ( TFGameRules() )
{
if ( TFGameRules()->IsMannVsMachineMode() )
{

View file

@ -29,7 +29,8 @@ ActionResult< CTFBot > CTFBotEngineerBuildTeleportEntrance::OnStart( CTFBot *me,
ActionResult< CTFBot > CTFBotEngineerBuildTeleportEntrance::Update( CTFBot *me, float interval )
{
CTeamControlPoint *point = me->GetMyControlPoint();
if ( !point )
CCaptureZone *zone = me->GetFlagCaptureZone();
if ( !point && !zone )
{
// wait until a control point becomes available
return Continue();
@ -64,7 +65,14 @@ ActionResult< CTFBot > CTFBotEngineerBuildTeleportEntrance::Update( CTFBot *me,
if ( !m_path.IsValid() )
{
CTFBotPathCost cost( me, FASTEST_ROUTE );
m_path.Compute( me, point->GetAbsOrigin(), cost );
if ( point )
{
m_path.Compute( me, point->GetAbsOrigin(), cost );
}
else if ( zone )
{
m_path.Compute( me, zone->WorldSpaceCenter(), cost );
}
}
m_path.Update( me );

View file

@ -243,7 +243,7 @@ ActionResult< CTFBot > CTFBotDeliverFlag::Update( CTFBot *me, float interval )
m_flTotalTravelDistance = NavAreaTravelDistance( me->GetLastKnownArea(), TheNavMesh->GetNavArea( zone->WorldSpaceCenter() ), cost );
if ( flOldTravelDistance != -1.0f && m_flTotalTravelDistance - flOldTravelDistance > 2000.0f )
if ( TFGameRules()->IsMannVsMachineMode() && flOldTravelDistance != -1.0f && m_flTotalTravelDistance - flOldTravelDistance > 2000.0f )
{
TFGameRules()->BroadcastSound( 255, "Announcer.MVM_Bomb_Reset" );

View file

@ -9096,44 +9096,40 @@ int CTFPlayer::OnTakeDamage( const CTakeDamageInfo &inputInfo )
}
}
if ( pTFAttacker && pTFAttacker->IsPlayerClass( TF_CLASS_MEDIC ) )
if ( pTFAttacker && pTFAttacker->IsPlayerClass( TF_CLASS_MEDIC ) && pWeapon && pWeapon->GetWeaponID() == TF_WEAPON_BONESAW )
{
CTFWeaponBase *pAttackerWeapon = pTFAttacker->GetActiveTFWeapon();
if ( pAttackerWeapon && pAttackerWeapon->GetWeaponID() == TF_WEAPON_BONESAW )
CTFBonesaw *pBoneSaw = static_cast< CTFBonesaw* >( pWeapon );
if ( pBoneSaw->GetBonesawType() == BONESAW_UBER_SAVEDONDEATH )
{
CTFBonesaw *pBoneSaw = static_cast< CTFBonesaw* >( pAttackerWeapon );
if ( pBoneSaw->GetBonesawType() == BONESAW_UBER_SAVEDONDEATH )
// Spawn their spleen
CPhysicsProp *pRandomInternalOrgan = dynamic_cast< CPhysicsProp* >( CreateEntityByName( "prop_physics_override" ) );
if ( pRandomInternalOrgan )
{
// Spawn their spleen
CPhysicsProp *pRandomInternalOrgan = dynamic_cast< CPhysicsProp* >( CreateEntityByName( "prop_physics_override" ) );
if ( pRandomInternalOrgan )
{
pRandomInternalOrgan->SetCollisionGroup( COLLISION_GROUP_DEBRIS );
pRandomInternalOrgan->AddFlag( FL_GRENADE );
char buf[512];
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsOrigin().x, GetAbsOrigin().y, GetAbsOrigin().z );
pRandomInternalOrgan->KeyValue( "origin", buf );
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsAngles().x, GetAbsAngles().y, GetAbsAngles().z );
pRandomInternalOrgan->KeyValue( "angles", buf );
pRandomInternalOrgan->KeyValue( "model", "models/player/gibs/random_organ.mdl" );
pRandomInternalOrgan->KeyValue( "fademindist", "-1" );
pRandomInternalOrgan->KeyValue( "fademaxdist", "0" );
pRandomInternalOrgan->KeyValue( "fadescale", "1" );
pRandomInternalOrgan->KeyValue( "inertiaScale", "1.0" );
pRandomInternalOrgan->KeyValue( "physdamagescale", "0.1" );
DispatchSpawn( pRandomInternalOrgan );
pRandomInternalOrgan->m_takedamage = DAMAGE_YES; // Take damage, otherwise this can block trains
pRandomInternalOrgan->SetHealth( 100 );
pRandomInternalOrgan->Activate();
pRandomInternalOrgan->SetCollisionGroup( COLLISION_GROUP_DEBRIS );
pRandomInternalOrgan->AddFlag( FL_GRENADE );
char buf[512];
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsOrigin().x, GetAbsOrigin().y, GetAbsOrigin().z );
pRandomInternalOrgan->KeyValue( "origin", buf );
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsAngles().x, GetAbsAngles().y, GetAbsAngles().z );
pRandomInternalOrgan->KeyValue( "angles", buf );
pRandomInternalOrgan->KeyValue( "model", "models/player/gibs/random_organ.mdl" );
pRandomInternalOrgan->KeyValue( "fademindist", "-1" );
pRandomInternalOrgan->KeyValue( "fademaxdist", "0" );
pRandomInternalOrgan->KeyValue( "fadescale", "1" );
pRandomInternalOrgan->KeyValue( "inertiaScale", "1.0" );
pRandomInternalOrgan->KeyValue( "physdamagescale", "0.1" );
DispatchSpawn( pRandomInternalOrgan );
pRandomInternalOrgan->m_takedamage = DAMAGE_YES; // Take damage, otherwise this can block trains
pRandomInternalOrgan->SetHealth( 100 );
pRandomInternalOrgan->Activate();
Vector vecImpulse = RandomVector( -1.f, 1.f );
vecImpulse.z = 1.f;
VectorNormalize( vecImpulse );
Vector vecVelocity = vecImpulse * 250.0;
pRandomInternalOrgan->ApplyAbsVelocityImpulse( vecVelocity );
Vector vecImpulse = RandomVector( -1.f, 1.f );
vecImpulse.z = 1.f;
VectorNormalize( vecImpulse );
Vector vecVelocity = vecImpulse * 250.0;
pRandomInternalOrgan->ApplyAbsVelocityImpulse( vecVelocity );
pRandomInternalOrgan->ThinkSet( &CBaseEntity::SUB_Remove, gpGlobals->curtime + 5.f, "DieContext" );
}
pRandomInternalOrgan->ThinkSet( &CBaseEntity::SUB_Remove, gpGlobals->curtime + 5.f, "DieContext" );
}
}
}

View file

@ -325,6 +325,7 @@ void CSave::Log( const char *pName, fieldtype_t fieldType, void *value, int coun
char chValue = pValue[iCount];
Q_snprintf( szTempBuf, sizeof( szTempBuf ), "%c", chValue );
Q_strncat( szBuf, szTempBuf, sizeof( szTempBuf ), COPY_ALL_CHARACTERS );
break;
}
case FIELD_COLOR32:
{

View file

@ -16967,7 +16967,7 @@ int CTFGameRules::CalcPlayerScore( RoundStats_t *pRoundStats, CTFPlayer *pPlayer
( pRoundStats->m_iStat[TFSTAT_TELEPORTS] / TF_SCORE_TELEPORTS_PER_POINT ) +
( pRoundStats->m_iStat[TFSTAT_INVULNS] / TF_SCORE_INVULN ) +
( pRoundStats->m_iStat[TFSTAT_REVENGE] / TF_SCORE_REVENGE ) +
( pRoundStats->m_iStat[TFSTAT_BONUS_POINTS] / TF_SCORE_BONUS_POINT_DIVISOR );
( pRoundStats->m_iStat[TFSTAT_BONUS_POINTS] / TF_SCORE_BONUS_POINT_DIVISOR ) +
( pRoundStats->m_iStat[TFSTAT_CURRENCY_COLLECTED] / TF_SCORE_CURRENCY_COLLECTED );
if ( pPlayer )

View file

@ -2386,16 +2386,15 @@ int Menu::GetCurrentlyHighlightedItem()
// Purpose: Respond to cursor entering a menuItem.
//-----------------------------------------------------------------------------
//
// Josh: Slightly annoying, but need to completely ensure compatiblity with the SDK + GameUI interactions.
// Josh: Slightly annoying, but need to completely ensure compatibility with the SDK + GameUI interactions.
#ifdef PLATFORM_64BITS
void Menu::OnCursorEnteredMenuItem( vgui::Panel* VPanel )
{
VPANEL menuItem = (VPANEL) VPanel;
#else
void Menu::OnCursorEnteredMenuItem(int VPanel)
#endif
{
VPANEL menuItem = (VPANEL)VPanel;
#endif
// if we are in mouse mode
if (m_iInputMode == MOUSE)
{
@ -2419,13 +2418,12 @@ void Menu::OnCursorEnteredMenuItem(int VPanel)
//-----------------------------------------------------------------------------
#ifdef PLATFORM_64BITS
void Menu::OnCursorExitedMenuItem( vgui::Panel* VPanel )
{
VPANEL menuItem = (VPANEL) VPanel;
#else
void Menu::OnCursorExitedMenuItem( int VPanel )
#endif
{
VPANEL menuItem = (VPANEL) VPanel;
#endif
// only care if we are in mouse mode
if (m_iInputMode == MOUSE)
{