diff options
author | eray orçunus <erayorcunus@gmail.com> | 2019-06-24 16:57:54 +0200 |
---|---|---|
committer | eray orçunus <erayorcunus@gmail.com> | 2019-06-24 23:01:40 +0200 |
commit | 1e09bf9c30094b4387431be4842876181a1425fe (patch) | |
tree | 22ee6dfa941b6cc85619973311c357f11acc1ef1 /src/entities/Vehicle.cpp | |
parent | more Radar code (diff) | |
download | re3-1e09bf9c30094b4387431be4842876181a1425fe.tar re3-1e09bf9c30094b4387431be4842876181a1425fe.tar.gz re3-1e09bf9c30094b4387431be4842876181a1425fe.tar.bz2 re3-1e09bf9c30094b4387431be4842876181a1425fe.tar.lz re3-1e09bf9c30094b4387431be4842876181a1425fe.tar.xz re3-1e09bf9c30094b4387431be4842876181a1425fe.tar.zst re3-1e09bf9c30094b4387431be4842876181a1425fe.zip |
Diffstat (limited to 'src/entities/Vehicle.cpp')
-rw-r--r-- | src/entities/Vehicle.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/entities/Vehicle.cpp b/src/entities/Vehicle.cpp index bac05f7b..ced504a3 100644 --- a/src/entities/Vehicle.cpp +++ b/src/entities/Vehicle.cpp @@ -2,6 +2,8 @@ #include "patcher.h" #include "Vehicle.h" #include "Pools.h" +#include "CarCtrl.h" +#include "ModelIndices.h" bool &CVehicle::bWheelsOnlyCheat = *(bool *)0x95CD78; bool &CVehicle::bAllDodosCheat = *(bool *)0x95CD75; @@ -11,3 +13,53 @@ bool &CVehicle::bCheat5 = *(bool *)0x95CD64; void *CVehicle::operator new(size_t sz) { return CPools::GetVehiclePool()->New(); } void CVehicle::operator delete(void *p, size_t sz) { CPools::GetVehiclePool()->Delete((CVehicle*)p); } + +bool +CVehicle::IsLawEnforcementVehicle(void) +{ + switch (m_modelIndex) { + case MI_FBICAR: + case MI_POLICE: + case MI_ENFORCER: + case MI_PREDATOR: + case MI_RHINO: + case MI_BARRACKS: + return true; + default: + return false; + } +} + +void +CVehicle::ChangeLawEnforcerState(bool enable) +{ + if (enable) { + if (!bIsLawEnforcer) { + bIsLawEnforcer = true; + CCarCtrl::NumLawEnforcerCars++; + } + } else { + if (bIsLawEnforcer) { + bIsLawEnforcer = false; + CCarCtrl::NumLawEnforcerCars--; + } + } +} + +void +CVehicle::RemoveDriver(void) +{ + m_status = STATUS_ABANDONED; + pDriver = nil; +} + +bool +CVehicle::IsUpsideDown(void) +{ + return GetUp().z <= -0.9f; +} + +STARTPATCHES + InjectHook(0x552820, &CVehicle::ChangeLawEnforcerState, PATCH_JUMP); + InjectHook(0x5520A0, &CVehicle::RemoveDriver, PATCH_JUMP); +ENDPATCHES
\ No newline at end of file |