feat(Core/Quest): Quest item reward (#1733)
- Instead of sending two same messages about item receive, send one.
This commit is contained in:
@@ -14804,7 +14804,7 @@ void Player::SendItemDurations()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::SendNewItem(Item* item, uint32 count, bool received, bool created, bool broadcast)
|
void Player::SendNewItem(Item* item, uint32 count, bool received, bool created, bool broadcast, bool sendChatMessage)
|
||||||
{
|
{
|
||||||
if (!item) // prevent crash
|
if (!item) // prevent crash
|
||||||
return;
|
return;
|
||||||
@@ -14814,7 +14814,7 @@ void Player::SendNewItem(Item* item, uint32 count, bool received, bool created,
|
|||||||
data << uint64(GetGUID()); // player GUID
|
data << uint64(GetGUID()); // player GUID
|
||||||
data << uint32(received); // 0=looted, 1=from npc
|
data << uint32(received); // 0=looted, 1=from npc
|
||||||
data << uint32(created); // 0=received, 1=created
|
data << uint32(created); // 0=received, 1=created
|
||||||
data << uint32(1); // bool print error to chat
|
data << uint32(sendChatMessage); // bool print message to chat
|
||||||
data << uint8(item->GetBagSlot()); // bagslot
|
data << uint8(item->GetBagSlot()); // bagslot
|
||||||
// item slot, but when added to stack: 0xFFFFFFFF
|
// item slot, but when added to stack: 0xFFFFFFFF
|
||||||
data << uint32((item->GetCount() == count) ? item->GetSlot() : -1);
|
data << uint32((item->GetCount() == count) ? item->GetSlot() : -1);
|
||||||
@@ -15848,7 +15848,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
|||||||
if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardChoiceItemCount[reward]) == EQUIP_ERR_OK)
|
if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardChoiceItemCount[reward]) == EQUIP_ERR_OK)
|
||||||
{
|
{
|
||||||
Item* item = StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId));
|
Item* item = StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId));
|
||||||
SendNewItem(item, quest->RewardChoiceItemCount[reward], true, false);
|
SendNewItem(item, quest->RewardChoiceItemCount[reward], true, false, false, false);
|
||||||
|
|
||||||
sScriptMgr->OnQuestRewardItem(this, item, quest->RewardChoiceItemCount[reward]);
|
sScriptMgr->OnQuestRewardItem(this, item, quest->RewardChoiceItemCount[reward]);
|
||||||
}
|
}
|
||||||
@@ -15867,7 +15867,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
|||||||
if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardItemIdCount[i]) == EQUIP_ERR_OK)
|
if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardItemIdCount[i]) == EQUIP_ERR_OK)
|
||||||
{
|
{
|
||||||
Item* item = StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId));
|
Item* item = StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId));
|
||||||
SendNewItem(item, quest->RewardItemIdCount[i], true, false);
|
SendNewItem(item, quest->RewardItemIdCount[i], true, false, false, false);
|
||||||
|
|
||||||
sScriptMgr->OnQuestRewardItem(this, item, quest->RewardItemIdCount[i]);
|
sScriptMgr->OnQuestRewardItem(this, item, quest->RewardItemIdCount[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1348,7 +1348,7 @@ class Player : public Unit, public GridObject<Player>
|
|||||||
Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
|
Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
|
||||||
return mainItem && mainItem->GetTemplate()->InventoryType == INVTYPE_2HWEAPON && !CanTitanGrip();
|
return mainItem && mainItem->GetTemplate()->InventoryType == INVTYPE_2HWEAPON && !CanTitanGrip();
|
||||||
}
|
}
|
||||||
void SendNewItem(Item* item, uint32 count, bool received, bool created, bool broadcast = false);
|
void SendNewItem(Item* item, uint32 count, bool received, bool created, bool broadcast = false, bool sendChatMessage = true);
|
||||||
bool BuyItemFromVendorSlot(uint64 vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot);
|
bool BuyItemFromVendorSlot(uint64 vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot);
|
||||||
bool _StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot, int32 price, ItemTemplate const* pProto, Creature* pVendor, VendorItem const* crItem, bool bStore);
|
bool _StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot, int32 price, ItemTemplate const* pProto, Creature* pVendor, VendorItem const* crItem, bool bStore);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user