diff options
-rw-r--r-- | src/peds/Ped.cpp | 20 | ||||
-rw-r--r-- | src/peds/Ped.h | 1 | ||||
-rw-r--r-- | src/vehicles/Vehicle.h | 2 |
3 files changed, 15 insertions, 8 deletions
diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 87a0829e..1ecb3037 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -6134,7 +6134,7 @@ CPed::EndFight(uint8 endType) void CPed::EnterCar(void) { - if (!m_pMyVehicle->IsWrecked() && m_fHealth > 0.0f) { + if (IsNotInWreckedVehicle() && m_fHealth > 0.0f) { CVehicle *veh = (CVehicle*)m_pSeekTarget; // Not used. @@ -9022,7 +9022,7 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg) if (animAssoc) animAssoc->blendDelta = -1000.0f; - if (veh->IsWrecked()) + if (!ped->IsNotInWreckedVehicle()) return; if (ped->m_nPedState != PED_ENTER_CAR && ped->m_nPedState != PED_CARJACK) { @@ -10484,7 +10484,7 @@ CPed::PedAnimDoorCloseCB(CAnimBlendAssociation *animAssoc, void *arg) CAutomobile *veh = (CAutomobile*)(ped->m_pMyVehicle); - if (veh->IsWrecked() || ped->DyingOrDead()) + if (!ped->IsNotInWreckedVehicle() || ped->DyingOrDead()) return; if (ped->m_nPedState == PED_CARJACK || ped->m_nPedState == PED_ENTER_CAR) { @@ -10577,7 +10577,7 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg) if (animAssoc) animAssoc->blendDelta = -1000.0f; - if (veh->IsWrecked()) + if (!ped->IsNotInWreckedVehicle()) return; if (ped->m_nPedState != PED_CARJACK && ped->m_nPedState != PED_ENTER_CAR) { @@ -10816,7 +10816,7 @@ CPed::PedAnimGetInCB(CAnimBlendAssociation *animAssoc, void *arg) if (animAssoc) animAssoc->blendDelta = -1000.0f; - if (veh->IsWrecked() || ped->DyingOrDead()) + if (!ped->IsNotInWreckedVehicle() || ped->DyingOrDead()) return; if (ped->m_nPedState != PED_CARJACK && ped->m_nPedState != PED_ENTER_CAR) { @@ -10957,7 +10957,7 @@ CPed::PedAnimPullPedOutCB(CAnimBlendAssociation* animAssoc, void* arg) animAssoc->blendDelta = -1000.0f; if (ped->m_nPedState == PED_CARJACK || ped->m_nPedState == PED_ENTER_CAR) { - if (veh->IsWrecked()) + if (!ped->IsNotInWreckedVehicle()) return; bool isLow = veh->bLowVehicle; @@ -11322,7 +11322,7 @@ CPed::PedSetInCarCB(CAnimBlendAssociation *animAssoc, void *arg) if (!veh) return; - if (veh->IsWrecked() || ped->DyingOrDead()) + if (!ped->IsNotInWreckedVehicle() || ped->DyingOrDead()) return; ped->bInVehicle = true; @@ -14631,6 +14631,12 @@ CPed::SetRadioStation(void) } } +bool +CPed::IsNotInWreckedVehicle() +{ + return m_pMyVehicle != nil && !m_pMyVehicle->IsWrecked(); +} + class CPed_ : public CPed { public: diff --git a/src/peds/Ped.h b/src/peds/Ped.h index 74d85e56..d5146b7b 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -764,6 +764,7 @@ public: void SetPedState(PedState state) { m_nPedState = state; } bool DyingOrDead(void) { return m_nPedState == PED_DIE || m_nPedState == PED_DEAD; } void ReplaceWeaponWhenExitingVehicle(void); + bool IsNotInWreckedVehicle(); // set by 0482:set_threat_reaction_range_multiplier opcode static uint16 &nThreatReactionRangeMultiplier; diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index db0485a9..ffc2ca45 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -266,7 +266,7 @@ public: bool ShufflePassengersToMakeSpace(void); bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1; } - bool IsWrecked(void) { return !this || m_status == STATUS_WRECKED; } + bool IsWrecked(void) { return m_status == STATUS_WRECKED; } CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); } static bool &bWheelsOnlyCheat; |