diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-05-14 14:12:40 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-05-14 14:12:40 +0200 |
commit | a816cdd772af472a27ef9caafe4be21cc90a5389 (patch) | |
tree | 46525392db6dcd92b3e01066fe3efb2c6f8bc6f2 /src | |
parent | 77a7d9a4dfd1b9ed7e54ae05249c1cea49b9d1c9 (diff) |
Core/Spells: Fixed TARGET_UNIT_DRIVER selection and possible problems with Righteous Defense target count
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 7 |
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); } |