From 8d59953f9372c6876e0cd8078b44de6893082cbe Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 12 Jan 2011 22:50:51 +0100 Subject: Scripts/Icecrown Citadel * Call EnterEvadeMode before teleporting players to entrance - prevents players being stuck in combat * Fixed Gaseous Blight stacking damage * Properly initialize phase for Professor Putricide when entering combat * Fixed Blood Nova and Boiling Blood abilities of Deathbringer Saurfang --- src/server/game/Spells/Spell.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 9a29cd99b23..4ca89707a72 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2794,6 +2794,30 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) case 59725: // Improved Spell Reflection - aoe aura unitList.remove(m_caster); break; + case 72378: // Blood Nova (Deathbringer Saurfang) + case 73058: + { + // select one random target, with preference of ranged targets + uint32 targetsAtRange = 0; + uint32 const minTargets = m_caster->GetMap()->GetSpawnMode() & 1 ? 10 : 4; + unitList.sort(Trinity::ObjectDistanceOrderPred(m_caster, false)); + + // get target count at range + for (std::list::iterator itr = unitList.begin(); itr != unitList.end(); ++itr, ++targetsAtRange) + if ((*itr)->GetDistance(m_caster) < 12.0f) + break; + + // set the upper cap + if (targetsAtRange < minTargets) + targetsAtRange = std::min(unitList.size()-1, minTargets); + + std::list::iterator itr = unitList.begin(); + std::advance(itr, urand(0, targetsAtRange)); + Unit* target = *itr; + unitList.clear(); + unitList.push_back(target); + break; + } case 72255: // Mark of the Fallen Champion (Deathbringer Saurfang) case 72444: case 72445: -- cgit v1.2.3