aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-04-21 16:48:05 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2014-04-21 16:48:05 +0200
commit6b52cef5bc2d5cb34f354030052c1776f0ebdcbb (patch)
tree4bcbdb0f1d48c1fa0f420727c3bfa18293f52844 /src
parente3e342b0f79cfb9e88fbb9aba124c6f8c611eb1b (diff)
Core/Spells: corrected implementation of SPELL_EFFECT_QUEST_START
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp18
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)