crafting-orders: fulfil achievement criteria
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s

This commit is contained in:
luis
2026-08-11 18:42:13 -03:00
parent d4e7fe956e
commit 99322c9e03
3 changed files with 28 additions and 2 deletions
@@ -586,6 +586,9 @@ void CriteriaHandler::UpdateCriteria(Criteria const* criteria, uint64 miscValue1
case CriteriaType::SellItemsToVendors:
case CriteriaType::ReachMaxLevel:
case CriteriaType::LearnTaxiNode:
// --- crafting orders
case CriteriaType::FulfillAnyCraftingOrder:
case CriteriaType::FulfillCraftingOrderType:
// --- mythic keystone: one tick per completed run
case CriteriaType::MythicPlusCompleted:
case CriteriaType::CompleteAnyChallengeMode:
@@ -1762,6 +1765,15 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
if (!miscValue1)
return false;
break;
case CriteriaType::FulfillCraftingOrderType:
// Asset = {CraftingOrderType} (0 public / 1 guild / 2 personal / 3 npc) == CraftingOrders::OrderType.
if (uint32(miscValue1) != uint32(criteria->Entry->Asset.ID))
return false;
break;
case CriteriaType::FulfillAnyCraftingOrder:
if (!miscValue1)
return false;
break;
default:
break;
}
+2 -2
View File
@@ -784,8 +784,8 @@ enum class CriteriaType : int16
ReputationAmountGained = 243, /*NYI*/ // Gain reputation amount with {FactionID}; accumulate, not highest
FulfillAnyCraftingOrder = 245, /*NYI*/
FulfillCraftingOrderType = 246, /*NYI*/ // {CraftingOrderType}
FulfillAnyCraftingOrder = 245,
FulfillCraftingOrderType = 246, // {CraftingOrderType}
PerksProgramMonthComplete = 249, /*NYI*/
CompleteTrackingQuest = 250, /*NYI*/
@@ -246,8 +246,22 @@ void WorldSession::HandleCraftingOrderFulfill(WorldPackets::CraftingOrders::Craf
}
}
CraftingOrders::OrderType const orderType = order->Type;
uint32 const skillLineAbilityId = order->SkillLineAbilityID;
// Transition Claimed -> Fulfilled and release the escrowed tip to the crafter.
ok = sCraftingOrderMgr.FulfillOrder(packet.OrderID, player->GetGUID());
if (ok)
{
// CriteriaType::FulfillAnyCraftingOrder (245) - plain counter ("Crafting Orders fulfilled").
// CriteriaType::FulfillCraftingOrderType (246) - Asset = {CraftingOrderType}; real Criteria rows
// carry 0/1/2/3, which is exactly CraftingOrders::OrderType (Public/Guild/Personal/Npc).
// miscValue2 carries the SkillLineAbility so ModifierTreeType::CraftingOrderSkillLineAbility (347)
// can discriminate the recipe.
player->UpdateCriteria(CriteriaType::FulfillAnyCraftingOrder, 1, skillLineAbilityId);
player->UpdateCriteria(CriteriaType::FulfillCraftingOrderType, uint32(orderType), skillLineAbilityId);
}
}
WorldPackets::CraftingOrders::CraftingOrderFulfillResult result;