1
0
Fork 0
forked from aly/qstbak

muffin v6.29

This commit is contained in:
alydev 2025-10-21 09:04:06 +10:00
parent 35a2f8bc36
commit 5885c72e0f
3 changed files with 57 additions and 17 deletions

View file

@ -82042,12 +82042,30 @@ public static class AssemblyQuestLoader
{ {
Sequence = 3 Sequence = 3
}; };
num3 = 1; num3 = 2;
List<QuestStep> list39 = new List<QuestStep>(num3); List<QuestStep> list39 = new List<QuestStep>(num3);
CollectionsMarshal.SetCount(list39, num3); CollectionsMarshal.SetCount(list39, num3);
span3 = CollectionsMarshal.AsSpan(list39); span3 = CollectionsMarshal.AsSpan(list39);
num2 = 0; num2 = 0;
span3[num2] = new QuestStep(EInteractionType.Interact, 1000471u, new Vector3(-60.471558f, 0.19999865f, 6.301941f), 148); span3[num2] = new QuestStep(EInteractionType.Interact, 1000471u, new Vector3(-60.471558f, 0.19999865f, 6.301941f), 148);
num2++;
span3[num2] = new QuestStep(EInteractionType.PurchaseItem, 1000220u, new Vector3(16.189758f, -8.010209f, -15.640564f), 148)
{
ItemId = 4868u,
ItemCount = 1,
SkipConditions = new SkipConditions
{
StepIf = new SkipStepConditions
{
Item = new SkipItemConditions()
}
},
PurchaseMenu = new PurchaseMenu
{
ExcelSheet = "GilShop",
Key = new ExcelRef(262773u)
}
};
obj24.Steps = list39; obj24.Steps = list39;
reference29 = obj24; reference29 = obj24;
num++; num++;
@ -464646,7 +464664,7 @@ public static class AssemblyQuestLoader
CollectionsMarshal.SetCount(list48, index2); CollectionsMarshal.SetCount(list48, index2);
span3 = CollectionsMarshal.AsSpan(list48); span3 = CollectionsMarshal.AsSpan(list48);
num2 = 0; num2 = 0;
span3[num2] = new QuestStep(EInteractionType.AcceptQuest, 1054636u, new Vector3(506.70618f, 142.24991f, 800.2289f), 1187) span3[num2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187)
{ {
Fly = true, Fly = true,
AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho,
@ -464709,7 +464727,7 @@ public static class AssemblyQuestLoader
} }
}; };
num2++; num2++;
span3[num2] = new QuestStep(EInteractionType.CompleteQuest, 1054636u, new Vector3(506.70618f, 142.24991f, 800.2289f), 1187) span3[num2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187)
{ {
Fly = true, Fly = true,
AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho,
@ -465462,7 +465480,8 @@ public static class AssemblyQuestLoader
ref QuestStep reference59 = ref span3[num2]; ref QuestStep reference59 = ref span3[num2];
QuestStep obj59 = new QuestStep(EInteractionType.Interact, 1054640u, new Vector3(496.11658f, 142.24991f, 801.6022f), 1187) QuestStep obj59 = new QuestStep(EInteractionType.Interact, 1054640u, new Vector3(496.11658f, 142.24991f, 801.6022f), 1187)
{ {
TargetTerritoryId = (ushort)1297 TargetTerritoryId = (ushort)1297,
Fly = true
}; };
SkipConditions skipConditions8 = new SkipConditions(); SkipConditions skipConditions8 = new SkipConditions();
SkipStepConditions skipStepConditions8 = new SkipStepConditions(); SkipStepConditions skipStepConditions8 = new SkipStepConditions();

View file

@ -281,27 +281,43 @@ internal sealed class CombatController : IDisposable
continue; continue;
} }
ComplexCombatData complexCombatData = complexCombatDatas[i]; ComplexCombatData complexCombatData = complexCombatDatas[i];
if (complexCombatData.MinimumKillCount.HasValue) bool hasValue = complexCombatData.MinimumKillCount.HasValue;
bool flag = complexCombatData.RewardItemId.HasValue && complexCombatData.RewardItemCount.HasValue;
bool flag2 = QuestWorkUtils.HasCompletionFlags(complexCombatData.CompletionQuestVariablesFlags);
if (hasValue || flag)
{
bool flag3 = true;
bool flag4 = true;
if (hasValue)
{ {
int valueOrDefault = _currentFight.KillCountsByComplexDataIndex.GetValueOrDefault(i, 0); int valueOrDefault = _currentFight.KillCountsByComplexDataIndex.GetValueOrDefault(i, 0);
if (valueOrDefault >= complexCombatData.MinimumKillCount.Value) flag3 = valueOrDefault >= complexCombatData.MinimumKillCount.Value;
if (flag3)
{ {
_logger.LogInformation("Complex combat condition fulfilled: killCount({DataId}) = {Count}/{Required}", complexCombatData.DataId, valueOrDefault, complexCombatData.MinimumKillCount.Value); _logger.LogDebug("Kill count condition met for ComplexCombatData[{Index}]: {Count}/{Required}", i, valueOrDefault, complexCombatData.MinimumKillCount.Value);
_currentFight.Data.CompletedComplexDatas.Add(i);
continue;
} }
} }
if (complexCombatData.RewardItemId.HasValue && complexCombatData.RewardItemCount.HasValue && InventoryManager.Instance()->GetInventoryItemCount(complexCombatData.RewardItemId.Value, isHq: false, checkEquipped: true, checkArmory: true, 0) >= complexCombatData.RewardItemCount.Value) if (flag)
{ {
_logger.LogInformation("Complex combat condition fulfilled: itemCount({ItemId}) >= {ItemCount}", complexCombatData.RewardItemId, complexCombatData.RewardItemCount); int inventoryItemCount = InventoryManager.Instance()->GetInventoryItemCount(complexCombatData.RewardItemId.Value, isHq: false, checkEquipped: true, checkArmory: true, 0);
flag4 = inventoryItemCount >= complexCombatData.RewardItemCount.Value;
if (flag4)
{
_logger.LogDebug("Item count condition met for ComplexCombatData[{Index}]: {ItemId} = {Count}/{Required}", i, complexCombatData.RewardItemId.Value, inventoryItemCount, complexCombatData.RewardItemCount.Value);
}
}
if (flag3 && flag4)
{
_logger.LogInformation("Complex combat condition fulfilled for ComplexCombatData[{Index}] ({DataId}): KillCount={KillCountMet}, Items={ItemMet}", i, complexCombatData.DataId, flag3, flag4);
_currentFight.Data.CompletedComplexDatas.Add(i); _currentFight.Data.CompletedComplexDatas.Add(i);
} }
else if (QuestWorkUtils.HasCompletionFlags(complexCombatData.CompletionQuestVariablesFlags) && _currentFight.Data.ElementId is QuestId elementId) }
else if (flag2 && _currentFight.Data.ElementId is QuestId elementId)
{ {
QuestProgressInfo questProgressInfo = _questFunctions.GetQuestProgressInfo(elementId); QuestProgressInfo questProgressInfo = _questFunctions.GetQuestProgressInfo(elementId);
if (questProgressInfo != null && QuestWorkUtils.MatchesQuestWork(complexCombatData.CompletionQuestVariablesFlags, questProgressInfo)) if (questProgressInfo != null && QuestWorkUtils.MatchesQuestWork(complexCombatData.CompletionQuestVariablesFlags, questProgressInfo))
{ {
_logger.LogInformation("Complex combat condition fulfilled: QuestWork matches"); _logger.LogInformation("Complex combat condition fulfilled for ComplexCombatData[{Index}] ({DataId}): QuestWork (fallback)", i, complexCombatData.DataId);
_currentFight.Data.CompletedComplexDatas.Add(i); _currentFight.Data.CompletedComplexDatas.Add(i);
} }
} }

View file

@ -13,7 +13,12 @@ namespace Questionable.External;
internal sealed class PandorasBoxIpc : IDisposable internal sealed class PandorasBoxIpc : IDisposable
{ {
private static readonly ImmutableHashSet<string> ConflictingFeatures = new HashSet<string> { "Auto-Meditation", "Auto-Motif (Out of Combat)", "Auto-Mount after Combat", "Auto-Mount after Gathering", "Auto-Peleton", "Auto-Sprint in Sanctuaries", "Auto-interact with Gathering Nodes", "Auto-select Turn-ins", "Auto-Sync FATEs", "Pandora Quick Gather" }.ToImmutableHashSet(); private static readonly ImmutableHashSet<string> ConflictingFeatures = new HashSet<string>
{
"Auto-Collect", "Auto-Cordial", "Auto-Meditation", "Auto-Motif (Out of Combat)", "Auto-Mount After Combat", "Auto-Mount after Gathering", "Auto-Mount on Zone Change", "Auto-Peleton", "Auto-Prospect/Triangulate", "Auto-Sprint in Sanctuaries",
"Auto-Summon Chocobo", "Auto-Summon Fairy/Carbuncle", "Auto-Tank Stance", "Action Combat Targeting", "Auto-interact with Gathering Nodes", "FATE Targeting Mode", "Auto-Teleport to Map Coords", "Auto-select Turn-ins", "Auto-Equip Recommended Gear", "Auto-Sync FATEs",
"Pandora Quick Gather", "Switch Gatherers Automatically"
}.ToImmutableHashSet();
private readonly IFramework _framework; private readonly IFramework _framework;