void Quest::BuildExtraQuestInfo(WorldPacket& data, Player* player) const { data << uint32(GetRewChoiceItemsCount()); for (uint8 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { data << uint32(RewardChoiceItemId[i]); data << uint32(RewardChoiceItemCount[i]); if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(RewardChoiceItemId[i])) data << uint32(itemTemplate->DisplayInfoID); else data << uint32(0); } data << uint32(GetReqItemsCount()); for (uint8 i = 0; i < QUEST_REWARDS_COUNT; ++i) data << uint32(RewardItemId[i]); for (uint8 i = 0; i < QUEST_REWARDS_COUNT; ++i) data << uint32(RewardItemIdCount[i]); for (uint8 i = 0; i < QUEST_REWARDS_COUNT; ++i) { if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(RewardItemId[i])) data << uint32(itemTemplate->DisplayInfoID); else data << uint32(0); } data << uint32(GetRewOrReqMoney()); data << uint32(XPValue(player) * sWorld->getRate(RATE_XP_QUEST)); data << uint32(GetCharTitleId()); data << uint32(GetBonusTalents()); data << uint32(GetRewardReputationMask()); for (uint8 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i) // reward factions ids data << uint32(RewardFactionId[i]); for (uint8 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i) // columnid in QuestFactionReward.dbc (zero based)? data << int32(RewardFactionValueId[i]); for (uint8 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i) // reward reputation override? data << uint32(RewardFactionValueIdOverride[i]); data << uint32(GetRewSpell()); data << uint32(GetRewSpellCast()); for (uint8 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) data << uint32(RewardCurrencyId[i]); for (uint8 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) data << uint32(RewardCurrencyCount[i]); data << uint32(GetRewardSkillId()); data << uint32(GetRewardSkillPoints()); }
void Quest::BuildExtraQuestInfo(WorldPacket& data, Player* player) const { data << uint32(GetRewChoiceItemsCount()); for (uint8 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) data << uint32(RewardChoiceItemId[i]); for (uint8 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) data << uint32(RewardChoiceItemCount[i]); for (uint8 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(RewardChoiceItemId[i])) data << uint32(itemTemplate->DisplayInfoID); else data << uint32(0); } data << uint32(GetReqItemsCount()); for (uint8 i = 0; i < QUEST_REWARDS_COUNT; ++i) data << uint32(RewardItemId[i]); for (uint8 i = 0; i < QUEST_REWARDS_COUNT; ++i) data << uint32(RewardItemIdCount[i]); for (uint8 i = 0; i < QUEST_REWARDS_COUNT; ++i) { if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(RewardItemId[i])) data << uint32(itemTemplate->DisplayInfoID); else data << uint32(0); } data << uint32(GetRewOrReqMoney()); data << uint32(XPValue(player) * sWorld->getRate(RATE_XP_QUEST)); data << uint32(GetCharTitleId()); data << uint32(0); // unk data << float(0.0f); // unk data << uint32(GetBonusTalents()); data << uint32(0); // unk data << uint32(GetRewardReputationMask()); /* Pre cata struct, some of these unks might be the missing values in cata: // rewarded honor points. Multiply with 10 to satisfy client data << 10 * Trinity::Honor::hk_honor_at_level(_session->GetPlayer()->getLevel(), quest->GetRewHonorMultiplier()); data << float(0); // unk, honor multiplier? data << uint32(0x08); // unused by client? data << uint32(quest->GetRewSpell()); // reward spell, this spell will display (icon) (casted if RewSpellCast == 0) data << int32(quest->GetRewSpellCast()); // casted spell data << uint32(0); // unknown data << uint32(quest->GetBonusTalents()); // bonus talents data << uint32(quest->GetRewArenaPoints()); // arena points data << uint32(0); */ for (uint8 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i) // reward factions ids data << uint32(RewardFactionId[i]); for (uint8 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i) // columnid in QuestFactionReward.dbc (zero based)? data << int32(RewardFactionValueId[i]); for (uint8 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i) // reward reputation override? data << uint32(RewardFactionValueIdOverride[i]); data << uint32(GetRewSpell()); data << uint32(GetRewSpellCast()); for (uint8 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) data << uint32(RewardCurrencyId[i]); for (uint8 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) data << uint32(RewardCurrencyCount[i]); data << uint32(GetRewardSkillId()); data << uint32(GetRewardSkillPoints()); }