summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerorcun <erorcunerorcun@hotmail.com.tr>2021-02-10 13:34:48 +0100
committererorcun <erorcunerorcun@hotmail.com.tr>2021-02-10 13:34:48 +0100
commita6d402e8fd32432f7b7a9a2115c53c851d78a293 (patch)
tree5052c0001065ae0b13300afe0446e6d69fa42dfa
parentfix clouds (diff)
downloadre3-a6d402e8fd32432f7b7a9a2115c53c851d78a293.tar
re3-a6d402e8fd32432f7b7a9a2115c53c851d78a293.tar.gz
re3-a6d402e8fd32432f7b7a9a2115c53c851d78a293.tar.bz2
re3-a6d402e8fd32432f7b7a9a2115c53c851d78a293.tar.lz
re3-a6d402e8fd32432f7b7a9a2115c53c851d78a293.tar.xz
re3-a6d402e8fd32432f7b7a9a2115c53c851d78a293.tar.zst
re3-a6d402e8fd32432f7b7a9a2115c53c851d78a293.zip
-rw-r--r--src/peds/Ped.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp
index e0d60304..28a4e989 100644
--- a/src/peds/Ped.cpp
+++ b/src/peds/Ped.cpp
@@ -2448,12 +2448,17 @@ CPed::ProcessControl(void)
#ifdef VC_PED_PORTS
uint8 flyDir = 0;
float feetZ = GetPosition().z - FEET_OFFSET;
- if ((obstacleForFlyingZ <= feetZ || obstacleForFlyingOtherDirZ >= 500.0f) && (obstacleForFlyingZ <= feetZ || obstacleForFlyingOtherDirZ <= feetZ)) {
- if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 499.0f)
- flyDir = 2;
- } else {
+#ifdef FIX_BUGS
+ if (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 501.0f)
flyDir = 1;
- }
+ else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 500.0f)
+ flyDir = 2;
+#else
+ if ((obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 500.0f) || (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ > feetZ))
+ flyDir = 1;
+ else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 499.0f)
+ flyDir = 2;
+#endif
if (flyDir != 0 && !bSomeVCflag1) {
SetPosition((flyDir == 2 ? obstacleForFlyingOtherDir.point : obstacleForFlying.point));
@@ -2471,6 +2476,10 @@ CPed::ProcessControl(void)
forceDir.z = 4.0f;
ApplyMoveForce(forceDir);
+ // What was that for?? It pushes player inside of collision sometimes and kills him.
+#ifdef FIX_BUGS
+ if (!IsPlayer())
+#endif
GetMatrix().GetPosition() += 0.25f * offsetToCheck;
m_fRotationCur = CGeneral::GetRadianAngleBetweenPoints(offsetToCheck.x, offsetToCheck.y, 0.0f, 0.0f);