From 7afb179185340e87762166edc91bb253d5c9796a Mon Sep 17 00:00:00 2001 From: Shocker Date: Thu, 15 Sep 2011 21:28:40 +0300 Subject: Misc/Util: Add a template function for returning a random element from any container --- src/server/game/Spells/SpellEffects.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/server/game/Spells/SpellEffects.cpp') 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(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::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); } } } -- cgit v1.2.3