diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index 88537da8..5e9f51af 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -710,7 +710,7 @@ int8 CRunningScript::ProcessCommandsFrom0To99(int32 command)
 		return 0;
 	case COMMAND_SHAKE_CAM:
 		CollectParameters(&m_nIp, 1);
-		TheCamera.CamShake(ScriptParams[0] / 1000.0f);
+		CamShakeNoPos(&TheCamera, ScriptParams[0] / 1000.0f);
 		return 0;
 	case COMMAND_SET_VAR_INT:
 	{
diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp
index 166928c1..e35198d8 100644
--- a/src/core/Camera.cpp
+++ b/src/core/Camera.cpp
@@ -23,7 +23,7 @@ WRAPPER void CCamera::DrawBordersForWideScreen(void) { EAXJMP(0x46B430); }
 WRAPPER void CCamera::CalculateDerivedValues(void) { EAXJMP(0x46EEA0); }
 WRAPPER void CCamera::Restore(void) { EAXJMP(0x46F990); }
 WRAPPER void CCamera::SetWidescreenOff(void) { EAXJMP(0x46FF10); }
-WRAPPER void CCamera::CamShake(float) { EAXJMP(0x46B100); }
+WRAPPER void CamShakeNoPos(CCamera*, float) { EAXJMP(0x46B100); }
 
 bool
 CCamera::IsSphereVisible(const CVector &center, float radius, const CMatrix *mat)
diff --git a/src/core/Camera.h b/src/core/Camera.h
index 10554601..a88bf83a 100644
--- a/src/core/Camera.h
+++ b/src/core/Camera.h
@@ -466,7 +466,6 @@ int     m_iModeObbeCamIsInForCar;
 	void DrawBordersForWideScreen(void);
 	void Restore(void);
 	void SetWidescreenOff(void);
-	void CamShake(float);
 
 	void dtor(void) { this->CCamera::~CCamera(); }
 };
@@ -479,3 +478,5 @@ static_assert(offsetof(CCamera, m_BlurBlue) == 0x9C, "CCamera: error");
 static_assert(offsetof(CCamera, Cams) == 0x1A4, "CCamera: error");
 static_assert(sizeof(CCamera) == 0xE9D8, "CCamera: wrong size");
 extern CCamera &TheCamera;
+
+void CamShakeNoPos(CCamera*, float);
diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp
index ba8388d6..9e6ec173 100644
--- a/src/vehicles/Automobile.cpp
+++ b/src/vehicles/Automobile.cpp
@@ -1255,7 +1255,7 @@ CAutomobile::SpawnFlyingComponent(int32 component, uint32 type)
 	obj->m_fElasticity = 0.1f;
 	obj->m_fBuoyancy = obj->m_fMass*GRAVITY/0.75f;
 	obj->ObjectCreatedBy = TEMP_OBJECT;
-	obj->bIsStatic = true;
+	obj->bIsStatic = false;
 	obj->bIsPickup = false;
 	obj->bUseVehicleColours = true;
 	obj->m_colour1 = m_currentColour1;
diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp
index 2781f9f5..3ef581a0 100644
--- a/src/vehicles/Vehicle.cpp
+++ b/src/vehicles/Vehicle.cpp
@@ -383,6 +383,9 @@ CVehicle::ProcessDelayedExplosion(void)
 	if(IsCar() && ((CAutomobile*)this)->m_bombType == 4 && (m_nBombTimer & 0xFE00) != 0xFE00)
 		DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_BOMB_TICK, 0.0f);
 
+	if (m_nBombTimer != 0)
+		return;
+
 	if(FindPlayerVehicle() != this && m_pBlowUpEntity == FindPlayerPed())
 		CWorld::Players[CWorld::PlayerInFocus].AwardMoneyForExplosion(this);
 	BlowUpCar(m_pBlowUpEntity);