diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6ba48a7d80f..cc9b72a075d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -15288,7 +15288,10 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, if (quest->GetRewSpell() > 0) { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(quest->GetRewSpell()); - if (questGiver->isType(TYPEMASK_UNIT) && !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_LEARN_SPELL) && !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_CREATE_ITEM) && !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_APPLY_AURA)) + if (questGiver && questGiver->isType(TYPEMASK_UNIT) && + !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_LEARN_SPELL) && + !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_CREATE_ITEM) && + !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_APPLY_AURA)) { if (Unit* unit = questGiver->ToUnit()) unit->CastSpell(this, quest->GetRewSpell(), true); @@ -15303,7 +15306,9 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, if (quest->RewardDisplaySpell[i] > 0) { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(quest->RewardDisplaySpell[i]); - if (questGiver->isType(TYPEMASK_UNIT) && !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_LEARN_SPELL) && !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_CREATE_ITEM)) + if (questGiver && questGiver->isType(TYPEMASK_UNIT) && + !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_LEARN_SPELL) && + !spellInfo->HasEffect(DIFFICULTY_NONE, SPELL_EFFECT_CREATE_ITEM)) { if (Unit* unit = questGiver->ToUnit()) unit->CastSpell(this, quest->RewardDisplaySpell[i], true); @@ -16904,8 +16909,11 @@ bool Player::IsQuestObjectiveComplete(QuestObjective const& objective) const void Player::SetQuestObjectiveData(QuestObjective const& objective, int32 data) { if (objective.StorageIndex < 0) + { TC_LOG_ERROR("entities.player.quest", "Player::SetQuestObjectiveData: called for quest %u with invalid StorageIndex %d (objective data is not tracked)", objective.QuestID, objective.StorageIndex); + return; + } auto itr = m_QuestStatus.find(objective.QuestID); |