diff options
author | joschiwald <joschiwald.trinity@gmail.com> | 2014-04-21 16:48:05 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2014-04-21 16:48:05 +0200 |
commit | 6b52cef5bc2d5cb34f354030052c1776f0ebdcbb (patch) | |
tree | 4bcbdb0f1d48c1fa0f420727c3bfa18293f52844 /src | |
parent | e3e342b0f79cfb9e88fbb9aba124c6f8c611eb1b (diff) |
Core/Spells: corrected implementation of SPELL_EFFECT_QUEST_START
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 28bc659050a..35930906307 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5468,13 +5468,23 @@ void Spell::EffectQuestStart(SpellEffIndex effIndex) if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; - if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + if (!unitTarget) return; Player* player = unitTarget->ToPlayer(); - if (Quest const* qInfo = sObjectMgr->GetQuestTemplate(m_spellInfo->Effects[effIndex].MiscValue)) - if (player->CanTakeQuest(qInfo, false) && player->CanAddQuest(qInfo, false)) - player->AddQuestAndCheckCompletion(qInfo, NULL); + if (!player) + return; + + if (Quest const* quest = sObjectMgr->GetQuestTemplate(m_spellInfo->Effects[effIndex].MiscValue)) + { + if (!player->CanTakeQuest(quest, false)) + return; + + if (quest->IsAutoAccept() && player->CanAddQuest(quest, false)) + player->AddQuestAndCheckCompletion(quest, player); + + player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, player->GetGUID(), true); + } } void Spell::EffectActivateRune(SpellEffIndex effIndex) |