using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using Questionable.Model; using Questionable.Model.Questing; namespace Questionable.Validation.Validators; internal sealed class UniqueStartStopValidator : IQuestValidator { [Serializable] [CompilerGenerated] private sealed class _003C_003Ec { public static readonly _003C_003Ec _003C_003E9 = new _003C_003Ec(); public static Func<(QuestSequence Sequence, int StepId, QuestStep Step), bool> _003C_003E9__0_0; public static Func<(QuestSequence Sequence, int StepId, QuestStep Step), bool> _003C_003E9__0_1; internal bool _003CValidate_003Eb__0_0((QuestSequence Sequence, int StepId, QuestStep Step) x) { return _200B_202D_206F_202E_202C_202A_202E_200C_200F_200F_202C_202D_206F_206B_200C_206A_206F_202E_202D_202D_206E_200D_202A_202A_206E_206C_206B_200B_206B_200D_206E_206D_202B_200D_200C_202A_206C_202C_206D_202A_202E(_202B_200E_202A_200E_206E_202A_206B_206B_206D_200D_206B_202D_202D_200D_200D_206C_200C_200C_206E_206E_202E_206C_206E_202E_206D_200B_206D_206F_200F_202A_206A_200F_206E_202D_202A_200C_206B_206B_200E_200E_202E(x.Step), (ElementId)null); } internal bool _003CValidate_003Eb__0_1((QuestSequence Sequence, int StepId, QuestStep Step) x) { return _200B_202D_206F_202E_202C_202A_202E_200C_200F_200F_202C_202D_206F_206B_200C_206A_206F_202E_202D_202D_206E_200D_202A_202A_206E_206C_206B_200B_206B_200D_206E_206D_202B_200D_200C_202A_206C_202C_206D_202A_202E(_200D_200D_202A_202E_200D_202E_206E_200C_206A_206C_202A_200B_206A_200F_206E_202B_206B_200F_200D_206D_202E_200E_202A_206B_206F_206D_202D_206A_202B_200D_206B_200F_206C_200E_200C_206C_206C_202C_202E_206D_202E(x.Step), (ElementId)null); } static ElementId _202B_200E_202A_200E_206E_202A_206B_206B_206D_200D_206B_202D_202D_200D_200D_206C_200C_200C_206E_206E_202E_206C_206E_202E_206D_200B_206D_206F_200F_202A_206A_200F_206E_202D_202A_200C_206B_206B_200E_200E_202E(QuestStep P_0) { return P_0.PickUpQuestId; } static bool _200B_202D_206F_202E_202C_202A_202E_200C_200F_200F_202C_202D_206F_206B_200C_206A_206F_202E_202D_202D_206E_200D_202A_202A_206E_206C_206B_200B_206B_200D_206E_206D_202B_200D_200C_202A_206C_202C_206D_202A_202E(ElementId P_0, ElementId P_1) { return P_0 == P_1; } static ElementId _200D_200D_202A_202E_200D_202E_206E_200C_206A_206C_202A_200B_206A_200F_206E_202B_206B_200F_200D_206D_202E_200E_202A_206B_206F_206D_202D_206A_202B_200D_206B_200F_206C_200E_200C_206C_206C_202C_202E_206D_202E(QuestStep P_0) { return P_0.TurnInQuestId; } } [CompilerGenerated] private sealed class _003C_003Ec__DisplayClass1_0 { public List interactionType; internal bool _003CFindQuestStepsWithInteractionType_003Eb__0((QuestSequence Sequence, int StepId, QuestStep Step) x) { return interactionType.Contains(_200B_202A_206B_200B_200E_202D_206F_202A_202B_202B_206E_202B_206B_202D_206E_200E_200B_206F_200D_200F_202A_202C_206A_202C_200B_200F_206A_200B_206D_200D_206D_202D_200B_200B_202C_202B_200E_206F_202D_206A_202E(x.Step)); } static EInteractionType _200B_202A_206B_200B_200E_202D_206F_202A_202B_202B_206E_202B_206B_202D_206E_200E_200B_206F_200D_200F_202A_202C_206A_202C_200B_200F_206A_200B_206D_200D_206D_202D_200B_200B_202C_202B_200E_206F_202D_206A_202E(QuestStep P_0) { return P_0.InteractionType; } } [CompilerGenerated] private sealed class _003CValidate_003Ed__0 : IEnumerable, IEnumerable, IEnumerator, IEnumerator, IDisposable { private int _003C_003E1__state; private ValidationIssue _003C_003E2__current; private int _003C_003El__initialThreadId; private Quest quest; public Quest _003C_003E3__quest; private bool _003CskipMissingStartStop_003E5__2; private List<(QuestSequence Sequence, int StepId, QuestStep Step)> _003CquestAccepts_003E5__3; private List<(QuestSequence Sequence, int StepId, QuestStep Step)> _003CquestCompletes_003E5__4; private List<(QuestSequence Sequence, int StepId, QuestStep Step)>.Enumerator _003C_003E7__wrap4; ValidationIssue IEnumerator.Current { [DebuggerHidden] get { return _003C_003E2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return _003C_003E2__current; } } [DebuggerHidden] public _003CValidate_003Ed__0(int _003C_003E1__state) { this._003C_003E1__state = _003C_003E1__state; _003C_003El__initialThreadId = _202B_200B_202C_206C_206B_200C_206E_206E_202A_206F_200E_202A_202B_206E_202B_202D_206F_200E_200F_206A_202D_206A_200C_206B_200D_202A_200E_200D_202D_200E_200C_202B_206F_206B_200F_200B_200D_206C_200C_200E_202E(); } [DebuggerHidden] void IDisposable.Dispose() { int num = _003C_003E1__state; int num2 = ((num > -3) ? 654863638 : 654863634); while (true) { int num3 = num2; int num4 = 654863632; int num5 = num3; int num6 = num5 + num4; int num7 = num5 & num4; switch (num6 - (num7 + num7)) { default: continue; case 3: num2 = 654863634; continue; case 1: num2 = ((num == -3) ? 654863639 : 654863637); continue; case 6: num2 = ((num == 1) ? 654863639 : 654863632); continue; case 0: if (num != 3) { num2 = 654863636; continue; } goto IL_00f9; case 2: if (num != -4) { num2 = 654863633; continue; } goto IL_00f9; case 7: try { } finally { _003C_003Em__Finally1(); } break; case 4: case 5: break; IL_00f9: try { } finally { _003C_003Em__Finally2(); } break; } break; } _003CquestAccepts_003E5__3 = null; _003CquestCompletes_003E5__4 = null; _003C_003E7__wrap4 = default(List<(QuestSequence, int, QuestStep)>.Enumerator); _003C_003E1__state = -2; } [MethodImpl(MethodImplOptions.NoInlining)] private bool MoveNext() { try { int num; (QuestSequence, int, QuestStep) current2 = default((QuestSequence, int, QuestStep)); (QuestSequence, int, QuestStep) current = default((QuestSequence, int, QuestStep)); switch (_003C_003E1__state) { default: num = -177960474; goto IL_002d; case 3: _003C_003E1__state = -4; num = -177960463; goto IL_002d; case 0: goto IL_0189; case 2: goto IL_021b; case 1: goto IL_022e; case 4: goto IL_042d; IL_002d: while (true) { int num2 = num; int num3 = -177960473; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 3: num = -177960474; break; case 23: goto IL_00bd; case 5: goto IL_00f8; case 14: goto end_IL_002d; case 17: goto IL_0139; case 6: goto IL_0161; case 11: goto IL_0189; case 20: goto IL_021b; case 12: goto IL_022e; case 4: goto IL_0242; case 19: _003C_003E2__current = new ValidationIssue { PathType = EPathType.Quest, Id = _200B_206B_200B_202A_202E_200B_202C_200B_200B_206D_206C_206E_206C_200F_202A_206C_206D_202A_206F_202A_206E_202B_200B_202D_206C_202A_206F_206E_206B_206E_206E_206F_200C_202B_206E_202A_206C_206B_200B_202B_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation(0, null), Type = EIssueType.MissingQuestAccept, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(-1425508003) }; _003C_003E1__state = 2; return true; case 2: _003C_003E2__current = new ValidationIssue { PathType = EPathType.Quest, Id = _200B_206B_200B_202A_202E_200B_202C_200B_200B_206D_206C_206E_206C_200F_202A_206C_206D_202A_206F_202A_206E_202B_200B_202D_206C_202A_206F_206E_206B_206E_206E_206F_200C_202B_206E_202A_206C_206B_200B_202B_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation(_200C_200D_206A_200B_200E_202D_200E_206C_200B_200D_202C_200F_200C_202C_206E_206F_200B_202D_206C_200B_202D_206C_206B_200E_200B_200D_200B_200E_206E_206D_202C_202C_206F_202D_200D_202D_202A_200E_206C_202D_202E(current2.Item1), current2.Item2), Type = EIssueType.UnexpectedCompleteQuestStep, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(1505174393) }; _003C_003E1__state = 3; return true; case 9: goto IL_0379; case 8: _003C_003E2__current = new ValidationIssue { PathType = EPathType.Quest, Id = _200B_206B_200B_202A_202E_200B_202C_200B_200B_206D_206C_206E_206C_200F_202A_206C_206D_202A_206F_202A_206E_202B_200B_202D_206C_202A_206F_206E_206B_206E_206E_206F_200C_202B_206E_202A_206C_206B_200B_202B_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation((byte)byte.MaxValue, null), Type = EIssueType.MissingQuestComplete, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(1217373352) }; _003C_003E1__state = 4; return true; case 15: goto IL_042d; case 21: goto IL_0440; case 13: _003CquestCompletes_003E5__4 = (from x in FindQuestStepsWithInteractionType(quest, new List { EInteractionType.CompleteQuest }) where _003C_003Ec._200B_202D_206F_202E_202C_202A_202E_200C_200F_200F_202C_202D_206F_206B_200C_206A_206F_202E_202D_202D_206E_200D_202A_202A_206E_206C_206B_200B_206B_200D_206E_206D_202B_200D_200C_202A_206C_202C_206D_202A_202E(_003C_003Ec._200D_200D_202A_202E_200D_202E_206E_200C_206A_206C_202A_200B_206A_200F_206E_202B_206B_200F_200D_206D_202E_200E_202A_206B_206F_206D_202D_206A_202B_200D_206B_200F_206C_200E_200C_206C_206C_202C_202E_206D_202E(x.Step), (ElementId)null) select x).ToList(); _003C_003E7__wrap4 = _003CquestCompletes_003E5__4.GetEnumerator(); _003C_003E1__state = -4; num = -177960463; break; case 1: return false; case 24: _003C_003E2__current = new ValidationIssue { PathType = EPathType.Quest, Id = _200B_206B_200B_202A_202E_200B_202C_200B_200B_206D_206C_206E_206C_200F_202A_206C_206D_202A_206F_202A_206E_202B_200B_202D_206C_202A_206F_206E_206B_206E_206E_206F_200C_202B_206E_202A_206C_206B_200B_202B_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation(_200C_200D_206A_200B_200E_202D_200E_206C_200B_200D_202C_200F_200C_202C_206E_206F_200B_202D_206C_200B_202D_206C_206B_200E_200B_200D_200B_200E_206E_206D_202C_202C_206F_202D_200D_202D_202A_200E_206C_202D_202E(current.Item1), current.Item2), Type = EIssueType.UnexpectedAcceptQuestStep, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E(-230957138) }; _003C_003E1__state = 1; return true; case 22: goto IL_0572; case 10: goto IL_059a; case 18: goto IL_05da; case 7: goto IL_0615; case 0: goto IL_063d; case 16: return false; } continue; IL_063d: _003C_003Em__Finally2(); _003C_003E7__wrap4 = default(List<(QuestSequence, int, QuestStep)>.Enumerator); num = (_003CskipMissingStartStop_003E5__2 ? (-177960457) : (-177960478)); continue; IL_0572: num = (_003C_003E7__wrap4.MoveNext() ? (-177960459) : (-177960473)); continue; IL_00f8: num = ((quest.FindSequence(byte.MaxValue) == null) ? (-177960457) : (-177960480)); continue; IL_0615: num = ((_003CquestCompletes_003E5__4.Count != 0) ? (-177960457) : (-177960465)); continue; IL_0242: current = _003C_003E7__wrap4.Current; num = ((_200C_200D_206A_200B_200E_202D_200E_206C_200B_200D_202C_200F_200C_202C_206E_206F_200B_202D_206C_200B_202D_206C_206B_200E_200B_200D_200B_200E_206E_206D_202C_202C_206F_202D_200D_202D_202A_200E_206C_202D_202E(current.Item1) != 0) ? (-177960449) : (-177960464)); continue; IL_0440: num = ((quest.FindSequence(0) == null) ? (-177960470) : (-177960458)); continue; IL_05da: current2 = _003C_003E7__wrap4.Current; num = ((_200C_200D_206A_200B_200E_202D_200E_206C_200B_200D_202C_200F_200C_202C_206E_206F_200B_202D_206C_200B_202D_206C_206B_200E_200B_200D_200B_200E_206E_206D_202C_202C_206F_202D_200D_202D_202A_200E_206C_202D_202E(current2.Item1) != byte.MaxValue) ? (-177960475) : (-177960467)); continue; IL_00bd: num = ((current.Item2 == _200E_202C_200D_202C_200D_202B_202E_206B_202E_200C_200C_206F_202E_206C_202C_202D_206C_202C_202B_206C_202C_206B_200C_206E_206E_200C_206D_202A_200F_206F_202B_202C_200E_206D_206F_206D_206E_202B_202B_206F_202E(quest.FindSequence(0)).Count - 1) ? (-177960479) : (-177960449)); continue; IL_0139: num = ((_003CquestAccepts_003E5__3.Count != 0) ? (-177960470) : (-177960460)); continue; IL_059a: num = ((current2.Item2 == _200E_202C_200D_202C_200D_202B_202E_206B_202E_200C_200C_206F_202E_206C_202C_202D_206C_202C_202B_206C_202C_206B_200C_206E_206E_200C_206D_202A_200F_206F_202B_202C_200E_206D_206F_206D_206E_202B_202B_206F_202E(quest.FindSequence(byte.MaxValue)).Count - 1) ? (-177960463) : (-177960475)); continue; IL_0379: _003C_003Em__Finally1(); _003C_003E7__wrap4 = default(List<(QuestSequence, int, QuestStep)>.Enumerator); num = (_003CskipMissingStartStop_003E5__2 ? (-177960470) : (-177960462)); continue; IL_0161: num = (_003C_003E7__wrap4.MoveNext() ? (-177960477) : (-177960466)); continue; end_IL_002d: break; } goto case 3; IL_042d: _003C_003E1__state = -1; num = -177960457; goto IL_002d; IL_022e: _003C_003E1__state = -3; num = -177960479; goto IL_002d; IL_021b: _003C_003E1__state = -1; num = -177960470; goto IL_002d; IL_0189: _003C_003E1__state = -1; _003CskipMissingStartStop_003E5__2 = !(quest.Id is QuestId); _003CquestAccepts_003E5__3 = (from x in FindQuestStepsWithInteractionType(quest, new List { EInteractionType.AcceptQuest }) where _003C_003Ec._200B_202D_206F_202E_202C_202A_202E_200C_200F_200F_202C_202D_206F_206B_200C_206A_206F_202E_202D_202D_206E_200D_202A_202A_206E_206C_206B_200B_206B_200D_206E_206D_202B_200D_200C_202A_206C_202C_206D_202A_202E(_003C_003Ec._202B_200E_202A_200E_206E_202A_206B_206B_206D_200D_206B_202D_202D_200D_200D_206C_200C_200C_206E_206E_202E_206C_206E_202E_206D_200B_206D_206F_200F_202A_206A_200F_206E_202D_202A_200C_206B_206B_200E_200E_202E(x.Step), (ElementId)null) select x).ToList(); _003C_003E7__wrap4 = _003CquestAccepts_003E5__3.GetEnumerator(); _003C_003E1__state = -3; num = -177960479; goto IL_002d; } } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void _003C_003Em__Finally1() { _003C_003E1__state = -1; ((IDisposable)_003C_003E7__wrap4/*cast due to .constrained prefix*/).Dispose(); } private void _003C_003Em__Finally2() { _003C_003E1__state = -1; ((IDisposable)_003C_003E7__wrap4/*cast due to .constrained prefix*/).Dispose(); } [DebuggerHidden] void IEnumerator.Reset() { throw _206F_202E_206A_202E_206E_200D_202A_206F_200D_202A_200E_202A_202E_200E_202C_206B_200C_206C_200B_206A_202C_202C_202D_206F_202C_200C_206B_206D_206F_200D_200D_200E_202C_206C_200F_202C_200C_206F_202E_202E_202E(); } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { int num = ((_003C_003E1__state != -2) ? 1591254497 : 1591254499); _003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0); while (true) { int num2 = num; int num3 = 1591254498; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: num = 1591254499; break; case 2: _003CValidate_003Ed__.quest = _003C_003E3__quest; return _003CValidate_003Ed__; case 1: num = ((_003C_003El__initialThreadId != _202B_200B_202C_206C_206B_200C_206E_206E_202A_206F_200E_202A_202B_206E_202B_202D_206F_200E_200F_206A_202D_206A_200C_206B_200D_202A_200E_200D_202D_200E_200C_202B_206F_206B_200F_200B_200D_206C_200C_200E_202E()) ? 1591254497 : 1591254502); break; case 3: _003CValidate_003Ed__ = new _003CValidate_003Ed__0(0); num = 1591254496; break; case 4: _003C_003E1__state = 0; _003CValidate_003Ed__ = this; num = 1591254496; break; } } } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)this).GetEnumerator(); } static int _202B_200B_202C_206C_206B_200C_206E_206E_202A_206F_200E_202A_202B_206E_202B_202D_206F_200E_200F_206A_202D_206A_200C_206B_200D_202A_200E_200D_202D_200E_200C_202B_206F_206B_200F_200B_200D_206C_200C_200E_202E() { return Environment.CurrentManagedThreadId; } static byte _200C_200D_206A_200B_200E_202D_200E_206C_200B_200D_202C_200F_200C_202C_206E_206F_200B_202D_206C_200B_202D_206C_206B_200E_200B_200D_200B_200E_206E_206D_202C_202C_206F_202D_200D_202D_202A_200E_206C_202D_202E(QuestSequence P_0) { return P_0.Sequence; } static List _200E_202C_200D_202C_200D_202B_202E_206B_202E_200C_200C_206F_202E_206C_202C_202D_206C_202C_202B_206C_202C_206B_200C_206E_206E_200C_206D_202A_200F_206F_202B_202C_200E_206D_206F_206D_206E_202B_202B_206F_202E(QuestSequence P_0) { return P_0.Steps; } static string _200B_206B_200B_202A_202E_200B_202C_200B_200B_206D_206C_206E_206C_200F_202A_206C_206D_202A_206F_202A_206E_202B_200B_202D_206C_202A_206F_206E_206B_206E_206E_206F_200C_202B_206E_202A_206C_206B_200B_202B_202E(object P_0) { return P_0.ToString(); } static NotSupportedException _206F_202E_206A_202E_206E_200D_202A_206F_200D_202A_200E_202A_202E_200E_202C_206B_200C_206C_200B_206A_202C_202C_202D_206F_202C_200C_206B_206D_206F_200D_200D_200E_202C_206C_200F_202C_200C_206F_202E_202E_202E() { return new NotSupportedException(); } } [IteratorStateMachine(typeof(_003CValidate_003Ed__0))] public IEnumerable Validate(Quest quest) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new _003CValidate_003Ed__0(-2) { _003C_003E3__quest = quest }; } IEnumerable IQuestValidator.Validate(Quest quest) { //ILSpy generated this explicit interface implementation from .override directive in Validate return this.Validate(quest); } private static IEnumerable<(QuestSequence Sequence, int StepId, QuestStep Step)> FindQuestStepsWithInteractionType(Quest quest, List interactionType) { return from x in quest.AllSteps() where interactionType.Contains(_003C_003Ec__DisplayClass1_0._200B_202A_206B_200B_200E_202D_206F_202A_202B_202B_206E_202B_206B_202D_206E_200E_200B_206F_200D_200F_202A_202C_206A_202C_200B_200F_206A_200B_206D_200D_206D_202D_200B_200B_202C_202B_200E_206F_202D_206A_202E(x.Step)) select x; } }