crafting-orders: fulfil achievement criteria
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user