aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-06-14 11:48:07 +0200
committerShauren <shauren.trinity@gmail.com>2014-06-14 11:48:07 +0200
commite9c9e362657f77dd6cc1d51543de68f9de7f8689 (patch)
tree963883bed1cf1c49a440af63a07a34d0519a40d0 /src
parent58043720420a0f59e95a5e7d226fec3ee98ebfa4 (diff)
Scripts/Icecrown Citadel: Fixed possible crash in blood nova target selection
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 16d1531e890..e1658e564ec 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -1227,9 +1227,9 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
if (targets.empty())
return;
- // select one random target, with preference of ranged targets
+ // select one random target, preferring ranged targets
uint32 targetsAtRange = 0;
- uint32 const minTargets = uint32(GetCaster()->GetMap()->GetSpawnMode() & 1 ? 10 : 4);
+ uint32 const minTargets = uint32(GetCaster()->GetMap()->Is25ManRaid() ? 10 : 4);
targets.sort(Trinity::ObjectDistanceOrderPred(GetCaster(), false));
// get target count at range
@@ -1237,18 +1237,12 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
if ((*itr)->GetDistance(GetCaster()) < 12.0f)
break;
- // set the upper cap
+ // If not enough ranged targets are present just select anyone
if (targetsAtRange < minTargets)
- targetsAtRange = std::min<uint32>(targets.size() - 1, minTargets);
-
- if (!targetsAtRange)
- {
- targets.clear();
- return;
- }
+ targetsAtRange = uint32(targets.size());
std::list<WorldObject*>::const_iterator itr = targets.begin();
- std::advance(itr, urand(0, targetsAtRange));
+ std::advance(itr, urand(0, targetsAtRange - 1));
target = *itr;
targets.clear();
targets.push_back(target);