1
0
Fork 0
forked from aly/qstbak

muffin v6.27

This commit is contained in:
alydev 2025-10-18 23:54:48 +10:00
parent 1bcbf18654
commit 44d33a0b56
6 changed files with 59 additions and 21 deletions

View file

@ -48793,7 +48793,7 @@ public static class AssemblyQuestLoader
span[index] = "liza"; span[index] = "liza";
questRoot13.Author = list119; questRoot13.Author = list119;
questRoot13.IsSeasonalQuest = true; questRoot13.IsSeasonalQuest = true;
questRoot13.SeasonalQuestExpiry = new DateTime(2025, 12, 23, 0, 0, 0, DateTimeKind.Utc); questRoot13.SeasonalQuestExpiry = new DateTime(2025, 12, 23, 14, 59, 0, DateTimeKind.Utc);
index = 1; index = 1;
List<QuestSequence> list120 = new List<QuestSequence>(index); List<QuestSequence> list120 = new List<QuestSequence>(index);
CollectionsMarshal.SetCount(list120, index); CollectionsMarshal.SetCount(list120, index);

View file

@ -235,7 +235,7 @@ internal static class Interact
if (taxiStandId.HasValue) if (taxiStandId.HasValue)
{ {
byte valueOrDefault2 = taxiStandId.GetValueOrDefault(); byte valueOrDefault2 = taxiStandId.GetValueOrDefault();
if (UIState.Instance()->IsChocoboTaxiStandUnlocked(valueOrDefault2)) if (UIState.Instance()->IsChocoboTaxiStandUnlocked((uint)(valueOrDefault2 + 1179648)))
{ {
return ETaskResult.TaskComplete; return ETaskResult.TaskComplete;
} }

View file

@ -302,15 +302,18 @@ internal static class SkipCondition
private bool CheckAetherCurrentCondition(QuestStep step) private bool CheckAetherCurrentCondition(QuestStep step)
{ {
if (step != null && step.DataId.HasValue && step.InteractionType == EInteractionType.AttuneAetherCurrent && gameFunctions.IsAetherCurrentUnlocked(step.DataId.Value)) if (step.InteractionType == EInteractionType.AttuneAetherCurrent)
{
if (configuration.Advanced.SkipAetherCurrents)
{
logger.LogInformation("Skipping step, as aether currents should be skipped");
return true;
}
if (step.DataId.HasValue && gameFunctions.IsAetherCurrentUnlocked(step.DataId.Value))
{ {
logger.LogInformation("Skipping step, as current is unlocked"); logger.LogInformation("Skipping step, as current is unlocked");
return true; return true;
} }
if (step != null && step.InteractionType == EInteractionType.AttuneAetherCurrent && configuration.Advanced.SkipAetherCurrents)
{
logger.LogInformation("Skipping step, as aether currents should be skipped");
return true;
} }
return false; return false;
} }
@ -435,7 +438,7 @@ internal static class SkipCondition
if (taxiStandId.HasValue) if (taxiStandId.HasValue)
{ {
byte valueOrDefault = taxiStandId.GetValueOrDefault(); byte valueOrDefault = taxiStandId.GetValueOrDefault();
if (ptr->IsChocoboTaxiStandUnlocked(valueOrDefault)) if (ptr->IsChocoboTaxiStandUnlocked((uint)(valueOrDefault + 1179648)))
{ {
logger.LogInformation("Skipping step, as taxi stand {TaxiStandId} is unlocked", valueOrDefault); logger.LogInformation("Skipping step, as taxi stand {TaxiStandId} is unlocked", valueOrDefault);
return true; return true;

View file

@ -215,14 +215,36 @@ internal sealed class CommandHandler : IDisposable
List<string> list3 = new List<string>(); List<string> list3 = new List<string>();
ExcelSheet<ChocoboTaxiStand> excelSheet = _dataManager.GetExcelSheet<ChocoboTaxiStand>(); ExcelSheet<ChocoboTaxiStand> excelSheet = _dataManager.GetExcelSheet<ChocoboTaxiStand>();
UIState* ptr = UIState.Instance(); UIState* ptr = UIState.Instance();
for (byte b2 = 0; b2 < ptr->UnlockedChocoboTaxiStandsBitmask.Length * 8; b2++) if (ptr == null)
{ {
if (ptr->IsChocoboTaxiStandUnlocked(b2)) _chatGui.PrintError("UIState is null", "Questionable", 576);
break;
}
for (int i = 0; i < 192; i++)
{ {
list3.Add($"{excelSheet.GetRow((uint)(b2 + 1179648)).PlaceName} ({b2})"); uint num = (uint)(i + 1179648);
try
{
if (excelSheet.HasRow(num) && ptr->IsChocoboTaxiStandUnlocked(num))
{
string value = excelSheet.GetRow(num).PlaceName.ToString();
if (string.IsNullOrEmpty(value))
{
value = "Unknown";
}
list3.Add($"{value} (ID: {i}, Row: 0x{num:X})");
} }
} }
_chatGui.Print("Unlocked taxi stands:", "Questionable", 576); catch
{
}
}
_chatGui.Print($"Unlocked taxi stands ({list3.Count}):", "Questionable", 576);
if (list3.Count == 0)
{
_chatGui.Print(" (No unlocked taxi stands found)", "Questionable", 576);
break;
}
{ {
foreach (string item in list3) foreach (string item in list3)
{ {
@ -237,16 +259,26 @@ internal sealed class CommandHandler : IDisposable
for (byte b = 0; b < 4; b++) for (byte b = 0; b < 4; b++)
{ {
GameMain.Festival festival = GameMain.Instance()->ActiveFestivals[b]; GameMain.Festival festival = GameMain.Instance()->ActiveFestivals[b];
if (festival.Id != 0) if (festival.Id == 0)
{ {
list.Add($"{festival.Id}({festival.Phase})"); list.Add($"Slot {b}: None");
}
else
{
list.Add($"Slot {b}: {festival.Id}({festival.Phase})");
} }
} }
_chatGui.Print("Active festivals: " + string.Join(", ", list), "Questionable", 576); _chatGui.Print("Festival slots:", "Questionable", 576);
{
foreach (string item2 in list)
{
_chatGui.Print(" " + item2, "Questionable", 576);
}
break; break;
} }
} }
} }
}
private bool OpenSetupIfNeeded(string arguments) private bool OpenSetupIfNeeded(string arguments)
{ {

View file

@ -534,7 +534,7 @@ internal sealed class GameFunctions
return Array.Empty<uint>(); return Array.Empty<uint>();
} }
List<uint> list = new List<uint>(); List<uint> list = new List<uint>();
for (uint num = 0u; num < ptr->UnlockLinkBitmask.Length * 8; num++) for (uint num = 0u; num < ptr->UnlockLinksBitArray.ByteLength * 8; num++)
{ {
if (ptr->IsUnlockLinkUnlocked(num)) if (ptr->IsUnlockLinkUnlocked(num))
{ {

View file

@ -56,6 +56,9 @@
<Reference Include="JsonSchema.Net"> <Reference Include="JsonSchema.Net">
<HintPath>..\..\JsonSchema.Net.dll</HintPath> <HintPath>..\..\JsonSchema.Net.dll</HintPath>
</Reference> </Reference>
<Reference Include="InteropGenerator.Runtime">
<HintPath>C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\InteropGenerator.Runtime.dll</HintPath>
</Reference>
<Reference Include="NotificationMasterAPI"> <Reference Include="NotificationMasterAPI">
<HintPath>..\..\NotificationMasterAPI.dll</HintPath> <HintPath>..\..\NotificationMasterAPI.dll</HintPath>
</Reference> </Reference>