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::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player* player) const { rewards.ChoiceItemCount = GetRewChoiceItemsCount(); rewards.ItemCount = GetRewItemsCount(); rewards.Money = player->GetQuestMoneyReward(this); rewards.XP = player->GetQuestXPReward(this); rewards.ArtifactCategoryID = GetArtifactCategoryId(); rewards.Title = GetRewTitle(); rewards.FactionFlags = GetRewardReputationMask(); for (uint32 i = 0; i < QUEST_REWARD_DISPLAY_SPELL_COUNT; ++i) rewards.SpellCompletionDisplayID[i] = RewardDisplaySpell[i]; rewards.SpellCompletionID = GetRewSpell(); rewards.SkillLineID = GetRewardSkillId(); rewards.NumSkillUps = GetRewardSkillPoints(); rewards.RewardID = GetRewardId(); for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { rewards.ChoiceItems[i].ItemID = RewardChoiceItemId[i]; rewards.ChoiceItems[i].Quantity = RewardChoiceItemCount[i]; } for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) { rewards.ItemID[i] = RewardItemId[i]; rewards.ItemQty[i] = RewardItemCount[i]; } for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) { rewards.FactionID[i] = RewardFactionId[i]; rewards.FactionValue[i] = RewardFactionValue[i]; rewards.FactionOverride[i] = RewardFactionOverride[i]; rewards.FactionCapIn[i] = RewardFactionCapIn[i]; } for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) { rewards.CurrencyID[i] = RewardCurrencyId[i]; rewards.CurrencyQty[i] = RewardCurrencyCount[i]; } }
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()); }