diff options
Diffstat (limited to 'src/server')
| -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 | 
