public void Stop(bool immediate = false) { if (Responsible.Jobs.IndexOf(this) == 0) { Responsible.StopWalking(); Responsible.JobFinished = true; } if (immediate) { Responsible.StopCoroutine(Coroutine); } if (_started) { if (!immediate) { SkillManager.UpdateSkill(Responsible, SkillType, EarnedXp); if (ActivityType != ActivityType.Kill) { QuestManager.Progress(Responsible, this); } } EffectManager.Remove(Responsible, Effects); _started = false; Target.InUse++; } JobManager.RemoveJob(this); }