Core/Quests: Fixed structures of QuestGiverOfferRewardMessage and QuestGiverQuestDetails

This commit is contained in:
Shauren
2017-06-11 19:53:22 +02:00
parent 636c9c420a
commit 677b2fba42
6 changed files with 23 additions and 24 deletions

View File

@@ -421,7 +421,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
packet.QuestID = quest->GetQuestId();
packet.PortraitGiver = quest->GetQuestGiverPortrait();
packet.PortraitTurnIn = quest->GetQuestTurnInPortrait();
packet.DisplayPopup = activateAccept;
packet.AutoLaunched = activateAccept;
packet.QuestFlags[0] = quest->GetFlags();
packet.QuestFlags[1] = quest->GetFlagsEx();
packet.SuggestedPartyMembers = quest->GetSuggestedPlayers();

View File

@@ -15310,8 +15310,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
SQLTransaction trans = SQLTransaction(nullptr);
_SaveQuestStatus(trans);
if (announce)
SendQuestReward(quest, XP);
SendQuestReward(quest, questGiver->ToCreature(), XP, !announce);
// cast spells after mark quest complete (some spells have quest completed state requirements in spell_area data)
if (quest->GetRewSpell() > 0)
@@ -16973,17 +16972,15 @@ void Player::SendQuestComplete(Quest const* quest) const
}
}
void Player::SendQuestReward(Quest const* quest, uint32 XP) const
void Player::SendQuestReward(Quest const* quest, Creature const* questGiver, uint32 xp, bool hideChatMessage) const
{
uint32 questId = quest->GetQuestId();
sGameEventMgr->HandleQuestComplete(questId);
uint32 xp;
uint32 moneyReward;
if (getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
{
xp = XP;
moneyReward = GetQuestMoneyReward(quest);
}
else // At max level, increase gold reward
@@ -17000,10 +16997,17 @@ void Player::SendQuestReward(Quest const* quest, uint32 XP) const
packet.SkillLineIDReward = quest->GetRewardSkillId();
packet.NumSkillUpsReward = quest->GetRewardSkillPoints();
// @todo fix these 3
packet.UseQuestReward = true;
packet.LaunchGossip = true;
//packet.ItemReward
if (questGiver)
{
if (questGiver->IsGossip())
packet.LaunchGossip = true;
else if (questGiver->IsQuestGiver())
packet.LaunchQuest = true;
else if (quest->GetNextQuestInChain() && !quest->HasFlag(QUEST_FLAGS_AUTOCOMPLETE))
packet.UseQuestReward = true;
}
packet.HideChatMessage = hideChatMessage;
GetSession()->SendPacket(packet.Write());
}

View File

@@ -1434,7 +1434,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void SetQuestObjectiveData(QuestObjective const& objective, int32 data);
bool IsQuestObjectiveProgressComplete(Quest const* quest) const;
void SendQuestComplete(Quest const* quest) const;
void SendQuestReward(Quest const* quest, uint32 XP) const;
void SendQuestReward(Quest const* quest, Creature const* questGiver, uint32 xp, bool hideChatMessage) const;
void SendQuestFailed(uint32 questID, InventoryResult reason = EQUIP_ERR_OK) const;
void SendQuestTimerFailed(uint32 questID) const;
void SendCanTakeQuestResponse(QuestFailedReason reason, bool sendErrorMessage = true, std::string reasonText = "") const;

View File

@@ -536,7 +536,7 @@ void WorldSession::HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiver
if (!object)
return;
if (autoCompleteMode == 0)
if (!autoCompleteMode)
{
if (!object->hasInvolvedQuest(packet.QuestID))
return;
@@ -578,10 +578,6 @@ void WorldSession::HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiver
}
}
void WorldSession::HandleQuestgiverQuestAutoLaunch(WorldPacket& /*recvPacket*/)
{
}
void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& packet)
{
if (!_player->CanShareQuest(packet.QuestID))

View File

@@ -300,8 +300,8 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write()
{
_worldPacket << QuestData; // WorldPackets::Quest::QuestGiverOfferReward
_worldPacket << int32(QuestPackageID);
_worldPacket << int32(PortraitTurnIn);
_worldPacket << int32(PortraitGiver);
_worldPacket << int32(PortraitTurnIn);
_worldPacket.WriteBits(QuestTitle.size(), 9);
_worldPacket.WriteBits(RewardText.size(), 12);
@@ -359,13 +359,13 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
_worldPacket << int32(QuestID);
_worldPacket << int32(QuestPackageID);
_worldPacket << int32(PortraitGiver);
_worldPacket << int32(SuggestedPartyMembers);
_worldPacket << int32(PortraitTurnIn);
_worldPacket << uint32(QuestFlags[0]); // Flags
_worldPacket << uint32(QuestFlags[1]); // FlagsEx
_worldPacket << int32(PortraitTurnIn);
_worldPacket << int32(SuggestedPartyMembers);
_worldPacket << uint32(LearnSpells.size());
_worldPacket << int32(DescEmotes.size());
_worldPacket << int32(Objectives.size());
_worldPacket << uint32(DescEmotes.size());
_worldPacket << uint32(Objectives.size());
_worldPacket << int32(QuestStartItemID);
for (int32 spell : LearnSpells)
@@ -392,9 +392,9 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
_worldPacket.WriteBits(PortraitGiverName.size(), 8);
_worldPacket.WriteBits(PortraitTurnInText.size(), 10);
_worldPacket.WriteBits(PortraitTurnInName.size(), 8);
_worldPacket.WriteBit(DisplayPopup);
_worldPacket.WriteBit(StartCheat);
_worldPacket.WriteBit(AutoLaunched);
_worldPacket.WriteBit(StartCheat);
_worldPacket.WriteBit(DisplayPopup);
_worldPacket.FlushBits();
_worldPacket << Rewards; // WorldPackets::Quest::QuestRewards

View File

@@ -1433,7 +1433,6 @@ class TC_GAME_API WorldSession
void HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemoveQuest& packet);
void HandleQuestConfirmAccept(WorldPackets::Quest::QuestConfirmAccept& packet);
void HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiverCompleteQuest& packet);
void HandleQuestgiverQuestAutoLaunch(WorldPacket& recvPacket);
void HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& packet);
void HandleQuestPushResult(WorldPackets::Quest::QuestPushResult& packet);
void HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& packet);