From 0e2c84e80b0a4d7fddc7d15f675d89be85551516 Mon Sep 17 00:00:00 2001 From: DudeTheNinja <98992707+DudeTheNinja@users.noreply.github.com> Date: Mon, 15 Sep 2025 21:44:59 +0100 Subject: [PATCH 1/4] Update tf_projectile_rocket.cpp Added support for team skins with rockets. The method CTFProjectile_Rocket::Deflected calls for switching team skins, but this doesn't occur when the rocket is spawned. As a result, the rocket will always have the RED team's skin, never changing skin unless airblasted. This commit fixes that, by setting the team skin when spawned. --- src/game/server/tf/tf_projectile_rocket.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/game/server/tf/tf_projectile_rocket.cpp b/src/game/server/tf/tf_projectile_rocket.cpp index 2d829bd7464..bfda49ed0b9 100644 --- a/src/game/server/tf/tf_projectile_rocket.cpp +++ b/src/game/server/tf/tf_projectile_rocket.cpp @@ -52,6 +52,8 @@ void CTFProjectile_Rocket::Spawn() { SetModel( ROCKET_MODEL ); BaseClass::Spawn(); + CTFPlayer* pTFOwner = ToTFPlayer(GetOwnerPlayer()); + m_nSkin = ( pTFOwner -> GetTeamNumber() == TF_TEAM_BLUE ) ? 1 : 0; } //----------------------------------------------------------------------------- From a2c02afdb740c873b367ab8462c2e40ada19fa49 Mon Sep 17 00:00:00 2001 From: DudeTheNinja <98992707+DudeTheNinja@users.noreply.github.com> Date: Mon, 15 Sep 2025 23:21:39 +0100 Subject: [PATCH 2/4] Fix possible crash if rocket doesn't have player Thank you bakugo for pointing this out --- src/game/server/tf/tf_projectile_rocket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/server/tf/tf_projectile_rocket.cpp b/src/game/server/tf/tf_projectile_rocket.cpp index bfda49ed0b9..e25e76e4636 100644 --- a/src/game/server/tf/tf_projectile_rocket.cpp +++ b/src/game/server/tf/tf_projectile_rocket.cpp @@ -52,7 +52,7 @@ void CTFProjectile_Rocket::Spawn() { SetModel( ROCKET_MODEL ); BaseClass::Spawn(); - CTFPlayer* pTFOwner = ToTFPlayer(GetOwnerPlayer()); + CTFPlayer* pTFOwner = GetOwnerEntity(); m_nSkin = ( pTFOwner -> GetTeamNumber() == TF_TEAM_BLUE ) ? 1 : 0; } From 8eb51bc113c52d6b1dd3ff9b6ce140b88e802ae0 Mon Sep 17 00:00:00 2001 From: DudeTheNinja <98992707+DudeTheNinja@users.noreply.github.com> Date: Tue, 16 Sep 2025 00:44:59 +0100 Subject: [PATCH 3/4] fix the fact it didn't compile beforehand sorry it's late at night so my changes are gonna be a bit more haphazard --- src/game/server/tf/tf_projectile_rocket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/server/tf/tf_projectile_rocket.cpp b/src/game/server/tf/tf_projectile_rocket.cpp index e25e76e4636..22ea16cb0ba 100644 --- a/src/game/server/tf/tf_projectile_rocket.cpp +++ b/src/game/server/tf/tf_projectile_rocket.cpp @@ -52,7 +52,7 @@ void CTFProjectile_Rocket::Spawn() { SetModel( ROCKET_MODEL ); BaseClass::Spawn(); - CTFPlayer* pTFOwner = GetOwnerEntity(); + CBaseEntity* pTFOwner = GetOwnerEntity(); m_nSkin = ( pTFOwner -> GetTeamNumber() == TF_TEAM_BLUE ) ? 1 : 0; } From 1782728165b816ebce8280876ea944f03fecc04d Mon Sep 17 00:00:00 2001 From: DudeTheNinja <98992707+DudeTheNinja@users.noreply.github.com> Date: Wed, 17 Sep 2025 22:34:50 +0100 Subject: [PATCH 4/4] Update tf_projectile_rocket.cpp Add handler for potential crash (trying to get team number of a null entity if rocket is spawned in with ent_create). If no entity is found, just use skin 0. --- src/game/server/tf/tf_projectile_rocket.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/game/server/tf/tf_projectile_rocket.cpp b/src/game/server/tf/tf_projectile_rocket.cpp index 22ea16cb0ba..945a0c50823 100644 --- a/src/game/server/tf/tf_projectile_rocket.cpp +++ b/src/game/server/tf/tf_projectile_rocket.cpp @@ -53,7 +53,11 @@ void CTFProjectile_Rocket::Spawn() SetModel( ROCKET_MODEL ); BaseClass::Spawn(); CBaseEntity* pTFOwner = GetOwnerEntity(); - m_nSkin = ( pTFOwner -> GetTeamNumber() == TF_TEAM_BLUE ) ? 1 : 0; + if (pTFOwner) + { + m_nSkin = (pTFOwner->GetTeamNumber() == TF_TEAM_BLUE) ? 1 : 0; + } + } //-----------------------------------------------------------------------------