File tree Expand file tree Collapse file tree 4 files changed +20
-6
lines changed Expand file tree Collapse file tree 4 files changed +20
-6
lines changed Original file line number Diff line number Diff line change @@ -876,17 +876,17 @@ bool CPedSA::SetOnFire(bool onFire)
876876 }
877877 else
878878 {
879+ bool wasFire = false ;
880+
879881 CFire* fire = fireManager->GetFire (static_cast <CFireSAInterface*>(pInterface->pFireOnPed ));
880882 if (fire)
883+ {
881884 fire->Extinguish ();
885+ wasFire = true ;
886+ }
882887
883888 CTaskManager* taskManager = m_pPedIntelligence->GetTaskManager ();
884- if (taskManager)
885- {
886- CTask* task = taskManager->GetTaskSecondary (TASK_SECONDARY_PARTIAL_ANIM);
887- if (task && task->GetTaskType () == TASK_SIMPLE_PLAYER_ON_FIRE)
888- taskManager->RemoveTaskSecondary (TASK_SECONDARY_PARTIAL_ANIM);
889- }
889+ return wasFire || (taskManager && taskManager->RemoveTaskSecondary (TASK_SECONDARY_PARTIAL_ANIM, TASK_SIMPLE_PLAYER_ON_FIRE));
890890 }
891891
892892 return true ;
Original file line number Diff line number Diff line change @@ -151,6 +151,18 @@ void CTaskManagerSA::RemoveTaskSecondary(const int iTaskPriority)
151151 SetTaskSecondary (NULL , iTaskPriority);
152152}
153153
154+ bool CTaskManagerSA::RemoveTaskSecondary (const int taskPriority, const int taskType)
155+ {
156+ CTask* task = GetTaskSecondary (taskPriority);
157+ if (task && task->GetTaskType () == taskType)
158+ {
159+ RemoveTaskSecondary (taskPriority);
160+ return true ;
161+ }
162+
163+ return false ;
164+ }
165+
154166void CTaskManagerSA::SetTaskSecondary (CTaskSA* pTaskSecondary, const int iType)
155167{
156168 DWORD dwFunc = FUNC_SetTaskSecondary;
Original file line number Diff line number Diff line change @@ -57,6 +57,7 @@ class CTaskManagerSA : public CTaskManager
5757 CTask* FindActiveTaskByType (const int iTaskType);
5858 CTask* FindTaskByType (const int iPriority, const int iTaskType);
5959 void RemoveTaskSecondary (const int iTaskPriority);
60+ bool RemoveTaskSecondary (const int taskPriority, const int taskType);
6061 void SetTaskSecondary (CTaskSA* pTaskSecondary, const int iType);
6162 CTask* GetTaskSecondary (const int iType); // code it
6263 bool HasTaskSecondary (const CTask* pTaskSecondary); // code it
Original file line number Diff line number Diff line change @@ -60,6 +60,7 @@ class CTaskManager
6060 virtual CTask* FindActiveTaskByType (const int iTaskType) = 0;
6161 virtual CTask* FindTaskByType (const int iPriority, const int iTaskType) = 0;
6262 virtual void RemoveTaskSecondary (const int iTaskPriority) = 0;
63+ virtual bool RemoveTaskSecondary (const int taskPriority, const int taskType) = 0;
6364 // virtual void SetTaskSecondary(CTask* pTaskSecondary, const int iType)=0;
6465 virtual CTask* GetTaskSecondary (const int iType) = 0;
6566 virtual bool HasTaskSecondary (const CTask* pTaskSecondary) = 0;
You can’t perform that action at this time.
0 commit comments