diff options
| author | Shocker <shocker@freakz.ro> | 2011-09-15 21:28:40 +0300 |
|---|---|---|
| committer | Shocker <shocker@freakz.ro> | 2011-09-15 21:28:40 +0300 |
| commit | 7afb179185340e87762166edc91bb253d5c9796a (patch) | |
| tree | 47bcadb956285c41626a17dbe48d80cb431c2917 /src/server/game/Spells/SpellEffects.cpp | |
| parent | 8504a0107ea679e8cac7f87cccb05b1d2bedd8b4 (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-x | src/server/game/Spells/SpellEffects.cpp | 12 |
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); } } } |
