[saco] Implement/match FUNC_10014950, the special-action driver; every pair is two sequential ifs with &&, not an if/else

This commit is contained in:
ricardoofnl
2026-09-05 09:27:59 +07:00
parent 10dddab97e
commit 67c7c34fc0
3 changed files with 66 additions and 0 deletions
+4
View File
@@ -205,6 +205,10 @@ public:
void FUNC_100AFFD0(); // .text:100AFFD0
int FUNC_100AE260(); // .text:100AE260
void FUNC_100AE100(); // .text:100AE100
void FUNC_100AD440(); // .text:100AD440
void FUNC_100ADCA0(); // .text:100ADCA0
void FUNC_100B02D0(int a1); // .text:100B02D0
BOOL FUNC_100ACE40(); // .text:100ACE40
void FUNC_100ACF00(int a1); // .text:100ACF00
BOOL FUNC_100AD860(); // .text:100AD860
+61
View File
@@ -475,6 +475,67 @@ void CRemotePlayer::FUNC_10016370(BULLET_SYNC_DATA *pSync)
//----------------------------------------------------
void CRemotePlayer::FUNC_10014950()
{
if(!m_pPlayerPed) return;
if(!m_pPlayerPed->IsAdded()) return;
if(field_C == 1 && !m_pPlayerPed->FUNC_100AC690()) {
m_pPlayerPed->FUNC_100AC6C0();
return;
}
if(field_C != 1 && m_pPlayerPed->FUNC_100AC690()) m_pPlayerPed->FUNC_100AC720();
if(field_C == 11 && !m_pPlayerPed->IsCellphoneEnabled()) {
m_pPlayerPed->ToggleCellphone(1);
return;
}
if(field_C != 11 && m_pPlayerPed->IsCellphoneEnabled()) {
m_pPlayerPed->ToggleCellphone(0);
return;
}
if(field_C == 2 && !m_pPlayerPed->IsInJetpackMode()) {
field_8 = 1;
m_pPlayerPed->StartJetpack();
return;
}
if(field_C != 2 && m_pPlayerPed->IsInJetpackMode()) {
field_8 = 0;
m_pPlayerPed->StopJetpack();
return;
}
if(field_C == 10 && !m_pPlayerPed->HasHandsUp()) m_pPlayerPed->HandsUp();
if(field_C != 10 && m_pPlayerPed->HasHandsUp()) m_pPlayerPed->StopDancing();
if(!m_pPlayerPed->FUNC_100AE260() && field_C == 68) m_pPlayerPed->FUNC_100AE100();
if(m_pPlayerPed->FUNC_100AE260() && field_C != 68) m_pPlayerPed->FUNC_100AE1E0();
if(field_C == 20 && m_pPlayerPed->FUNC_100ADC90() != 1) m_pPlayerPed->FUNC_100B02D0(1);
if(field_C == 22 && m_pPlayerPed->FUNC_100ADC90() != 2) m_pPlayerPed->FUNC_100B02D0(2);
if(field_C == 23 && m_pPlayerPed->FUNC_100ADC90() != 3) m_pPlayerPed->FUNC_100B02D0(3);
if(field_C == 21 && m_pPlayerPed->FUNC_100ADC90() != 4) m_pPlayerPed->FUNC_100B02D0(4);
if(m_pPlayerPed->FUNC_100ADC90()) {
if(field_C == 20 || field_C == 22 || field_C == 23 || field_C == 21)
m_pPlayerPed->FUNC_100ADCA0();
else m_pPlayerPed->StopCarrying();
}
if(!m_pPlayerPed->FUNC_100ACEF0() && field_C == 24) m_pPlayerPed->FUNC_100ACF00(1);
if(m_pPlayerPed->FUNC_100ACEF0() && field_C != 24 && field_C != 3 && field_C != 4)
m_pPlayerPed->FUNC_100ACF00(0);
if(!m_pPlayerPed->FUNC_100ACE40() && field_C == 25) m_pPlayerPed->FUNC_100ACE50(1);
if(m_pPlayerPed->FUNC_100ACE40() && field_C != 25 && field_C != 3 && field_C != 4)
m_pPlayerPed->FUNC_100ACE50(0);
m_pPlayerPed->FUNC_100AD440();
}
//----------------------------------------------------
void CRemotePlayer::FUNC_10014C40()
{
if(!m_pPlayerPed) return;
+1
View File
@@ -107,6 +107,7 @@ public:
void FUNC_10017260(BYTE *pSync, int iTime); // .text:10017260
void FUNC_10014C40(); // .text:10014C40
void FUNC_10016370(BULLET_SYNC_DATA *pSync); // .text:10016370
void FUNC_10014950(); // .text:10014950
void FUNC_10014E60(); // .text:10014E60
void FUNC_10015460(); // .text:10015460
void FUNC_10015760(BYTE *pAim); // .text:10015760