1
0
Fork 0
mirror of https://github.com/halpz/re3.git synced 2024-12-26 18:15:27 +00:00

Merge branch 'lcs' of https://github.com/GTAmodding/re3 into lcs

This commit is contained in:
majestic 2021-01-10 18:43:24 -08:00
commit 8f925a2e84
4 changed files with 486 additions and 388 deletions

File diff suppressed because it is too large Load diff

View file

@ -2556,7 +2556,7 @@ void CTheScripts::SetObjectiveForAllPedsInCollective(int colIndex, eObjective ob
} }
else { else {
pPed->bScriptObjectiveCompleted = false; pPed->bScriptObjectiveCompleted = false;
//pPed->SetObjective(objective, p1, p2); TODO! pPed->SetObjective(objective, p1, p2);
} }
} }
} }

View file

@ -744,6 +744,7 @@ public:
void SetObjective(eObjective); void SetObjective(eObjective);
void SetObjective(eObjective, int16, int16); void SetObjective(eObjective, int16, int16);
void SetObjective(eObjective, CVector); void SetObjective(eObjective, CVector);
void SetObjective(eObjective, CVector, float);
void SetObjective(eObjective, float, const CVector&); void SetObjective(eObjective, float, const CVector&);
void ClearChat(void); void ClearChat(void);
void InformMyGangOfAttack(CEntity*); void InformMyGangOfAttack(CEntity*);

View file

@ -370,6 +370,51 @@ CPed::SetObjective(eObjective newObj, void *entity)
} }
} }
void
CPed::SetObjective(eObjective newObj, CVector dest, float safeDist)
{
if (DyingOrDead())
return;
if (m_prevObjective != OBJECTIVE_NONE && m_prevObjective == newObj)
return;
if (m_objective == newObj) {
if (newObj == OBJECTIVE_GOTO_AREA_ANY_MEANS || newObj == OBJECTIVE_GOTO_AREA_ON_FOOT || newObj == OBJECTIVE_RUN_TO_AREA || newObj == OBJECTIVE_SPRINT_TO_AREA) {
if (m_nextRoutePointPos == dest && m_distanceToCountSeekDone == safeDist)
return;
}
else if (newObj == OBJECTIVE_GUARD_SPOT) {
if (m_vecSpotToGuard == dest && m_radiusToGuard == safeDist)
return;
}
}
ClearPointGunAt();
SetObjectiveTimer(0);
bObjectiveCompleted = false;
if (IsTemporaryObjective(m_objective)) {
m_prevObjective = newObj;
}
else {
if (m_objective != newObj)
SetStoredObjective();
m_objective = newObj;
}
if (newObj == OBJECTIVE_GUARD_SPOT) {
m_vecSpotToGuard = dest;
m_radiusToGuard = safeDist;
}
else if (newObj == OBJECTIVE_GOTO_AREA_ANY_MEANS || newObj == OBJECTIVE_GOTO_AREA_ON_FOOT || newObj == OBJECTIVE_RUN_TO_AREA || newObj == OBJECTIVE_SPRINT_TO_AREA) {
m_pNextPathNode = nil;
m_nextRoutePointPos = dest;
m_vecSeekPos = m_nextRoutePointPos;
bUsePedNodeSeek = true;
}
}
// --MIAMI: Done // --MIAMI: Done
// Only used in 01E1: SET_CHAR_OBJ_FOLLOW_ROUTE opcode // Only used in 01E1: SET_CHAR_OBJ_FOLLOW_ROUTE opcode
// IDA fails very badly in here, puts a fake loop and ignores SetFollowRoute call... // IDA fails very badly in here, puts a fake loop and ignores SetFollowRoute call...