aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp2
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp7
2 files changed, 5 insertions, 4 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index a79d09a13f0..28a8fd03611 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -2370,7 +2370,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
break;
case TARGET_UNIT_DRIVER:
if (Unit * driver = m_targets.getUnitTarget())
- if (driver->IsOnVehicle(driver))
+ if (driver->IsOnVehicle(m_caster))
AddUnitTarget(driver, i);
break;
default:
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index b42c0afbf76..aba6fa10744 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1390,11 +1390,12 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
Unit::AttackerSet attackers = unitTarget->getAttackers();
// selected from list 3
- for (uint32 i = 0; i < std::min(size_t(3), attackers.size()); ++i)
+ uint32 maxTargets = std::min<uint32>(3, attackers.size());
+ for (uint32 i = 0; i < maxTargets; ++i)
{
Unit::AttackerSet::iterator aItr = attackers.begin();
- std::advance(aItr, rand() % attackers.size());
- AddUnitTarget((*aItr), 1);
+ std::advance(aItr, urand(0, attackers.size() - 1));
+ AddUnitTarget(*aItr, 1);
attackers.erase(aItr);
}