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::SellItemsToVendors:
|
||||||
case CriteriaType::ReachMaxLevel:
|
case CriteriaType::ReachMaxLevel:
|
||||||
case CriteriaType::LearnTaxiNode:
|
case CriteriaType::LearnTaxiNode:
|
||||||
|
// --- crafting orders
|
||||||
|
case CriteriaType::FulfillAnyCraftingOrder:
|
||||||
|
case CriteriaType::FulfillCraftingOrderType:
|
||||||
// --- mythic keystone: one tick per completed run
|
// --- mythic keystone: one tick per completed run
|
||||||
case CriteriaType::MythicPlusCompleted:
|
case CriteriaType::MythicPlusCompleted:
|
||||||
case CriteriaType::CompleteAnyChallengeMode:
|
case CriteriaType::CompleteAnyChallengeMode:
|
||||||
@@ -1762,6 +1765,15 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
|||||||
if (!miscValue1)
|
if (!miscValue1)
|
||||||
return false;
|
return false;
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -784,8 +784,8 @@ enum class CriteriaType : int16
|
|||||||
|
|
||||||
ReputationAmountGained = 243, /*NYI*/ // Gain reputation amount with {FactionID}; accumulate, not highest
|
ReputationAmountGained = 243, /*NYI*/ // Gain reputation amount with {FactionID}; accumulate, not highest
|
||||||
|
|
||||||
FulfillAnyCraftingOrder = 245, /*NYI*/
|
FulfillAnyCraftingOrder = 245,
|
||||||
FulfillCraftingOrderType = 246, /*NYI*/ // {CraftingOrderType}
|
FulfillCraftingOrderType = 246, // {CraftingOrderType}
|
||||||
|
|
||||||
PerksProgramMonthComplete = 249, /*NYI*/
|
PerksProgramMonthComplete = 249, /*NYI*/
|
||||||
CompleteTrackingQuest = 250, /*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.
|
// Transition Claimed -> Fulfilled and release the escrowed tip to the crafter.
|
||||||
ok = sCraftingOrderMgr.FulfillOrder(packet.OrderID, player->GetGUID());
|
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;
|
WorldPackets::CraftingOrders::CraftingOrderFulfillResult result;
|
||||||
|
|||||||
Reference in New Issue
Block a user