aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/GameObject
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2011-09-15 17:51:17 +0100
committerNay <dnpd.dd@gmail.com>2011-09-15 17:52:35 +0100
commit791acfebac8c3b794ee9fbfa048acb6e727476ce (patch)
tree0e14a751e77a06ee4e6d86cbb5a93067ae706e2f /src/server/game/Entities/GameObject
parente70676a8f6abd79dc53979553c36f503c254bd4d (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-xsrc/server/game/Entities/GameObject/GameObject.cpp15
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);