aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShocker <shocker@freakz.ro>2011-09-15 21:28:40 +0300
committerShocker <shocker@freakz.ro>2011-09-15 21:28:40 +0300
commit7afb179185340e87762166edc91bb253d5c9796a (patch)
tree47bcadb956285c41626a17dbe48d80cb431c2917 /src/server/game/Spells/SpellEffects.cpp
parent8504a0107ea679e8cac7f87cccb05b1d2bedd8b4 (diff)
Misc/Util: Add a template function for returning a random element from any container
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 39c0f33a436..a42b32a4c44 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1373,10 +1373,9 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
uint32 maxTargets = std::min<uint32>(3, attackers.size());
for (uint32 i = 0; i < maxTargets; ++i)
{
- Unit::AttackerSet::iterator aItr = attackers.begin();
- std::advance(aItr, urand(0, attackers.size() - 1));
- AddUnitTarget(*aItr, 1);
- attackers.erase(aItr);
+ Unit* attacker = SelectRandomContainerElement(attackers);
+ AddUnitTarget(attacker, 1);
+ attackers.erase(attacker);
}
// now let next effect cast spell at each target.
@@ -2621,10 +2620,7 @@ void Spell::EffectEnergize(SpellEffIndex effIndex)
if (!avalibleElixirs.empty())
{
// cast random elixir on target
- uint32 rand_spell = urand(0, avalibleElixirs.size()-1);
- std::set<uint32>::iterator itr = avalibleElixirs.begin();
- std::advance(itr, rand_spell);
- m_caster->CastSpell(unitTarget, *itr, true, m_CastItem);
+ m_caster->CastSpell(unitTarget, SelectRandomContainerElement(avalibleElixirs), true, m_CastItem);
}
}
}