aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcrom <malcromdev@gmail.com>2013-11-23 00:17:37 -0330
committerMalcrom <malcromdev@gmail.com>2013-11-23 00:17:37 -0330
commit6ba4d70b5c595f5ecc929c3bac26d5b14625619c (patch)
tree7b2b199371b77a2819fd317e463bd7f1f9025ba0
parentd7c0fe9fc39565a4df20de61f6b642884b90d0e6 (diff)
Core/Player: Allow questgiver, if npc, to cast quest RewSpellCast & RewSpell rather than player.
-rw-r--r--src/server/game/Entities/Player/Player.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 445c8946a4b..12d7874aceb 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -15301,9 +15301,25 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
// cast spells after mark quest complete (some spells have quest completed state requirements in spell_area data)
if (quest->GetRewSpellCast() > 0)
- CastSpell(this, quest->GetRewSpellCast(), true);
+ {
+ if (questGiver->isType(TYPEMASK_UNIT))
+ {
+ if (Creature* creature = GetMap()->GetCreature(questGiver->GetGUID()))
+ creature->CastSpell(this, quest->GetRewSpellCast(), true);
+ }
+ else
+ CastSpell(this, quest->GetRewSpellCast(), true);
+ }
else if (quest->GetRewSpell() > 0)
- CastSpell(this, quest->GetRewSpell(), true);
+ {
+ if (questGiver->isType(TYPEMASK_UNIT))
+ {
+ if (Creature* creature = GetMap()->GetCreature(questGiver->GetGUID()))
+ creature->CastSpell(this, quest->GetRewSpell(), true);
+ }
+ else
+ CastSpell(this, quest->GetRewSpell(), true);
+ }
if (quest->GetZoneOrSort() > 0)
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE, quest->GetZoneOrSort());