1
0
Fork 0
forked from aly/qstbak

muffin v7.5.11

This commit is contained in:
alydev 2026-08-17 20:29:32 +10:00
parent addf2d530f
commit 3102923ce2
522 changed files with 41082 additions and 211592 deletions

View file

@ -1,9 +1,5 @@
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;
@ -11,494 +7,95 @@ namespace Questionable.Validation.Validators;
internal sealed class BasicSequenceValidator : IQuestValidator
{
[Serializable]
[CompilerGenerated]
private sealed class _003C_003Ec
{
public static readonly _003C_003Ec _003C_003E9 = new _003C_003Ec();
public static Func<QuestSequence, bool> _003C_003E9__0_0;
public static Func<QuestSequence, byte> _003C_003E9__0_1;
public static Func<byte, bool> _003C_003E9__0_2;
public static Func<QuestSequence, bool> _003C_003E9__0_3;
internal bool _003CValidate_003Eb__0_0(QuestSequence x)
{
return _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == 0;
}
internal byte _003CValidate_003Eb__0_1(QuestSequence x)
{
return _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x);
}
internal bool _003CValidate_003Eb__0_2(byte x)
{
return x != byte.MaxValue;
}
internal bool _003CValidate_003Eb__0_3(QuestSequence x)
{
return _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == byte.MaxValue;
}
static byte _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
}
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass0_0
{
public int i;
internal bool _003CValidate_003Eb__4(QuestSequence x)
{
return _200B_206E_200F_200B_206B_200C_206A_206F_206C_202B_200B_202E_202E_200D_200D_206F_206C_200C_200F_202E_200E_200E_206D_206D_206A_200B_202A_202B_206A_202B_202A_206C_206D_202B_206F_202C_206B_202E_206B_200E_202E(x) == i;
}
static byte _200B_206E_200F_200B_206B_200C_206A_206F_206C_202B_200B_202E_202E_200D_200D_206F_206C_200C_200F_202E_200E_200E_206D_206D_206A_200B_202A_202B_206A_202B_202A_206C_206D_202B_206F_202C_206B_202E_206B_200E_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__0 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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 _003C_003Ec__DisplayClass0_0 _003C_003E8__1;
private List<QuestSequence> _003Csequences_003E5__2;
private QuestSequence _003CfoundStart_003E5__3;
private List<QuestSequence>.Enumerator _003C_003E7__wrap3;
private int _003CmaxSequence_003E5__5;
ValidationIssue IEnumerator<ValidationIssue>.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 = _202D_202D_202E_206D_200D_206B_200E_200B_202E_200E_206C_206E_200B_202E_206A_202C_202C_202C_206F_200F_200F_200F_206C_202D_200D_200C_202C_200C_202D_206A_202A_202C_200E_206A_206E_206D_202E_202E_206E_202A_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? (-1108787515) : (-1108787514));
while (true)
{
int num3 = num2;
int num4 = -1108787516;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
default:
continue;
case 0:
num2 = -1108787514;
continue;
case 2:
if (num == 2)
{
num2 = -1108787515;
continue;
}
break;
case 1:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E8__1 = null;
_003Csequences_003E5__2 = null;
_003CfoundStart_003E5__3 = null;
_003C_003E7__wrap3 = default(List<QuestSequence>.Enumerator);
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num;
ValidationIssue validationIssue = default(ValidationIssue);
QuestSequence current = default(QuestSequence);
ValidationIssue validationIssue2 = default(ValidationIssue);
QuestInfo questInfo = default(QuestInfo);
switch (_003C_003E1__state)
{
default:
num = -218365441;
goto IL_002d;
case 1:
break;
case 2:
_003C_003E1__state = -3;
num = -218365453;
goto IL_002d;
case 0:
goto IL_01f4;
case 3:
goto IL_02ac;
case 4:
goto IL_0597;
IL_002d:
while (true)
{
int num2 = num;
int num3 = -218365443;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 22:
goto IL_00ad;
case 18:
goto end_IL_0008;
case 15:
goto end_IL_002d;
case 23:
goto IL_014f;
case 2:
return false;
case 6:
goto IL_018f;
case 4:
{
int num5 = _003C_003E8__1.i;
_003C_003Ec__DisplayClass0_0 _003C_003Ec__DisplayClass0_ = _003C_003E8__1;
num3 = 1;
num4 = num5;
_003C_003Ec__DisplayClass0_.i = (num4 | num3) + (num4 & num3);
num = -218365456;
break;
}
case 16:
goto IL_01f4;
case 17:
_003C_003E2__current = validationIssue;
_003C_003E1__state = 4;
return true;
case 1:
goto IL_0289;
case 3:
goto IL_02ac;
case 7:
_003C_003E2__current = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _206B_206C_202D_206D_202B_202B_202E_202B_200C_206F_202A_200E_206B_202B_200F_200F_202E_202A_200C_200B_200F_200F_206F_206C_206B_206F_206F_202A_206E_202E_202A_206A_202B_206C_206B_200E_200D_206C_206A_206E_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(_206E_200F_200C_206F_200D_200D_200F_202D_202C_206A_206D_202A_206C_200F_206C_200B_202A_200B_206F_200E_206E_206F_206C_202B_200F_206E_202B_202E_200E_206B_200C_202E_202E_200C_202B_200E_202A_202C_202B_200F_202E(current), null),
Type = EIssueType.InstantQuestWithMultipleSteps,
Severity = EIssueSeverity.Error,
Description = global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-1806487031)
};
_003C_003E1__state = 2;
return true;
case 20:
goto IL_0340;
case 5:
_003C_003E2__current = validationIssue2;
_003C_003E1__state = 3;
return true;
case 9:
goto IL_03c4;
case 10:
_003CmaxSequence_003E5__5 = (from x in _003Csequences_003E5__2
select _003C_003Ec._206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) into x
where x != byte.MaxValue
select x).Max();
_003C_003E8__1 = new _003C_003Ec__DisplayClass0_0();
_003C_003E8__1.i = 0;
num = -218365456;
break;
case 11:
num = -218365441;
break;
case 14:
goto IL_0484;
case 13:
goto IL_04ac;
case 8:
_003C_003E2__current = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _206B_206C_202D_206D_202B_202B_202E_202B_200C_206F_202A_200E_206B_202B_200F_200F_202E_202A_200C_200B_200F_200F_206F_206C_206B_206F_206F_202A_206E_202E_202A_206A_202B_206C_206B_200E_200D_206C_206A_206E_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(0, null),
Type = EIssueType.MissingSequence0,
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<string>(-1619010830)
};
_003C_003E1__state = 1;
return true;
case 21:
_003C_003E7__wrap3 = _003Csequences_003E5__2.GetEnumerator();
_003C_003E1__state = -3;
num = -218365453;
break;
case 19:
_003C_003Em__Finally1();
_003C_003E7__wrap3 = default(List<QuestSequence>.Enumerator);
num = -218365443;
break;
case 12:
goto IL_0597;
case 0:
return false;
}
continue;
IL_04ac:
num = ((_003C_003E8__1.i <= _003CmaxSequence_003E5__5) ? (-218365463) : (-218365461));
continue;
IL_014f:
num = ((!(quest.Info is QuestInfo)) ? (-218365443) : (-218365449));
continue;
IL_0340:
List<QuestSequence> foundSequences = _003Csequences_003E5__2.Where((QuestSequence x) => _003C_003Ec__DisplayClass0_0._200B_206E_200F_200B_206B_200C_206A_206F_206C_202B_200B_202E_202E_200D_200D_206F_206C_200C_200F_202E_200E_200E_206D_206D_206A_200B_202A_202B_206A_202B_202A_206C_206D_202B_206F_202C_206B_202E_206B_200E_202E(x) == _003C_003E8__1.i).ToList();
validationIssue2 = ValidateSequences(quest, _003C_003E8__1.i, foundSequences);
num = ((!(validationIssue2 != null)) ? (-218365447) : (-218365448));
continue;
IL_0484:
num = (_003C_003E7__wrap3.MoveNext() ? (-218365452) : (-218365458));
continue;
IL_00ad:
_003C_003E8__1 = null;
List<QuestSequence> foundSequences2 = _003Csequences_003E5__2.Where((QuestSequence x) => _003C_003Ec._206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == byte.MaxValue).ToList();
validationIssue = ValidateSequences(quest, 255, foundSequences2);
num = ((!(validationIssue != null)) ? (-218365443) : (-218365460));
continue;
IL_018f:
questInfo = quest.Info as QuestInfo;
num = ((questInfo == null) ? (-218365462) : (-218365444));
continue;
IL_03c4:
current = _003C_003E7__wrap3.Current;
num = ((current == _003CfoundStart_003E5__3) ? (-218365453) : (-218365446));
continue;
IL_0289:
num = ((!questInfo.CompletesInstantly) ? (-218365462) : (-218365464));
continue;
end_IL_002d:
break;
}
goto case 2;
IL_0597:
_003C_003E1__state = -1;
num = -218365443;
goto IL_002d;
IL_02ac:
_003C_003E1__state = -1;
num = -218365447;
goto IL_002d;
IL_01f4:
_003C_003E1__state = -1;
_003Csequences_003E5__2 = _200C_200F_200F_202E_206E_202D_206F_202A_200B_200B_206F_206B_206A_206E_202B_200D_200D_200E_200E_206B_206C_200B_206A_206E_200E_202D_202E_202E_202C_206F_202C_202E_206C_200C_206C_202B_206E_202E_200C_200E_202E(quest.Root);
_003CfoundStart_003E5__3 = _003Csequences_003E5__2.FirstOrDefault((QuestSequence x) => _003C_003Ec._206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == 0);
num = ((_003CfoundStart_003E5__3 != null) ? (-218365445) : (-218365451));
goto IL_002d;
end_IL_0008:
break;
}
_003C_003E1__state = -1;
return false;
}
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__wrap3/*cast due to .constrained prefix*/).Dispose();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _200E_200E_206C_202A_206E_200B_202A_200C_200D_202E_200B_206A_202C_200D_202D_206E_202D_206B_206C_206A_200D_200E_206F_206A_200C_202B_206B_206E_202C_202C_206A_202C_202A_202B_206E_200D_206B_202E_200C_206D_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? (-1853104470) : (-1853104472));
_003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0);
while (true)
{
int num2 = num;
int num3 = -1853104471;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 4:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 1:
num = ((_003C_003El__initialThreadId != _202D_202D_202E_206D_200D_206B_200E_200B_202E_200E_206C_206E_200B_202E_206A_202C_202C_202C_206F_200F_200F_200F_206C_202D_200D_200C_202C_200C_202D_206A_202A_202C_200E_206A_206E_206D_202E_202E_206E_202A_202E()) ? (-1853104470) : (-1853104469));
break;
case 2:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = -1853104467;
break;
case 0:
num = -1853104472;
break;
case 3:
_003CValidate_003Ed__ = new _003CValidate_003Ed__0(0);
num = -1853104467;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _202D_202D_202E_206D_200D_206B_200E_200B_202E_200E_206C_206E_200B_202E_206A_202C_202C_202C_206F_200F_200F_200F_206C_202D_200D_200C_202C_200C_202D_206A_202A_202C_200E_206A_206E_206D_202E_202E_206E_202A_202E()
{
return Environment.CurrentManagedThreadId;
}
static List<QuestSequence> _200C_200F_200F_202E_206E_202D_206F_202A_200B_200B_206F_206B_206A_206E_202B_200D_200D_200E_200E_206B_206C_200B_206A_206E_200E_202D_202E_202E_202C_206F_202C_202E_206C_200C_206C_202B_206E_202E_200C_200E_202E(QuestRoot P_0)
{
return P_0.QuestSequence;
}
static string _206B_206C_202D_206D_202B_202B_202E_202B_200C_206F_202A_200E_206B_202B_200F_200F_202E_202A_200C_200B_200F_200F_206F_206C_206B_206F_206F_202A_206E_202E_202A_206A_202B_206C_206B_200E_200D_206C_206A_206E_202E(object P_0)
{
return P_0.ToString();
}
static byte _206E_200F_200C_206F_200D_200D_200F_202D_202C_206A_206D_202A_206C_200F_206C_200B_202A_200B_206F_200E_206E_206F_206C_202B_200F_206E_202B_202E_200E_206B_200C_202E_202E_200C_202B_200E_202A_202C_202B_200F_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
static NotSupportedException _200E_200E_206C_202A_206E_200B_202A_200C_200D_202E_200B_206A_202C_200D_202D_206E_202D_206B_206C_206A_200D_200E_206F_206A_200C_202B_206B_206E_202C_202C_206A_202C_202A_202B_206E_200D_206B_202E_200C_206D_202E()
{
return new NotSupportedException();
}
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__0))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__0(-2)
List<QuestSequence> sequences = quest.Root.QuestSequence;
QuestSequence foundStart = sequences.FirstOrDefault((QuestSequence x) => x.Sequence == 0);
if (foundStart == null)
{
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
}
[MethodImpl(MethodImplOptions.NoInlining)]
private static ValidationIssue? ValidateSequences(Quest quest, int sequenceNo, List<QuestSequence> foundSequences)
{
int num = ((foundSequences.Count != 0) ? (-2063346227) : (-2063346230));
while (true)
{
int num2 = num;
int num3 = -2063346231;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
yield return new ValidationIssue
{
case 0:
num = -2063346230;
break;
case 3:
return new ValidationIssue
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(0, null),
Type = EIssueType.MissingSequence0,
Severity = EIssueSeverity.Error,
Description = "Missing quest start"
};
}
else if (quest.Info is QuestInfo { CompletesInstantly: not false })
{
foreach (QuestSequence item in sequences)
{
if (item != foundStart)
{
PathType = EPathType.Quest,
Id = _206D_206D_206D_206D_202B_202D_202C_202A_206C_206A_206C_202B_206E_200B_202E_200C_202C_206E_206B_202A_206F_200F_206D_206F_202D_206F_200E_206B_206D_200C_202A_200B_202C_200B_202B_202D_206A_206E_202D_202B_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation((byte)sequenceNo, null),
Type = EIssueType.MissingSequence,
Severity = EIssueSeverity.Error,
Description = global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(1578841753)
};
case 4:
num = ((foundSequences.Count < 2) ? (-2063346229) : (-2063346232));
break;
case 1:
return new ValidationIssue
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(item.Sequence, null),
Type = EIssueType.InstantQuestWithMultipleSteps,
Severity = EIssueSeverity.Error,
Description = "Instant quest should not have any sequences after the start"
};
}
}
}
else
{
if (!(quest.Info is QuestInfo))
{
yield break;
}
int maxSequence = (from x in sequences
select x.Sequence into x
where x != byte.MaxValue
select x).Max();
int i;
for (i = 0; i <= maxSequence; i++)
{
List<QuestSequence> foundSequences = sequences.Where((QuestSequence x) => x.Sequence == i).ToList();
ValidationIssue validationIssue = ValidateSequences(quest, i, foundSequences);
if (validationIssue != null)
{
PathType = EPathType.Quest,
Id = _206D_206D_206D_206D_202B_202D_202C_202A_206C_206A_206C_202B_206E_200B_202E_200C_202C_206E_206B_202A_206F_200F_206D_206F_202D_206F_200E_206B_206D_200C_202A_200B_202C_200B_202B_202D_206A_206E_202D_202B_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation((byte)sequenceNo, null),
Type = EIssueType.DuplicateSequence,
Severity = EIssueSeverity.Error,
Description = global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-312193419)
};
case 2:
return null;
yield return validationIssue;
}
}
List<QuestSequence> foundSequences2 = sequences.Where((QuestSequence x) => x.Sequence == byte.MaxValue).ToList();
ValidationIssue validationIssue2 = ValidateSequences(quest, 255, foundSequences2);
if (validationIssue2 != null)
{
yield return validationIssue2;
}
}
}
static string _206D_206D_206D_206D_202B_202D_202C_202A_206C_206A_206C_202B_206E_200B_202E_200C_202C_206E_206B_202A_206F_200F_206D_206F_202D_206F_200E_206B_206D_200C_202A_200B_202C_200B_202B_202D_206A_206E_202D_202B_202E(object P_0)
private static ValidationIssue? ValidateSequences(Quest quest, int sequenceNo, List<QuestSequence> foundSequences)
{
return P_0.ToString();
if (foundSequences.Count == 0)
{
return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation((byte)sequenceNo, null),
Type = EIssueType.MissingSequence,
Severity = EIssueSeverity.Error,
Description = "Missing sequence"
};
}
if (foundSequences.Count >= 2)
{
return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation((byte)sequenceNo, null),
Type = EIssueType.DuplicateSequence,
Severity = EIssueSeverity.Error,
Description = "Duplicate sequence"
};
}
return null;
}
}

View file

@ -1,10 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;
using Questionable.Controller.Utils;
using Questionable.Model;
using Questionable.Model.Questing;
@ -13,523 +9,38 @@ namespace Questionable.Validation.Validators;
internal sealed class CompletionFlagsValidator : IQuestValidator
{
[Serializable]
[CompilerGenerated]
private sealed class _003C_003Ec
{
public static readonly _003C_003Ec _003C_003E9 = new _003C_003Ec();
public static Func<QuestStep, long> _003C_003E9__0_0;
internal long _003CValidate_003Eb__0_0(QuestStep x)
{
_003C_003Ec__DisplayClass0_0 CS_0024_003C_003E8__locals2 = new _003C_003Ec__DisplayClass0_0
{
x = x
};
int num = ((!QuestWorkUtils.HasCompletionFlags(_202E_206D_202E_200E_202B_200E_202A_202B_206C_200B_200E_200D_200B_200C_206B_206B_206E_206B_202E_202E_200F_200C_202B_200F_200F_200B_202C_206F_202E_202A_206A_202B_200F_200F_202A_200C_206F_200B_202D_200E_202E(CS_0024_003C_003E8__locals2.x))) ? 1047291959 : 1047291956);
while (true)
{
int num2 = num;
int num3 = 1047291957;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
return 0L;
case 1:
return _202B_202E_206B_206B_200C_206D_202A_202B_200B_206B_206B_200D_200F_202A_206D_200F_206F_200B_206D_202B_200E_206D_200C_202C_206C_200E_200B_202A_202B_200C_200F_200B_200D_202B_200D_202C_206C_200F_206E_206D_202E(_200D_200F_202E_200F_200C_202D_202E_200E_202A_200B_200B_200E_206A_206D_206E_200C_202A_200D_202A_206D_202C_200E_206F_206E_206E_202A_202D_206F_202C_200E_206E_206E_200E_206C_202D_206F_206D_206B_200F_200E_202E(0, 6).Select(delegate(int y)
{
QuestWorkValue questWorkValue = _003C_003Ec__DisplayClass0_0._200D_200B_206D_206B_200B_202C_202E_202B_206C_206E_206E_206C_206F_200B_206A_206D_200C_200B_200F_202C_200D_202D_200D_200D_206E_202E_206B_200B_200E_206B_206A_200D_202B_206A_202D_206E_202B_200D_206E_206D_202E(CS_0024_003C_003E8__locals2.x)[y];
int num5 = ((questWorkValue != null) ? 1457577313 : 1457577314);
while (true)
{
int num6 = num5;
int num7 = 1457577315;
int num8 = num6;
switch ((num8 | num7) - (num8 & num7))
{
case 0:
goto IL_0056;
case 2:
return (long)_003C_003Ec__DisplayClass0_0._200C_206F_202B_202D_206C_202A_202B_200C_206B_206E_202D_206C_202D_206E_202D_200B_202D_200E_206C_206C_200F_202E_206D_202C_200F_202D_206C_202E_206E_200C_206C_202C_202E_200E_206A_200E_202D_206A_202A_200D_202E((ulong)(_003C_003Ec__DisplayClass0_0._202D_202C_206D_206D_202A_206E_206A_206D_206B_206A_202D_202D_202E_202A_206C_200B_202D_202C_202A_206E_200E_200C_200E_202E_206C_202E_206A_202E_202B_202B_200F_200E_200B_200D_202B_202A_200F_202C_206D_206F_202E(questWorkValue).GetValueOrDefault() * 16 + _003C_003Ec__DisplayClass0_0._200C_202A_200D_200E_202B_206F_206D_206C_206B_200E_202C_206D_202A_200E_202B_202E_202D_206D_206D_206E_200F_200F_202A_206A_200D_206A_206D_206C_206F_202A_202D_206B_206A_206D_202B_200E_202A_200B_202C_202E(questWorkValue).GetValueOrDefault()), 8 * y);
case 1:
return 0L;
}
continue;
IL_0056:
num5 = 1457577314;
}
}));
case 0:
goto IL_007e;
}
continue;
IL_007e:
num = 1047291956;
}
}
static List<QuestWorkValue> _202E_206D_202E_200E_202B_200E_202A_202B_206C_200B_200E_200D_200B_200C_206B_206B_206E_206B_202E_202E_200F_200C_202B_200F_200F_200B_202C_206F_202E_202A_206A_202B_200F_200F_202A_200C_206F_200B_202D_200E_202E(QuestStep P_0)
{
return P_0.CompletionQuestVariablesFlags;
}
static IEnumerable<int> _200D_200F_202E_200F_200C_202D_202E_200E_202A_200B_200B_200E_206A_206D_206E_200C_202A_200D_202A_206D_202C_200E_206F_206E_206E_202A_202D_206F_202C_200E_206E_206E_200E_206C_202D_206F_206D_206B_200F_200E_202E(int P_0, int P_1)
{
return Enumerable.Range(P_0, P_1);
}
static long _202B_202E_206B_206B_200C_206D_202A_202B_200B_206B_206B_200D_200F_202A_206D_200F_206F_200B_206D_202B_200E_206D_200C_202C_206C_200E_200B_202A_202B_200C_200F_200B_200D_202B_200D_202C_206C_200F_206E_206D_202E(IEnumerable<long> P_0)
{
return P_0.Sum();
}
}
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass0_0
{
public QuestStep x;
internal long _003CValidate_003Eb__1(int y)
{
QuestWorkValue questWorkValue = _200D_200B_206D_206B_200B_202C_202E_202B_206C_206E_206E_206C_206F_200B_206A_206D_200C_200B_200F_202C_200D_202D_200D_200D_206E_202E_206B_200B_200E_206B_206A_200D_202B_206A_202D_206E_202B_200D_206E_206D_202E(x)[y];
int num = ((questWorkValue != null) ? 1457577313 : 1457577314);
while (true)
{
int num2 = num;
int num3 = 1457577315;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
goto IL_0056;
case 2:
return (long)_200C_206F_202B_202D_206C_202A_202B_200C_206B_206E_202D_206C_202D_206E_202D_200B_202D_200E_206C_206C_200F_202E_206D_202C_200F_202D_206C_202E_206E_200C_206C_202C_202E_200E_206A_200E_202D_206A_202A_200D_202E((ulong)(_202D_202C_206D_206D_202A_206E_206A_206D_206B_206A_202D_202D_202E_202A_206C_200B_202D_202C_202A_206E_200E_200C_200E_202E_206C_202E_206A_202E_202B_202B_200F_200E_200B_200D_202B_202A_200F_202C_206D_206F_202E(questWorkValue).GetValueOrDefault() * 16 + _200C_202A_200D_200E_202B_206F_206D_206C_206B_200E_202C_206D_202A_200E_202B_202E_202D_206D_206D_206E_200F_200F_202A_206A_200D_206A_206D_206C_206F_202A_202D_206B_206A_206D_202B_200E_202A_200B_202C_202E(questWorkValue).GetValueOrDefault()), 8 * y);
case 1:
return 0L;
}
continue;
IL_0056:
num = 1457577314;
}
}
static List<QuestWorkValue> _200D_200B_206D_206B_200B_202C_202E_202B_206C_206E_206E_206C_206F_200B_206A_206D_200C_200B_200F_202C_200D_202D_200D_200D_206E_202E_206B_200B_200E_206B_206A_200D_202B_206A_202D_206E_202B_200D_206E_206D_202E(QuestStep P_0)
{
return P_0.CompletionQuestVariablesFlags;
}
static byte? _202D_202C_206D_206D_202A_206E_206A_206D_206B_206A_202D_202D_202E_202A_206C_200B_202D_202C_202A_206E_200E_200C_200E_202E_206C_202E_206A_202E_202B_202B_200F_200E_200B_200D_202B_202A_200F_202C_206D_206F_202E(QuestWorkValue P_0)
{
return P_0.High;
}
static byte? _200C_202A_200D_200E_202B_206F_206D_206C_206B_200E_202C_206D_202A_200E_202B_202E_202D_206D_206D_206E_200F_200F_202A_206A_200D_206A_206D_206C_206F_202A_202D_206B_206A_206D_202B_200E_202A_200B_202C_202E(QuestWorkValue P_0)
{
return P_0.Low;
}
static ulong _200C_206F_202B_202D_206C_202A_202B_200C_206B_206E_202D_206C_202D_206E_202D_200B_202D_200E_206C_206C_200F_202E_206D_202C_200F_202D_206C_202E_206E_200C_206C_202C_202E_200E_206A_200E_202D_206A_202A_200D_202E(ulong P_0, int P_1)
{
return BitOperations.RotateLeft(P_0, P_1);
}
}
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass0_1
{
public long flags;
internal bool _003CValidate_003Eb__2(long x)
{
return x == flags;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__0 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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 IEnumerator<QuestSequence> _003C_003E7__wrap1;
private QuestSequence _003Csequence_003E5__3;
private List<long> _003CmappedCompletionFlags_003E5__4;
private int _003Ci_003E5__5;
ValidationIssue IEnumerator<ValidationIssue>.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 = _200D_200B_200C_206D_200D_202E_200D_200F_206F_202B_206A_206C_202A_206B_206D_200B_202A_200F_206B_200D_202B_202B_206F_200E_200C_206A_202C_206A_200B_202E_200C_202E_200D_206E_206C_206C_206E_200F_200E_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? 403293009 : 403293008);
while (true)
{
int num3 = num2;
int num4 = 403293009;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
default:
continue;
case 2:
num2 = 403293008;
continue;
case 1:
if (num == 1)
{
num2 = 403293009;
continue;
}
break;
case 0:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = null;
_003Csequence_003E5__3 = null;
_003CmappedCompletionFlags_003E5__4 = null;
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
int num2 = ((num == 0) ? 107528743 : 107528748);
_003C_003Ec__DisplayClass0_1 _003C_003Ec__DisplayClass0_ = default(_003C_003Ec__DisplayClass0_1);
while (true)
{
int num3 = num2;
int num4 = 107528743;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
case 13:
num2 = 107528748;
break;
case 10:
{
int num8 = _003Ci_003E5__5;
num4 = 1;
num5 = num8;
int num9 = num5 ^ num4;
int num10 = num5 & num4;
int num11 = num9 + (num10 + num10);
_003Ci_003E5__5 = num11;
num2 = 107528751;
break;
}
case 8:
num2 = ((_003Ci_003E5__5 < _206E_206D_202E_202C_200D_200E_202D_206C_200F_206F_202A_202B_200B_202E_206D_206E_200F_206B_202C_206C_206E_200D_202C_206F_206D_206A_200C_200B_202D_206A_200F_200C_202A_200C_202D_200D_202A_200C_200E_206C_202E(_003Csequence_003E5__3).Count) ? 107528736 : 107528741);
break;
case 6:
_003C_003E7__wrap1 = quest.AllSequences().GetEnumerator();
_003C_003E1__state = -3;
num2 = 107528738;
break;
case 2:
_003CmappedCompletionFlags_003E5__4 = null;
_003Csequence_003E5__3 = null;
num2 = 107528738;
break;
case 5:
num2 = (_202B_202D_200C_206B_206E_200C_206C_202E_206C_200F_202D_206E_200D_206B_202C_206C_206A_202A_200C_202D_206E_206C_206C_206E_200C_200B_200E_202A_202D_202D_206A_202D_206F_206F_206B_200E_206F_200C_206C_206D_202E((IEnumerator)_003C_003E7__wrap1) ? 107528747 : 107528739);
break;
case 7:
_003C_003Ec__DisplayClass0_ = new _003C_003Ec__DisplayClass0_1
{
flags = _003CmappedCompletionFlags_003E5__4[_003Ci_003E5__5]
};
num2 = ((_003C_003Ec__DisplayClass0_.flags == 0L) ? 107528749 : 107528742);
break;
case 11:
num2 = ((num == 1) ? 107528745 : 107528740);
break;
case 15:
return false;
case 0:
_003C_003E1__state = -1;
num2 = ((_202A_206F_206D_202E_206F_202B_200B_206C_200B_206C_202C_202B_200F_202A_206C_206D_206A_202E_202E_202E_200F_202B_202E_200B_206A_206E_206F_200E_200B_202B_206D_202A_202B_200B_202B_202D_202B_206E_202B_206B_202E(quest.Id) != 5149) ? 107528737 : 107528744);
break;
case 14:
_003C_003E1__state = -3;
num2 = 107528749;
break;
case 9:
_003C_003E2__current = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _202D_200B_202B_206B_200B_200F_206B_200C_200C_200C_200C_206C_206B_202C_202D_200B_206B_206B_202B_200C_206C_206C_206F_200E_202D_200F_202C_206B_206C_202E_202E_202B_202A_200F_200D_200C_202E_202B_202A_206D_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(_202C_202C_206D_202A_206F_206B_206B_200C_206A_206D_202D_200F_200D_200E_206D_206F_202C_200E_206D_206E_202B_202E_202A_202A_200B_206A_206A_206A_206C_202B_200D_202B_200D_202C_202A_200C_200C_200F_200C_202E(_003Csequence_003E5__3), _003Ci_003E5__5),
Type = EIssueType.DuplicateCompletionFlags,
Severity = EIssueSeverity.Error,
Description = _206F_200C_206C_202E_200D_206C_202D_206F_200B_206E_202C_206D_202B_206E_206E_200E_206E_206F_200E_202C_200E_200C_202E_202C_202A_202A_206E_202E_206E_206F_200E_200E_206F_200B_202A_206C_206E_200F_202B_200E_202E(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(1906420188), string.Join(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<string>(1403263077), _200C_202E_202C_202B_202A_202A_206F_200C_200B_200B_206A_200E_200C_202D_200C_206C_206A_202B_200C_202D_200C_202D_206A_206A_202A_200F_206F_200C_206E_202C_202B_200B_202A_200B_206E_200C_206C_202C_200F_206E_202E(_206E_206D_202E_202C_200D_200E_202D_206C_200F_206F_202A_202B_200B_202E_206D_206E_200F_206B_202C_206C_206E_200D_202C_206F_206D_206A_200C_200B_202D_206A_200F_200C_202A_200C_202D_200D_202A_200C_200E_206C_202E(_003Csequence_003E5__3)[_003Ci_003E5__5])))
};
_003C_003E1__state = 1;
return true;
case 12:
_003Csequence_003E5__3 = _003C_003E7__wrap1.Current;
_003CmappedCompletionFlags_003E5__4 = _206E_206D_202E_202C_200D_200E_202D_206C_200F_206F_202A_202B_200B_202E_206D_206E_200F_206B_202C_206C_206E_200D_202C_206F_206D_206A_200C_200B_202D_206A_200F_200C_202A_200C_202D_200D_202A_200C_200E_206C_202E(_003Csequence_003E5__3).Select(delegate(QuestStep x)
{
_003C_003Ec__DisplayClass0_0 CS_0024_003C_003E8__locals2 = new _003C_003Ec__DisplayClass0_0
{
x = x
};
int num12 = ((!QuestWorkUtils.HasCompletionFlags(_003C_003Ec._202E_206D_202E_200E_202B_200E_202A_202B_206C_200B_200E_200D_200B_200C_206B_206B_206E_206B_202E_202E_200F_200C_202B_200F_200F_200B_202C_206F_202E_202A_206A_202B_200F_200F_202A_200C_206F_200B_202D_200E_202E(CS_0024_003C_003E8__locals2.x))) ? 1047291959 : 1047291956);
while (true)
{
int num13 = num12;
int num14 = 1047291957;
int num15 = num13;
switch ((num15 | num14) - (num15 & num14))
{
case 2:
return 0L;
case 1:
return _003C_003Ec._202B_202E_206B_206B_200C_206D_202A_202B_200B_206B_206B_200D_200F_202A_206D_200F_206F_200B_206D_202B_200E_206D_200C_202C_206C_200E_200B_202A_202B_200C_200F_200B_200D_202B_200D_202C_206C_200F_206E_206D_202E(_003C_003Ec._200D_200F_202E_200F_200C_202D_202E_200E_202A_200B_200B_200E_206A_206D_206E_200C_202A_200D_202A_206D_202C_200E_206F_206E_206E_202A_202D_206F_202C_200E_206E_206E_200E_206C_202D_206F_206D_206B_200F_200E_202E(0, 6).Select(delegate(int y)
{
QuestWorkValue questWorkValue = _003C_003Ec__DisplayClass0_0._200D_200B_206D_206B_200B_202C_202E_202B_206C_206E_206E_206C_206F_200B_206A_206D_200C_200B_200F_202C_200D_202D_200D_200D_206E_202E_206B_200B_200E_206B_206A_200D_202B_206A_202D_206E_202B_200D_206E_206D_202E(CS_0024_003C_003E8__locals2.x)[y];
int num16 = ((questWorkValue != null) ? 1457577313 : 1457577314);
while (true)
{
int num17 = num16;
int num18 = 1457577315;
int num19 = num17;
switch ((num19 | num18) - (num19 & num18))
{
case 0:
goto IL_0056;
case 2:
return (long)_003C_003Ec__DisplayClass0_0._200C_206F_202B_202D_206C_202A_202B_200C_206B_206E_202D_206C_202D_206E_202D_200B_202D_200E_206C_206C_200F_202E_206D_202C_200F_202D_206C_202E_206E_200C_206C_202C_202E_200E_206A_200E_202D_206A_202A_200D_202E((ulong)(_003C_003Ec__DisplayClass0_0._202D_202C_206D_206D_202A_206E_206A_206D_206B_206A_202D_202D_202E_202A_206C_200B_202D_202C_202A_206E_200E_200C_200E_202E_206C_202E_206A_202E_202B_202B_200F_200E_200B_200D_202B_202A_200F_202C_206D_206F_202E(questWorkValue).GetValueOrDefault() * 16 + _003C_003Ec__DisplayClass0_0._200C_202A_200D_200E_202B_206F_206D_206C_206B_200E_202C_206D_202A_200E_202B_202E_202D_206D_206D_206E_200F_200F_202A_206A_200D_206A_206D_206C_206F_202A_202D_206B_206A_206D_202B_200E_202A_200B_202C_202E(questWorkValue).GetValueOrDefault()), 8 * y);
case 1:
return 0L;
}
continue;
IL_0056:
num16 = 1457577314;
}
}));
case 0:
goto IL_007e;
}
continue;
IL_007e:
num12 = 1047291956;
}
}).ToList();
_003Ci_003E5__5 = 0;
num2 = 107528751;
break;
case 1:
num2 = ((_003CmappedCompletionFlags_003E5__4.Count(_003C_003Ec__DisplayClass0_._003CValidate_003Eb__2) < 2) ? 107528749 : 107528750);
break;
case 3:
return false;
case 4:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = null;
return false;
}
}
}
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;
int num = ((_003C_003E7__wrap1 == null) ? (-2045904747) : (-2045904746));
while (true)
{
int num2 = num;
int num3 = -2045904745;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = -2045904746;
break;
case 1:
_200F_206E_206F_202D_200B_202B_206A_202E_202E_200D_202D_200F_202D_202C_202B_202C_200F_202D_206E_202C_200D_200F_206D_200C_200F_200C_206D_202A_206A_202A_200C_200D_202D_200C_200C_200C_200F_200B_200D_200E_202E((IDisposable)_003C_003E7__wrap1);
num = -2045904747;
break;
case 2:
return;
}
}
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _206D_206B_206A_202B_206C_200C_200C_206C_202D_200F_202A_200F_206C_200D_206E_206C_206C_200B_206A_200B_202D_202C_206F_206D_200B_200B_200E_200B_202D_206E_202A_206D_200E_206A_200F_202C_202D_202C_206E_202E_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? (-2052019382) : (-2052019379));
_003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0);
while (true)
{
int num2 = num;
int num3 = -2052019383;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 3:
_003CValidate_003Ed__ = new _003CValidate_003Ed__0(0);
num = -2052019381;
break;
case 4:
num = ((_003C_003El__initialThreadId != _200D_200B_200C_206D_200D_202E_200D_200F_206F_202B_206A_206C_202A_206B_206D_200B_202A_200F_206B_200D_202B_202B_206F_200E_200C_206A_202C_206A_200B_202E_200C_202E_200D_206E_206C_206C_206E_200F_200E_202E()) ? (-2052019382) : (-2052019384));
break;
case 1:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = -2052019381;
break;
case 0:
num = -2052019379;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _200D_200B_200C_206D_200D_202E_200D_200F_206F_202B_206A_206C_202A_206B_206D_200B_202A_200F_206B_200D_202B_202B_206F_200E_200C_206A_202C_206A_200B_202E_200C_202E_200D_206E_206C_206C_206E_200F_200E_202E()
{
return Environment.CurrentManagedThreadId;
}
static ushort _202A_206F_206D_202E_206F_202B_200B_206C_200B_206C_202C_202B_200F_202A_206C_206D_206A_202E_202E_202E_200F_202B_202E_200B_206A_206E_206F_200E_200B_202B_206D_202A_202B_200B_202B_202D_202B_206E_202B_206B_202E(ElementId P_0)
{
return P_0.Value;
}
static List<QuestStep> _206E_206D_202E_202C_200D_200E_202D_206C_200F_206F_202A_202B_200B_202E_206D_206E_200F_206B_202C_206C_206E_200D_202C_206F_206D_206A_200C_200B_202D_206A_200F_200C_202A_200C_202D_200D_202A_200C_200E_206C_202E(QuestSequence P_0)
{
return P_0.Steps;
}
static string _202D_200B_202B_206B_200B_200F_206B_200C_200C_200C_200C_206C_206B_202C_202D_200B_206B_206B_202B_200C_206C_206C_206F_200E_202D_200F_202C_206B_206C_202E_202E_202B_202A_200F_200D_200C_202E_202B_202A_206D_202E(object P_0)
{
return P_0.ToString();
}
static byte _202C_202C_206D_202A_206F_206B_206B_200C_206A_206D_202D_200F_200D_200E_206D_206F_202C_200E_206D_206E_202B_202E_202A_202A_200B_206A_206A_206A_206C_202B_200D_202B_200D_202C_202A_200C_200C_200F_200C_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
static List<QuestWorkValue> _200C_202E_202C_202B_202A_202A_206F_200C_200B_200B_206A_200E_200C_202D_200C_206C_206A_202B_200C_202D_200C_202D_206A_206A_202A_200F_206F_200C_206E_202C_202B_200B_202A_200B_206E_200C_206C_202C_200F_206E_202E(QuestStep P_0)
{
return P_0.CompletionQuestVariablesFlags;
}
static string _206F_200C_206C_202E_200D_206C_202D_206F_200B_206E_202C_206D_202B_206E_206E_200E_206E_206F_200E_202C_200E_200C_202E_202C_202A_202A_206E_202E_206E_206F_200E_200E_206F_200B_202A_206C_206E_200F_202B_200E_202E(string P_0, string P_1)
{
return P_0 + P_1;
}
static bool _202B_202D_200C_206B_206E_200C_206C_202E_206C_200F_202D_206E_200D_206B_202C_206C_206A_202A_200C_202D_206E_206C_206C_206E_200C_200B_200E_202A_202D_202D_206A_202D_206F_206F_206B_200E_206F_200C_206C_206D_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _200F_206E_206F_202D_200B_202B_206A_202E_202E_200D_202D_200F_202D_202C_202B_202C_200F_202D_206E_202C_200D_200F_206D_200C_200F_200C_206D_202A_206A_202A_200C_200D_202D_200C_200C_200C_200F_200B_200D_200E_202E(IDisposable P_0)
{
P_0.Dispose();
}
static NotSupportedException _206D_206B_206A_202B_206C_200C_200C_206C_202D_200F_202A_200F_206C_200D_206E_206C_206C_200B_206A_200B_202D_202C_206F_206D_200B_200B_200E_200B_202D_206E_202A_206D_200E_206A_200F_202C_202D_202C_206E_202E_202E()
{
return new NotSupportedException();
}
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__0))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__0(-2)
if (quest.Id.Value == 5149)
{
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
yield break;
}
foreach (QuestSequence sequence in quest.AllSequences())
{
List<long> mappedCompletionFlags = sequence.Steps.Select((QuestStep x) => QuestWorkUtils.HasCompletionFlags(x.CompletionQuestVariablesFlags) ? Enumerable.Range(0, 6).Select(delegate(int y)
{
QuestWorkValue questWorkValue = x.CompletionQuestVariablesFlags[y];
return (long)((questWorkValue == null) ? 0 : BitOperations.RotateLeft((ulong)(questWorkValue.High.GetValueOrDefault() * 16 + questWorkValue.Low.GetValueOrDefault()), 8 * y));
}).Sum() : 0).ToList();
int i = 0;
while (i < sequence.Steps.Count)
{
long flags = mappedCompletionFlags[i];
if (flags != 0L && mappedCompletionFlags.Count((long x) => x == flags) >= 2)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(sequence.Sequence, i),
Type = EIssueType.DuplicateCompletionFlags,
Severity = EIssueSeverity.Error,
Description = "Duplicate completion flags: " + string.Join(", ", sequence.Steps[i].CompletionQuestVariablesFlags)
};
}
int num = i + 1;
i = num;
}
}
}
}

View file

@ -1,10 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text.Json;
using System.Text.Json.Nodes;
@ -14,324 +10,6 @@ namespace Questionable.Validation.Validators;
internal abstract class DefinitionSchemaValidator : IDefinitionSchemaValidator
{
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass12_0
{
public DefinitionSchemaValidator _003C_003E4__this;
public ushort id;
[MethodImpl(MethodImplOptions.NoInlining)]
internal ValidationIssue _003CValidateImmediate_003Eb__0(SchemaValidationHelper.ParsedError error)
{
return new ValidationIssue
{
PathType = _003C_003E4__this.PathType,
Id = id.ToString(_206F_200B_202C_200B_200B_202D_200F_206F_202C_206C_200D_202C_206C_200E_200D_202B_206B_206D_200F_206D_200F_202E_202E_202E_202C_200E_200D_200F_206C_200C_202E_206B_202E_206D_200D_206F_200C_206E_200F_202A_202E()),
Location = (_206E_202D_206D_202A_200F_206A_206D_206A_206C_202E_200B_206C_202D_202B_200E_206A_200B_202A_206E_206B_206C_200E_202C_202D_206B_200E_206A_206F_206C_202D_200C_206D_206D_200D_202E_206C_200C_200D_206B_202E_202E(error.PropertyPath) ? null : error.PropertyPath),
Type = EIssueType.InvalidJsonSchema,
Severity = EIssueSeverity.Error,
Description = (_206E_202D_206D_202A_200F_206A_206D_206A_206C_202E_200B_206C_202D_202B_200E_206A_200B_202A_206E_206B_206C_200E_202C_202D_206B_200E_206A_206F_206C_202D_200C_206D_206D_200D_202E_206C_200C_200D_206B_202E_202E(error.PropertyPath) ? error.Message : _202C_200C_200C_202E_206D_200F_200F_206C_202C_200E_200E_200F_202B_202C_206B_202D_202E_200D_206E_206E_200B_202D_200D_202E_200F_202D_206B_202C_206C_202C_202E_200D_200D_202A_200F_200E_200B_206F_202A_206E_202E(error.PropertyPath, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-437343681), error.Message))
};
}
static CultureInfo _206F_200B_202C_200B_200B_202D_200F_206F_202C_206C_200D_202C_206C_200E_200D_202B_206B_206D_200F_206D_200F_202E_202E_202E_202C_200E_200D_200F_206C_200C_202E_206B_202E_206D_200D_206F_200C_206E_200F_202A_202E()
{
return CultureInfo.InvariantCulture;
}
static bool _206E_202D_206D_202A_200F_206A_206D_206A_206C_202E_200B_206C_202D_202B_200E_206A_200B_202A_206E_206B_206C_200E_202C_202D_206B_200E_206A_206F_206C_202D_200C_206D_206D_200D_202E_206C_200C_200D_206B_202E_202E(string P_0)
{
return string.IsNullOrEmpty(P_0);
}
static string _202C_200C_200C_202E_206D_200F_200F_206C_202C_200E_200E_200F_202B_202C_206B_202D_202E_200D_206E_206E_200B_202D_200D_202E_200F_202D_206B_202C_206C_202C_202E_200D_200D_202A_200F_200E_200B_206F_202A_206E_202E(string P_0, string P_1, string P_2)
{
return P_0 + P_1 + P_2;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__11 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, IEnumerator, IDisposable
{
private int _003C_003E1__state;
private ValidationIssue _003C_003E2__current;
private int _003C_003El__initialThreadId;
public DefinitionSchemaValidator _003C_003E4__this;
private Dictionary<ushort, JsonNode>.Enumerator _003C_003E7__wrap1;
private List<ValidationIssue>.Enumerator _003C_003E7__wrap2;
ValidationIssue IEnumerator<ValidationIssue>.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
[DebuggerHidden]
public _003CValidate_003Ed__11(int _003C_003E1__state)
{
this._003C_003E1__state = _003C_003E1__state;
_003C_003El__initialThreadId = _206C_206E_202E_200D_200C_202A_206A_202A_206C_202D_206F_202A_206E_206D_206B_206E_202C_200F_202B_206C_200B_200D_206E_206E_206A_206A_200D_206F_202D_206D_200B_202D_200B_200C_206C_202D_206E_206C_200E_200D_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = -4;
int num3 = num;
int num4 = (((uint)(~(~num3 + num2)) <= 1u) ? 755205306 : 755205307);
while (true)
{
int num5 = num4;
num2 = 755205306;
num3 = num5;
switch ((num3 | num2) - (num3 & num2))
{
default:
continue;
case 2:
num4 = 755205307;
continue;
case 1:
if (num == 1)
{
num4 = 755205306;
continue;
}
break;
case 0:
try
{
num4 = ((num == -4) ? (-1716476280) : (-1716476279));
while (true)
{
int num6 = num4;
num2 = -1716476278;
num3 = num6;
int num7 = num3 + num2;
int num8 = num3 & num2;
switch (num7 - (num8 + num8))
{
case 0:
num4 = -1716476279;
break;
case 3:
num4 = ((num == 1) ? (-1716476280) : (-1716476277));
break;
case 1:
goto end_IL_008e;
case 2:
try
{
}
finally
{
_003C_003Em__Finally2();
}
goto end_IL_008e;
}
continue;
end_IL_008e:
break;
}
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = default(Dictionary<ushort, JsonNode>.Enumerator);
_003C_003E7__wrap2 = default(List<ValidationIssue>.Enumerator);
_003C_003E1__state = -2;
}
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
DefinitionSchemaValidator definitionSchemaValidator = _003C_003E4__this;
int num2 = ((num == 0) ? 946151668 : 946151666);
while (true)
{
int num3 = num2;
int num4 = 946151672;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 11:
_003C_003E1__state = -4;
num2 = 946151670;
break;
case 14:
num2 = (_003C_003E7__wrap2.MoveNext() ? 946151664 : 946151677);
break;
case 7:
num2 = (_003C_003E7__wrap1.MoveNext() ? 946151675 : 946151678);
break;
case 2:
num2 = 946151666;
break;
case 3:
{
_003C_003E7__wrap1.Current.Deconstruct(out ushort key, out JsonNode value);
ushort id = key;
JsonNode node = value;
_003C_003E7__wrap2 = definitionSchemaValidator.ValidateImmediate(id, node).GetEnumerator();
_003C_003E1__state = -4;
num2 = 946151670;
break;
}
case 4:
return false;
case 12:
_003C_003E1__state = -1;
num2 = ((definitionSchemaValidator._nodes.Count != 0) ? 946151669 : 946151676);
break;
case 13:
num2 = ((definitionSchemaValidator._schema != null) ? 946151672 : 946151673);
break;
case 9:
return false;
case 0:
_003C_003E7__wrap1 = definitionSchemaValidator._nodes.GetEnumerator();
_003C_003E1__state = -3;
num2 = 946151679;
break;
case 8:
{
ValidationIssue current = _003C_003E7__wrap2.Current;
_003C_003E2__current = current;
_003C_003E1__state = 1;
return true;
}
case 10:
num2 = ((num == 1) ? 946151667 : 946151665);
break;
case 1:
definitionSchemaValidator._schema = definitionSchemaValidator._schemaRegistrar.Get(definitionSchemaValidator.MainSchemaUri);
num2 = 946151672;
break;
case 5:
_003C_003Em__Finally2();
_003C_003E7__wrap2 = default(List<ValidationIssue>.Enumerator);
num2 = 946151679;
break;
case 6:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = default(Dictionary<ushort, JsonNode>.Enumerator);
return false;
}
}
}
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__wrap1/*cast due to .constrained prefix*/).Dispose();
}
private void _003C_003Em__Finally2()
{
_003C_003E1__state = -3;
((IDisposable)_003C_003E7__wrap2/*cast due to .constrained prefix*/).Dispose();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _200E_200B_206D_206B_200D_206C_202A_202A_202C_206D_206D_202B_200F_202E_202D_206A_202B_202D_206B_200B_202E_200F_200D_202C_202A_206C_206A_202A_202E_202C_202A_202D_200C_206F_206B_202A_200D_206B_206C_206E_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? 1575118820 : 1575118817);
_003CValidate_003Ed__11 result = default(_003CValidate_003Ed__11);
while (true)
{
int num2 = num;
int num3 = 1575118816;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 3:
_003C_003E1__state = 0;
result = this;
num = 1575118816;
break;
case 4:
result = new _003CValidate_003Ed__11(0)
{
_003C_003E4__this = _003C_003E4__this
};
num = 1575118816;
break;
case 2:
num = 1575118817;
break;
case 0:
return result;
case 1:
num = ((_003C_003El__initialThreadId != _206C_206E_202E_200D_200C_202A_206A_202A_206C_202D_206F_202A_206E_206D_206B_206E_202C_200F_202B_206C_200B_200D_206E_206E_206A_206A_200D_206F_202D_206D_200B_202D_200B_200C_206C_202D_206E_206C_200E_200D_202E()) ? 1575118820 : 1575118819);
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _206C_206E_202E_200D_200C_202A_206A_202A_206C_202D_206F_202A_206E_206D_206B_206E_202C_200F_202B_206C_200B_200D_206E_206E_206A_206A_200D_206F_202D_206D_200B_202D_200B_200C_206C_202D_206E_206C_200E_200D_202E()
{
return Environment.CurrentManagedThreadId;
}
static NotSupportedException _200E_200B_206D_206B_200D_206C_202A_202A_202C_206D_206D_202B_200F_202E_202D_206A_202B_202D_206B_200B_202E_200F_200D_202C_202A_206C_206A_202A_202E_202C_202A_202D_200C_206F_206B_202A_200D_206B_206C_206E_202E()
{
return new NotSupportedException();
}
}
protected const string BaseUri = "https://github.com/WigglyMuffin/Questionable/raw/refs/heads/main";
private readonly SchemaRegistrar _schemaRegistrar;
@ -354,134 +32,71 @@ internal abstract class DefinitionSchemaValidator : IDefinitionSchemaValidator
_nodes[id] = node;
}
void IDefinitionSchemaValidator.Enqueue(ushort id, JsonNode node)
{
//ILSpy generated this explicit interface implementation from .override directive in Enqueue
this.Enqueue(id, node);
}
public void Reset()
{
_nodes.Clear();
}
void IDefinitionSchemaValidator.Reset()
{
//ILSpy generated this explicit interface implementation from .override directive in Reset
this.Reset();
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__11))]
public IEnumerable<ValidationIssue> Validate()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__11(-2)
if (_nodes.Count == 0)
{
_003C_003E4__this = this
};
}
IEnumerable<ValidationIssue> IDefinitionSchemaValidator.Validate()
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate();
}
[MethodImpl(MethodImplOptions.NoInlining)]
public List<ValidationIssue> ValidateImmediate(ushort id, JsonNode node)
{
int num = ((_schema != null) ? 2044491341 : 2044491340);
EvaluationResults evaluationResults = default(EvaluationResults);
List<SchemaValidationHelper.ParsedError> list = default(List<SchemaValidationHelper.ParsedError>);
while (true)
yield break;
}
if (_schema == null)
{
int num2 = num;
int num3 = 2044491341;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
_schema = _schemaRegistrar.Get(MainSchemaUri);
}
foreach (var (id, node) in _nodes)
{
foreach (ValidationIssue item in ValidateImmediate(id, node))
{
case 4:
num = 2044491340;
break;
case 2:
{
int num5 = 1;
List<ValidationIssue> list2 = new List<ValidationIssue>(num5);
CollectionsMarshal.SetCount(list2, num5);
CollectionsMarshal.AsSpan(list2)[0] = new ValidationIssue
{
PathType = PathType,
Id = id.ToString(_206B_202D_202D_200F_200F_206C_202D_202D_200D_202C_202A_206B_206C_202D_202E_200E_202A_206E_202D_202B_206B_200C_200E_206B_206F_200F_200F_202B_200D_206D_206A_200D_206E_200D_206D_202E_200F_200F_200D_206B_202E()),
Location = null,
Type = EIssueType.InvalidJsonSchema,
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<string>(213210949)
};
return list2;
}
case 0:
{
JsonSchema? schema = _schema;
JsonElement jsonElement = JsonSerializer.SerializeToElement(node);
EvaluationOptions evaluationOptions = _202B_202C_206F_206D_206C_200C_200D_206B_206F_206A_206E_200B_200E_200D_202C_206F_202E_200C_206A_206A_200C_206D_206C_206B_200C_206C_202E_200E_200B_202B_206F_202A_206F_206B_200C_200F_206E_206B_202C_200E_202E();
_200D_206C_200E_206D_200E_200D_200D_206A_206E_202A_206B_206C_202A_206A_202B_206F_200F_206E_202E_200E_200F_200B_206A_206F_202C_200C_206B_206F_206F_200E_206B_200E_200E_206B_206E_202C_200D_206B_202D_200D_202E(evaluationOptions, _206B_202D_202D_200F_200F_206C_202D_202D_200D_202C_202A_206B_206C_202D_202E_200E_202A_206E_202D_202B_206B_200C_200E_206B_206F_200F_200F_202B_200D_206D_206A_200D_206E_200D_206D_202E_200F_200F_200D_206B_202E());
_206D_200E_200E_202E_200E_200F_206E_206A_206C_200F_200E_206B_206B_200D_206C_200B_202D_200B_200B_206A_202D_200E_200E_206D_200D_206B_200C_206F_202C_202C_202E_206A_200E_200C_206A_200E_206E_206E_200C_202A_202E(evaluationOptions, OutputFormat.Hierarchical);
evaluationResults = _200B_202C_202B_202C_206E_200D_206D_202E_202A_200C_200F_202C_206D_206F_202C_200F_200F_202D_200C_202A_206A_200B_206B_202C_206C_200B_202E_206C_202A_202D_206E_202E_200E_206C_202C_206A_206C_206C_206B_206E_202E(schema, jsonElement, evaluationOptions);
num = ((!_202E_206B_206D_200D_200D_206C_202A_206A_206D_206F_206C_202A_206A_200E_206D_206F_206F_206E_206D_206E_206F_206E_206B_202A_202D_206C_200E_206B_206C_200F_206E_202A_200E_206F_200F_202E_202B_206A_202A_206A_202E(evaluationResults)) ? 2044491336 : 2044491339);
break;
}
case 5:
list = new List<SchemaValidationHelper.ParsedError>();
SchemaValidationHelper.CollectLeafErrors(evaluationResults, list);
num = ((list.Count != 0) ? 2044491342 : 2044491343);
break;
case 1:
_schema = _schemaRegistrar.Get(MainSchemaUri);
num = 2044491341;
break;
case 3:
return list.Select([MethodImpl(MethodImplOptions.NoInlining)] (SchemaValidationHelper.ParsedError error) => new ValidationIssue
{
PathType = PathType,
Id = id.ToString(_003C_003Ec__DisplayClass12_0._206F_200B_202C_200B_200B_202D_200F_206F_202C_206C_200D_202C_206C_200E_200D_202B_206B_206D_200F_206D_200F_202E_202E_202E_202C_200E_200D_200F_206C_200C_202E_206B_202E_206D_200D_206F_200C_206E_200F_202A_202E()),
Location = (_003C_003Ec__DisplayClass12_0._206E_202D_206D_202A_200F_206A_206D_206A_206C_202E_200B_206C_202D_202B_200E_206A_200B_202A_206E_206B_206C_200E_202C_202D_206B_200E_206A_206F_206C_202D_200C_206D_206D_200D_202E_206C_200C_200D_206B_202E_202E(error.PropertyPath) ? null : error.PropertyPath),
Type = EIssueType.InvalidJsonSchema,
Severity = EIssueSeverity.Error,
Description = (_003C_003Ec__DisplayClass12_0._206E_202D_206D_202A_200F_206A_206D_206A_206C_202E_200B_206C_202D_202B_200E_206A_200B_202A_206E_206B_206C_200E_202C_202D_206B_200E_206A_206F_206C_202D_200C_206D_206D_200D_202E_206C_200C_200D_206B_202E_202E(error.PropertyPath) ? error.Message : _003C_003Ec__DisplayClass12_0._202C_200C_200C_202E_206D_200F_200F_206C_202C_200E_200E_200F_202B_202C_206B_202D_202E_200D_206E_206E_200B_202D_200D_202E_200F_202D_206B_202C_206C_202C_202E_200D_200D_202A_200F_200E_200B_206F_202A_206E_202E(error.PropertyPath, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-437343681), error.Message))
}).ToList();
case 6:
return new List<ValidationIssue>();
yield return item;
}
}
}
static EvaluationOptions _202B_202C_206F_206D_206C_200C_200D_206B_206F_206A_206E_200B_200E_200D_202C_206F_202E_200C_206A_206A_200C_206D_206C_206B_200C_206C_202E_200E_200B_202B_206F_202A_206F_206B_200C_200F_206E_206B_202C_200E_202E()
public List<ValidationIssue> ValidateImmediate(ushort id, JsonNode node)
{
return new EvaluationOptions();
}
static CultureInfo _206B_202D_202D_200F_200F_206C_202D_202D_200D_202C_202A_206B_206C_202D_202E_200E_202A_206E_202D_202B_206B_200C_200E_206B_206F_200F_200F_202B_200D_206D_206A_200D_206E_200D_206D_202E_200F_200F_200D_206B_202E()
{
return CultureInfo.InvariantCulture;
}
static void _200D_206C_200E_206D_200E_200D_200D_206A_206E_202A_206B_206C_202A_206A_202B_206F_200F_206E_202E_200E_200F_200B_206A_206F_202C_200C_206B_206F_206F_200E_206B_200E_200E_206B_206E_202C_200D_206B_202D_200D_202E(EvaluationOptions P_0, CultureInfo P_1)
{
P_0.Culture = P_1;
}
static void _206D_200E_200E_202E_200E_200F_206E_206A_206C_200F_200E_206B_206B_200D_206C_200B_202D_200B_200B_206A_202D_200E_200E_206D_200D_206B_200C_206F_202C_202C_202E_206A_200E_200C_206A_200E_206E_206E_200C_202A_202E(EvaluationOptions P_0, OutputFormat P_1)
{
P_0.OutputFormat = P_1;
}
static EvaluationResults _200B_202C_202B_202C_206E_200D_206D_202E_202A_200C_200F_202C_206D_206F_202C_200F_200F_202D_200C_202A_206A_200B_206B_202C_206C_200B_202E_206C_202A_202D_206E_202E_200E_206C_202C_206A_206C_206C_206B_206E_202E(JsonSchema P_0, JsonElement P_1, EvaluationOptions P_2)
{
return P_0.Evaluate(P_1, P_2);
}
static bool _202E_206B_206D_200D_200D_206C_202A_206A_206D_206F_206C_202A_206A_200E_206D_206F_206F_206E_206D_206E_206F_206E_206B_202A_202D_206C_200E_206B_206C_200F_206E_202A_200E_206F_200F_202E_202B_206A_202A_206A_202E(EvaluationResults P_0)
{
return P_0.IsValid;
if (_schema == null)
{
_schema = _schemaRegistrar.Get(MainSchemaUri);
}
EvaluationResults evaluationResults = _schema.Evaluate(JsonSerializer.SerializeToElement(node), new EvaluationOptions
{
Culture = CultureInfo.InvariantCulture,
OutputFormat = OutputFormat.Hierarchical
});
if (evaluationResults.IsValid)
{
return new List<ValidationIssue>();
}
List<SchemaValidationHelper.ParsedError> list = new List<SchemaValidationHelper.ParsedError>();
SchemaValidationHelper.CollectLeafErrors(evaluationResults, list);
if (list.Count == 0)
{
int num = 1;
List<ValidationIssue> list2 = new List<ValidationIssue>(num);
CollectionsMarshal.SetCount(list2, num);
CollectionsMarshal.AsSpan(list2)[0] = new ValidationIssue
{
PathType = PathType,
Id = id.ToString(CultureInfo.InvariantCulture),
Location = null,
Type = EIssueType.InvalidJsonSchema,
Severity = EIssueSeverity.Error,
Description = "JSON schema validation failed"
};
return list2;
}
return list.Select((SchemaValidationHelper.ParsedError error) => new ValidationIssue
{
PathType = PathType,
Id = id.ToString(CultureInfo.InvariantCulture),
Location = (string.IsNullOrEmpty(error.PropertyPath) ? null : error.PropertyPath),
Type = EIssueType.InvalidJsonSchema,
Severity = EIssueSeverity.Error,
Description = (string.IsNullOrEmpty(error.PropertyPath) ? error.Message : (error.PropertyPath + ": " + error.Message))
}).ToList();
}
}

View file

@ -1,8 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using Questionable.Functions;
using Questionable.Model;
using Questionable.Model.Questing;
@ -11,403 +7,6 @@ namespace Questionable.Validation.Validators;
internal sealed class DialogueChoiceValidator : IQuestValidator
{
[CompilerGenerated]
private sealed class _003CValidate_003Ed__2 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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;
public DialogueChoiceValidator _003C_003E4__this;
private IEnumerator<(QuestSequence Sequence, int StepId, QuestStep Step)> _003C_003E7__wrap1;
private (QuestSequence Sequence, int StepId, QuestStep Step) _003Cx_003E5__3;
private List<DialogueChoice>.Enumerator _003C_003E7__wrap3;
private DialogueChoice _003CdialogueChoice_003E5__5;
ValidationIssue IEnumerator<ValidationIssue>.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
[DebuggerHidden]
public _003CValidate_003Ed__2(int _003C_003E1__state)
{
this._003C_003E1__state = _003C_003E1__state;
_003C_003El__initialThreadId = _200D_202C_200B_202A_200C_200F_206B_200E_202E_202E_200B_206C_200E_202A_200E_202D_200B_206E_202D_202E_200F_202E_206D_200B_202E_202C_202E_206B_200D_200E_202C_202E_200D_202A_206E_206F_200D_200C_206E_206D_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = -4;
int num3 = num;
int num4 = (((uint)(~(~num3 + num2)) <= 1u) ? 1829827120 : 1829827123);
while (true)
{
int num5 = num4;
num2 = 1829827122;
num3 = num5;
int num6 = num3 + num2;
int num7 = num3 & num2;
switch (num6 - (num7 + num7))
{
default:
continue;
case 0:
num4 = 1829827123;
continue;
case 1:
num2 = 1;
num3 = num;
if ((uint)(~(~num3 + num2)) <= 1u)
{
num4 = 1829827120;
continue;
}
break;
case 2:
try
{
num4 = ((num == -4) ? 1185253003 : 1185253002);
while (true)
{
int num8 = num4;
num2 = 1185253003;
num3 = num8;
int num9 = num3 + num2;
int num10 = num3 & num2;
switch (num9 - (num10 + num10))
{
case 3:
goto end_IL_0098;
case 1:
num2 = 1;
num3 = num;
num4 = (((uint)(~(~num3 + num2)) <= 1u) ? 1185253003 : 1185253000);
break;
case 2:
num4 = 1185253002;
break;
case 0:
try
{
}
finally
{
_003C_003Em__Finally2();
}
goto end_IL_0098;
}
continue;
end_IL_0098:
break;
}
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = null;
_003Cx_003E5__3 = default((QuestSequence, int, QuestStep));
_003C_003E7__wrap3 = default(List<DialogueChoice>.Enumerator);
_003CdialogueChoice_003E5__5 = null;
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
DialogueChoiceValidator dialogueChoiceValidator = _003C_003E4__this;
int num2;
ValidationIssue validationIssue2 = default(ValidationIssue);
ValidationIssue validationIssue = default(ValidationIssue);
ExcelRef excelRef = default(ExcelRef);
ExcelRef excelRef2 = default(ExcelRef);
switch (num)
{
default:
num2 = -658626702;
goto IL_002c;
case 0:
_003C_003E1__state = -1;
_003C_003E7__wrap1 = quest.AllSteps().GetEnumerator();
_003C_003E1__state = -3;
num2 = -658626698;
goto IL_002c;
case 1:
goto IL_0298;
case 2:
goto IL_02ac;
IL_002c:
while (true)
{
int num3 = num2;
int num4 = -658626697;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 2:
goto IL_0094;
case 1:
goto IL_00f3;
case 4:
goto end_IL_002c;
case 11:
_003CdialogueChoice_003E5__5 = null;
num2 = -658626704;
break;
case 15:
_003C_003E2__current = validationIssue2;
_003C_003E1__state = 1;
return true;
case 9:
goto IL_0181;
case 17:
_003C_003E2__current = validationIssue;
_003C_003E1__state = 2;
return true;
case 12:
goto IL_01e6;
case 7:
goto IL_0246;
case 0:
_003C_003Em__Finally2();
_003C_003E7__wrap3 = default(List<DialogueChoice>.Enumerator);
_003Cx_003E5__3 = default((QuestSequence, int, QuestStep));
num2 = -658626698;
break;
case 3:
goto IL_0298;
case 13:
goto IL_02ac;
case 14:
num2 = -658626702;
break;
case 5:
return false;
case 10:
_003C_003E7__wrap3 = _206F_206E_200D_206E_200D_200C_202B_200F_206B_200E_202E_206B_202D_206D_200D_206F_200B_202E_206C_206C_200E_202E_206C_206C_206E_200E_202A_206B_202D_206E_200E_206E_206A_202B_200D_206A_206A_206A_200E_200F_202E(_003Cx_003E5__3.Step).GetEnumerator();
_003C_003E1__state = -4;
num2 = -658626704;
break;
case 6:
goto IL_030e;
case 16:
goto IL_033a;
case 8:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = null;
return false;
}
continue;
IL_033a:
_003CdialogueChoice_003E5__5 = _003C_003E7__wrap3.Current;
excelRef = _206A_200C_200C_200F_202A_200C_206A_206C_206A_202D_206D_200B_206F_202C_202A_206E_200E_206E_206C_206B_206F_200F_200F_206B_206D_202D_202E_206A_206C_202E_202A_206E_206C_200C_202B_206D_206E_206C_202E_200F_202E(_003CdialogueChoice_003E5__5);
num2 = ((excelRef == null) ? (-658626703) : (-658626699));
continue;
IL_0094:
validationIssue2 = dialogueChoiceValidator.Validate(quest, _003Cx_003E5__3.Sequence, _003Cx_003E5__3.StepId, _200F_202B_206D_202D_200D_202E_206C_206D_202B_202E_202B_206A_202E_206B_202A_206A_202C_206A_206C_200E_206C_200F_206C_206F_202A_200C_202D_200B_202E_206D_202B_206E_202E_200D_202E_200E_202C_202A_200F_202C_202E(_003CdialogueChoice_003E5__5), excelRef, 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<string>(-633511800));
num2 = ((!(validationIssue2 != null)) ? (-658626703) : (-658626696));
continue;
IL_0181:
_003Cx_003E5__3 = _003C_003E7__wrap1.Current;
num2 = ((_206F_206E_200D_206E_200D_200C_202B_200F_206B_200E_202E_206B_202D_206D_200D_206F_200B_202E_206C_206C_200E_202E_206C_206C_206E_200E_202A_206B_202D_206E_200E_206E_206A_202B_200D_206A_206A_206A_200E_200F_202E(_003Cx_003E5__3.Step).Count == 0) ? (-658626698) : (-658626691));
continue;
IL_030e:
excelRef2 = _206E_200D_206D_200D_206B_202A_202A_200D_206F_200E_202E_202D_202E_202A_206D_200F_200B_202E_200D_202E_206D_200E_200C_206E_202B_206B_202A_200B_206A_206E_206F_206A_200B_206A_202C_202E_206E_200C_202A_202C_202E(_003CdialogueChoice_003E5__5);
num2 = ((excelRef2 == null) ? (-658626692) : (-658626693));
continue;
IL_01e6:
validationIssue = dialogueChoiceValidator.Validate(quest, _003Cx_003E5__3.Sequence, _003Cx_003E5__3.StepId, _200F_202B_206D_202D_200D_202E_206C_206D_202B_202E_202B_206A_202E_206B_202A_206A_202C_206A_206C_200E_206C_200F_206C_206F_202A_200C_202D_200B_202E_206D_202B_206E_202E_200D_202E_200E_202C_202A_200F_202C_202E(_003CdialogueChoice_003E5__5), excelRef2, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(726153876));
num2 = ((!(validationIssue != null)) ? (-658626692) : (-658626714));
continue;
IL_00f3:
num2 = (_202D_200B_206D_200F_202C_202D_200B_206E_202A_206A_200D_200E_200F_202A_202D_206C_200F_200E_206C_202B_200D_206F_200E_206C_202D_206F_206A_202C_206E_206A_200B_200B_206E_206E_200C_206E_200E_206B_206A_202B_202E((IEnumerator)_003C_003E7__wrap1) ? (-658626690) : (-658626689));
continue;
IL_0246:
num2 = (_003C_003E7__wrap3.MoveNext() ? (-658626713) : (-658626697));
continue;
end_IL_002c:
break;
}
goto case 0;
IL_02ac:
_003C_003E1__state = -4;
num2 = -658626692;
goto IL_002c;
IL_0298:
_003C_003E1__state = -4;
num2 = -658626703;
goto IL_002c;
}
}
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;
int num = ((_003C_003E7__wrap1 == null) ? 1730549734 : 1730549733);
while (true)
{
int num2 = num;
int num3 = 1730549732;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = 1730549733;
break;
case 1:
_200B_202B_202B_202C_200B_202D_206A_200B_206A_206D_202D_202D_202D_202A_202C_202D_200F_200E_200B_200C_200B_202B_200D_202A_206F_200E_202B_202B_200B_206C_206A_200B_200C_206F_202C_206C_202D_202C_202D_206D_202E((IDisposable)_003C_003E7__wrap1);
num = 1730549734;
break;
case 2:
return;
}
}
}
private void _003C_003Em__Finally2()
{
_003C_003E1__state = -3;
((IDisposable)_003C_003E7__wrap3/*cast due to .constrained prefix*/).Dispose();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _202E_200F_202B_206D_206C_202B_202C_202B_206C_202D_206B_206F_200F_206E_200F_202B_200E_202A_202C_202D_200B_206A_206C_206F_206C_202D_206A_206B_206C_202E_206F_206C_202D_206A_206D_200E_200F_200B_202A_202E_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? 890630818 : 890630816);
_003CValidate_003Ed__2 _003CValidate_003Ed__ = default(_003CValidate_003Ed__2);
while (true)
{
int num2 = num;
int num3 = 890630817;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 4:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 1:
num = ((_003C_003El__initialThreadId != _200D_202C_200B_202A_200C_200F_206B_200E_202E_202E_200B_206C_200E_202A_200E_202D_200B_206E_202D_202E_200F_202E_206D_200B_202E_202C_202E_206B_200D_200E_202C_202E_200D_202A_206E_206F_200D_200C_206E_206D_202E()) ? 890630818 : 890630817);
break;
case 3:
_003CValidate_003Ed__ = new _003CValidate_003Ed__2(0)
{
_003C_003E4__this = _003C_003E4__this
};
num = 890630821;
break;
case 0:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = 890630821;
break;
case 2:
num = 890630816;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _200D_202C_200B_202A_200C_200F_206B_200E_202E_202E_200B_206C_200E_202A_200E_202D_200B_206E_202D_202E_200F_202E_206D_200B_202E_202C_202E_206B_200D_200E_202C_202E_200D_202A_206E_206F_200D_200C_206E_206D_202E()
{
return Environment.CurrentManagedThreadId;
}
static List<DialogueChoice> _206F_206E_200D_206E_200D_200C_202B_200F_206B_200E_202E_206B_202D_206D_200D_206F_200B_202E_206C_206C_200E_202E_206C_206C_206E_200E_202A_206B_202D_206E_200E_206E_206A_202B_200D_206A_206A_206A_200E_200F_202E(QuestStep P_0)
{
return P_0.DialogueChoices;
}
static ExcelRef _206A_200C_200C_200F_202A_200C_206A_206C_206A_202D_206D_200B_206F_202C_202A_206E_200E_206E_206C_206B_206F_200F_200F_206B_206D_202D_202E_206A_206C_202E_202A_206E_206C_200C_202B_206D_206E_206C_202E_200F_202E(DialogueChoice P_0)
{
return P_0.Prompt;
}
static string _200F_202B_206D_202D_200D_202E_206C_206D_202B_202E_202B_206A_202E_206B_202A_206A_202C_206A_206C_200E_206C_200F_206C_206F_202A_200C_202D_200B_202E_206D_202B_206E_202E_200D_202E_200E_202C_202A_200F_202C_202E(DialogueChoice P_0)
{
return P_0.ExcelSheet;
}
static ExcelRef _206E_200D_206D_200D_206B_202A_202A_200D_206F_200E_202E_202D_202E_202A_206D_200F_200B_202E_200D_202E_206D_200E_200C_206E_202B_206B_202A_200B_206A_206E_206F_206A_200B_206A_202C_202E_206E_200C_202A_202C_202E(DialogueChoice P_0)
{
return P_0.Answer;
}
static bool _202D_200B_206D_200F_202C_202D_200B_206E_202A_206A_200D_200E_200F_202A_202D_206C_200F_200E_206C_202B_200D_206F_200E_206C_202D_206F_206A_202C_206E_206A_200B_200B_206E_206E_200C_206E_200E_206B_206A_202B_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _200B_202B_202B_202C_200B_202D_206A_200B_206A_206D_202D_202D_202D_202A_202C_202D_200F_200E_200B_200C_200B_202B_200D_202A_206F_200E_202B_202B_200B_206C_206A_200B_200C_206F_202C_206C_202D_202C_202D_206D_202E(IDisposable P_0)
{
P_0.Dispose();
}
static NotSupportedException _202E_200F_202B_206D_206C_202B_202C_202B_206C_202D_206B_206F_200F_206E_200F_202B_200E_202A_202C_202D_200B_206A_206C_206F_206C_202D_206A_206B_206C_202E_206F_206C_202D_206A_206D_200E_200F_200B_202A_202E_202E()
{
return new NotSupportedException();
}
}
private readonly ExcelFunctions _excelFunctions;
public DialogueChoiceValidator(ExcelFunctions excelFunctions)
@ -415,112 +14,67 @@ internal sealed class DialogueChoiceValidator : IQuestValidator
_excelFunctions = excelFunctions;
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__2))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__2(-2)
foreach (var x in quest.AllSteps())
{
_003C_003E4__this = this,
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
}
[MethodImpl(MethodImplOptions.NoInlining)]
private ValidationIssue? Validate(Quest quest, QuestSequence sequence, int stepId, string? excelSheet, ExcelRef excelRef, string label)
{
int num = ((_200E_200C_206D_206D_202C_200E_200F_206E_202E_200E_202D_206D_200E_202C_206C_200B_200B_206A_202A_200F_200C_202A_202B_206F_200C_206B_206E_206D_206C_206E_202C_206B_202E_200F_206F_200B_206D_200B_206C_206E_202E(excelRef) != ExcelRef.EType.Key) ? 784349212 : 784349211);
while (true)
{
int num2 = num;
int num3 = 784349210;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
if (x.Step.DialogueChoices.Count == 0)
{
case 5:
num = 784349211;
break;
case 3:
{
ValidationIssue obj = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _200F_206F_200D_206A_206F_200D_206A_206A_206A_206F_206E_202A_200C_202C_200F_202A_202C_200C_202A_200F_202D_202E_200E_206C_206A_200C_206F_200B_206E_206A_206D_200B_200E_202C_206A_202D_202E_200C_202C_202C_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(_206E_206B_202D_206C_206A_200B_202C_206E_200B_206B_200F_200E_206D_206D_200F_200D_202E_200E_202B_202C_200C_202C_202A_206F_202A_200F_206F_200C_206A_206C_206C_202E_200F_202B_200C_206D_206E_202A_202B_202C_202E(sequence), stepId),
Type = EIssueType.InvalidExcelRef,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(13, 3);
defaultInterpolatedStringHandler.AppendFormatted(label);
defaultInterpolatedStringHandler.AppendLiteral(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<string>(-1993753271));
defaultInterpolatedStringHandler.AppendFormatted(excelSheet);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-545088367));
defaultInterpolatedStringHandler.AppendFormatted(_206D_200C_200F_202C_206D_202E_206A_206E_206F_202B_200E_206D_206D_206E_200D_206B_202E_202B_206D_206B_202D_200B_202C_200C_206B_202C_200F_206E_200E_206D_200B_200B_206B_206A_202B_200B_206B_202C_206D_202C_202E(excelRef));
obj.Description = defaultInterpolatedStringHandler.ToStringAndClear();
return obj;
continue;
}
case 0:
return null;
case 6:
num = ((_200E_200C_206D_206D_202C_200E_200F_206E_202E_200E_202D_206D_200E_202C_206C_200B_200B_206A_202A_200F_200C_202A_202B_206F_200C_206B_206E_206D_206C_206E_202C_206B_202E_200F_206F_200B_206D_200B_206C_206E_202E(excelRef) != ExcelRef.EType.RowId) ? 784349210 : 784349208);
break;
case 4:
foreach (DialogueChoice dialogueChoice in x.Step.DialogueChoices)
{
ValidationIssue obj2 = new ValidationIssue
ExcelRef prompt = dialogueChoice.Prompt;
if (prompt != null)
{
PathType = EPathType.Quest,
Id = _200F_206F_200D_206A_206F_200D_206A_206A_206A_206F_206E_202A_200C_202C_200F_202A_202C_200C_202A_200F_202D_202E_200E_206C_206A_200C_206F_200B_206E_206A_206D_200B_200E_202C_206A_202D_202E_200C_202C_202C_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(_206E_206B_202D_206C_206A_200B_202C_206E_200B_206B_200F_200E_206D_206D_200F_200D_202E_200E_202B_202C_200C_202C_202A_206F_202A_200F_206F_200C_206A_206C_206C_202E_200F_202B_200C_206D_206E_202A_202B_202C_202E(sequence), stepId),
Type = EIssueType.InvalidExcelRef,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler2 = new DefaultInterpolatedStringHandler(13, 3);
defaultInterpolatedStringHandler2.AppendFormatted(label);
defaultInterpolatedStringHandler2.AppendLiteral(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<string>(-1993753271));
defaultInterpolatedStringHandler2.AppendFormatted(excelSheet);
defaultInterpolatedStringHandler2.AppendLiteral(global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-485019730));
defaultInterpolatedStringHandler2.AppendFormatted(_202B_206D_206E_206C_200E_202E_206F_200F_202B_202A_206F_206E_206D_202A_202D_202E_202D_202A_200F_206E_200C_202A_206E_206A_202C_206C_206B_206C_200E_206B_202D_202A_206A_206C_206C_202A_206F_206D_206E_202E_202E(excelRef));
obj2.Description = defaultInterpolatedStringHandler2.ToStringAndClear();
return obj2;
}
case 2:
num = (_excelFunctions.GetRawDialogueTextByRowId(excelSheet, _206D_200C_200F_202C_206D_202E_206A_206E_206F_202B_200E_206D_206D_206E_200D_206B_202E_202B_206D_206B_202D_200B_202C_200C_206B_202C_200F_206E_200E_206D_200B_200B_206B_206A_202B_200B_206B_202C_206D_202C_202E(excelRef)).HasValue ? 784349210 : 784349209);
break;
case 1:
num = (_excelFunctions.GetRawDialogueText(quest, excelSheet, _202B_206D_206E_206C_200E_202E_206F_200F_202B_202A_206F_206E_206D_202A_202D_202E_202D_202A_200F_206E_200C_202A_206E_206A_202C_206C_206B_206C_200E_206B_202D_202A_206A_206C_206C_202A_206F_206D_206E_202E_202E(excelRef)).HasValue ? 784349210 : 784349214);
break;
ValidationIssue validationIssue = Validate(quest, x.Sequence, x.StepId, dialogueChoice.ExcelSheet, prompt, "Prompt");
if (validationIssue != null)
{
yield return validationIssue;
}
}
ExcelRef answer = dialogueChoice.Answer;
if (answer != null)
{
ValidationIssue validationIssue2 = Validate(quest, x.Sequence, x.StepId, dialogueChoice.ExcelSheet, answer, "Answer");
if (validationIssue2 != null)
{
yield return validationIssue2;
}
}
}
}
}
static ExcelRef.EType _200E_200C_206D_206D_202C_200E_200F_206E_202E_200E_202D_206D_200E_202C_206C_200B_200B_206A_202A_200F_200C_202A_202B_206F_200C_206B_206E_206D_206C_206E_202C_206B_202E_200F_206F_200B_206D_200B_206C_206E_202E(ExcelRef P_0)
private ValidationIssue? Validate(Quest quest, QuestSequence sequence, int stepId, string? excelSheet, ExcelRef excelRef, string label)
{
return P_0.Type;
}
static string _202B_206D_206E_206C_200E_202E_206F_200F_202B_202A_206F_206E_206D_202A_202D_202E_202D_202A_200F_206E_200C_202A_206E_206A_202C_206C_206B_206C_200E_206B_202D_202A_206A_206C_206C_202A_206F_206D_206E_202E_202E(ExcelRef P_0)
{
return P_0.AsKey();
}
static string _200F_206F_200D_206A_206F_200D_206A_206A_206A_206F_206E_202A_200C_202C_200F_202A_202C_200C_202A_200F_202D_202E_200E_206C_206A_200C_206F_200B_206E_206A_206D_200B_200E_202C_206A_202D_202E_200C_202C_202C_202E(object P_0)
{
return P_0.ToString();
}
static byte _206E_206B_202D_206C_206A_200B_202C_206E_200B_206B_200F_200E_206D_206D_200F_200D_202E_200E_202B_202C_200C_202C_202A_206F_202A_200F_206F_200C_206A_206C_206C_202E_200F_202B_200C_206D_206E_202A_202B_202C_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
static uint _206D_200C_200F_202C_206D_202E_206A_206E_206F_202B_200E_206D_206D_206E_200D_206B_202E_202B_206D_206B_202D_200B_202C_200C_206B_202C_200F_206E_200E_206D_200B_200B_206B_206A_202B_200B_206B_202C_206D_202C_202E(ExcelRef P_0)
{
return P_0.AsRowId();
if (excelRef.Type == ExcelRef.EType.Key)
{
if (!_excelFunctions.GetRawDialogueText(quest, excelSheet, excelRef.AsKey()).HasValue)
{
return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(sequence.Sequence, stepId),
Type = EIssueType.InvalidExcelRef,
Severity = EIssueSeverity.Error,
Description = $"{label} invalid: {excelSheet} → {excelRef.AsKey()}"
};
}
}
else if (excelRef.Type == ExcelRef.EType.RowId && !_excelFunctions.GetRawDialogueTextByRowId(excelSheet, excelRef.AsRowId()).HasValue)
{
return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(sequence.Sequence, stepId),
Type = EIssueType.InvalidExcelRef,
Severity = EIssueSeverity.Error,
Description = $"{label} invalid: {excelSheet} → {excelRef.AsRowId()}"
};
}
return null;
}
}

View file

@ -1,19 +1,10 @@
using System.Runtime.CompilerServices;
namespace Questionable.Validation.Validators;
internal sealed class FateSchemaValidator : DefinitionSchemaValidator
{
protected override EPathType PathType => EPathType.Fate;
protected override string MainSchemaUri
{
[MethodImpl(MethodImplOptions.NoInlining)]
get
{
return global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-1643882609);
}
}
protected override string MainSchemaUri => "https://github.com/WigglyMuffin/Questionable/raw/refs/heads/main/FatePaths/fatedefinition-v1.json";
public FateSchemaValidator(SchemaRegistrar schemaRegistrar)
: base(schemaRegistrar)

View file

@ -1,9 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using Dalamud.Plugin.Services;
using Questionable.Data;
using Questionable.Model;
@ -13,321 +10,6 @@ namespace Questionable.Validation.Validators;
internal sealed class GameSequenceCoverageValidator : IQuestValidator
{
[Serializable]
[CompilerGenerated]
private sealed class _003C_003Ec
{
public static readonly _003C_003Ec _003C_003E9 = new _003C_003Ec();
public static Func<QuestSequence, int> _003C_003E9__2_0;
internal int _003CValidate_003Eb__2_0(QuestSequence x)
{
return _202A_200F_206E_206E_206F_202A_202D_200D_200E_202D_202E_206B_206B_202C_206F_206F_200B_206B_200C_202C_200D_202B_206A_202E_206B_202A_200F_206D_202A_200D_202B_206F_202E_200F_200D_206E_206B_206F_200B_206F_202E(x);
}
static byte _202A_200F_206E_206E_206F_202A_202D_200D_200E_202D_202E_206B_206B_202C_206F_206F_200B_206B_200C_202C_200D_202B_206A_202E_206B_202A_200F_206D_202A_200D_202B_206F_202E_200F_200D_206E_206B_206F_200B_206F_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
}
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass2_0
{
public HashSet<int> authored;
internal bool _003CValidate_003Eb__1(int seq)
{
return !authored.Contains(seq);
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__2 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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;
public GameSequenceCoverageValidator _003C_003E4__this;
private IEnumerator<int> _003C_003E7__wrap1;
ValidationIssue IEnumerator<ValidationIssue>.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
[DebuggerHidden]
public _003CValidate_003Ed__2(int _003C_003E1__state)
{
this._003C_003E1__state = _003C_003E1__state;
_003C_003El__initialThreadId = _206A_200F_206B_202D_206F_202D_206B_202E_200F_206D_200B_206D_202B_206E_206C_206E_206E_206E_206A_206F_202B_200E_206E_202E_200C_202D_200C_200C_206C_202A_200C_202B_200B_200D_200B_202E_202E_200C_206D_202D_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? (-1463378025) : (-1463378026));
while (true)
{
int num3 = num2;
int num4 = -1463378025;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
default:
continue;
case 2:
num2 = -1463378026;
continue;
case 1:
if (num == 1)
{
num2 = -1463378025;
continue;
}
break;
case 0:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = null;
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
GameSequenceCoverageValidator gameSequenceCoverageValidator = _003C_003E4__this;
int num2 = ((num == 0) ? (-1251389121) : (-1251389133));
_003C_003Ec__DisplayClass2_0 _003C_003Ec__DisplayClass2_ = default(_003C_003Ec__DisplayClass2_0);
QuestId questId = default(QuestId);
while (true)
{
int num3 = num2;
int num4 = -1251389125;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 5:
return false;
case 8:
num2 = ((num == 1) ? (-1251389124) : (-1251389122));
break;
case 6:
return false;
case 4:
_003C_003E1__state = -1;
_003C_003Ec__DisplayClass2_ = new _003C_003Ec__DisplayClass2_0();
questId = quest.Id as QuestId;
num2 = (((object)questId != null) ? (-1251389125) : (-1251389123));
break;
case 3:
num2 = -1251389133;
break;
case 0:
{
_003C_003Ec__DisplayClass2_.authored = ((IEnumerable<QuestSequence>)_202C_202A_206D_206A_206B_202E_206F_200C_200B_202A_206C_206B_206A_202E_206B_200C_206B_200C_200F_200F_200B_206D_200E_202C_200E_206A_200B_202C_206D_200F_200E_200F_200C_202D_200C_202A_200D_202E_206E_200E_202E(quest.Root)).Select((Func<QuestSequence, int>)((QuestSequence x) => _003C_003Ec._202A_200F_206E_206E_206F_202A_202D_200D_200E_202D_202E_206B_206B_202C_206F_206F_200B_206B_200C_202C_200D_202B_206A_202E_206B_202A_200F_206D_202A_200D_202B_206F_202E_200F_200D_206E_206B_206F_200B_206F_202E(x))).ToHashSet();
IEnumerable<int> enumerable = GameQuestSequences.GetCompletionSequences(gameSequenceCoverageValidator._dataManager, questId).Where(_003C_003Ec__DisplayClass2_._003CValidate_003Eb__1);
_003C_003E7__wrap1 = enumerable.GetEnumerator();
_003C_003E1__state = -3;
num2 = -1251389134;
break;
}
case 2:
{
int current = _003C_003E7__wrap1.Current;
ValidationIssue obj = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _206F_206C_206E_202A_200F_206D_200B_202E_206C_200C_200B_200F_200C_202B_202B_206D_206B_202C_200D_200F_200F_200D_206B_200B_202E_200C_200D_202C_200F_206D_200D_200E_202C_206E_200B_206B_206E_202A_206B_200C_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation((byte)current, null),
Type = EIssueType.MissingPostInstanceSequence,
Severity = EIssueSeverity.Warning
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(76, 1);
defaultInterpolatedStringHandler.AppendLiteral(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<string>(1038269044));
defaultInterpolatedStringHandler.AppendFormatted(current);
defaultInterpolatedStringHandler.AppendLiteral(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<string>(-1871308311));
obj.Description = _206B_202C_206E_206A_200F_206E_202A_202C_206F_200D_200C_206E_202E_200B_206B_206E_202B_202D_202E_206E_202B_206C_206B_206F_200E_206F_202B_200E_206B_206C_202C_202A_202E_202A_202D_202D_200C_206D_202E_202D_202E(defaultInterpolatedStringHandler.ToStringAndClear(), global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(1742548975));
_003C_003E2__current = obj;
_003C_003E1__state = 1;
return true;
}
case 7:
_003C_003E1__state = -3;
num2 = -1251389134;
break;
case 9:
num2 = (_202A_206D_206A_200B_200B_202A_202E_202A_200B_206E_202A_202E_202D_200B_206B_200B_206B_200D_206E_202B_200B_200F_206C_200C_200E_206E_206B_206C_202E_202A_200B_202C_202E_200C_202B_206E_206F_206F_206F_200C_202E((IEnumerator)_003C_003E7__wrap1) ? (-1251389127) : (-1251389126));
break;
case 1:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = null;
return false;
}
}
}
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;
int num = ((_003C_003E7__wrap1 == null) ? (-1668424457) : (-1668424458));
while (true)
{
int num2 = num;
int num3 = -1668424457;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = -1668424458;
break;
case 1:
_200F_206D_206A_206E_202C_206E_200E_200C_202C_206C_206D_206F_202C_202C_200F_202A_202A_202D_206C_206E_202A_206A_200B_206A_206C_206E_206D_200C_200B_202A_206B_200C_206B_200F_200E_202C_206A_206C_202C_206A_202E((IDisposable)_003C_003E7__wrap1);
num = -1668424457;
break;
case 0:
return;
}
}
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _206E_206F_200C_200C_206F_200C_202E_202A_206E_206D_200D_206F_202D_206E_202E_200F_206C_206B_200F_200E_200B_202B_206F_206F_202D_202D_200C_202C_202A_200F_200D_202D_200B_202C_202E_200D_202D_206C_202C_200F_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? (-272048312) : (-272048307));
_003CValidate_003Ed__2 _003CValidate_003Ed__ = default(_003CValidate_003Ed__2);
while (true)
{
int num2 = num;
int num3 = -272048308;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 2:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = -272048308;
break;
case 1:
num = ((_003C_003El__initialThreadId != _206A_200F_206B_202D_206F_202D_206B_202E_200F_206D_200B_206D_202B_206E_206C_206E_206E_206E_206A_206F_202B_200E_206E_202E_200C_202D_200C_200C_206C_202A_200C_202B_200B_200D_200B_202E_202E_200C_206D_202D_202E()) ? (-272048312) : (-272048306));
break;
case 4:
_003CValidate_003Ed__ = new _003CValidate_003Ed__2(0)
{
_003C_003E4__this = _003C_003E4__this
};
num = -272048308;
break;
case 3:
num = -272048307;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _206A_200F_206B_202D_206F_202D_206B_202E_200F_206D_200B_206D_202B_206E_206C_206E_206E_206E_206A_206F_202B_200E_206E_202E_200C_202D_200C_200C_206C_202A_200C_202B_200B_200D_200B_202E_202E_200C_206D_202D_202E()
{
return Environment.CurrentManagedThreadId;
}
static List<QuestSequence> _202C_202A_206D_206A_206B_202E_206F_200C_200B_202A_206C_206B_206A_202E_206B_200C_206B_200C_200F_200F_200B_206D_200E_202C_200E_206A_200B_202C_206D_200F_200E_200F_200C_202D_200C_202A_200D_202E_206E_200E_202E(QuestRoot P_0)
{
return P_0.QuestSequence;
}
static string _206F_206C_206E_202A_200F_206D_200B_202E_206C_200C_200B_200F_200C_202B_202B_206D_206B_202C_200D_200F_200F_200D_206B_200B_202E_200C_200D_202C_200F_206D_200D_200E_202C_206E_200B_206B_206E_202A_206B_200C_202E(object P_0)
{
return P_0.ToString();
}
static string _206B_202C_206E_206A_200F_206E_202A_202C_206F_200D_200C_206E_202E_200B_206B_206E_202B_202D_202E_206E_202B_206C_206B_206F_200E_206F_202B_200E_206B_206C_202C_202A_202E_202A_202D_202D_200C_206D_202E_202D_202E(string P_0, string P_1)
{
return P_0 + P_1;
}
static bool _202A_206D_206A_200B_200B_202A_202E_202A_200B_206E_202A_202E_202D_200B_206B_200B_206B_200D_206E_202B_200B_200F_206C_200C_200E_206E_206B_206C_202E_202A_200B_202C_202E_200C_202B_206E_206F_206F_206F_200C_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _200F_206D_206A_206E_202C_206E_200E_200C_202C_206C_206D_206F_202C_202C_200F_202A_202A_202D_206C_206E_202A_206A_200B_206A_206C_206E_206D_200C_200B_202A_206B_200C_206B_200F_200E_202C_206A_206C_202C_206A_202E(IDisposable P_0)
{
P_0.Dispose();
}
static NotSupportedException _206E_206F_200C_200C_206F_200C_202E_202A_206E_206D_200D_206F_202D_206E_202E_200F_206C_206B_200F_200E_200B_202B_206F_206F_202D_202D_200C_202C_202A_200F_200D_202D_200B_202C_202E_200D_202D_206C_202C_200F_202E()
{
return new NotSupportedException();
}
}
private readonly IDataManager _dataManager;
public GameSequenceCoverageValidator(IDataManager dataManager)
@ -335,20 +17,27 @@ internal sealed class GameSequenceCoverageValidator : IQuestValidator
_dataManager = dataManager;
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__2))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__2(-2)
if (!(quest.Id is QuestId questId))
{
_003C_003E4__this = this,
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
yield break;
}
HashSet<int> authored = ((IEnumerable<QuestSequence>)quest.Root.QuestSequence).Select((Func<QuestSequence, int>)((QuestSequence x) => x.Sequence)).ToHashSet();
IEnumerable<int> enumerable = from seq in GameQuestSequences.GetCompletionSequences(_dataManager, questId)
where !authored.Contains(seq)
select seq;
foreach (int item in enumerable)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation((byte)item, null),
Type = EIssueType.MissingPostInstanceSequence,
Severity = EIssueSeverity.Warning,
Description = $"The game uses sequence {item}, but the quest path doesn't define it. Add an empty " + "placeholder sequence (or steps, if the sequence requires player action)."
};
}
}
}

View file

@ -1,19 +1,10 @@
using System.Runtime.CompilerServices;
namespace Questionable.Validation.Validators;
internal sealed class GatheringSchemaValidator : DefinitionSchemaValidator
{
protected override EPathType PathType => EPathType.Gathering;
protected override string MainSchemaUri
{
[MethodImpl(MethodImplOptions.NoInlining)]
get
{
return global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-945562084);
}
}
protected override string MainSchemaUri => "https://github.com/WigglyMuffin/Questionable/raw/refs/heads/main/GatheringPaths/gatheringlocation-v1.json";
public GatheringSchemaValidator(SchemaRegistrar schemaRegistrar)
: base(schemaRegistrar)

View file

@ -1,10 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;
using Questionable.Model;
using Questionable.Model.Questing;
@ -12,476 +7,55 @@ namespace Questionable.Validation.Validators;
internal sealed class LandingZoneValidator : 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;
internal bool _003CValidate_003Eb__0_0((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
List<LandingZone> list = _200D_202B_206F_200E_202E_206A_202A_206B_200D_206F_200C_202D_200F_202D_206E_202D_202E_202C_206D_202B_202B_200C_202D_202E_206E_206E_206F_202A_200B_202C_206B_200F_206D_200E_202E_202C_200C_202E_206B_206A_202E(x.Step);
int num = ((list == null) ? 293008772 : 293008775);
while (true)
{
int num2 = num;
int num3 = 293008773;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 1:
return false;
case 2:
return list.Count > 0;
case 0:
goto IL_0059;
}
continue;
IL_0059:
num = 293008775;
}
}
static List<LandingZone> _200D_202B_206F_200E_202E_206A_202A_206B_200D_206F_200C_202D_200F_202D_206E_202D_202E_202C_206D_202B_202B_200C_202D_202E_206E_206E_206F_202A_200B_202C_206B_200F_206D_200E_202E_202C_200C_202E_206B_206A_202E(QuestStep P_0)
{
return P_0.LandingZones;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__0 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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 IEnumerator<(QuestSequence Sequence, int StepId, QuestStep Step)> _003C_003E7__wrap1;
private (QuestSequence Sequence, int StepId, QuestStep Step) _003CstepInfo_003E5__3;
private int _003Cz_003E5__4;
private LandingZone _003Czone_003E5__5;
ValidationIssue IEnumerator<ValidationIssue>.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 = _206B_202C_206F_206D_202E_202E_206D_206F_200C_200D_206C_200C_206A_206F_206D_206E_202D_202A_200C_202E_202E_206D_200F_200B_200F_200B_200E_200B_202A_200F_206E_206A_202E_206B_206B_202E_206F_200B_206B_202A_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? (-301580919) : (-301580918));
while (true)
{
int num3 = num2;
int num4 = -301580920;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
default:
continue;
case 0:
num2 = -301580918;
continue;
case 2:
num4 = 1;
num5 = num;
if ((uint)(~(~num5 + num4)) <= 2u)
{
num2 = -301580919;
continue;
}
break;
case 1:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = null;
_003CstepInfo_003E5__3 = default((QuestSequence, int, QuestStep));
_003Czone_003E5__5 = null;
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num;
switch (_003C_003E1__state)
{
default:
num = 1353765120;
goto IL_0029;
case 2:
_003C_003E1__state = -3;
num = 1353765123;
goto IL_0029;
case 1:
goto IL_02fa;
case 0:
goto IL_0497;
case 3:
goto IL_04ef;
IL_0029:
while (true)
{
int num2 = num;
int num3 = 1353765133;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 15:
num = 1353765120;
break;
case 14:
goto IL_00a1;
case 7:
goto IL_00d3;
case 11:
goto IL_0100;
case 5:
_003CstepInfo_003E5__3 = _003C_003E7__wrap1.Current;
_003Cz_003E5__4 = 0;
num = 1353765151;
break;
case 2:
{
int num5 = _003Cz_003E5__4;
num3 = 1;
num4 = num5;
_003Cz_003E5__4 = (num4 | num3) + (num4 & num3);
num = 1353765151;
break;
}
case 18:
goto IL_0178;
case 0:
goto IL_01b0;
case 6:
_003CstepInfo_003E5__3 = default((QuestSequence, int, QuestStep));
num = 1353765126;
break;
case 9:
goto end_IL_0029;
case 1:
_003Czone_003E5__5 = null;
num = 1353765135;
break;
case 3:
{
ValidationIssue obj3 = new ValidationIssue
{
ElementId = quest.Id,
Sequence = _200B_202B_202B_206D_206D_200C_202E_206A_200B_206F_206A_206C_202B_202D_200C_200C_206F_200C_206D_200B_200E_200D_202A_206D_202B_202A_200C_206B_206A_202B_200F_206E_200C_206B_200D_206F_206B_206F_202A_202B_202E(_003CstepInfo_003E5__3.Sequence),
Step = _003CstepInfo_003E5__3.StepId,
Type = EIssueType.InvalidLandingZone,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler3 = new DefaultInterpolatedStringHandler(48, 1);
defaultInterpolatedStringHandler3.AppendLiteral(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<string>(763106568));
defaultInterpolatedStringHandler3.AppendFormatted(_003Cz_003E5__4);
defaultInterpolatedStringHandler3.AppendLiteral(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<string>(-317713008));
obj3.Description = defaultInterpolatedStringHandler3.ToStringAndClear();
_003C_003E2__current = obj3;
_003C_003E1__state = 3;
return true;
}
case 10:
goto IL_02fa;
case 13:
return false;
case 17:
{
ValidationIssue obj2 = new ValidationIssue
{
ElementId = quest.Id,
Sequence = _200B_202B_202B_206D_206D_200C_202E_206A_200B_206F_206A_206C_202B_202D_200C_200C_206F_200C_206D_200B_200E_200D_202A_206D_202B_202A_200C_206B_206A_202B_200F_206E_200C_206B_200D_206F_206B_206F_202A_202B_202E(_003CstepInfo_003E5__3.Sequence),
Step = _003CstepInfo_003E5__3.StepId,
Type = EIssueType.InvalidLandingZone,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler2 = new DefaultInterpolatedStringHandler(39, 1);
defaultInterpolatedStringHandler2.AppendLiteral(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<string>(-1041108262));
defaultInterpolatedStringHandler2.AppendFormatted(_003Cz_003E5__4);
defaultInterpolatedStringHandler2.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-1470671526));
obj2.Description = defaultInterpolatedStringHandler2.ToStringAndClear();
_003C_003E2__current = obj2;
_003C_003E1__state = 1;
return true;
}
case 16:
{
ValidationIssue obj = new ValidationIssue
{
ElementId = quest.Id,
Sequence = _200B_202B_202B_206D_206D_200C_202E_206A_200B_206F_206A_206C_202B_202D_200C_200C_206F_200C_206D_200B_200E_200D_202A_206D_202B_202A_200C_206B_206A_202B_200F_206E_200C_206B_200D_206F_206B_206F_202A_202B_202E(_003CstepInfo_003E5__3.Sequence),
Step = _003CstepInfo_003E5__3.StepId,
Type = EIssueType.InvalidLandingZone,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(27, 1);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(430923307));
defaultInterpolatedStringHandler.AppendFormatted(_003Cz_003E5__4);
defaultInterpolatedStringHandler.AppendLiteral(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<string>(1557501855));
obj.Description = defaultInterpolatedStringHandler.ToStringAndClear();
_003C_003E2__current = obj;
_003C_003E1__state = 2;
return true;
}
case 8:
goto IL_0497;
case 12:
goto IL_04ef;
case 4:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = null;
return false;
}
continue;
IL_01b0:
_003Czone_003E5__5 = _202E_200C_202A_200B_206B_206C_206A_206D_202B_206C_200C_202E_202A_200E_202B_206A_202D_206E_202D_200B_200F_200E_206B_200C_202A_206A_202B_206C_202D_206C_200F_202C_202B_206B_202B_206C_202C_200B_202E_200C_202E(_003CstepInfo_003E5__3.Step)[_003Cz_003E5__4];
num = ((_206B_200F_200D_202D_202D_206E_202B_206E_206B_200C_200C_206D_206D_202B_206F_202B_206D_200C_202D_200D_206B_202E_200F_206E_202E_206B_206C_200E_200E_206B_200D_202B_206D_206D_206D_206A_206C_206C_206F_202D_202E(_003Czone_003E5__5).Count >= 3) ? 1353765130 : 1353765148);
continue;
IL_00a1:
num = ((!(_200C_202A_206D_202A_206F_200E_200C_206A_202C_202E_202D_206A_206A_206B_200F_202D_202A_200D_206F_202D_200C_200D_200E_206E_200E_200B_202E_200C_202C_206D_200C_200C_200F_200B_202B_200C_206C_202C_202A_206A_202E((IReadOnlyList<Vector3>)_206B_200F_200D_202D_202D_206E_202B_206E_206B_200C_200C_206D_206D_202B_206F_202B_206D_200C_202D_200D_206B_202E_200F_206E_202E_206B_206C_200E_200E_206B_200D_202B_206D_206D_206D_206A_206C_206C_206F_202D_202E(_003Czone_003E5__5)) < 0.01f)) ? 1353765132 : 1353765134);
continue;
IL_0100:
num = (_202B_206E_206E_206C_202A_200C_200C_202D_202B_202D_200E_202C_200D_202A_200C_206C_202A_200D_202C_206A_200D_200D_206B_200D_200E_206F_206A_200D_202C_202A_206D_206E_200D_206E_206B_206C_206E_200D_202A_202A_202E((IEnumerator)_003C_003E7__wrap1) ? 1353765128 : 1353765129);
continue;
IL_0178:
num = ((_003Cz_003E5__4 < _202E_200C_202A_200B_206B_206C_206A_206D_202B_206C_200C_202E_202A_200E_202B_206A_202D_206E_202D_200B_200F_200E_206B_200C_202A_206A_202B_206C_202D_206C_200F_202C_202B_206B_202B_206C_202C_200B_202E_200C_202E(_003CstepInfo_003E5__3.Step).Count) ? 1353765133 : 1353765131);
continue;
IL_00d3:
num = (_206A_206D_200F_202E_202D_202A_202B_206C_206D_202A_202A_202C_200D_206C_206F_206D_200C_200B_206B_200F_202C_206A_200D_206A_206D_202D_202E_206F_206B_202A_202C_200E_200E_206F_202C_202A_200E_202E_200C_202A_202E((IReadOnlyList<Vector3>)_206B_200F_200D_202D_202D_206E_202B_206E_206B_200C_200C_206D_206D_202B_206F_202B_206D_200C_202D_200D_206B_202E_200F_206E_202E_206B_206C_200E_200E_206B_200D_202B_206D_206D_206D_206A_206C_206C_206F_202D_202E(_003Czone_003E5__5)) ? 1353765123 : 1353765149);
continue;
end_IL_0029:
break;
}
goto case 2;
IL_04ef:
_003C_003E1__state = -3;
num = 1353765132;
goto IL_0029;
IL_0497:
_003C_003E1__state = -1;
_003C_003E7__wrap1 = quest.AllSteps().Where<(QuestSequence, int, QuestStep)>(delegate((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
List<LandingZone> list = _003C_003Ec._200D_202B_206F_200E_202E_206A_202A_206B_200D_206F_200C_202D_200F_202D_206E_202D_202E_202C_206D_202B_202B_200C_202D_202E_206E_206E_206F_202A_200B_202C_206B_200F_206D_200E_202E_202C_200C_202E_206B_206A_202E(x.Step);
int num6 = ((list == null) ? 293008772 : 293008775);
while (true)
{
int num7 = num6;
int num8 = 293008773;
int num9 = num7;
switch ((num9 | num8) - (num9 & num8))
{
case 1:
return false;
case 2:
return list.Count > 0;
case 0:
goto IL_0059;
}
continue;
IL_0059:
num6 = 293008775;
}
}).GetEnumerator();
_003C_003E1__state = -3;
num = 1353765126;
goto IL_0029;
IL_02fa:
_003C_003E1__state = -3;
num = 1353765135;
goto IL_0029;
}
}
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;
int num = ((_003C_003E7__wrap1 == null) ? 849893968 : 849893971);
while (true)
{
int num2 = num;
int num3 = 849893970;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
return;
case 1:
_202B_200B_206D_202B_206E_202A_206A_200D_200E_200F_206C_202A_206D_206D_206C_206F_202D_206F_202D_206B_202A_206F_200F_202A_200E_206F_206E_202D_200B_206D_200E_200F_200C_202D_202D_200F_206B_202E_206E_202C_202E((IDisposable)_003C_003E7__wrap1);
num = 849893968;
break;
case 0:
num = 849893971;
break;
}
}
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _200E_202D_200D_200B_202E_206F_206C_206D_206C_206F_206F_206F_202B_202E_202C_206B_206A_206D_202A_206F_206B_202A_202B_200D_202D_200C_202E_202D_202C_200F_202B_200E_206B_200D_206C_200F_202A_202C_206D_202A_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? 1118277465 : 1118277470);
_003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0);
while (true)
{
int num2 = num;
int num3 = 1118277469;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = 1118277470;
break;
case 4:
_003CValidate_003Ed__ = new _003CValidate_003Ed__0(0);
num = 1118277468;
break;
case 1:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 2:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = 1118277468;
break;
case 3:
num = ((_003C_003El__initialThreadId != _206B_202C_206F_206D_202E_202E_206D_206F_200C_200D_206C_200C_206A_206F_206D_206E_202D_202A_200C_202E_202E_206D_200F_200B_200F_200B_200E_200B_202A_200F_206E_206A_202E_206B_206B_202E_206F_200B_206B_202A_202E()) ? 1118277465 : 1118277471);
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _206B_202C_206F_206D_202E_202E_206D_206F_200C_200D_206C_200C_206A_206F_206D_206E_202D_202A_200C_202E_202E_206D_200F_200B_200F_200B_200E_200B_202A_200F_206E_206A_202E_206B_206B_202E_206F_200B_206B_202A_202E()
{
return Environment.CurrentManagedThreadId;
}
static List<LandingZone> _202E_200C_202A_200B_206B_206C_206A_206D_202B_206C_200C_202E_202A_200E_202B_206A_202D_206E_202D_200B_200F_200E_206B_200C_202A_206A_202B_206C_202D_206C_200F_202C_202B_206B_202B_206C_202C_200B_202E_200C_202E(QuestStep P_0)
{
return P_0.LandingZones;
}
static List<Vector3> _206B_200F_200D_202D_202D_206E_202B_206E_206B_200C_200C_206D_206D_202B_206F_202B_206D_200C_202D_200D_206B_202E_200F_206E_202E_206B_206C_200E_200E_206B_200D_202B_206D_206D_206D_206A_206C_206C_206F_202D_202E(LandingZone P_0)
{
return P_0.Vertices;
}
static byte _200B_202B_202B_206D_206D_200C_202E_206A_200B_206F_206A_206C_202B_202D_200C_200C_206F_200C_206D_200B_200E_200D_202A_206D_202B_202A_200C_206B_206A_202B_200F_206E_200C_206B_200D_206F_206B_206F_202A_202B_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
static bool _206A_206D_200F_202E_202D_202A_202B_206C_206D_202A_202A_202C_200D_206C_206F_206D_200C_200B_206B_200F_202C_206A_200D_206A_206D_202D_202E_206F_206B_202A_202C_200E_200E_206F_202C_202A_200E_202E_200C_202A_202E(IReadOnlyList<Vector3> P_0)
{
return LandingZoneMath.IsConvex(P_0);
}
static float _200C_202A_206D_202A_206F_200E_200C_206A_202C_202E_202D_206A_206A_206B_200F_202D_202A_200D_206F_202D_200C_200D_200E_206E_200E_200B_202E_200C_202C_206D_200C_200C_200F_200B_202B_200C_206C_202C_202A_206A_202E(IReadOnlyList<Vector3> P_0)
{
return LandingZoneMath.CalculatePolygonArea(P_0);
}
static bool _202B_206E_206E_206C_202A_200C_200C_202D_202B_202D_200E_202C_200D_202A_200C_206C_202A_200D_202C_206A_200D_200D_206B_200D_200E_206F_206A_200D_202C_202A_206D_206E_200D_206E_206B_206C_206E_200D_202A_202A_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _202B_200B_206D_202B_206E_202A_206A_200D_200E_200F_206C_202A_206D_206D_206C_206F_202D_206F_202D_206B_202A_206F_200F_202A_200E_206F_206E_202D_200B_206D_200E_200F_200C_202D_202D_200F_206B_202E_206E_202C_202E(IDisposable P_0)
{
P_0.Dispose();
}
static NotSupportedException _200E_202D_200D_200B_202E_206F_206C_206D_206C_206F_206F_206F_202B_202E_202C_206B_206A_206D_202A_206F_206B_202A_202B_200D_202D_200C_202E_202D_202C_200F_202B_200E_206B_200D_206C_200F_202A_202C_206D_202A_202E()
{
return new NotSupportedException();
}
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__0))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__0(-2)
foreach (var stepInfo in quest.AllSteps().Where<(QuestSequence, int, QuestStep)>(delegate((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
List<LandingZone> landingZones = x.Step.LandingZones;
return landingZones != null && landingZones.Count > 0;
}))
{
for (int z = 0; z < stepInfo.Item3.LandingZones.Count; z++)
{
LandingZone zone = stepInfo.Item3.LandingZones[z];
if (zone.Vertices.Count < 3)
{
yield return new ValidationIssue
{
ElementId = quest.Id,
Sequence = stepInfo.Item1.Sequence,
Step = stepInfo.Item2,
Type = EIssueType.InvalidLandingZone,
Severity = EIssueSeverity.Error,
Description = $"Landing zone {z} has fewer than 3 vertices"
};
continue;
}
if (!LandingZoneMath.IsConvex(zone.Vertices))
{
yield return new ValidationIssue
{
ElementId = quest.Id,
Sequence = stepInfo.Item1.Sequence,
Step = stepInfo.Item2,
Type = EIssueType.InvalidLandingZone,
Severity = EIssueSeverity.Error,
Description = $"Landing zone {z} is not convex"
};
}
if (LandingZoneMath.CalculatePolygonArea(zone.Vertices) < 0.01f)
{
yield return new ValidationIssue
{
ElementId = quest.Id,
Sequence = stepInfo.Item1.Sequence,
Step = stepInfo.Item2,
Type = EIssueType.InvalidLandingZone,
Severity = EIssueSeverity.Error,
Description = $"Landing zone {z} has zero area (collinear vertices)"
};
}
}
}
}
}

View file

@ -1,9 +1,5 @@
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;
@ -11,305 +7,21 @@ namespace Questionable.Validation.Validators;
internal sealed class NextQuestValidator : IQuestValidator
{
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass0_0
{
public Quest quest;
public Func<(QuestSequence Sequence, int StepId, QuestStep Step), bool> _003C_003E9__0;
internal bool _003CValidate_003Eb__0((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
return _200E_200D_202E_206B_206C_202A_200E_206C_202B_200B_206A_206C_206C_200F_206A_202B_206D_200E_206E_200B_202D_202A_202C_206C_202B_206C_206C_200B_202D_200F_200B_202B_200E_206B_206A_202D_206D_202E_206C_200E_202E(_202A_200E_206B_202C_202D_200E_200D_206E_200E_206C_206A_200F_202E_200E_200C_206E_202C_200D_200E_202B_200C_206C_202A_202D_202D_200B_202B_202A_200B_200C_202E_202A_206F_206E_202A_202C_202B_200F_202D_206A_202E(x.Step), quest.Id);
}
static ElementId _202A_200E_206B_202C_202D_200E_200D_206E_200E_206C_206A_200F_202E_200E_200C_206E_202C_200D_200E_202B_200C_206C_202A_202D_202D_200B_202B_202A_200B_200C_202E_202A_206F_206E_202A_202C_202B_200F_202D_206A_202E(QuestStep P_0)
{
return P_0.NextQuestId;
}
static bool _200E_200D_202E_206B_206C_202A_200E_206C_202B_200B_206A_206C_206C_200F_206A_202B_206D_200E_206E_200B_202D_202A_202C_206C_202B_206C_206C_200B_202D_200F_200B_202B_200E_206B_206A_202D_206D_202E_206C_200E_202E(ElementId P_0, ElementId P_1)
{
return P_0 == P_1;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__0 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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 _003C_003Ec__DisplayClass0_0 _003C_003E8__1;
private IEnumerator<(QuestSequence Sequence, int StepId, QuestStep Step)> _003C_003E7__wrap1;
ValidationIssue IEnumerator<ValidationIssue>.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 = _206C_206C_206D_200E_206B_200C_206D_200E_200D_206E_202B_200F_202C_200D_206A_202D_206F_206B_206A_200E_202D_200D_206D_200F_202C_202D_206E_206A_200F_206F_200D_206F_202D_202E_202E_200E_200C_206A_206D_206F_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? (-177611004) : (-177611003));
while (true)
{
int num3 = num2;
int num4 = -177611004;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
default:
continue;
case 2:
num2 = -177611003;
continue;
case 1:
if (num == 1)
{
num2 = -177611004;
continue;
}
break;
case 0:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E8__1 = null;
_003C_003E7__wrap1 = null;
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
int num2 = ((num == 0) ? 204267570 : 204267569);
while (true)
{
int num3 = num2;
int num4 = 204267573;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 7:
_003C_003E1__state = -1;
_003C_003E8__1 = new _003C_003Ec__DisplayClass0_0();
_003C_003E8__1.quest = quest;
_003C_003E7__wrap1 = (from x in _003C_003E8__1.quest.AllSteps()
where _003C_003Ec__DisplayClass0_0._200E_200D_202E_206B_206C_202A_200E_206C_202B_200B_206A_206C_206C_200F_206A_202B_206D_200E_206E_200B_202D_202A_202C_206C_202B_206C_206C_200B_202D_200F_200B_202B_200E_206B_206A_202D_206D_202E_206C_200E_202E(_003C_003Ec__DisplayClass0_0._202A_200E_206B_202C_202D_200E_200D_206E_200E_206C_206A_200F_202E_200E_200C_206E_202C_200D_200E_202B_200C_206C_202A_202D_202D_200B_202B_202A_200B_200C_202E_202A_206F_206E_202A_202C_202B_200F_202D_206A_202E(x.Step), _003C_003E8__1.quest.Id)
select x).GetEnumerator();
_003C_003E1__state = -3;
num2 = 204267574;
break;
case 1:
{
(QuestSequence, int, QuestStep) current = _003C_003E7__wrap1.Current;
_003C_003E2__current = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _202E_206D_200B_200B_202D_202E_206B_200B_202E_206A_202E_202D_202A_202E_202C_206E_202C_202E_202B_202E_200C_200E_202E_206D_206B_200D_202A_206F_202A_206A_202C_206D_200B_206E_200D_202C_200F_202B_206A_200D_202E((object)_003C_003E8__1.quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(_200B_202E_206E_202E_200D_202A_200D_200E_200E_200F_200E_206E_206A_206A_202D_200E_206D_202B_200E_200D_206E_202D_206C_206B_200F_200F_202B_200C_206B_202B_206D_200E_200D_200B_206F_206A_200B_202B_206E_200F_202E(current.Item1), current.Item2),
Type = EIssueType.InvalidNextQuestId,
Severity = EIssueSeverity.Error,
Description = global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-552631953)
};
_003C_003E1__state = 1;
return true;
}
case 4:
num2 = ((num == 1) ? 204267573 : 204267568);
break;
case 3:
num2 = (_202D_200C_202D_206D_206A_200F_200D_202D_200F_206D_206F_206E_200E_200D_202A_200C_202D_200F_202D_206C_202B_202D_206C_202C_202D_202B_202D_206A_202B_200E_200F_206E_200D_200D_200D_202A_202E_200C_200B_206D_202E((IEnumerator)_003C_003E7__wrap1) ? 204267572 : 204267571);
break;
case 5:
return false;
case 2:
num2 = 204267569;
break;
case 0:
_003C_003E1__state = -3;
num2 = 204267574;
break;
case 6:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = null;
return false;
}
}
}
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;
int num = ((_003C_003E7__wrap1 == null) ? (-1138121483) : (-1138121484));
while (true)
{
int num2 = num;
int num3 = -1138121483;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
return;
case 1:
_200D_206A_202A_200D_200E_202C_200B_202C_200F_200B_200E_200D_200F_200B_206E_206B_200F_200C_200E_206A_202B_200C_202E_206F_200B_206B_206B_200C_200C_206A_200D_206C_202E_200C_206B_202C_200D_206D_202D_202E((IDisposable)_003C_003E7__wrap1);
num = -1138121483;
break;
case 2:
num = -1138121484;
break;
}
}
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _206A_200E_202A_202D_202A_206C_202D_202A_206D_206A_200E_202A_206C_206C_200C_206B_206A_206B_206F_200E_202A_200F_200C_206F_202A_206F_206E_206D_200E_200F_200B_206D_206C_202D_202A_200D_206B_202C_202B_200C_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? (-561173402) : (-561173406));
_003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0);
while (true)
{
int num2 = num;
int num3 = -561173402;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 3:
num = -561173406;
break;
case 0:
_003CValidate_003Ed__ = new _003CValidate_003Ed__0(0);
num = -561173404;
break;
case 2:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 1:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = -561173404;
break;
case 4:
num = ((_003C_003El__initialThreadId != _206C_206C_206D_200E_206B_200C_206D_200E_200D_206E_202B_200F_202C_200D_206A_202D_206F_206B_206A_200E_202D_200D_206D_200F_202C_202D_206E_206A_200F_206F_200D_206F_202D_202E_202E_200E_200C_206A_206D_206F_202E()) ? (-561173402) : (-561173401));
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _206C_206C_206D_200E_206B_200C_206D_200E_200D_206E_202B_200F_202C_200D_206A_202D_206F_206B_206A_200E_202D_200D_206D_200F_202C_202D_206E_206A_200F_206F_200D_206F_202D_202E_202E_200E_200C_206A_206D_206F_202E()
{
return Environment.CurrentManagedThreadId;
}
static string _202E_206D_200B_200B_202D_202E_206B_200B_202E_206A_202E_202D_202A_202E_202C_206E_202C_202E_202B_202E_200C_200E_202E_206D_206B_200D_202A_206F_202A_206A_202C_206D_200B_206E_200D_202C_200F_202B_206A_200D_202E(object P_0)
{
return P_0.ToString();
}
static byte _200B_202E_206E_202E_200D_202A_200D_200E_200E_200F_200E_206E_206A_206A_202D_200E_206D_202B_200E_200D_206E_202D_206C_206B_200F_200F_202B_200C_206B_202B_206D_200E_200D_200B_206F_206A_200B_202B_206E_200F_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
static bool _202D_200C_202D_206D_206A_200F_200D_202D_200F_206D_206F_206E_200E_200D_202A_200C_202D_200F_202D_206C_202B_202D_206C_202C_202D_202B_202D_206A_202B_200E_200F_206E_200D_200D_200D_202A_202E_200C_200B_206D_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _200D_206A_202A_200D_200E_202C_200B_202C_200F_200B_200E_200D_200F_200B_206E_206B_200F_200C_200E_206A_202B_200C_202E_206F_200B_206B_206B_200C_200C_206A_200D_206C_202E_200C_206B_202C_200D_206D_202D_202E(IDisposable P_0)
{
P_0.Dispose();
}
static NotSupportedException _206A_200E_202A_202D_202A_206C_202D_202A_206D_206A_200E_202A_206C_206C_200C_206B_206A_206B_206F_200E_202A_200F_200C_206F_202A_206F_206E_206D_200E_200F_200B_206D_206C_202D_202A_200D_206B_202C_202B_200C_202E()
{
return new NotSupportedException();
}
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__0))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__0(-2)
foreach (var item in from x in quest.AllSteps()
where x.Step.NextQuestId == quest.Id
select x)
{
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(item.Item1.Sequence, item.Item2),
Type = EIssueType.InvalidNextQuestId,
Severity = EIssueSeverity.Error,
Description = "Next quest should not reference itself"
};
}
}
}

View file

@ -1,230 +1,23 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using Questionable.Model;
using Questionable.Model.Questing;
namespace Questionable.Validation.Validators;
internal sealed class QuestDisabledValidator : IQuestValidator
{
[CompilerGenerated]
private sealed class _003CValidate_003Ed__0 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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;
ValidationIssue IEnumerator<ValidationIssue>.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 = _202C_206D_202D_200B_206F_206B_200D_202B_202A_206E_206F_202C_202E_202C_200C_200C_206D_206E_200F_206A_206E_200E_206C_202A_206A_202B_202E_202B_206F_200B_206B_206B_206F_206A_202D_200C_206F_200B_206A_200C_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
int num = _003C_003E1__state;
int num2 = ((num == 0) ? 995898240 : 995898242);
while (true)
{
int num3 = num2;
int num4 = 995898241;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
case 4:
return false;
case 0:
return false;
case 6:
_003C_003E2__current = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _206E_200D_200D_200D_206D_202A_200F_206A_200C_200F_200D_206F_202E_202D_206E_200F_206E_206B_200D_206C_200B_202D_206D_200C_206C_206E_202D_206E_202A_200C_206D_202E_206F_202A_206D_206F_200C_202A_206F_202D_202E((object)quest.Id),
Location = null,
Type = EIssueType.QuestDisabled,
Severity = EIssueSeverity.None,
Description = global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(562118672)
};
_003C_003E1__state = 1;
return true;
case 1:
_003C_003E1__state = -1;
num2 = ((!_200C_202A_206F_206B_206D_200D_202C_200F_200C_200D_200C_200E_206A_206F_200F_202E_206D_206E_206C_202A_200C_202E_200E_202B_200E_200D_206C_202A_202A_200F_202B_200F_200D_206F_202D_206E_200F_202E_200E_200F_202E(quest.Root)) ? 995898241 : 995898247);
break;
case 2:
_003C_003E1__state = -1;
num2 = 995898241;
break;
case 5:
num2 = 995898242;
break;
case 3:
num2 = ((num == 1) ? 995898243 : 995898245);
break;
}
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _206D_206D_200B_202D_206A_200D_200B_200B_200C_202D_200C_200E_200E_206D_206C_206F_206D_200F_206F_206E_200D_206D_200F_206E_206E_200F_206A_202C_206A_200F_206A_206C_206D_202B_200C_200E_206D_202B_200D_202A_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? 1288599093 : 1288599094);
_003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0);
while (true)
{
int num2 = num;
int num3 = 1288599095;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 4:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = 1288599092;
break;
case 1:
num = ((_003C_003El__initialThreadId != _202C_206D_202D_200B_206F_206B_200D_202B_202A_206E_206F_202C_202E_202C_200C_200C_206D_206E_200F_206A_206E_200E_206C_202A_206A_202B_202E_202B_206F_200B_206B_206B_206F_206A_202D_200C_206F_200B_206A_200C_202E()) ? 1288599093 : 1288599091);
break;
case 0:
num = 1288599094;
break;
case 3:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 2:
_003CValidate_003Ed__ = new _003CValidate_003Ed__0(0);
num = 1288599092;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _202C_206D_202D_200B_206F_206B_200D_202B_202A_206E_206F_202C_202E_202C_200C_200C_206D_206E_200F_206A_206E_200E_206C_202A_206A_202B_202E_202B_206F_200B_206B_206B_206F_206A_202D_200C_206F_200B_206A_200C_202E()
{
return Environment.CurrentManagedThreadId;
}
static bool _200C_202A_206F_206B_206D_200D_202C_200F_200C_200D_200C_200E_206A_206F_200F_202E_206D_206E_206C_202A_200C_202E_200E_202B_200E_200D_206C_202A_202A_200F_202B_200F_200D_206F_202D_206E_200F_202E_200E_200F_202E(QuestRoot P_0)
{
return P_0.Disabled;
}
static string _206E_200D_200D_200D_206D_202A_200F_206A_200C_200F_200D_206F_202E_202D_206E_200F_206E_206B_200D_206C_200B_202D_206D_200C_206C_206E_202D_206E_202A_200C_206D_202E_206F_202A_206D_206F_200C_202A_206F_202D_202E(object P_0)
{
return P_0.ToString();
}
static NotSupportedException _206D_206D_200B_202D_206A_200D_200B_200B_200C_202D_200C_200E_200E_206D_206C_206F_206D_200F_206F_206E_200D_206D_200F_206E_206E_200F_206A_202C_206A_200F_206A_206C_206D_202B_200C_200E_206D_202B_200D_202A_202E()
{
return new NotSupportedException();
}
}
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
int num = 995898240;
while (true)
if (quest.Root.Disabled)
{
int num2 = num;
int num3 = 995898241;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
yield return new ValidationIssue
{
case 4:
yield break;
case 0:
yield break;
case 6:
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = _003CValidate_003Ed__0._206E_200D_200D_200D_206D_202A_200F_206A_200C_200F_200D_206F_202E_202D_206E_200F_206E_206B_200D_206C_200B_202D_206D_200C_206C_206E_202D_206E_202A_200C_206D_202E_206F_202A_206D_206F_200C_202A_206F_202D_202E((object)quest.Id),
Location = null,
Type = EIssueType.QuestDisabled,
Severity = EIssueSeverity.None,
Description = global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(562118672)
};
num = 995898242;
break;
case 1:
num = ((!_003CValidate_003Ed__0._200C_202A_206F_206B_206D_200D_202C_200F_200C_200D_200C_200E_206A_206F_200F_202E_206D_206E_206C_202A_200C_202E_200E_202B_200E_200D_206C_202A_202A_200F_202B_200F_200D_206F_202D_206E_200F_202E_200E_200F_202E(quest.Root)) ? 995898241 : 995898247);
break;
case 2:
num = 995898241;
break;
case 5:
num = 995898242;
break;
case 3:
{
int num7;
num = ((num7 == 1) ? 995898243 : 995898245);
break;
}
}
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = null,
Type = EIssueType.QuestDisabled,
Severity = EIssueSeverity.None,
Description = "Quest is disabled"
};
}
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
}
}

View file

@ -1,9 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using Lumina.Text.ReadOnly;
using Questionable.Functions;
using Questionable.Model;
@ -13,320 +9,6 @@ namespace Questionable.Validation.Validators;
internal sealed class SayValidator : 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__2_0;
internal bool _003CValidate_003Eb__2_0((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
return _206B_200C_206E_200C_200F_206F_200E_202E_206D_206F_200B_206B_206F_202C_200B_200B_206D_206E_206E_202A_200C_202B_206C_202B_200C_200F_202D_206F_206A_200F_206F_202A_202A_202B_200D_206C_200B_206C_200B_206F_202E(x.Step) == EInteractionType.Say;
}
static EInteractionType _206B_200C_206E_200C_200F_206F_200E_202E_206D_206F_200B_206B_206F_202C_200B_200B_206D_206E_206E_202A_200C_202B_206C_202B_200C_200F_202D_206F_206A_200F_206F_202A_202A_202B_200D_206C_200B_206C_200B_206F_202E(QuestStep P_0)
{
return P_0.InteractionType;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__2 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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;
public SayValidator _003C_003E4__this;
private IEnumerator<(QuestSequence Sequence, int StepId, QuestStep Step)> _003C_003E7__wrap1;
ValidationIssue IEnumerator<ValidationIssue>.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
[DebuggerHidden]
public _003CValidate_003Ed__2(int _003C_003E1__state)
{
this._003C_003E1__state = _003C_003E1__state;
_003C_003El__initialThreadId = _202D_206C_206C_200B_206C_200B_206A_206E_206F_206A_200B_206E_206E_206D_200D_206B_200C_206E_206C_206C_206F_206E_202A_200E_202D_206F_202E_202A_202C_202E_200B_200F_202B_200D_200B_202D_206A_202D_200F_200F_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? 413952866 : 413952865);
while (true)
{
int num3 = num2;
int num4 = 413952867;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
default:
continue;
case 0:
num2 = 413952865;
continue;
case 2:
if (num == 1)
{
num2 = 413952866;
continue;
}
break;
case 1:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = null;
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
SayValidator sayValidator = _003C_003E4__this;
int num2 = ((num == 0) ? (-1358153620) : (-1358153627));
(QuestSequence, int, QuestStep) current = default((QuestSequence, int, QuestStep));
ChatMessage chatMessage = default(ChatMessage);
ReadOnlySeString? rawDialogueText = default(ReadOnlySeString?);
while (true)
{
int num3 = num2;
int num4 = -1358153628;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 2:
current = _003C_003E7__wrap1.Current;
chatMessage = _206E_206C_200D_202A_206C_200C_206E_200F_200E_200F_206B_200D_206A_202D_206C_202D_202A_206E_202C_206C_200E_206A_200E_202A_202D_202E_206E_200F_202E_206C_200E_206B_206E_202E_206A_202A_200F_206B_202C_206F_202E(current.Item3);
num2 = ((chatMessage == null) ? (-1358153619) : (-1358153632));
break;
case 4:
rawDialogueText = sayValidator._excelFunctions.GetRawDialogueText(quest, _206A_202A_200B_202C_202A_206A_200E_206F_206F_200D_206C_200C_202A_206F_202C_206B_206B_202C_200F_202A_206C_206F_202E_200D_200C_200E_200F_206A_206C_202C_206A_200C_206E_200C_206F_200B_200F_200B_206C_206C_202E(chatMessage), _200E_206C_200C_202D_200C_200E_200D_200E_202A_200C_206A_200E_202A_206A_206B_200E_206C_202C_200D_206D_202B_202C_200F_206B_206B_202D_202D_202B_206C_206B_200D_200F_200E_200F_200F_200B_202A_200E_202D_206E_202E(chatMessage));
num2 = ((!rawDialogueText.HasValue) ? (-1358153619) : (-1358153629));
break;
case 5:
{
ValidationIssue obj = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _200D_202C_202B_200E_206B_206D_200D_206A_200B_206B_206A_206D_202C_206C_206D_200E_200F_200C_200B_202A_202A_200F_206B_206A_206F_206F_200E_202E_206F_202A_200D_202D_206D_200B_206D_200B_206C_202B_200B_206F_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(_206E_202E_206F_202C_200B_200D_202A_206A_206B_206E_206D_200D_200D_200C_202E_202C_202B_200E_206D_200D_202E_206B_202E_202A_200C_200B_206D_200F_206D_206F_206B_206A_202D_206E_202E_206B_206A_206E_202E_206A_202E(current.Item1), current.Item2),
Type = EIssueType.InvalidChatMessage,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(22, 1);
defaultInterpolatedStringHandler.AppendLiteral(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<string>(1570396042));
defaultInterpolatedStringHandler.AppendFormatted(rawDialogueText.Value);
obj.Description = defaultInterpolatedStringHandler.ToStringAndClear();
_003C_003E2__current = obj;
_003C_003E1__state = 1;
return true;
}
case 1:
num2 = ((num == 1) ? (-1358153618) : (-1358153625));
break;
case 9:
num2 = (_200E_206A_202C_206B_200C_206E_200E_202E_206B_206A_206F_206B_202A_202B_206E_202C_202B_200F_206D_206E_206A_206A_202A_206F_206A_206D_200B_200B_200B_202C_200B_206F_202D_206A_202C_206C_202B_206F_206C_202D_202E((IEnumerator)_003C_003E7__wrap1) ? (-1358153626) : (-1358153628));
break;
case 8:
_003C_003E1__state = -1;
_003C_003E7__wrap1 = (from x in quest.AllSteps()
where _003C_003Ec._206B_200C_206E_200C_200F_206F_200E_202E_206D_206F_200B_206B_206F_202C_200B_200B_206D_206E_206E_202A_200C_202B_206C_202B_200C_200F_202D_206F_206A_200F_206F_202A_202A_202B_200D_206C_200B_206C_200B_206F_202E(x.Step) == EInteractionType.Say
select x).GetEnumerator();
_003C_003E1__state = -3;
num2 = -1358153619;
break;
case 3:
return false;
case 7:
num2 = ((rawDialogueText.Value.PayloadCount == 1) ? (-1358153619) : (-1358153631));
break;
case 6:
num2 = -1358153627;
break;
case 10:
_003C_003E1__state = -3;
num2 = -1358153619;
break;
case 0:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = null;
return false;
}
}
}
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;
int num = ((_003C_003E7__wrap1 == null) ? 859629855 : 859629852);
while (true)
{
int num2 = num;
int num3 = 859629854;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
return;
case 2:
_200C_206D_206F_200C_206C_200E_202D_206F_206F_206B_206A_206E_206A_202B_202A_206A_202B_200E_206C_202A_202D_200B_206F_202B_202D_202C_200D_206E_206C_200D_202B_200B_206A_206D_200C_200B_200B_202B_206D_206B_202E((IDisposable)_003C_003E7__wrap1);
num = 859629855;
break;
case 0:
num = 859629852;
break;
}
}
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _200F_202B_206B_206C_206F_200F_206D_202D_206A_200F_206A_206D_206B_200E_200F_200F_200C_200F_202A_202B_200F_202D_200D_206D_206B_202E_202E_206A_206F_206E_200B_206D_200E_200F_206A_200F_206F_202A_202D_200C_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? 847025892 : 847025894);
_003CValidate_003Ed__2 _003CValidate_003Ed__ = default(_003CValidate_003Ed__2);
while (true)
{
int num2 = num;
int num3 = 847025893;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 4:
num = 847025894;
break;
case 3:
num = ((_003C_003El__initialThreadId != _202D_206C_206C_200B_206C_200B_206A_206E_206F_206A_200B_206E_206E_206D_200D_206B_200C_206E_206C_206C_206F_206E_202A_200E_202D_206F_202E_202A_202C_202E_200B_200F_202B_200D_200B_202D_206A_202D_200F_200F_202E()) ? 847025892 : 847025895);
break;
case 1:
_003CValidate_003Ed__ = new _003CValidate_003Ed__2(0)
{
_003C_003E4__this = _003C_003E4__this
};
num = 847025893;
break;
case 0:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 2:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = 847025893;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _202D_206C_206C_200B_206C_200B_206A_206E_206F_206A_200B_206E_206E_206D_200D_206B_200C_206E_206C_206C_206F_206E_202A_200E_202D_206F_202E_202A_202C_202E_200B_200F_202B_200D_200B_202D_206A_202D_200F_200F_202E()
{
return Environment.CurrentManagedThreadId;
}
static ChatMessage _206E_206C_200D_202A_206C_200C_206E_200F_200E_200F_206B_200D_206A_202D_206C_202D_202A_206E_202C_206C_200E_206A_200E_202A_202D_202E_206E_200F_202E_206C_200E_206B_206E_202E_206A_202A_200F_206B_202C_206F_202E(QuestStep P_0)
{
return P_0.ChatMessage;
}
static string _206A_202A_200B_202C_202A_206A_200E_206F_206F_200D_206C_200C_202A_206F_202C_206B_206B_202C_200F_202A_206C_206F_202E_200D_200C_200E_200F_206A_206C_202C_206A_200C_206E_200C_206F_200B_200F_200B_206C_206C_202E(ChatMessage P_0)
{
return P_0.ExcelSheet;
}
static string _200E_206C_200C_202D_200C_200E_200D_200E_202A_200C_206A_200E_202A_206A_206B_200E_206C_202C_200D_206D_202B_202C_200F_206B_206B_202D_202D_202B_206C_206B_200D_200F_200E_200F_200F_200B_202A_200E_202D_206E_202E(ChatMessage P_0)
{
return P_0.Key;
}
static string _200D_202C_202B_200E_206B_206D_200D_206A_200B_206B_206A_206D_202C_206C_206D_200E_200F_200C_200B_202A_202A_200F_206B_206A_206F_206F_200E_202E_206F_202A_200D_202D_206D_200B_206D_200B_206C_202B_200B_206F_202E(object P_0)
{
return P_0.ToString();
}
static byte _206E_202E_206F_202C_200B_200D_202A_206A_206B_206E_206D_200D_200D_200C_202E_202C_202B_200E_206D_200D_202E_206B_202E_202A_200C_200B_206D_200F_206D_206F_206B_206A_202D_206E_202E_206B_206A_206E_202E_206A_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
static bool _200E_206A_202C_206B_200C_206E_200E_202E_206B_206A_206F_206B_202A_202B_206E_202C_202B_200F_206D_206E_206A_206A_202A_206F_206A_206D_200B_200B_200B_202C_200B_206F_202D_206A_202C_206C_202B_206F_206C_202D_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _200C_206D_206F_200C_206C_200E_202D_206F_206F_206B_206A_206E_206A_202B_202A_206A_202B_200E_206C_202A_202D_200B_206F_202B_202D_202C_200D_206E_206C_200D_202B_200B_206A_206D_200C_200B_200B_202B_206D_206B_202E(IDisposable P_0)
{
P_0.Dispose();
}
static NotSupportedException _200F_202B_206B_206C_206F_200F_206D_202D_206A_200F_206A_206D_206B_200E_200F_200F_200C_200F_202A_202B_200F_202D_200D_206D_206B_202E_202E_206A_206F_206E_200B_206D_200E_200F_206A_200F_206F_202A_202D_200C_202E()
{
return new NotSupportedException();
}
}
private readonly ExcelFunctions _excelFunctions;
public SayValidator(ExcelFunctions excelFunctions)
@ -334,20 +16,29 @@ internal sealed class SayValidator : IQuestValidator
_excelFunctions = excelFunctions;
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__2))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__2(-2)
foreach (var item in from x in quest.AllSteps()
where x.Step.InteractionType == EInteractionType.Say
select x)
{
_003C_003E4__this = this,
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
ChatMessage chatMessage = item.Item3.ChatMessage;
if (chatMessage != null)
{
ReadOnlySeString? rawDialogueText = _excelFunctions.GetRawDialogueText(quest, chatMessage.ExcelSheet, chatMessage.Key);
if (rawDialogueText.HasValue && rawDialogueText.Value.PayloadCount != 1)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(item.Item1.Sequence, item.Item2),
Type = EIssueType.InvalidChatMessage,
Severity = EIssueSeverity.Error,
Description = $"Invalid chat message: {rawDialogueText.Value}"
};
}
}
}
}
}

View file

@ -1,19 +1,10 @@
using System.Runtime.CompilerServices;
namespace Questionable.Validation.Validators;
internal sealed class SeasonalDutySchemaValidator : DefinitionSchemaValidator
{
protected override EPathType PathType => EPathType.SeasonalDuty;
protected override string MainSchemaUri
{
[MethodImpl(MethodImplOptions.NoInlining)]
get
{
return global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-912722245);
}
}
protected override string MainSchemaUri => "https://github.com/WigglyMuffin/Questionable/raw/refs/heads/main/SeasonalDutyPaths/seasonaldutydefinition-v1.json";
public SeasonalDutySchemaValidator(SchemaRegistrar schemaRegistrar)
: base(schemaRegistrar)

View file

@ -1,9 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using Questionable.Data;
using Questionable.Model;
using Questionable.Model.Questing;
@ -12,297 +8,6 @@ namespace Questionable.Validation.Validators;
internal sealed class SinglePlayerInstanceValidator : IQuestValidator
{
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass2_0
{
public byte index;
internal bool _003CValidate_003Eb__0((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
int num = ((_202B_200B_200C_200C_202D_202A_202E_200B_202B_202C_202B_202C_200D_200E_200B_202E_206E_206C_200B_200C_206A_202E_200F_206D_200F_202D_202B_202E_206A_200D_202A_206D_206F_206C_206D_202E_202E_206B_200C_202E(x.Step) != EInteractionType.SinglePlayerDuty) ? 393057114 : 393057113);
while (true)
{
int num2 = num;
int num3 = 393057115;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
goto IL_004f;
case 1:
return false;
case 2:
return _202C_206E_206C_206F_206F_206A_202D_206C_206D_200E_200F_202A_202A_200D_206D_206E_202D_202C_202D_206D_202D_206A_200E_202B_206B_202C_200F_202B_202E_200D_206C_200E_202E_202C_206B_202D_206D_200B_202D_202E(x.Step) == index;
}
continue;
IL_004f:
num = 393057113;
}
}
static EInteractionType _202B_200B_200C_200C_202D_202A_202E_200B_202B_202C_202B_202C_200D_200E_200B_202E_206E_206C_200B_200C_206A_202E_200F_206D_200F_202D_202B_202E_206A_200D_202A_206D_206F_206C_206D_202E_202E_206B_200C_202E(QuestStep P_0)
{
return P_0.InteractionType;
}
static byte _202C_206E_206C_206F_206F_206A_202D_206C_206D_200E_200F_202A_202A_200D_206D_206E_202D_202C_202D_206D_202D_206A_200E_202B_206B_202C_200F_202B_202E_200D_206C_200E_202E_202C_206B_202D_206D_200B_202D_202E(QuestStep P_0)
{
return P_0.SinglePlayerDutyIndex;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__2 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, IEnumerator, IDisposable
{
private int _003C_003E1__state;
private ValidationIssue _003C_003E2__current;
private int _003C_003El__initialThreadId;
public SinglePlayerInstanceValidator _003C_003E4__this;
private Quest quest;
public Quest _003C_003E3__quest;
private List<byte>.Enumerator _003C_003E7__wrap1;
ValidationIssue IEnumerator<ValidationIssue>.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return _003C_003E2__current;
}
}
[DebuggerHidden]
public _003CValidate_003Ed__2(int _003C_003E1__state)
{
this._003C_003E1__state = _003C_003E1__state;
_003C_003El__initialThreadId = _202E_202B_206A_200E_206D_206E_206E_206E_202B_200F_206B_200F_202E_200C_206B_202B_200B_206C_206E_206C_200D_202C_206C_206C_200D_202A_202E_202E_202A_206B_202B_206E_202D_200C_206A_206C_206B_202A_202C_206A_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? (-1938689052) : (-1938689051));
while (true)
{
int num3 = num2;
int num4 = -1938689052;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
default:
continue;
case 2:
num2 = -1938689051;
continue;
case 1:
if (num == 1)
{
num2 = -1938689052;
continue;
}
break;
case 0:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = default(List<byte>.Enumerator);
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
SinglePlayerInstanceValidator singlePlayerInstanceValidator = _003C_003E4__this;
int num2 = ((num == 0) ? (-217172285) : (-217172288));
List<byte> value = default(List<byte>);
_003C_003Ec__DisplayClass2_0 _003C_003Ec__DisplayClass2_ = default(_003C_003Ec__DisplayClass2_0);
while (true)
{
int num3 = num2;
int num4 = -217172283;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
case 8:
num2 = (_003C_003E7__wrap1.MoveNext() ? (-217172286) : (-217172283));
break;
case 9:
_003C_003E7__wrap1 = value.GetEnumerator();
_003C_003E1__state = -3;
num2 = -217172275;
break;
case 1:
return false;
case 7:
_003C_003Ec__DisplayClass2_ = new _003C_003Ec__DisplayClass2_0
{
index = _003C_003E7__wrap1.Current
};
num2 = (quest.AllSteps().Any(_003C_003Ec__DisplayClass2_._003CValidate_003Eb__0) ? (-217172275) : (-217172281));
break;
case 6:
_003C_003E1__state = -1;
num2 = ((!singlePlayerInstanceValidator._questIdToDutyIndexes.TryGetValue(quest.Id, out value)) ? (-217172273) : (-217172276));
break;
case 0:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = default(List<byte>.Enumerator);
num2 = -217172273;
break;
case 3:
_003C_003E1__state = -3;
num2 = -217172275;
break;
case 4:
num2 = -217172288;
break;
case 2:
{
ValidationIssue obj = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _202D_206F_206C_206D_202C_200D_202E_206A_206D_206F_200C_202C_206D_202E_202A_200E_200F_202A_206A_200C_200C_202C_200D_200C_206B_206F_202E_200F_206A_200D_202E_206B_206F_200E_206D_202E_202D_200C_206F_200D_202E((object)quest.Id),
Location = null,
Type = EIssueType.UnusedSinglePlayerInstance,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(32, 1);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-1732898265));
defaultInterpolatedStringHandler.AppendFormatted(_003C_003Ec__DisplayClass2_.index);
defaultInterpolatedStringHandler.AppendLiteral(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<string>(-1502904909));
obj.Description = defaultInterpolatedStringHandler.ToStringAndClear();
_003C_003E2__current = obj;
_003C_003E1__state = 1;
return true;
}
case 5:
num2 = ((num == 1) ? (-217172282) : (-217172284));
break;
case 10:
return false;
}
}
}
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__wrap1/*cast due to .constrained prefix*/).Dispose();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _200B_200D_202A_202C_200F_200F_206D_202C_200C_200E_200D_202B_206D_206F_202E_206F_200E_202D_200E_202C_206C_206D_200C_202D_206D_200D_200B_206C_202B_200E_202E_200D_202A_202E_200E_200B_206D_202C_202A_202A_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? (-105732161) : (-105732163));
_003CValidate_003Ed__2 _003CValidate_003Ed__ = default(_003CValidate_003Ed__2);
while (true)
{
int num2 = num;
int num3 = -105732162;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
num = -105732163;
break;
case 3:
num = ((_003C_003El__initialThreadId != _202E_202B_206A_200E_206D_206E_206E_206E_202B_200F_206B_200F_202E_200C_206B_202B_200B_206C_206E_206C_200D_202C_206C_206C_200D_202A_202E_202E_202A_206B_202B_206E_202D_200C_206A_206C_206B_202A_202C_206A_202E()) ? (-105732161) : (-105732166));
break;
case 1:
_003CValidate_003Ed__ = new _003CValidate_003Ed__2(0)
{
_003C_003E4__this = _003C_003E4__this
};
num = -105732162;
break;
case 0:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 4:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = -105732162;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _202E_202B_206A_200E_206D_206E_206E_206E_202B_200F_206B_200F_202E_200C_206B_202B_200B_206C_206E_206C_200D_202C_206C_206C_200D_202A_202E_202E_202A_206B_202B_206E_202D_200C_206A_206C_206B_202A_202C_206A_202E()
{
return Environment.CurrentManagedThreadId;
}
static string _202D_206F_206C_206D_202C_200D_202E_206A_206D_206F_200C_202C_206D_202E_202A_200E_200F_202A_206A_200C_200C_202C_200D_200C_206B_206F_202E_200F_206A_200D_202E_206B_206F_200E_206D_202E_202D_200C_206F_200D_202E(object P_0)
{
return P_0.ToString();
}
static NotSupportedException _200B_200D_202A_202C_200F_200F_206D_202C_200C_200E_200D_202B_206D_206F_202E_206F_200E_202D_200E_202C_206C_206D_200C_202D_206D_200D_200B_206C_202B_200E_202E_200D_202A_202E_200E_200B_206D_202C_202A_202A_202E()
{
return new NotSupportedException();
}
}
private readonly Dictionary<ElementId, List<byte>> _questIdToDutyIndexes;
public SinglePlayerInstanceValidator(TerritoryData territoryData)
@ -311,20 +16,26 @@ internal sealed class SinglePlayerInstanceValidator : IQuestValidator
group x by x.QuestId).ToDictionary((IGrouping<ElementId, (ElementId QuestId, byte Index, TerritoryData.ContentFinderConditionData Data)> x) => x.Key, (IGrouping<ElementId, (ElementId QuestId, byte Index, TerritoryData.ContentFinderConditionData Data)> x) => x.Select(((ElementId QuestId, byte Index, TerritoryData.ContentFinderConditionData Data) y) => y.Index).ToList());
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__2))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__2(-2)
if (!_questIdToDutyIndexes.TryGetValue(quest.Id, out List<byte> value))
{
_003C_003E4__this = this,
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
yield break;
}
foreach (byte index in value)
{
if (!quest.AllSteps().Any<(QuestSequence, int, QuestStep)>(((QuestSequence Sequence, int StepId, QuestStep Step) x) => x.Step.InteractionType == EInteractionType.SinglePlayerDuty && x.Step.SinglePlayerDutyIndex == index))
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = null,
Type = EIssueType.UnusedSinglePlayerInstance,
Severity = EIssueSeverity.Error,
Description = $"Single player instance {index} not used"
};
}
}
}
}

View file

@ -1,9 +1,5 @@
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;
@ -11,297 +7,26 @@ namespace Questionable.Validation.Validators;
internal sealed class UniqueSinglePlayerInstanceValidator : 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), (QuestSequence Sequence, int StepId, byte SinglePlayerDutyIndex)> _003C_003E9__0_1;
public static Func<(QuestSequence Sequence, int StepId, byte SinglePlayerDutyIndex), byte> _003C_003E9__0_2;
internal bool _003CValidate_003Eb__0_0((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
return _206D_200E_202B_206B_200E_206F_202C_206B_206D_200C_206F_200F_206E_206F_202D_202D_200E_200F_202A_200C_206C_206A_206F_200C_206E_202C_200F_200B_200C_202B_200F_202C_200B_202E_202A_200D_206B_202C_200F_206B_202E(x.Step) == EInteractionType.SinglePlayerDuty;
}
internal (QuestSequence Sequence, int StepId, byte SinglePlayerDutyIndex) _003CValidate_003Eb__0_1((QuestSequence Sequence, int StepId, QuestStep Step) x)
{
return (Sequence: x.Sequence, StepId: x.StepId, SinglePlayerDutyIndex: _206E_206D_202A_206D_200E_202A_206E_206A_200D_206B_206A_202D_202A_200D_200F_200B_200F_206B_206D_206D_202B_202B_200E_202C_200E_202D_202C_206B_206A_200C_206F_202E_202C_200E_202D_200D_202A_202B_200D_206F_202E(x.Step));
}
internal byte _003CValidate_003Eb__0_2((QuestSequence Sequence, int StepId, byte SinglePlayerDutyIndex) x)
{
return x.SinglePlayerDutyIndex;
}
static EInteractionType _206D_200E_202B_206B_200E_206F_202C_206B_206D_200C_206F_200F_206E_206F_202D_202D_200E_200F_202A_200C_206C_206A_206F_200C_206E_202C_200F_200B_200C_202B_200F_202C_200B_202E_202A_200D_206B_202C_200F_206B_202E(QuestStep P_0)
{
return P_0.InteractionType;
}
static byte _206E_206D_202A_206D_200E_202A_206E_206A_200D_206B_206A_202D_202A_200D_200F_200B_200F_206B_206D_206D_202B_202B_200E_202C_200E_202D_202C_206B_206A_200C_206F_202E_202C_200E_202D_200D_202A_202B_200D_206F_202E(QuestStep P_0)
{
return P_0.SinglePlayerDutyIndex;
}
}
[CompilerGenerated]
private sealed class _003CValidate_003Ed__0 : IEnumerable<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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 List<(QuestSequence Sequence, int StepId, byte SinglePlayerDutyIndex)>.Enumerator _003C_003E7__wrap1;
ValidationIssue IEnumerator<ValidationIssue>.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 = _206A_202A_202D_206E_202B_206A_206B_200C_200C_202C_202B_200F_202D_200D_206E_202C_206D_202E_200C_206B_200F_202B_200B_206E_200F_202E_202C_202B_200D_202C_206F_206B_202E_206D_206E_206E_200B_206E_200B_202D_202E();
}
[DebuggerHidden]
void IDisposable.Dispose()
{
int num = _003C_003E1__state;
int num2 = ((num == -3) ? (-490829547) : (-490829546));
while (true)
{
int num3 = num2;
int num4 = -490829548;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
default:
continue;
case 0:
num2 = -490829546;
continue;
case 2:
if (num == 1)
{
num2 = -490829547;
continue;
}
break;
case 1:
try
{
}
finally
{
_003C_003Em__Finally1();
}
break;
}
break;
}
_003C_003E7__wrap1 = default(List<(QuestSequence, int, byte)>.Enumerator);
_003C_003E1__state = -2;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool MoveNext()
{
try
{
int num = _003C_003E1__state;
int num2 = ((num == 0) ? (-1518519538) : (-1518519550));
List<(QuestSequence, int, byte)> list = default(List<(QuestSequence, int, byte)>);
while (true)
{
int num3 = num2;
int num4 = -1518519542;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 2:
{
(QuestSequence, int, byte) current = _003C_003E7__wrap1.Current;
ValidationIssue obj = new ValidationIssue
{
PathType = EPathType.Quest,
Id = _200E_202D_200B_202C_200C_200F_200F_202A_202A_200C_206C_202B_200C_202C_200C_200C_200D_202A_202D_206B_200C_202C_202E_200E_206E_200E_206A_206D_206A_202E_200B_202D_202B_200E_206B_200D_200B_206E_200D_200E_202E((object)quest.Id),
Location = SchemaValidationHelper.FormatQuestLocation(_200D_206D_206B_202C_206D_202A_202A_206D_206F_206A_202A_206B_206B_200C_200E_202C_200B_206B_206E_206D_200E_206E_206E_202E_202E_200B_202D_200F_206A_200B_200E_200E_202A_206B_206C_206A_206D_202B_200B_200C_202E(current.Item1), current.Item2),
Type = EIssueType.DuplicateSinglePlayerInstance,
Severity = EIssueSeverity.Error
};
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(35, 1);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-618147640));
defaultInterpolatedStringHandler.AppendFormatted(current.Item3);
obj.Description = defaultInterpolatedStringHandler.ToStringAndClear();
_003C_003E2__current = obj;
_003C_003E1__state = 1;
return true;
}
case 1:
_003C_003Em__Finally1();
_003C_003E7__wrap1 = default(List<(QuestSequence, int, byte)>.Enumerator);
num2 = -1518519549;
break;
case 3:
return false;
case 8:
num2 = ((num == 1) ? (-1518519539) : (-1518519543));
break;
case 7:
_003C_003E1__state = -3;
num2 = -1518519537;
break;
case 0:
num2 = -1518519550;
break;
case 6:
_003C_003E7__wrap1 = list.GetEnumerator();
_003C_003E1__state = -3;
num2 = -1518519537;
break;
case 5:
num2 = (_003C_003E7__wrap1.MoveNext() ? (-1518519544) : (-1518519541));
break;
case 4:
_003C_003E1__state = -1;
list = (from x in quest.AllSteps()
where _003C_003Ec._206D_200E_202B_206B_200E_206F_202C_206B_206D_200C_206F_200F_206E_206F_202D_202D_200E_200F_202A_200C_206C_206A_206F_200C_206E_202C_200F_200B_200C_202B_200F_202C_200B_202E_202A_200D_206B_202C_200F_206B_202E(x.Step) == EInteractionType.SinglePlayerDuty
select (Sequence: x.Sequence, StepId: x.StepId, SinglePlayerDutyIndex: _003C_003Ec._206E_206D_202A_206D_200E_202A_206E_206A_200D_206B_206A_202D_202A_200D_200F_200B_200F_206B_206D_206D_202B_202B_200E_202C_200E_202D_202C_206B_206A_200C_206F_202E_202C_200E_202D_200D_202A_202B_200D_206F_202E(x.Step))).ToList();
num2 = ((list.DistinctBy<(QuestSequence, int, byte), byte>(((QuestSequence Sequence, int StepId, byte SinglePlayerDutyIndex) x) => x.SinglePlayerDutyIndex).Count() >= list.Count) ? (-1518519549) : (-1518519540));
break;
case 9:
return false;
}
}
}
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__wrap1/*cast due to .constrained prefix*/).Dispose();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw _206D_202C_200E_202D_200C_206B_202B_206D_202E_200B_200C_206A_206A_206F_206D_202A_206C_206D_200F_200E_206E_206E_200D_202C_202C_206B_206B_206E_206E_200F_200B_200C_200D_202D_206E_202C_206B_206E_200B_202D_202E();
}
[DebuggerHidden]
IEnumerator<ValidationIssue> IEnumerable<ValidationIssue>.GetEnumerator()
{
int num = ((_003C_003E1__state != -2) ? (-1918141123) : (-1918141122));
_003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0);
while (true)
{
int num2 = num;
int num3 = -1918141121;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
_003CValidate_003Ed__.quest = _003C_003E3__quest;
return _003CValidate_003Ed__;
case 2:
_003CValidate_003Ed__ = new _003CValidate_003Ed__0(0);
num = -1918141121;
break;
case 3:
num = -1918141122;
break;
case 1:
num = ((_003C_003El__initialThreadId != _206A_202A_202D_206E_202B_206A_206B_200C_200C_202C_202B_200F_202D_200D_206E_202C_206D_202E_200C_206B_200F_202B_200B_206E_200F_202E_202C_202B_200D_202C_206F_206B_202E_206D_206E_206E_200B_206E_200B_202D_202E()) ? (-1918141123) : (-1918141125));
break;
case 4:
_003C_003E1__state = 0;
_003CValidate_003Ed__ = this;
num = -1918141121;
break;
}
}
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<ValidationIssue>)this).GetEnumerator();
}
static int _206A_202A_202D_206E_202B_206A_206B_200C_200C_202C_202B_200F_202D_200D_206E_202C_206D_202E_200C_206B_200F_202B_200B_206E_200F_202E_202C_202B_200D_202C_206F_206B_202E_206D_206E_206E_200B_206E_200B_202D_202E()
{
return Environment.CurrentManagedThreadId;
}
static string _200E_202D_200B_202C_200C_200F_200F_202A_202A_200C_206C_202B_200C_202C_200C_200C_200D_202A_202D_206B_200C_202C_202E_200E_206E_200E_206A_206D_206A_202E_200B_202D_202B_200E_206B_200D_200B_206E_200D_200E_202E(object P_0)
{
return P_0.ToString();
}
static byte _200D_206D_206B_202C_206D_202A_202A_206D_206F_206A_202A_206B_206B_200C_200E_202C_200B_206B_206E_206D_200E_206E_206E_202E_202E_200B_202D_200F_206A_200B_200E_200E_202A_206B_206C_206A_206D_202B_200B_200C_202E(QuestSequence P_0)
{
return P_0.Sequence;
}
static NotSupportedException _206D_202C_200E_202D_200C_206B_202B_206D_202E_200B_200C_206A_206A_206F_206D_202A_206C_206D_200F_200E_206E_206E_200D_202C_202C_206B_206B_206E_206E_200F_200B_200C_200D_202D_206E_202C_206B_206E_200B_202D_202E()
{
return new NotSupportedException();
}
}
[IteratorStateMachine(typeof(_003CValidate_003Ed__0))]
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__0(-2)
List<(QuestSequence, int, byte)> list = (from x in quest.AllSteps()
where x.Step.InteractionType == EInteractionType.SinglePlayerDuty
select (Sequence: x.Sequence, StepId: x.StepId, SinglePlayerDutyIndex: x.Step.SinglePlayerDutyIndex)).ToList();
if (list.DistinctBy<(QuestSequence, int, byte), byte>(((QuestSequence Sequence, int StepId, byte SinglePlayerDutyIndex) x) => x.SinglePlayerDutyIndex).Count() >= list.Count)
{
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
yield break;
}
foreach (var item in list)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(item.Item1.Sequence, item.Item2),
Type = EIssueType.DuplicateSinglePlayerInstance,
Severity = EIssueSeverity.Error,
Description = $"Duplicate singleplayer duty index: {item.Item3}"
};
}
}
}

View file

@ -1,9 +1,5 @@
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;
@ -11,493 +7,75 @@ 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<EInteractionType> 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<ValidationIssue>, IEnumerable, IEnumerator<ValidationIssue>, 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<ValidationIssue>.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<string>(-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<string>(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<string>(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> { 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<string>(-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> { 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<ValidationIssue> IEnumerable<ValidationIssue>.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<ValidationIssue>)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<QuestStep> _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<ValidationIssue> Validate(Quest quest)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new _003CValidate_003Ed__0(-2)
bool skipMissingStartStop = !(quest.Id is QuestId);
List<(QuestSequence Sequence, int StepId, QuestStep Step)> questAccepts = (from x in FindQuestStepsWithInteractionType(quest, new List<EInteractionType> { EInteractionType.AcceptQuest })
where x.Step.PickUpQuestId == null
select x).ToList();
foreach (var item in questAccepts)
{
_003C_003E3__quest = quest
};
}
IEnumerable<ValidationIssue> IQuestValidator.Validate(Quest quest)
{
//ILSpy generated this explicit interface implementation from .override directive in Validate
return this.Validate(quest);
if (item.Sequence.Sequence != 0 || item.StepId != quest.FindSequence(0).Steps.Count - 1)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(item.Sequence.Sequence, item.StepId),
Type = EIssueType.UnexpectedAcceptQuestStep,
Severity = EIssueSeverity.Error,
Description = "Unexpected AcceptQuest step"
};
}
}
if (!skipMissingStartStop && quest.FindSequence(0) != null && questAccepts.Count == 0)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(0, null),
Type = EIssueType.MissingQuestAccept,
Severity = EIssueSeverity.Error,
Description = "No AcceptQuest step"
};
}
List<(QuestSequence Sequence, int StepId, QuestStep Step)> questCompletes = (from x in FindQuestStepsWithInteractionType(quest, new List<EInteractionType> { EInteractionType.CompleteQuest })
where x.Step.TurnInQuestId == null
select x).ToList();
foreach (var item2 in questCompletes)
{
if (item2.Sequence.Sequence != byte.MaxValue || item2.StepId != quest.FindSequence(byte.MaxValue).Steps.Count - 1)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation(item2.Sequence.Sequence, item2.StepId),
Type = EIssueType.UnexpectedCompleteQuestStep,
Severity = EIssueSeverity.Error,
Description = "Unexpected CompleteQuest step"
};
}
}
if (!skipMissingStartStop && quest.FindSequence(byte.MaxValue) != null && questCompletes.Count == 0)
{
yield return new ValidationIssue
{
PathType = EPathType.Quest,
Id = quest.Id.ToString(),
Location = SchemaValidationHelper.FormatQuestLocation((byte)byte.MaxValue, null),
Type = EIssueType.MissingQuestComplete,
Severity = EIssueSeverity.Error,
Description = "No CompleteQuest step"
};
}
}
private static IEnumerable<(QuestSequence Sequence, int StepId, QuestStep Step)> FindQuestStepsWithInteractionType(Quest quest, List<EInteractionType> 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))
where interactionType.Contains(x.Step.InteractionType)
select x;
}
}