Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix peds running to see dead peds in water
- Loading branch information
Showing
with
16 additions
and
12 deletions.
-
+16
−12
src/peds/Ped.cpp
There are no files selected for viewing
|
|
@@ -707,14 +707,18 @@ CPed::ScanForThreats(void) |
|
|
} |
|
|
} |
|
|
|
|
|
CPed *deadPed = nil; |
|
|
CPed *deadPed; |
|
|
if (fearFlags & PED_FLAG_DEADPEDS && CharCreatedBy != MISSION_CHAR |
|
|
&& (deadPed = CheckForDeadPeds()) != nil && (deadPed->GetPosition() - ourPos).MagnitudeSqr() < sq(20.0f)) { |
|
|
&& (deadPed = CheckForDeadPeds()) != nil && (deadPed->GetPosition() - ourPos).MagnitudeSqr() < sq(20.0f) |
|
|
#ifdef FIX_BUGS |
|
|
&& !deadPed->bIsInWater |
|
|
#endif |
|
|
) { |
|
|
m_pEventEntity = deadPed; |
|
|
m_pEventEntity->RegisterReference((CEntity **) &m_pEventEntity); |
|
|
return PED_FLAG_DEADPEDS; |
|
|
} else { |
|
|
uint32 flagsOfSomePed = 0; |
|
|
uint32 flagsOfNearPed = 0; |
|
|
|
|
|
CPed *pedToFearFrom = nil; |
|
|
#ifndef VC_PED_PORTS |
|
|
@@ -724,9 +728,9 @@ CPed::ScanForThreats(void) |
|
|
|
|
|
// BUG: WTF Rockstar?! Putting this here will result in returning the flags of farthest ped to us, since m_nearPeds is sorted by distance. |
|
|
// Fixed at the bottom of the function. |
|
|
flagsOfSomePed = CPedType::GetFlag(nearPed->m_nPedType); |
|
|
flagsOfNearPed = CPedType::GetFlag(nearPed->m_nPedType); |
|
|
|
|
|
if (CPedType::GetFlag(nearPed->m_nPedType) & fearFlags) { |
|
|
if (flagsOfNearPed & fearFlags) { |
|
|
if (nearPed->m_fHealth > 0.0f && OurPedCanSeeThisOne(m_nearPeds[i])) { |
|
|
// FIX: Taken from VC |
|
|
#ifdef FIX_BUGS |
|
|
@@ -754,9 +758,9 @@ CPed::ScanForThreats(void) |
|
|
} |
|
|
|
|
|
// BUG: Explained at the same occurence of this bug above. Fixed at the bottom of the function. |
|
|
flagsOfSomePed = CPedType::GetFlag(m_nearPeds[i]->m_nPedType); |
|
|
flagsOfNearPed = CPedType::GetFlag(m_nearPeds[i]->m_nPedType); |
|
|
|
|
|
if (flagsOfSomePed & fearFlags) { |
|
|
if (flagsOfNearPed & fearFlags) { |
|
|
if (m_nearPeds[i]->m_fHealth > 0.0f) { |
|
|
|
|
|
// VC also has ability to include objects to line of sight check here (via last bit of flagsL) |
|
|
@@ -827,8 +831,8 @@ CPed::ScanForThreats(void) |
|
|
if (driver) { |
|
|
|
|
|
// BUG: Same bug as above. Fixed at the bottom of function. |
|
|
flagsOfSomePed = CPedType::GetFlag(driver->m_nPedType); |
|
|
if (CPedType::GetFlag(driver->m_nPedType) & fearFlags) { |
|
|
flagsOfNearPed = CPedType::GetFlag(driver->m_nPedType); |
|
|
if (flagsOfNearPed & fearFlags) { |
|
|
if (driver->m_fHealth > 0.0f && OurPedCanSeeThisOne(nearVeh->pDriver)) { |
|
|
// FIX: Taken from VC |
|
|
#ifdef FIX_BUGS |
|
|
@@ -850,12 +854,12 @@ CPed::ScanForThreats(void) |
|
|
|
|
|
#ifdef FIX_BUGS |
|
|
if (pedToFearFrom) |
|
|
flagsOfSomePed = CPedType::GetFlag(((CPed*)m_threatEntity)->m_nPedType); |
|
|
flagsOfNearPed = CPedType::GetFlag(((CPed*)m_threatEntity)->m_nPedType); |
|
|
else |
|
|
flagsOfSomePed = 0; |
|
|
flagsOfNearPed = 0; |
|
|
#endif |
|
|
|
|
|
return flagsOfSomePed; |
|
|
return flagsOfNearPed; |
|
|
} |
|
|
} |
|
|
|
|
|
|