@@ -1919,10 +1919,16 @@ void CClientPed::SetFrozen(bool bFrozen)
1919
1919
{
1920
1920
if (m_pTaskManager)
1921
1921
{
1922
- m_pTaskManager->RemoveTask (TASK_PRIORITY_PRIMARY);
1922
+ // Let them have a jetpack (#9522)
1923
+ if (!HasJetPack ())
1924
+ m_pTaskManager->RemoveTask (TASK_PRIORITY_PRIMARY);
1925
+
1923
1926
m_pTaskManager->RemoveTask (TASK_PRIORITY_EVENT_RESPONSE_TEMP);
1924
1927
m_pTaskManager->RemoveTask (TASK_PRIORITY_EVENT_RESPONSE_NONTEMP);
1925
- m_pTaskManager->RemoveTask (TASK_PRIORITY_PHYSICAL_RESPONSE);
1928
+
1929
+ // Let's let them choke too
1930
+ if (!IsChoking ())
1931
+ m_pTaskManager->RemoveTask (TASK_PRIORITY_PHYSICAL_RESPONSE);
1926
1932
}
1927
1933
1928
1934
if (m_pPlayerPed)
@@ -4310,6 +4316,13 @@ void CClientPed::SetChoking(bool bChoking)
4310
4316
// His not choking. Make him choke if that's what we're supposed to do.
4311
4317
if (bChoking)
4312
4318
{
4319
+ // Remove jetpack now so it doesn't stay on (#9522#c25612)
4320
+ if (HasJetPack ())
4321
+ SetHasJetPack (false );
4322
+
4323
+ // Let's kill any animation
4324
+ KillAnimation ();
4325
+
4313
4326
// Create the choking task
4314
4327
CTaskSimpleChoking* pTask = g_pGame->GetTasks ()->CreateTaskSimpleChoking (NULL , true );
4315
4328
if (pTask)
@@ -4518,6 +4531,13 @@ bool CClientPed::SetHasJetPack(bool bHasJetPack)
4518
4531
m_pTaskManager->RemoveTask (TASK_PRIORITY_EVENT_RESPONSE_NONTEMP);
4519
4532
}
4520
4533
4534
+ // Kill choking state now so it doesn't stay on (#9522#c26644)
4535
+ if (IsChoking ())
4536
+ SetChoking (false );
4537
+
4538
+ // Kill animation as well
4539
+ KillAnimation ();
4540
+
4521
4541
CTaskSimpleJetPack* pJetPackTask = g_pGame->GetTasks ()->CreateTaskSimpleJetpack ();
4522
4542
if (pJetPackTask)
4523
4543
{
@@ -5634,6 +5654,14 @@ void CClientPed::RunAnimation(AssocGroupId animGroup, AnimationId animID)
5634
5654
5635
5655
if (m_pPlayerPed)
5636
5656
{
5657
+ // Remove jetpack now so it doesn't stay on (#9522#c25612)
5658
+ if (HasJetPack ())
5659
+ SetHasJetPack (false );
5660
+
5661
+ // Let's not choke them any longer
5662
+ if (IsChoking ())
5663
+ SetChoking (false );
5664
+
5637
5665
CTask* pTask = g_pGame->GetTasks ()->CreateTaskSimpleRunAnim (animGroup, animID, 4 .0f , TASK_SIMPLE_ANIM, " TASK_SIMPLE_ANIM" );
5638
5666
if (pTask)
5639
5667
{
@@ -5660,6 +5688,14 @@ void CClientPed::RunNamedAnimation(CAnimBlock* pBlock, const char* szAnimName, i
5660
5688
5661
5689
if (pBlock->IsLoaded ())
5662
5690
{
5691
+ // Remove jetpack now so it doesn't stay on (#9522#c25612)
5692
+ if (HasJetPack ())
5693
+ SetHasJetPack (false );
5694
+
5695
+ // Let's not choke them any longer
5696
+ if (IsChoking ())
5697
+ SetChoking (false );
5698
+
5663
5699
/*
5664
5700
Saml1er: Setting flags to 0x10 will tell GTA:SA that animation needs to be decompressed.
5665
5701
If not, animation will either crash or do some weird things.
0 commit comments