diff options
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 32 | ||||
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/QuestHandler.cpp | 19 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp | 1 |
3 files changed, 42 insertions, 10 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index eb1f2ac59f1..71672669d61 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6809,21 +6809,27 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger return false; // At melee attack or Hammer of the Righteous spell damage considered as melee attack - if ((procFlag & PROC_FLAG_DONE_MELEE_AUTO_ATTACK) || (procSpell && procSpell->Id == 53595)) - triggered_spell_id = 31803; + bool stacker = !procSpell || procSpell->Id == 53595; + bool damager = procSpell && procSpell->EquippedItemClass == ITEM_CLASS_WEAPON; + + if (!stacker && !damager) + return false; + + triggered_spell_id = 31803; + // On target with 5 stacks of Holy Vengeance direct damage is done if (Aura* aur = pVictim->GetAura(triggered_spell_id, GetGUID())) { if (aur->GetStackAmount() == 5) { - aur->RefreshDuration(); + if (stacker) + aur->RefreshDuration(); CastSpell(pVictim, 42463, true); return true; } } - // Only Autoattack can stack debuff - if (procFlag & PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS) + if (!stacker) return false; break; } @@ -6834,21 +6840,27 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger return false; // At melee attack or Hammer of the Righteous spell damage considered as melee attack - if ((procFlag & PROC_FLAG_DONE_MELEE_AUTO_ATTACK) || (procSpell && procSpell->Id == 53595)) - triggered_spell_id = 53742; + bool stacker = !procSpell || procSpell->Id == 53595; + bool damager = procSpell && procSpell->EquippedItemClass == ITEM_CLASS_WEAPON; + + if (!stacker && !damager) + return false; + + triggered_spell_id = 53742; + // On target with 5 stacks of Blood Corruption direct damage is done if (Aura* aur = pVictim->GetAura(triggered_spell_id, GetGUID())) { if (aur->GetStackAmount() == 5) { - aur->RefreshDuration(); + if (stacker) + aur->RefreshDuration(); CastSpell(pVictim, 53739, true); return true; } } - // Only Autoattack can stack debuff - if (procFlag & PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS) + if (!stacker) return false; break; } diff --git a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp index ae095eb4183..0766f5b5de2 100755 --- a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp @@ -325,7 +325,16 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recv_data) { // Send next quest if (Quest const* nextquest = _player->GetNextQuest(guid , pQuest)) + { + if (nextquest->IsAutoAccept() && _player->CanAddQuest(nextquest, true)) + { + _player->AddQuest(nextquest, pObject); + if (_player->CanCompleteQuest(nextquest->GetQuestId())) + _player->CompleteQuest(nextquest->GetQuestId()); + } + _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextquest, guid, true); + } (pObject->ToCreature())->AI()->sQuestReward(_player, pQuest, reward); } @@ -335,7 +344,17 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recv_data) { // Send next quest if (Quest const* nextquest = _player->GetNextQuest(guid , pQuest)) + { + if (nextquest->IsAutoAccept() && _player->CanAddQuest(nextquest, true)) + { + _player->AddQuest(nextquest, pObject); + if (_player->CanCompleteQuest(nextquest->GetQuestId())) + _player->CompleteQuest(nextquest->GetQuestId()); + } + _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextquest, guid, true); + } + pObject->ToGameObject()->AI()->QuestReward(_player, pQuest, reward); } break; diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp index fa65b21bb98..bc050b120da 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp @@ -17,6 +17,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "ulduar.h" enum AuriayaSpells |