using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using Comfort.Common; using EFT; using EFT.Quests; using EFT.UI; using Microsoft.CSharp.RuntimeBinder; using stupid.solutions; using stupid.solutions.Utils; using UnityEngine; public class QuestModule : MonoBehaviour { [CompilerGenerated] private static class _003C_003Eo__4 { public static CallSite> _003C_003Ep__0; public static CallSite> _003C_003Ep__1; public static CallSite> _003C_003Ep__2; public static CallSite> _003C_003Ep__3; public static CallSite> _003C_003Ep__4; public static CallSite> _003C_003Ep__5; public static CallSite> _003C_003Ep__6; public static CallSite> _003C_003Ep__7; public static CallSite> _003C_003Ep__8; public static CallSite> _003C_003Ep__9; public static CallSite> _003C_003Ep__10; public static CallSite> _003C_003Ep__11; public static CallSite> _003C_003Ep__12; public static CallSite> _003C_003Ep__13; public static CallSite> _003C_003Ep__14; public static CallSite> _003C_003Ep__15; public static CallSite> _003C_003Ep__16; public static CallSite> _003C_003Ep__17; public static CallSite> _003C_003Ep__18; public static CallSite> _003C_003Ep__19; public static CallSite> _003C_003Ep__20; public static CallSite> _003C_003Ep__21; public static CallSite> _003C_003Ep__22; public static CallSite> _003C_003Ep__23; public static CallSite> _003C_003Ep__24; public static CallSite> _003C_003Ep__25; public static CallSite> _003C_003Ep__26; public static CallSite> _003C_003Ep__27; public static CallSite> _003C_003Ep__28; public static CallSite> _003C_003Ep__29; public static CallSite> _003C_003Ep__30; public static CallSite> _003C_003Ep__31; public static CallSite> _003C_003Ep__32; public static CallSite> _003C_003Ep__33; public static CallSite> _003C_003Ep__34; public static CallSite> _003C_003Ep__35; public static CallSite> _003C_003Ep__36; public static CallSite> _003C_003Ep__37; public static CallSite> _003C_003Ep__38; public static CallSite> _003C_003Ep__39; public static CallSite> _003C_003Ep__40; public static CallSite> _003C_003Ep__41; public static CallSite> _003C_003Ep__42; public static CallSite> _003C_003Ep__43; public static CallSite> _003C_003Ep__44; public static CallSite> _003C_003Ep__45; public static CallSite> _003C_003Ep__46; public static CallSite> _003C_003Ep__47; public static CallSite> _003C_003Ep__48; public static CallSite> _003C_003Ep__49; public static CallSite> _003C_003Ep__50; public static CallSite> _003C_003Ep__51; } [StructLayout(LayoutKind.Auto)] [CompilerGenerated] private struct _003CFinishQuests_003Ed__4 : IAsyncStateMachine { private static class _003C_003Eo__4 { public static CallSite> _003C_003Ep__0; public static CallSite> _003C_003Ep__1; public static CallSite> _003C_003Ep__2; public static CallSite> _003C_003Ep__3; public static CallSite> _003C_003Ep__4; public static CallSite> _003C_003Ep__5; public static CallSite> _003C_003Ep__6; public static CallSite> _003C_003Ep__7; } public int _003C_003E1__state; public AsyncVoidMethodBuilder _003C_003Et__builder; private _EA29 _003Csession_003E5__2; private object _003CquestController_003E5__3; private IEnumerator _003C_003E7__wrap3; private object _003Cquest_003E5__5; private object _003C_003Eu__1; private int _003Ctries_003E5__6; private Func _003C_003E7__wrap6; private CallSite> _003C_003E7__wrap7; private TaskAwaiter _003C_003Eu__2; private void MoveNext() { int num = _003C_003E1__state; try { if ((uint)num <= 2u) { goto IL_0132; } Player localPlayer = Main.LocalPlayer; if (!(localPlayer == null)) { _tarkovApplication.GetClientBackEndSession(); _003Csession_003E5__2 = _tarkovApplication.GetClientBackEndSession(); if (_003Csession_003E5__2 != null) { FieldInfo fieldInfo = typeof(Player).GetRuntimeFields().FirstOrDefault((FieldInfo x) => x.Name == "_questController"); _003CquestController_003E5__3 = fieldInfo.GetValue(localPlayer); dynamic val = ((dynamic)_003CquestController_003E5__3).Quests; _003C_003E7__wrap3 = ((IEnumerable)val).GetEnumerator(); goto IL_0132; } ConsoleScreen.Log("Session is null"); } goto end_IL_0007; IL_0132: try { TaskAwaiter awaiter; dynamic val2; switch (num) { case 0: val2 = _003C_003Eu__1; _003C_003Eu__1 = null; num = (_003C_003E1__state = -1); goto IL_05a0; case 1: try { if (num != 1) { _003Ctries_003E5__6 = 0; goto IL_1185; } dynamic val3 = _003C_003Eu__1; _003C_003Eu__1 = null; num = (_003C_003E1__state = -1); goto IL_157f; IL_157f: val2 = val3.GetResult(); IResult result = _003C_003E7__wrap6(_003C_003E7__wrap7, (object)val2); _003C_003E7__wrap6 = null; _003C_003E7__wrap7 = null; if (!result.Succeed && _003Ctries_003E5__6 <= 15) { _003Ctries_003E5__6++; Thread.Sleep(500); } goto IL_1185; IL_1185: ((dynamic)_003Cquest_003E5__5).SetStatus(EQuestStatus.AvailableForFinish, true, true); ((dynamic)_003Cquest_003E5__5).SetStatus(EQuestStatus.Success, true, true); ConsoleScreen.Log("Sending Network Request"); ((dynamic)_003CquestController_003E5__3).FinishQuest((dynamic)_003Cquest_003E5__5, true); if (QuestModule._003C_003Eo__4._003C_003Ep__50 == null) { QuestModule._003C_003Eo__4._003C_003Ep__50 = CallSite>.Create(Microsoft.CSharp.RuntimeBinder.Binder.Convert(CSharpBinderFlags.None, typeof(IResult), typeof(QuestModule))); } _003C_003E7__wrap6 = QuestModule._003C_003Eo__4._003C_003Ep__50.Target; _003C_003E7__wrap7 = QuestModule._003C_003Eo__4._003C_003Ep__50; val3 = _003Csession_003E5__2.QuestComplete(((dynamic)_003Cquest_003E5__5).Template.Id, false, false).GetAwaiter(); if (!(bool)val3.IsCompleted) { num = (_003C_003E1__state = 1); _003C_003Eu__1 = val3; ICriticalNotifyCompletion awaiter2 = val3 as ICriticalNotifyCompletion; if (awaiter2 == null) { INotifyCompletion awaiter3 = (INotifyCompletion)(object)val3; _003C_003Et__builder.AwaitOnCompleted(ref awaiter3, ref this); awaiter3 = null; } else { _003C_003Et__builder.AwaitUnsafeOnCompleted(ref awaiter2, ref this); } awaiter2 = null; return; } goto IL_157f; } catch (Exception ex) { ConsoleScreen.Log(ex.ToString()); } awaiter = Task.Delay(2500).GetAwaiter(); if (!awaiter.IsCompleted) { num = (_003C_003E1__state = 2); _003C_003Eu__2 = awaiter; _003C_003Et__builder.AwaitUnsafeOnCompleted(ref awaiter, ref this); return; } goto IL_168e; case 2: awaiter = _003C_003Eu__2; _003C_003Eu__2 = default(TaskAwaiter); num = (_003C_003E1__state = -1); goto IL_168e; default: { while (_003C_003E7__wrap3.MoveNext()) { _003Cquest_003E5__5 = _003C_003E7__wrap3.Current; if ((dynamic)_003Cquest_003E5__5 == null) { continue; } goto IL_01fe; } break; } IL_05a0: val2.GetResult(); ((dynamic)_003Cquest_003E5__5).SetStatus(EQuestStatus.Started, true, true); goto IL_0667; IL_0667: if (!((((dynamic)_003Cquest_003E5__5).QuestStatus == EQuestStatus.Success) ? true : false)) { val2 = ((dynamic)_003Cquest_003E5__5).QuestStatus == EQuestStatus.Locked; if (!(val2 ? true : false) && !((val2 | (((dynamic)_003Cquest_003E5__5).QuestStatus == EQuestStatus.AvailableForStart)) ? true : false) && !((((dynamic)_003Cquest_003E5__5).QuestStatus != EQuestStatus.Started) ? true : false) && !((((dynamic)_003Cquest_003E5__5).Template == null) ? true : false)) { ConsoleScreen.Log($"Trying to finish quest: {(object)((dynamic)_003Cquest_003E5__5).Template.Name}"); IEnumerator enumerator = ((IEnumerable)((dynamic)_003Cquest_003E5__5).Template.Conditions).GetEnumerator(); try { while (enumerator.MoveNext()) { dynamic current = enumerator.Current; ConsoleScreen.Log("===== " + current.Key + " ====="); IEnumerator enumerator2 = ((IEnumerable)current.Value).GetEnumerator(); try { while (enumerator2.MoveNext()) { dynamic current2 = enumerator2.Current; ((dynamic)_003Cquest_003E5__5).CompletedConditions.Add(current2.id); if (!(current2 is ConditionCounterCreator conditionCounterCreator)) { continue; } IEnumerator enumerator3 = conditionCounterCreator.Conditions.GetEnumerator(); try { while (enumerator3.MoveNext()) { _ = enumerator3.Current; ((dynamic)_003Cquest_003E5__5).CompletedConditions.Add(current2.id); } } finally { if (num < 0) { enumerator3?.Dispose(); } } } } finally { if (num < 0 && enumerator2 is IDisposable disposable) { disposable.Dispose(); } } } } finally { if (num < 0 && enumerator is IDisposable disposable2) { disposable2.Dispose(); } } goto case 1; } } goto default; IL_01fe: if (((dynamic)_003Cquest_003E5__5).QuestStatus == EQuestStatus.AvailableAfter) { ((dynamic)_003CquestController_003E5__3).AcceptQuest((dynamic)_003Cquest_003E5__5, true); val2 = _003Csession_003E5__2.QuestAccept(((dynamic)_003Cquest_003E5__5).Template.id, false).GetAwaiter(); if (!(bool)val2.IsCompleted) { num = (_003C_003E1__state = 0); _003C_003Eu__1 = val2; ICriticalNotifyCompletion awaiter2 = val2 as ICriticalNotifyCompletion; if (awaiter2 == null) { INotifyCompletion awaiter3 = (INotifyCompletion)(object)val2; _003C_003Et__builder.AwaitOnCompleted(ref awaiter3, ref this); awaiter3 = null; } else { _003C_003Et__builder.AwaitUnsafeOnCompleted(ref awaiter2, ref this); } awaiter2 = null; return; } goto IL_05a0; } goto IL_0667; IL_168e: awaiter.GetResult(); _003Cquest_003E5__5 = null; goto default; } } finally { if (num < 0 && _003C_003E7__wrap3 is IDisposable disposable3) { disposable3.Dispose(); } } _003C_003E7__wrap3 = null; end_IL_0007:; } catch (Exception exception) { _003C_003E1__state = -2; _003Csession_003E5__2 = null; _003CquestController_003E5__3 = null; _003C_003Et__builder.SetException(exception); return; } _003C_003E1__state = -2; _003Csession_003E5__2 = null; _003CquestController_003E5__3 = null; _003C_003Et__builder.SetResult(); } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } [DebuggerHidden] private void SetStateMachine(IAsyncStateMachine stateMachine) { _003C_003Et__builder.SetStateMachine(stateMachine); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine stateMachine) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(stateMachine); } } public static TarkovApplication _tarkovApplication; public bool finishquest; public void Update() { if (finishquest) { FinishQuests(); finishquest = true; } if (_tarkovApplication == null) { _tarkovApplication = LocationsFixerV2._tarkovApplication; } if (!Settings.hidenick) { return; } _tarkovApplication.GetClientBackEndSession(); _EA29 clientBackEndSession = _tarkovApplication.GetClientBackEndSession(); if (!(_tarkovApplication == null) && clientBackEndSession != null && clientBackEndSession.Profile != null) { Profile profile = clientBackEndSession.Profile; string text = "Empty"; if (profile.Nickname != text) { profile.Info.Nickname = text; ConsoleScreen.Log("NickPatched :-)"); } } } public unsafe async void FinishQuests() { Player localPlayer = Main.LocalPlayer; if (localPlayer == null) { return; } _tarkovApplication.GetClientBackEndSession(); _EA29 session = _tarkovApplication.GetClientBackEndSession(); if (session == null) { ConsoleScreen.Log("Session is null"); return; } FieldInfo fieldInfo = typeof(Player).GetRuntimeFields().FirstOrDefault((FieldInfo x) => x.Name == "_questController"); dynamic questController = fieldInfo.GetValue(localPlayer); dynamic val = questController.Quests; AsyncVoidMethodBuilder asyncVoidMethodBuilder = default(AsyncVoidMethodBuilder); foreach (dynamic quest in val) { if (quest == null) { continue; } dynamic awaiter; if (quest.QuestStatus == EQuestStatus.AvailableAfter) { questController.AcceptQuest(quest, true); awaiter = session.QuestAccept(quest.Template.id, false).GetAwaiter(); if (!(bool)awaiter.IsCompleted) { ICriticalNotifyCompletion awaiter2 = awaiter as ICriticalNotifyCompletion; if (awaiter2 == null) { INotifyCompletion awaiter3 = (INotifyCompletion)(object)awaiter; asyncVoidMethodBuilder.AwaitOnCompleted(ref awaiter3, ref *(_003CFinishQuests_003Ed__4*)/*Error near IL_0567: stateMachine*/); } else { asyncVoidMethodBuilder.AwaitUnsafeOnCompleted(ref awaiter2, ref *(_003CFinishQuests_003Ed__4*)/*Error near IL_057a: stateMachine*/); } /*Error near IL_0583: leave MoveNext - await not detected correctly*/; } awaiter.GetResult(); quest.SetStatus(EQuestStatus.Started, true, true); } if (quest.QuestStatus == EQuestStatus.Success) { continue; } awaiter = quest.QuestStatus == EQuestStatus.Locked; if ((awaiter) || (awaiter | (quest.QuestStatus == EQuestStatus.AvailableForStart)) || (quest.QuestStatus != EQuestStatus.Started) || ((quest.Template == null) ? true : false)) { continue; } ConsoleScreen.Log($"Trying to finish quest: {(object)quest.Template.Name}"); foreach (dynamic item in quest.Template.Conditions) { ConsoleScreen.Log("===== " + item.Key + " ====="); foreach (dynamic item2 in item.Value) { quest.CompletedConditions.Add(item2.id); if (!(item2 is ConditionCounterCreator conditionCounterCreator)) { continue; } foreach (Condition condition in conditionCounterCreator.Conditions) { _ = condition; quest.CompletedConditions.Add(item2.id); } } } try { int tries = 0; dynamic awaiter4; while (true) { quest.SetStatus(EQuestStatus.AvailableForFinish, true, true); quest.SetStatus(EQuestStatus.Success, true, true); ConsoleScreen.Log("Sending Network Request"); questController.FinishQuest(quest, true); if (_003C_003Eo__4._003C_003Ep__50 == null) { _003C_003Eo__4._003C_003Ep__50 = CallSite>.Create(Microsoft.CSharp.RuntimeBinder.Binder.Convert(CSharpBinderFlags.None, typeof(IResult), typeof(QuestModule))); } Func target = _003C_003Eo__4._003C_003Ep__50.Target; CallSite> _003C_003Ep__ = _003C_003Eo__4._003C_003Ep__50; awaiter4 = session.QuestComplete(quest.Template.Id, false, false).GetAwaiter(); if (!(bool)awaiter4.IsCompleted) { break; } awaiter = awaiter4.GetResult(); if (!target(_003C_003Ep__, (object)awaiter).Succeed && tries <= 15) { tries++; Thread.Sleep(500); } } ICriticalNotifyCompletion awaiter2 = awaiter4 as ICriticalNotifyCompletion; if (awaiter2 == null) { INotifyCompletion awaiter3 = (INotifyCompletion)(object)awaiter4; asyncVoidMethodBuilder.AwaitOnCompleted(ref awaiter3, ref *(_003CFinishQuests_003Ed__4*)/*Error near IL_1546: stateMachine*/); } else { asyncVoidMethodBuilder.AwaitUnsafeOnCompleted(ref awaiter2, ref *(_003CFinishQuests_003Ed__4*)/*Error near IL_1559: stateMachine*/); } /*Error near IL_1562: leave MoveNext - await not detected correctly*/; } catch (Exception ex) { ConsoleScreen.Log(ex.ToString()); } await Task.Delay(2500); } } }