muffin v7.38

This commit is contained in:
alydev 2025-11-17 11:31:27 +10:00
parent 411c0bbe76
commit e5b98b3d57
35 changed files with 10700 additions and 7610 deletions

View file

@ -257,6 +257,12 @@ internal static class SkipCondition
return true;
}
}
item = skipConditions.Item;
if (item != null && item.BetterOrEqualItemEquipped && step != null && step.ItemId.HasValue && IsBetterOrEqualItemEquipped(step.ItemId.Value))
{
logger.LogInformation("Skipping step, better or equal item than {ItemId} is already equipped", step.ItemId.Value);
return true;
}
return false;
}
@ -471,6 +477,39 @@ internal static class SkipCondition
return false;
}
private unsafe bool IsBetterOrEqualItemEquipped(uint itemId)
{
if (clientState.LocalPlayer == null)
{
return false;
}
InventoryManager* ptr = InventoryManager.Instance();
if (ptr == null)
{
return false;
}
uint itemLevel = gameFunctions.GetItemLevel(itemId);
if (itemLevel == 0)
{
logger.LogWarning("Could not get item level for item {ItemId}, skipping equip step", itemId);
return true;
}
if (ptr->GetInventoryItemCount(itemId, isHq: false, checkEquipped: true, checkArmory: true, 0) == 0 && ptr->GetInventoryItemCount(itemId, isHq: true, checkEquipped: true, checkArmory: true, 0) == 0)
{
logger.LogInformation("Item {ItemId} not found in inventory, skipping equip step", itemId);
return true;
}
InventoryItem* inventorySlot = ptr->GetInventoryContainer(InventoryType.EquippedItems)->GetInventorySlot(0);
if (inventorySlot == null || inventorySlot->ItemId == 0)
{
logger.LogDebug("No item equipped in main hand slot, should equip item {ItemId}", itemId);
return false;
}
uint itemLevel2 = gameFunctions.GetItemLevel(inventorySlot->ItemId);
logger.LogDebug("Comparing equipped item level {EquippedLevel} with target item level {TargetLevel}", itemLevel2, itemLevel);
return itemLevel2 >= itemLevel;
}
public override ETaskResult Update()
{
return ETaskResult.SkipRemainingTasksForStep;