Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files
Fix peds running to see dead peds in water
  • Loading branch information
erorcun committed Dec 27, 2020
1 parent 9ad2f39 commit 8b9e9a07a0fb56c3fb95e41f3cf3536a6e13df47
Showing with 16 additions and 12 deletions.
  1. +16 −12 src/peds/Ped.cpp
@@ -707,14 +707,18 @@ CPed::ScanForThreats(void)
} }
} }


CPed *deadPed = nil; CPed *deadPed;
if (fearFlags & PED_FLAG_DEADPEDS && CharCreatedBy != MISSION_CHAR 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 = deadPed;
m_pEventEntity->RegisterReference((CEntity **) &m_pEventEntity); m_pEventEntity->RegisterReference((CEntity **) &m_pEventEntity);
return PED_FLAG_DEADPEDS; return PED_FLAG_DEADPEDS;
} else { } else {
uint32 flagsOfSomePed = 0; uint32 flagsOfNearPed = 0;


CPed *pedToFearFrom = nil; CPed *pedToFearFrom = nil;
#ifndef VC_PED_PORTS #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. // 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. // 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])) { if (nearPed->m_fHealth > 0.0f && OurPedCanSeeThisOne(m_nearPeds[i])) {
// FIX: Taken from VC // FIX: Taken from VC
#ifdef FIX_BUGS #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. // 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) { 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) // 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) { if (driver) {


// BUG: Same bug as above. Fixed at the bottom of function. // BUG: Same bug as above. Fixed at the bottom of function.
flagsOfSomePed = CPedType::GetFlag(driver->m_nPedType); flagsOfNearPed = CPedType::GetFlag(driver->m_nPedType);
if (CPedType::GetFlag(driver->m_nPedType) & fearFlags) { if (flagsOfNearPed & fearFlags) {
if (driver->m_fHealth > 0.0f && OurPedCanSeeThisOne(nearVeh->pDriver)) { if (driver->m_fHealth > 0.0f && OurPedCanSeeThisOne(nearVeh->pDriver)) {
// FIX: Taken from VC // FIX: Taken from VC
#ifdef FIX_BUGS #ifdef FIX_BUGS
@@ -850,12 +854,12 @@ CPed::ScanForThreats(void)


#ifdef FIX_BUGS #ifdef FIX_BUGS
if (pedToFearFrom) if (pedToFearFrom)
flagsOfSomePed = CPedType::GetFlag(((CPed*)m_threatEntity)->m_nPedType); flagsOfNearPed = CPedType::GetFlag(((CPed*)m_threatEntity)->m_nPedType);
else else
flagsOfSomePed = 0; flagsOfNearPed = 0;
#endif #endif


return flagsOfSomePed; return flagsOfNearPed;
} }
} }


0 comments on commit 8b9e9a0

Please sign in to comment.