summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2019-07-17 13:24:04 +0300
committerNikolay Korolev <nickvnuk@gmail.com>2019-07-17 13:24:04 +0300
commita9a62a8641571bb68564714907bb4bc1be29bc6c (patch)
treea780de15ce8d6fdd336fd10a96da39bc2a845cb1
parent36f3a517f9664415b07a4aa537db22159b67a8f2 (diff)
script fix, bomb fix, flying components fix
-rw-r--r--src/control/Script.cpp2
-rw-r--r--src/core/Camera.cpp2
-rw-r--r--src/core/Camera.h3
-rw-r--r--src/vehicles/Automobile.cpp2
-rw-r--r--src/vehicles/Vehicle.cpp3
5 files changed, 8 insertions, 4 deletions
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..d5de76d4 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); \ No newline at end of file
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);