diff options
| author | Nay <dnpd.dd@gmail.com> | 2011-09-15 17:51:17 +0100 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2011-09-15 17:52:35 +0100 |
| commit | 791acfebac8c3b794ee9fbfa048acb6e727476ce (patch) | |
| tree | 0e14a751e77a06ee4e6d86cbb5a93067ae706e2f /src/server/game/Entities/GameObject | |
| parent | e70676a8f6abd79dc53979553c36f503c254bd4d (diff) | |
Core/Spells&GOs: Fix Ritual of Doom.
Thanks QAston and Shocker for helping.
Closes #2535
Diffstat (limited to 'src/server/game/Entities/GameObject')
| -rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 6105d6d5d57..f08a7b2bc20 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1393,6 +1393,21 @@ void GameObject::Use(Unit* user) triggered = true; } + // Cast casterTargetSpell at a random GO user + // on the current DB there is only one gameobject that uses this (Ritual of Doom) + // and its required target number is 1 (outter for loop will run once) + if (info->summoningRitual.casterTargetSpell && info->summoningRitual.casterTargetSpell != 1) // No idea why this field is a bool in some cases + { + for (int i = 0; i < info->summoningRitual.casterTargetSpellTargets; i++) + { + std::set<uint32>::const_iterator itr = m_unique_users.begin(); + std::advance(itr, rand() % m_unique_users.size()); + + if (Unit* target = Unit::GetUnit(*this, uint64(*itr))) + spellCaster->CastSpell(target, info->summoningRitual.casterTargetSpell, true); + } + } + // finish owners spell if (owner) owner->FinishSpell(CURRENT_CHANNELED_SPELL); |
