[10696] Avoid selection despawned creatures as spell autoselected targets.

Original patch provided by virusav.
This commit is contained in:
VladimirMangos 2010-11-08 02:40:03 +03:00
parent d2b3981631
commit 9508001213
4 changed files with 4 additions and 4 deletions

View file

@ -1091,7 +1091,7 @@ namespace MaNGOS
WorldObject const& GetFocusObject() const { return i_obj; } WorldObject const& GetFocusObject() const { return i_obj; }
bool operator()(Creature* u) bool operator()(Creature* u)
{ {
if(u->GetEntry() == i_entry && u->isAlive()==i_alive && i_obj.IsWithinDistInMap(u, i_range)) if (u->GetEntry() == i_entry && (i_alive && u->isAlive() || !i_alive && u->IsCorpse()) && i_obj.IsWithinDistInMap(u, i_range))
{ {
i_range = i_obj.GetDistance(u); // use found unit range as new range limit for next check i_range = i_obj.GetDistance(u); // use found unit range as new range limit for next check
return true; return true;

View file

@ -4628,7 +4628,7 @@ SpellCastResult Spell::CheckCast(bool strict)
{ {
if (pTarget->GetTypeId() == TYPEID_UNIT && pTarget->GetEntry() == i_spellST->second.targetEntry) if (pTarget->GetTypeId() == TYPEID_UNIT && pTarget->GetEntry() == i_spellST->second.targetEntry)
{ {
if (i_spellST->second.type == SPELL_TARGET_TYPE_DEAD && pTarget->isDead()) if (i_spellST->second.type == SPELL_TARGET_TYPE_DEAD && ((Creature*)pTarget)->IsCorpse())
{ {
// always use spellMaxRange, in case GetLastRange returned different in a previous pass // always use spellMaxRange, in case GetLastRange returned different in a previous pass
if (pTarget->IsWithinDistInMap(m_caster, GetSpellMaxRange(srange))) if (pTarget->IsWithinDistInMap(m_caster, GetSpellMaxRange(srange)))

View file

@ -403,7 +403,7 @@ enum BaseModType
enum DeathState enum DeathState
{ {
ALIVE = 0, // show as alive ALIVE = 0, // show as alive
JUST_DIED = 1, // temporary state at die, for creature auto converted to CORPSE, for player at next update call JUST_DIED = 1, // temporary state at die, for creature auto converted to CORPSE, for player at next update call
CORPSE = 2, // corpse state, for player this also meaning that player not leave corpse CORPSE = 2, // corpse state, for player this also meaning that player not leave corpse
DEAD = 3, // for creature despawned state (corpse despawned), for player CORPSE/DEAD not clear way switches (FIXME), and use m_deathtimer > 0 check for real corpse state DEAD = 3, // for creature despawned state (corpse despawned), for player CORPSE/DEAD not clear way switches (FIXME), and use m_deathtimer > 0 check for real corpse state

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "10695" #define REVISION_NR "10696"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__