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 list = new List(); int num; int num3; int num4; using (SubrowExcelSheet.FlatEnumerator flatEnumerator = _dataManager.GetSubrowExcelSheet().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().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); } }