1
0
Fork 0
forked from aly/qstbak

muffin v7.5.6

This commit is contained in:
alydev 2026-08-17 20:27:25 +10:00
parent 6266f9e6b7
commit addf2d530f
619 changed files with 264792 additions and 446022 deletions

View file

@ -0,0 +1,274 @@
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Runtime.CompilerServices;
using Dalamud.Plugin.Services;
using LLib.Shop.Model;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace LLib.Shop.Searchers;
internal sealed class GCShopSearcher
{
private static readonly uint[] SealItemIds;
private static readonly uint[] QuartermasterNpcIds;
private readonly IDataManager _dataManager;
private readonly NpcPositionCache _positionCache;
public GCShopSearcher(IDataManager dataManager, NpcPositionCache positionCache)
{
_dataManager = dataManager;
_positionCache = positionCache;
}
public List<ShopSearchResult> Search(uint itemId)
{
List<ShopSearchResult> list = new List<ShopSearchResult>();
SubrowExcelSheet<GCScripShopItem> subrowExcelSheet = _dataManager.GetSubrowExcelSheet<GCScripShopItem>();
ExcelSheet<GCScripShopCategory> excelSheet = _dataManager.GetExcelSheet<GCScripShopCategory>();
ExcelSheet<GCShop> excelSheet2 = _dataManager.GetExcelSheet<GCShop>();
Dictionary<uint, uint> dictionary = new Dictionary<uint, uint>();
int num;
using (ExcelSheet<GCShop>.Enumerator enumerator = excelSheet2.GetEnumerator())
{
num = 1051383977;
uint rowId = default(uint);
GCShop current = default(GCShop);
while (true)
{
int num2 = num;
int num3 = 1051383979;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = 1051383977;
break;
case 2:
num = (enumerator.MoveNext() ? 1051383983 : 1051383976);
break;
case 1:
dictionary.TryAdd(rowId, current.RowId);
num = 1051383977;
break;
case 4:
current = enumerator.Current;
rowId = current.GrandCompany.RowId;
num = ((rowId == 0) ? 1051383977 : 1051383978);
break;
case 3:
goto end_IL_0063;
}
continue;
end_IL_0063:
break;
}
}
Dictionary<uint, uint> dictionary2 = new Dictionary<uint, uint>();
using (SubrowExcelSheet<GCScripShopItem>.Enumerator enumerator2 = subrowExcelSheet.GetEnumerator())
{
num = 754964801;
uint num8 = default(uint);
uint value2 = default(uint);
uint rowId3 = default(uint);
uint value = default(uint);
SubrowCollection<GCScripShopItem> current2 = default(SubrowCollection<GCScripShopItem>);
uint rowId2 = default(uint);
int num7 = default(int);
GCScripShopCategory row = default(GCScripShopCategory);
uint costGCSeals = default(uint);
GCScripShopItem gCScripShopItem = default(GCScripShopItem);
while (true)
{
int num5 = num;
int num3 = 754964806;
int num4 = num5;
switch ((num4 | num3) - (num4 & num3))
{
case 17:
num8 = 1u;
num = 754964805;
break;
case 2:
num = ((!dictionary2.TryGetValue(num8, out value2)) ? 754964815 : 754964813);
break;
case 6:
num = ((!dictionary2.TryGetValue(rowId3, out value)) ? 754964803 : 754964822);
break;
case 13:
current2 = enumerator2.Current;
rowId2 = current2.RowId;
num7 = 0;
num = 754964808;
break;
case 10:
{
uint num9 = num8;
num3 = 1;
num4 = (int)num9;
int num10 = num4 ^ num3;
int num11 = num4 & num3;
num8 = (uint)(num10 + (num11 + num11));
num = 754964805;
break;
}
case 0:
rowId3 = row.GrandCompany.RowId;
num = ((rowId3 != 0) ? 754964800 : 754964823);
break;
case 14:
num = ((num7 < current2.Count) ? 754964809 : 754964801);
break;
case 1:
costGCSeals = gCScripShopItem.CostGCSeals;
num = ((!excelSheet.TryGetRow(rowId2, out row)) ? 754964810 : 754964806);
break;
case 8:
num = 754964810;
break;
case 9:
dictionary2[num8] = costGCSeals;
num = 754964812;
break;
case 7:
num = (enumerator2.MoveNext() ? 754964811 : 754964820);
break;
case 4:
num = 754964801;
break;
case 11:
num = ((costGCSeals >= value2) ? 754964812 : 754964815);
break;
case 5:
dictionary2[rowId3] = costGCSeals;
num = 754964810;
break;
case 3:
num = ((num8 < (uint)QuartermasterNpcIds.Length) ? 754964804 : 754964814);
break;
case 16:
num = ((costGCSeals >= value) ? 754964810 : 754964803);
break;
case 15:
gCScripShopItem = current2[num7];
num = ((gCScripShopItem.Item.RowId != itemId) ? 754964810 : 754964807);
break;
case 12:
{
int num6 = num7;
num3 = 1;
num4 = num6;
num7 = (num4 | num3) + (num4 & num3);
num = 754964808;
break;
}
case 18:
goto end_IL_014c;
}
continue;
end_IL_014c:
break;
}
}
num = ((dictionary2.Count != 0) ? (-231383589) : (-231383590));
(ushort, Vector3)? position = default((ushort, Vector3)?);
uint num14 = default(uint);
uint num16 = default(uint);
uint price = default(uint);
uint currencyItemId = default(uint);
while (true)
{
int num12 = num;
int num3 = -231383589;
int num4 = num12;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto IL_046f;
case 1:
return list;
case 0:
{
using Dictionary<uint, uint>.Enumerator enumerator3 = dictionary2.GetEnumerator();
num = 1589717565;
while (true)
{
int num13 = num;
num3 = 1589717566;
num4 = num13;
int num15;
switch ((num4 | num3) - (num4 & num3))
{
case 6:
{
(ushort, Vector3) valueOrDefault = position.GetValueOrDefault();
dictionary.TryGetValue(num14, out var value3);
list.Add(new ShopSearchResult(value3, num16, valueOrDefault.Item1, valueOrDefault.Item2, EShopType.GCShop, price, currencyItemId));
num = 1589717565;
break;
}
case 1:
num15 = 0;
goto IL_0563;
case 7:
num = 1589717565;
break;
case 3:
num = (enumerator3.MoveNext() ? 1589717564 : 1589717563);
break;
case 0:
num15 = (int)SealItemIds[num14];
goto IL_0563;
case 2:
{
enumerator3.Current.Deconstruct(out var key, out var value4);
num14 = key;
price = value4;
num = ((num14 >= (uint)QuartermasterNpcIds.Length) ? 1589717565 : 1589717562);
break;
}
case 4:
num16 = QuartermasterNpcIds[num14];
num = ((num16 == 0) ? 1589717565 : 1589717558);
break;
case 8:
num = ((num14 < (uint)SealItemIds.Length) ? 1589717566 : 1589717567);
break;
case 5:
{
return list;
}
IL_0563:
currencyItemId = (uint)num15;
position = _positionCache.GetPosition(num16);
num = ((!position.HasValue) ? 1589717565 : 1589717560);
break;
}
}
}
}
continue;
IL_046f:
num = -231383590;
}
}
static GCShopSearcher()
{
uint[] array = new uint[4];
_200F_206D_202A_206E_202D_200C_206D_200D_200B_202E_202B_206B_206B_206E_202B_206A_202B_206D_202C_200E_206F_200C_200B_202B_200C_202B_206C_202C_202E_200F_206D_200B_202B_202B_206E_206B_206A_200D_206A_200F_202E((Array)array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
SealItemIds = array;
uint[] array2 = new uint[4];
_200F_206D_202A_206E_202D_200C_206D_200D_200B_202E_202B_206B_206B_206E_202B_206A_202B_206D_202C_200E_206F_200C_200B_202B_200C_202B_206C_202C_202E_200F_206D_200B_202B_202B_206E_206B_206A_200D_206A_200F_202E((Array)array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
QuartermasterNpcIds = array2;
}
static void _200F_206D_202A_206E_202D_200C_206D_200D_200B_202E_202B_206B_206B_206E_202B_206A_202B_206D_202C_200E_206F_200C_200B_202B_200C_202B_206C_202C_202E_200F_206D_200B_202B_202B_206E_206B_206A_200D_206A_200F_202E(Array P_0, RuntimeFieldHandle P_1)
{
RuntimeHelpers.InitializeArray(P_0, P_1);
}
}

View file

@ -0,0 +1,160 @@
using System.Collections.Generic;
using System.Numerics;
using Dalamud.Plugin.Services;
using LLib.Shop.Model;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace LLib.Shop.Searchers;
internal sealed class GilShopSearcher
{
private readonly IDataManager _dataManager;
private readonly NpcPositionCache _positionCache;
public GilShopSearcher(IDataManager dataManager, NpcPositionCache positionCache)
{
_dataManager = dataManager;
_positionCache = positionCache;
}
public List<ShopSearchResult> Search(uint itemId)
{
List<ShopSearchResult> list = new List<ShopSearchResult>();
ExcelSheet<ENpcBase> excelSheet = _dataManager.GetExcelSheet<ENpcBase>();
SubrowExcelSheet<GilShopItem> subrowExcelSheet = _dataManager.GetSubrowExcelSheet<GilShopItem>();
int num = (_dataManager.GetExcelSheet<Item>().TryGetRow(itemId, out var row) ? (-465006418) : (-465006419));
uint rowId = default(uint);
RowRef current2 = default(RowRef);
SubrowCollection<GilShopItem> row2 = default(SubrowCollection<GilShopItem>);
bool flag = default(bool);
int num15 = default(int);
while (true)
{
int num2 = num;
int num3 = -465006420;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
goto IL_009d;
case 1:
return list;
case 2:
{
uint priceMid = row.PriceMid;
{
foreach (ENpcBase item in excelSheet)
{
if (item.RowId == 0)
{
continue;
}
(ushort, Vector3)? position = _positionCache.GetPosition(item.RowId);
if (!position.HasValue)
{
continue;
}
(ushort, Vector3) valueOrDefault = position.GetValueOrDefault();
int num7 = 0;
using Collection<RowRef>.Enumerator enumerator2 = item.ENpcData.GetEnumerator();
num = 342150999;
while (true)
{
int num8 = num;
num3 = 342150993;
num4 = num8;
int num9 = num4 + num3;
int num10 = num4 & num3;
switch (num9 - (num10 + num10))
{
case 5:
rowId = current2.RowId;
num = (subrowExcelSheet.TryGetRow(rowId, out row2) ? 342150994 : 342150992);
break;
case 3:
flag = false;
num15 = 0;
num = 342151000;
break;
case 7:
num = ((row2[num15].Item.RowId != itemId) ? 342151005 : 342150997);
break;
case 8:
current2 = enumerator2.Current;
num = ((current2.RowId >> 16 != 4) ? 342150999 : 342150996);
break;
case 9:
num = ((num15 < row2.Count) ? 342150998 : 342150995);
break;
case 6:
num = (enumerator2.MoveNext() ? 342151001 : 342151003);
break;
case 1:
{
int num18 = num7;
num3 = 1;
num4 = num18;
int num19 = num4 ^ num3;
int num20 = num4 & num3;
num7 = num19 + (num20 + num20);
num = 342150999;
break;
}
case 13:
num = 342150999;
break;
case 4:
flag = true;
num = 342150995;
break;
case 2:
num = ((!flag) ? 342150993 : 342151002);
break;
case 11:
list.Add(new ShopSearchResult(rowId, item.RowId, valueOrDefault.Item1, valueOrDefault.Item2, EShopType.GilShop, priceMid, 1u, num7));
num = 342150993;
break;
case 12:
{
int num14 = num15;
num3 = 1;
num4 = num14;
int num16 = num4 ^ num3;
int num17 = num4 & num3;
num15 = num16 + (num17 + num17);
num = 342151000;
break;
}
case 0:
{
int num11 = num7;
num3 = 1;
num4 = num11;
int num12 = num4 ^ num3;
int num13 = num4 & num3;
num7 = num12 + (num13 + num13);
num = 342150999;
break;
}
case 10:
goto end_IL_0120;
}
continue;
end_IL_0120:
break;
}
}
return list;
}
}
}
continue;
IL_009d:
num = -465006419;
}
}
}

View file

@ -0,0 +1,298 @@
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using Dalamud.Plugin.Services;
using LLib.Shop.Model;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace LLib.Shop.Searchers;
internal sealed class SpecialShopSearcher
{
private const uint SpecialShopHandlerType = 27u;
private static readonly Dictionary<uint, uint> SpecialCurrencies = new Dictionary<uint, uint>
{
{ 1u, 28u },
{ 2u, 33913u },
{ 4u, 33914u },
{ 6u, 41784u },
{ 7u, 41785u }
};
private readonly IDataManager _dataManager;
private readonly NpcPositionCache _positionCache;
private readonly uint[] _tomestoneItemIds;
public SpecialShopSearcher(IDataManager dataManager, NpcPositionCache positionCache)
{
_dataManager = dataManager;
_positionCache = positionCache;
_tomestoneItemIds = (from t in dataManager.GetExcelSheet<TomestonesItem>()
where t.Tomestones.RowId != 0
orderby t.Tomestones.RowId
select t.Item.RowId).ToArray();
}
public List<ShopSearchResult> Search(uint itemId)
{
List<ShopSearchResult> list = new List<ShopSearchResult>();
ExcelSheet<ENpcBase> excelSheet = _dataManager.GetExcelSheet<ENpcBase>();
ExcelSheet<SpecialShop> excelSheet2 = _dataManager.GetExcelSheet<SpecialShop>();
uint rowId = default(uint);
RowRef current2 = default(RowRef);
SpecialShop shop = default(SpecialShop);
uint price = default(uint);
uint currencyItemId = default(uint);
SpecialShop.ItemStruct itemStruct = default(SpecialShop.ItemStruct);
int num13 = default(int);
int num9 = default(int);
bool flag = default(bool);
int num12 = default(int);
SpecialShop.ItemStruct.ItemCostsStruct itemCostsStruct = default(SpecialShop.ItemStruct.ItemCostsStruct);
foreach (ENpcBase item in excelSheet)
{
if (item.RowId == 0)
{
continue;
}
(ushort, Vector3)? position = _positionCache.GetPosition(item.RowId);
if (!position.HasValue)
{
continue;
}
(ushort, Vector3) valueOrDefault = position.GetValueOrDefault();
int num = 0;
using Collection<RowRef>.Enumerator enumerator2 = item.ENpcData.GetEnumerator();
int num2 = 1586357649;
while (true)
{
int num3 = num2;
int num4 = 1586357637;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
case 5:
rowId = current2.RowId;
num2 = (excelSheet2.TryGetRow(rowId, out shop) ? 1586357643 : 1586357652);
break;
case 8:
list.Add(new ShopSearchResult(rowId, item.RowId, valueOrDefault.Item1, valueOrDefault.Item2, EShopType.SpecialShop, price, currencyItemId, num));
num2 = 1586357638;
break;
case 2:
itemStruct = shop.Item[num13];
num9 = 0;
num2 = 1586357640;
break;
case 18:
flag = true;
num12 = 0;
num2 = 1586357651;
break;
case 1:
num2 = ((num13 < shop.Item.Count) ? 1586357639 : 1586357635);
break;
case 16:
itemCostsStruct = itemStruct.ItemCosts[num12];
num2 = ((itemCostsStruct.ItemCost.RowId == 0) ? 1586357646 : 1586357642);
break;
case 17:
{
int num19 = num;
num4 = 1;
num5 = num19;
num = (num5 | num4) + (num5 & num4);
num2 = 1586357649;
break;
}
case 10:
num2 = (flag ? 1586357635 : 1586357648);
break;
case 11:
{
int num18 = num12;
num4 = 1;
num5 = num18;
num12 = (num5 | num4) + (num5 & num4);
num2 = 1586357651;
break;
}
case 3:
{
int num15 = num;
num4 = 1;
num5 = num15;
int num16 = num5 ^ num4;
int num17 = num5 & num4;
num = num16 + (num17 + num17);
num2 = 1586357649;
break;
}
case 12:
num2 = 1586357649;
break;
case 6:
num2 = ((!flag) ? 1586357638 : 1586357645);
break;
case 13:
num2 = ((num9 < itemStruct.ReceiveItems.Count) ? 1586357634 : 1586357647);
break;
case 7:
num2 = ((itemStruct.ReceiveItems[num9].Item.RowId != itemId) ? 1586357633 : 1586357655);
break;
case 14:
flag = false;
currencyItemId = 0u;
price = 0u;
num13 = 0;
num2 = 1586357636;
break;
case 20:
num2 = (enumerator2.MoveNext() ? 1586357644 : 1586357654);
break;
case 9:
current2 = enumerator2.Current;
num2 = ((current2.RowId >> 16 != 27) ? 1586357649 : 1586357632);
break;
case 21:
{
int num14 = num13;
num4 = 1;
num5 = num14;
num13 = (num5 | num4) + (num5 & num4);
num2 = 1586357636;
break;
}
case 22:
num2 = ((num12 < itemStruct.ItemCosts.Count) ? 1586357653 : 1586357637);
break;
case 15:
currencyItemId = ConvertCurrencyItemId(itemCostsStruct.ItemCost.RowId, in shop);
price = itemCostsStruct.CurrencyCost;
num2 = 1586357647;
break;
case 0:
num2 = 1586357647;
break;
case 4:
{
int num8 = num9;
num4 = 1;
num5 = num8;
int num10 = num5 ^ num4;
int num11 = num5 & num4;
num9 = num10 + (num11 + num11);
num2 = 1586357640;
break;
}
case 19:
goto end_IL_009b;
}
continue;
end_IL_009b:
break;
}
}
return list;
}
private uint ConvertCurrencyItemId(uint costItemId, in SpecialShop shop)
{
int num = ((costItemId == 0) ? 1435581379 : 1435581385);
uint num8 = default(uint);
ushort num7 = default(ushort);
bool flag = default(bool);
while (true)
{
int num2 = num;
int num3 = 1435581387;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
uint num10;
switch (num5 - (num6 + num6))
{
case 3:
num8 = SpecialCurrencies.GetValueOrDefault(costItemId, costItemId);
num = 1435581387;
break;
case 7:
num = ((num7 == 8) ? 1435581389 : 1435581390);
break;
case 4:
num8 = costItemId;
num = 1435581387;
break;
case 15:
num10 = costItemId;
goto IL_014f;
case 12:
flag = false;
num = 1435581386;
break;
case 14:
num7 = 16;
num = 1435581403;
break;
case 5:
num = ((num7 != 16) ? 1435581391 : 1435581384);
break;
case 16:
num = ((num7 == 4) ? 1435581382 : 1435581388);
break;
case 11:
num = 1435581385;
break;
case 8:
return costItemId;
case 17:
{
uint[] tomestoneItemIds = _tomestoneItemIds;
num3 = 1;
num4 = (int)costItemId;
num10 = tomestoneItemIds[~(~num4 + num3)];
goto IL_014f;
}
case 10:
flag = true;
num = 1435581386;
break;
case 2:
num = ((costItemId < 8) ? 1435581378 : 1435581379);
break;
case 13:
num = ((costItemId <= _tomestoneItemIds.Length) ? 1435581402 : 1435581380);
break;
case 0:
return num8;
case 6:
num8 = 1u;
num = 1435581387;
break;
case 1:
num = ((!flag) ? 1435581403 : 1435581381);
break;
case 9:
{
num7 = shop.UseCurrencyType;
num8 = shop.RowId;
uint num9 = num8;
num3 = 1770637;
num4 = (int)num9;
num = (((uint)(~(~num4 + num3)) > 1u) ? 1435581383 : 1435581377);
break;
}
IL_014f:
num8 = num10;
num = 1435581387;
break;
}
}
}
}