1
0
Fork 0
forked from aly/qstbak
qstbak/LLib/LLib.GameData/SatisfactionSupplyHelper.cs
2026-08-17 20:27:25 +10:00

294 lines
7.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Dalamud.Plugin.Services;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace LLib.GameData;
public sealed class SatisfactionSupplyHelper
{
private readonly IDataManager _dataManager;
public SatisfactionSupplyHelper(IDataManager dataManager)
{
_dataManager = dataManager;
}
public uint[] CalculateRequestedItems(uint supplyIndex, uint seed)
{
List<SatisfactionSupply> list = new List<SatisfactionSupply>();
int num;
int num3;
int num4;
using (SubrowExcelSheet<SatisfactionSupply>.FlatEnumerator flatEnumerator = _dataManager.GetSubrowExcelSheet<SatisfactionSupply>().Flatten().GetEnumerator())
{
num = -1981977636;
SatisfactionSupply current = default(SatisfactionSupply);
while (true)
{
int num2 = num;
num3 = -1981977636;
num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
list.Add(current);
num = -1981977636;
break;
case 1:
current = flatEnumerator.Current;
num = ((current.RowId != supplyIndex) ? (-1981977636) : (-1981977634));
break;
case 4:
num = -1981977636;
break;
case 0:
num = (flatEnumerator.MoveNext() ? (-1981977635) : (-1981977633));
break;
case 3:
goto end_IL_0038;
}
continue;
end_IL_0038:
break;
}
}
uint num7 = 63874652 * supplyIndex;
num3 = (int)(437113358 * seed);
num4 = (int)num7;
int num8 = num4 + num3;
int num9 = num4 & num3;
uint num10 = (uint)(num8 - (num9 + num9));
int num11 = -547857059 * (int)supplyIndex;
num3 = (int)(811033966 * seed);
num4 = num11;
uint num12 = (uint)((num4 | num3) - (num4 & num3));
int num13 = -311827390 * (int)supplyIndex;
num3 = (int)(570616410 * seed);
num4 = num13;
int num14 = num4 + num3;
int num15 = num4 & num3;
uint num16 = (uint)(num14 - (num15 + num15));
int num17 = -1359202047 * (int)supplyIndex;
num3 = -418962442 * (int)seed;
num4 = num17;
int num18 = num4 + num3;
int num19 = num4 & num3;
uint num20 = (uint)(num18 - (num19 + num19));
uint[] array = new uint[3];
_206C_202C_202B_202D_202E_200F_200B_202E_202C_202D_202C_206D_206A_200D_206C_200E_200F_206A_202A_200C_200E_200D_200D_206A_206F_202C_202B_206F_200B_200F_206C_206D_202C_206C_200B_206B_206C_202B_200F_200C_202E((Array)array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
uint[] array2 = array;
uint num21 = num10;
int num22 = 1;
num = 1311110073;
int num33 = default(int);
SatisfactionSupply satisfactionSupply2 = default(SatisfactionSupply);
int num46 = default(int);
int num34 = default(int);
long num43 = default(long);
SatisfactionSupply satisfactionSupply = default(SatisfactionSupply);
while (true)
{
int num23 = num;
num3 = 1311110070;
num4 = num23;
int num24 = num4 + num3;
int num25 = num4 & num3;
switch (num24 - (num25 + num25))
{
case 7:
{
uint num26 = num21;
num3 = (int)(num21 << 11);
num4 = (int)num26;
int num27 = num4 + num3;
int num28 = num4 & num3;
uint num29 = (uint)(num27 - (num28 + num28));
num10 = num16;
num16 = num20;
num21 = num12;
uint num30 = num20;
num3 = (int)(num20 >> 11);
num4 = (int)num29;
num3 = (num4 | num3) - (num4 & num3) >>> 8;
num4 = (int)num29;
int num31 = num4 + num3;
int num32 = num4 & num3;
num3 = num31 - (num32 + num32);
num4 = (int)num30;
num20 = (uint)((num4 | num3) - (num4 & num3));
num12 = num10;
num = ((num33 <= 0) ? 1311110072 : 1311110071);
break;
}
case 12:
satisfactionSupply2 = list[num46];
num = ((satisfactionSupply2.Slot != num22) ? 1311110064 : 1311110078);
break;
case 10:
num = ((num34 < list.Count) ? 1311110070 : 1311110072);
break;
case 4:
num = ((num43 >= satisfactionSupply.ProbabilityPercent) ? 1311110075 : 1311110077);
break;
case 2:
num = ((num46 < list.Count) ? 1311110074 : 1311110065);
break;
case 0:
satisfactionSupply = list[num34];
num = ((satisfactionSupply.Slot != num22) ? 1311110067 : 1311110066);
break;
case 6:
{
int num47 = num46;
num3 = 1;
num4 = num47;
int num48 = num4 ^ num3;
int num49 = num4 & num3;
num46 = num48 + (num49 + num49);
num = 1311110068;
break;
}
case 8:
num33 += satisfactionSupply2.ProbabilityPercent;
num = 1311110064;
break;
case 16:
num = 1311110073;
break;
case 9:
num33 = 0;
num46 = 0;
num = 1311110068;
break;
case 1:
num43 = num20 % num33;
num34 = 0;
num = 1311110076;
break;
case 3:
return array2;
case 13:
{
long num42 = num43;
long num44 = satisfactionSupply.ProbabilityPercent;
long num45 = num42;
num43 = ~(~num45 + num44);
num = 1311110067;
break;
}
case 5:
{
int num39 = num34;
num3 = 1;
num4 = num39;
int num40 = num4 ^ num3;
int num41 = num4 & num3;
num34 = num40 + (num41 + num41);
num = 1311110076;
break;
}
case 11:
{
int num38 = num22;
num3 = 1;
num4 = num38;
array2[~(~num4 + num3)] = (uint)num34;
num = 1311110072;
break;
}
case 14:
{
int num35 = num22;
num3 = 1;
num4 = num35;
int num36 = num4 ^ num3;
int num37 = num4 & num3;
num22 = num36 + (num37 + num37);
num = 1311110073;
break;
}
case 15:
num = ((num22 < 4) ? 1311110079 : 1311110069);
break;
}
}
}
public int CalculateBonusGuaranteeIndex(int timestamp)
{
int count = _dataManager.GetExcelSheet<SatisfactionBonusGuarantee>().Count;
int num = ((count != 0) ? 473391985 : 473391984);
while (true)
{
int num2 = num;
int num3 = 473391985;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto IL_005f;
case 1:
return -1;
case 0:
num3 = 1657008000;
num4 = timestamp;
return ~(~num4 + num3) / 604800 % count;
}
continue;
IL_005f:
num = 473391984;
}
}
public static int CalculateTurnInsToNextRank(ushort currentSatisfaction, ushort maxSatisfaction, int maxTurnIns)
{
int num = ((currentSatisfaction < maxSatisfaction) ? 423147797 : 423147794);
int num5 = default(int);
int num6 = default(int);
while (true)
{
int num2 = num;
int num3 = 423147798;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = 423147794;
break;
case 3:
num3 = currentSatisfaction;
num4 = maxSatisfaction;
num5 = ~(~num4 + num3);
num6 = maxSatisfaction / maxTurnIns;
num = ((num6 != 0) ? 423147799 : 423147796);
break;
case 4:
return maxTurnIns;
case 2:
return maxTurnIns;
case 1:
return _200D_202D_206D_206C_206D_202A_202A_200D_202E_200B_200B_200C_206E_202E_200D_200B_206B_206C_206F_202C_200B_200C_202D_200B_206C_200F_200B_202E_200C_206F_206F_206D_200D_200E_202A_206E_202C_206F_202D_206E_202E((int)_202E_200D_206F_200C_200B_206B_202E_206E_206D_206D_200E_206B_202D_206D_206D_200E_206B_200E_206A_202B_206F_206A_202D_202B_202C_202D_206E_202B_200D_206F_200F_206D_200D_200B_200F_200C_200F_202B_206B_200D_202E((double)num5 / (double)num6), maxTurnIns);
}
}
}
static void _206C_202C_202B_202D_202E_200F_200B_202E_202C_202D_202C_206D_206A_200D_206C_200E_200F_206A_202A_200C_200E_200D_200D_206A_206F_202C_202B_206F_200B_200F_206C_206D_202C_206C_200B_206B_206C_202B_200F_200C_202E(Array P_0, RuntimeFieldHandle P_1)
{
RuntimeHelpers.InitializeArray(P_0, P_1);
}
static double _202E_200D_206F_200C_200B_206B_202E_206E_206D_206D_200E_206B_202D_206D_206D_200E_206B_200E_206A_202B_206F_206A_202D_202B_202C_202D_206E_202B_200D_206F_200F_206D_200D_200B_200F_200C_200F_202B_206B_200D_202E(double P_0)
{
return Math.Ceiling(P_0);
}
static int _200D_202D_206D_206C_206D_202A_202A_200D_202E_200B_200B_200C_206E_202E_200D_200B_206B_206C_206F_202C_200B_200C_202D_200B_206C_200F_200B_202E_200C_206F_206F_206D_200D_200E_202A_206E_202C_206F_202D_206E_202E(int P_0, int P_1)
{
return Math.Min(P_0, P_1);
}
}