diff options
| author | Subv2112 <s.v.h21@hotmail.com> | 2012-02-04 21:18:30 -0500 | 
|---|---|---|
| committer | Subv2112 <s.v.h21@hotmail.com> | 2012-02-04 21:21:51 -0500 | 
| commit | 31615bdc8674b0ec58e8bed44d4d65520a157d17 (patch) | |
| tree | b576336c7f4e2a5b91b2227ba679b7b16db4cda7 /src | |
| parent | 83c0b73efd96d6d006f342f59cd8ecb7b6af580a (diff) | |
Core/Spells: Add a new parameter to Unit::SelectNearbyTarget to allow excluding a certain unit.
closes #4989
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 21 | ||||
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 2 | 
2 files changed, 13 insertions, 10 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index bf033627354..59c091f353d 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4870,8 +4870,8 @@ bool Unit::HandleHasteAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere                  case 13877:                  case 33735:                  { -                    target = SelectNearbyTarget(); -                    if (!target || target == victim) +                    target = SelectNearbyTarget(victim); +                    if (!target)                          return false;                      basepoints0 = damage;                      triggered_spell_id = 22482; @@ -5018,7 +5018,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere                  case 18765:                  case 35429:                  { -                    target = SelectNearbyTarget(); +                    target = SelectNearbyTarget(victim);                      if (!target)                          return false; @@ -5738,7 +5738,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere                  // Sweeping Strikes                  case 12328:                  { -                    target = SelectNearbyTarget(); +                    target = SelectNearbyTarget(victim);                      if (!target)                          return false; @@ -5814,12 +5814,12 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere                  if (!victim || !victim->isAlive() || !procSpell)                      return false; -                target = SelectNearbyTarget(); -                if (!target || target == victim) +                target = SelectNearbyTarget(victim); +                if (!target)                      return false; -                CastSpell(target, 58567, true); -                return true; +                triggered_spell_id = 58567; +                break;              }              break;          } @@ -14780,7 +14780,7 @@ void Unit::UpdateReactives(uint32 p_time)      }  } -Unit* Unit::SelectNearbyTarget(float dist) const +Unit* Unit::SelectNearbyTarget(Unit* exclude, float dist) const  {      std::list<Unit*> targets;      Trinity::AnyUnfriendlyUnitInObjectRangeCheck u_check(this, this, dist); @@ -14790,6 +14790,9 @@ Unit* Unit::SelectNearbyTarget(float dist) const      // remove current target      if (getVictim())          targets.remove(getVictim()); +         +    if (exclude) +        targets.remove(exclude);      // remove not LoS targets      for (std::list<Unit*>::iterator tIter = targets.begin(); tIter != targets.end();) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 5b890ff43c0..ea5e2d5052b 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1299,7 +1299,7 @@ class Unit : public WorldObject          void CombatStop(bool includingCast = false);          void CombatStopWithPets(bool includingCast = false);          void StopAttackFaction(uint32 faction_id); -        Unit* SelectNearbyTarget(float dist = NOMINAL_MELEE_RANGE) const; +        Unit* SelectNearbyTarget(Unit* exclude = NULL, float dist = NOMINAL_MELEE_RANGE) const;          void SendMeleeAttackStop(Unit* victim = NULL);          void SendMeleeAttackStart(Unit* pVictim);  | 
