309 lines
11 KiB
C#
309 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
|
|
namespace LLib.Gear;
|
|
|
|
public sealed record EquipmentStats(Dictionary<EBaseParam, StatInfo> Stats, byte MateriaCount)
|
|
{
|
|
[CompilerGenerated]
|
|
private Type EqualityContract
|
|
{
|
|
[CompilerGenerated]
|
|
get
|
|
{
|
|
return _206D_200D_202A_206A_206A_206A_200F_202C_202C_202D_206D_206F_206C_200D_200C_206C_202D_202E_202B_206E_202B_202B_202D_206C_200C_200F_202E_206D_200B_202E_200B_206E_202D_202A_200D_200B_200C_206B_200E_200D_202E(typeof(EquipmentStats).TypeHandle);
|
|
}
|
|
}
|
|
|
|
public short Get(EBaseParam param)
|
|
{
|
|
return (short)(GetEquipment(param) + GetMateria(param));
|
|
}
|
|
|
|
public short GetEquipment(EBaseParam param)
|
|
{
|
|
Stats.TryGetValue(param, out StatInfo value);
|
|
int num = (((object)value != null) ? (-1344068202) : (-1344068203));
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -1344068204;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 0:
|
|
goto IL_0052;
|
|
case 1:
|
|
return 0;
|
|
case 2:
|
|
return value.EquipmentValue;
|
|
}
|
|
continue;
|
|
IL_0052:
|
|
num = -1344068203;
|
|
}
|
|
}
|
|
|
|
public short GetMateria(EBaseParam param)
|
|
{
|
|
Stats.TryGetValue(param, out StatInfo value);
|
|
int num = (((object)value != null) ? 1796035726 : 1796035727);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 1796035726;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 2:
|
|
goto IL_0052;
|
|
case 0:
|
|
return value.MateriaValue;
|
|
case 1:
|
|
return 0;
|
|
}
|
|
continue;
|
|
IL_0052:
|
|
num = 1796035727;
|
|
}
|
|
}
|
|
|
|
public bool IsOvercapped(EBaseParam param)
|
|
{
|
|
Stats.TryGetValue(param, out StatInfo value);
|
|
int num = (((object)value != null) ? 1825983400 : 1825983403);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 1825983401;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 0:
|
|
goto IL_0052;
|
|
case 1:
|
|
return value.Overcapped;
|
|
case 2:
|
|
return false;
|
|
}
|
|
continue;
|
|
IL_0052:
|
|
num = 1825983403;
|
|
}
|
|
}
|
|
|
|
public bool Has(EBaseParam substat)
|
|
{
|
|
return Stats.ContainsKey(substat);
|
|
}
|
|
|
|
public bool HasMateria()
|
|
{
|
|
return Stats.Values.Any((StatInfo x) => x.MateriaValue > 0);
|
|
}
|
|
|
|
public bool Equals(EquipmentStats? other)
|
|
{
|
|
int num = ((other == null) ? 948419368 : 948419369);
|
|
StatInfo statInfo = default(StatInfo);
|
|
StatInfo value2 = default(StatInfo);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 948419368;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 3:
|
|
num = 948419369;
|
|
break;
|
|
case 1:
|
|
num = ((MateriaCount != other.MateriaCount) ? 948419368 : 948419372);
|
|
break;
|
|
case 4:
|
|
num = ((Stats.Count == other.Stats.Count) ? 948419370 : 948419368);
|
|
break;
|
|
case 0:
|
|
return false;
|
|
case 2:
|
|
{
|
|
using (Dictionary<EBaseParam, StatInfo>.Enumerator enumerator = Stats.GetEnumerator())
|
|
{
|
|
num = -2102937561;
|
|
while (true)
|
|
{
|
|
int num7 = num;
|
|
num3 = -2102937566;
|
|
num4 = num7;
|
|
int num8 = num4 + num3;
|
|
int num9 = num4 & num3;
|
|
switch (num8 - (num9 + num9))
|
|
{
|
|
case 3:
|
|
return false;
|
|
case 2:
|
|
num = (_202B_206A_200D_206F_202E_202A_200C_200F_200D_202D_202B_202B_200C_202E_200B_202B_206A_200E_200F_206C_202D_202B_200C_200D_206E_206A_206B_200D_202C_206E_202C_202D_206F_202E_202A_202A_200C_206A_202B_202C_202E((object)statInfo, (object)value2) ? (-2102937561) : (-2102937567));
|
|
break;
|
|
case 5:
|
|
num = (enumerator.MoveNext() ? (-2102937562) : (-2102937565));
|
|
break;
|
|
case 0:
|
|
num = -2102937561;
|
|
break;
|
|
case 4:
|
|
{
|
|
enumerator.Current.Deconstruct(out var key, out var value);
|
|
EBaseParam key2 = key;
|
|
statInfo = value;
|
|
num = ((!other.Stats.TryGetValue(key2, out value2)) ? (-2102937567) : (-2102937568));
|
|
break;
|
|
}
|
|
case 1:
|
|
goto end_IL_00dc;
|
|
}
|
|
continue;
|
|
end_IL_00dc:
|
|
break;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool IEquatable<EquipmentStats>.Equals(EquipmentStats? other)
|
|
{
|
|
//ILSpy generated this explicit interface implementation from .override directive in Equals
|
|
return this.Equals(other);
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
int num = MateriaCount.GetHashCode();
|
|
using Dictionary<EBaseParam, StatInfo>.Enumerator enumerator = Stats.GetEnumerator();
|
|
int num2 = 1490502903;
|
|
while (true)
|
|
{
|
|
int num3 = num2;
|
|
int num4 = 1490502902;
|
|
int num5 = num3;
|
|
int num6 = num5 + num4;
|
|
int num7 = num5 & num4;
|
|
switch (num6 - (num7 + num7))
|
|
{
|
|
case 3:
|
|
num2 = 1490502903;
|
|
break;
|
|
case 2:
|
|
{
|
|
enumerator.Current.Deconstruct(out var key, out var value);
|
|
EBaseParam value2 = key;
|
|
StatInfo value3 = value;
|
|
num ^= HashCode.Combine(value2, value3);
|
|
num2 = 1490502903;
|
|
break;
|
|
}
|
|
case 1:
|
|
num2 = (enumerator.MoveNext() ? 1490502900 : 1490502902);
|
|
break;
|
|
case 0:
|
|
return num;
|
|
}
|
|
}
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
[CompilerGenerated]
|
|
public override string ToString()
|
|
{
|
|
StringBuilder stringBuilder = _206D_200D_206D_206D_200B_200C_206E_200E_206C_200C_206F_206D_202D_206F_202D_202D_200F_202D_206A_202A_206B_206F_202E_206E_200C_206E_202D_202C_202B_200B_200E_200D_202D_200E_202C_206D_202B_206C_202D_202B_202E();
|
|
_206D_202C_202C_200D_200B_202D_206F_206D_206A_200F_202B_200F_206E_202C_206E_206E_200D_202C_206E_206C_206F_202D_202D_202B_206F_202A_202A_202D_200E_206D_200F_206D_206B_206F_202C_200B_206C_202E_202D_200D_202E(stringBuilder, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(137609556));
|
|
_206D_202C_202C_200D_200B_202D_206F_206D_206A_200F_202B_200F_206E_202C_206E_206E_200D_202C_206E_206C_206F_202D_202D_202B_206F_202A_202A_202D_200E_206D_200F_206D_206B_206F_202C_200B_206C_202E_202D_200D_202E(stringBuilder, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(1808631505));
|
|
int num = ((!PrintMembers(stringBuilder)) ? (-1401190179) : (-1401190180));
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -1401190179;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 0:
|
|
_200C_206A_202D_200E_200F_200E_200C_202A_200E_200E_206B_202A_202A_206B_202B_206E_202D_202D_206A_206A_202C_206D_206B_200F_206A_200F_202D_200D_202C_200F_200F_200F_206A_206A_206C_206C_200E_200F_200D_206B_202E(stringBuilder, '}');
|
|
return _202E_200B_206C_202B_206C_200C_202E_206E_206B_206D_202B_202C_202D_202C_206B_202B_206E_202B_202D_206E_206C_200C_202A_206C_206F_206F_202C_200F_200C_200F_202B_206A_206A_202E_202E_202A_200D_202C_202C_202E((object)stringBuilder);
|
|
case 1:
|
|
_200C_206A_202D_200E_200F_200E_200C_202A_200E_200E_206B_202A_202A_206B_202B_206E_202D_202D_206A_206A_202C_206D_206B_200F_206A_200F_202D_200D_202C_200F_200F_200F_206A_206A_206C_206C_200E_200F_200D_206B_202E(stringBuilder, ' ');
|
|
num = -1401190179;
|
|
break;
|
|
case 2:
|
|
num = -1401190180;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
[CompilerGenerated]
|
|
private bool PrintMembers(StringBuilder builder)
|
|
{
|
|
_206C_202B_202C_202E_202C_206E_206E_200F_202B_200C_200C_202B_202D_206C_206F_206D_206E_200D_202C_206F_202D_202E_202A_206D_206A_202C_200B_206E_202D_200C_200F_202A_200C_202B_202C_206A_202E_206D_206B_202A_202E();
|
|
_206D_202C_202C_200D_200B_202D_206F_206D_206A_200F_202B_200F_206E_202C_206E_206E_200D_202C_206E_206C_206F_202D_202D_202B_206F_202A_202A_202D_200E_206D_200F_206D_206B_206F_202C_200B_206C_202E_202D_200D_202E(builder, global::_003CModule_003E._200E_206F_206C_206C_200E_202A_206D_206B_200B_202D_202B_200F_200F_206B_206C_206F_202D_206F_206A_202D_206A_200B_200B_202B_202D_202C_200F_200D_202E_200E_200D_202A_202B_206F_202E_200E_200B_206B_200E_202E_202E<string>(-716646928));
|
|
_200E_202D_206A_200C_206A_200D_202A_200F_200C_206E_202B_206A_200D_206D_206F_206A_206B_206C_206C_202B_206D_200F_200D_200D_200C_206F_200D_200E_206A_206E_200F_202A_202B_200B_206B_206E_202C_200C_200D_202E_202E(builder, (object)Stats);
|
|
_206D_202C_202C_200D_200B_202D_206F_206D_206A_200F_202B_200F_206E_202C_206E_206E_200D_202C_206E_206C_206F_202D_202D_202B_206F_202A_202A_202D_200E_206D_200F_206D_206B_206F_202C_200B_206C_202E_202D_200D_202E(builder, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-88604916));
|
|
_206D_202C_202C_200D_200B_202D_206F_206D_206A_200F_202B_200F_206E_202C_206E_206E_200D_202C_206E_206C_206F_202D_202D_202B_206F_202A_202A_202D_200E_206D_200F_206D_206B_206F_202C_200B_206C_202E_202D_200D_202E(builder, MateriaCount.ToString());
|
|
return true;
|
|
}
|
|
|
|
static Type _206D_200D_202A_206A_206A_206A_200F_202C_202C_202D_206D_206F_206C_200D_200C_206C_202D_202E_202B_206E_202B_202B_202D_206C_200C_200F_202E_206D_200B_202E_200B_206E_202D_202A_200D_200B_200C_206B_200E_200D_202E(RuntimeTypeHandle P_0)
|
|
{
|
|
return Type.GetTypeFromHandle(P_0);
|
|
}
|
|
|
|
static bool _202B_206A_200D_206F_202E_202A_200C_200F_200D_202D_202B_202B_200C_202E_200B_202B_206A_200E_200F_206C_202D_202B_200C_200D_206E_206A_206B_200D_202C_206E_202C_202D_206F_202E_202A_202A_200C_206A_202B_202C_202E(object P_0, object P_1)
|
|
{
|
|
return object.Equals(P_0, P_1);
|
|
}
|
|
|
|
static StringBuilder _206D_200D_206D_206D_200B_200C_206E_200E_206C_200C_206F_206D_202D_206F_202D_202D_200F_202D_206A_202A_206B_206F_202E_206E_200C_206E_202D_202C_202B_200B_200E_200D_202D_200E_202C_206D_202B_206C_202D_202B_202E()
|
|
{
|
|
return new StringBuilder();
|
|
}
|
|
|
|
static StringBuilder _206D_202C_202C_200D_200B_202D_206F_206D_206A_200F_202B_200F_206E_202C_206E_206E_200D_202C_206E_206C_206F_202D_202D_202B_206F_202A_202A_202D_200E_206D_200F_206D_206B_206F_202C_200B_206C_202E_202D_200D_202E(StringBuilder P_0, string P_1)
|
|
{
|
|
return P_0.Append(P_1);
|
|
}
|
|
|
|
static StringBuilder _200C_206A_202D_200E_200F_200E_200C_202A_200E_200E_206B_202A_202A_206B_202B_206E_202D_202D_206A_206A_202C_206D_206B_200F_206A_200F_202D_200D_202C_200F_200F_200F_206A_206A_206C_206C_200E_200F_200D_206B_202E(StringBuilder P_0, char P_1)
|
|
{
|
|
return P_0.Append(P_1);
|
|
}
|
|
|
|
static string _202E_200B_206C_202B_206C_200C_202E_206E_206B_206D_202B_202C_202D_202C_206B_202B_206E_202B_202D_206E_206C_200C_202A_206C_206F_206F_202C_200F_200C_200F_202B_206A_206A_202E_202E_202A_200D_202C_202C_202E(object P_0)
|
|
{
|
|
return P_0.ToString();
|
|
}
|
|
|
|
static void _206C_202B_202C_202E_202C_206E_206E_200F_202B_200C_200C_202B_202D_206C_206F_206D_206E_200D_202C_206F_202D_202E_202A_206D_206A_202C_200B_206E_202D_200C_200F_202A_200C_202B_202C_206A_202E_206D_206B_202A_202E()
|
|
{
|
|
RuntimeHelpers.EnsureSufficientExecutionStack();
|
|
}
|
|
|
|
static StringBuilder _200E_202D_206A_200C_206A_200D_202A_200F_200C_206E_202B_206A_200D_206D_206F_206A_206B_206C_206C_202B_206D_200F_200D_200D_200C_206F_200D_200E_206A_206E_200F_202A_202B_200B_206B_206E_202C_200C_200D_202E_202E(StringBuilder P_0, object P_1)
|
|
{
|
|
return P_0.Append(P_1);
|
|
}
|
|
}
|