@@ -114,18 +114,22 @@ SpellCastResult Crafting::DoCraft(uint32 craftingDataId)
114114
115115 uint32 qualityTier = sDB2Manager .GetCraftingQualityTierByDifficultyPercent (_craftingData->CraftingDifficultyID , difficultyPercentMatched);
116116
117- uint32 newItemId = GetItemIdForQuality (qualityTier);
117+ uint32 craftedItemId = GetCraftedItemIdForQuality (qualityTier);
118+
119+ // If we didn't found anything, we have a problem. Return and don't take reagent from player.
120+ if (!craftedItemId)
121+ return SpellCastResult::SPELL_FAILED_ERROR;
118122
119123 ItemContext context = _spell->GetSpellInfo ()->HasAttribute (SPELL_ATTR0_IS_TRADESKILL) ? ItemContext::Trade_Skill : ItemContext::NONE;
120124
121125 std::vector<int32> bonusLists;
122126 for (int32 bonusTreeID : bonusTreeIds)
123127 {
124- std::vector<int32> treeBonusList = ItemBonusMgr::GetBonusListsForItem (newItemId , { context, {}, {}, bonusTreeID, qualityTier });
128+ std::vector<int32> treeBonusList = ItemBonusMgr::GetBonusListsForItem (craftedItemId , { context, {}, {}, bonusTreeID, qualityTier });
125129 bonusLists.insert (std::end (bonusLists), std::begin (treeBonusList), std::end (treeBonusList));
126130 }
127131
128- if (Item* createdItem = _spell->DoCreateItem (newItemId , context, &bonusLists, false ))
132+ if (Item* createdItem = _spell->DoCreateItem (craftedItemId , context, &bonusLists, false ))
129133 {
130134 InitCraftingStatModifier (createdItem);
131135
@@ -219,19 +223,17 @@ void Crafting::InitCraftingStatModifier(Item* item)
219223 }
220224}
221225
222- uint32 Crafting::GetItemIdForQuality (uint32 qualityTier)
226+ uint32 Crafting::GetCraftedItemIdForQuality (uint32 qualityTier)
223227{
224228 // If this is a simple item (no quality), we have the id
225229 uint32 newItemId = _craftingData->CraftedItemID ;
226230
227- // If it's a reagent, get id from CraftingDataItem
231+ // If it's a reagent with quality , get id from CraftingDataItem
228232 if (!newItemId)
229233 {
230234 std::vector<uint32> craftedItemList = sDB2Manager .GetCraftingDataItemIDByCraftingData (_craftingData->ID );
231-
232- // If we didn't found anything, we have a problem. Return and don't take reagent from player.
233235 if (craftedItemList.size () < qualityTier)
234- return SpellCastResult::SPELL_FAILED_ERROR ;
236+ return 0 ;
235237
236238 newItemId = craftedItemList[qualityTier - 1 ];
237239 }
0 commit comments