Fix previous commit. (#124)
* Fix "You are in combat" bug. Ideas taken from TC * Correct previous commit. * Improved previous commits - Creatures in dungeons will not remove distant players from their threat list - Creatures in non dungeon maps will properly remove the distant players from their threat lists and also players auras from them * Fix previous commit. -The creatures will remain tapped by the initial attacker. -Fix the loot bug
This commit is contained in:
parent
6d77f18394
commit
75d65f245a
@ -4219,6 +4219,9 @@ void Unit::RemoveAllAurasOnEvade()
|
|||||||
RemoveSpellAuraHolder(iter->second, AURA_REMOVE_BY_DEFAULT);
|
RemoveSpellAuraHolder(iter->second, AURA_REMOVE_BY_DEFAULT);
|
||||||
iter = m_spellAuraHolders.begin();
|
iter = m_spellAuraHolders.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((GetTypeId() == TYPEID_UNIT) && HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED))
|
||||||
|
{ RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::DelaySpellAuraHolder(uint32 spellId, int32 delaytime, ObjectGuid casterGuid)
|
void Unit::DelaySpellAuraHolder(uint32 spellId, int32 delaytime, ObjectGuid casterGuid)
|
||||||
@ -6619,9 +6622,6 @@ void Unit::ClearInCombat()
|
|||||||
if (cThis->GetCreatureInfo()->UnitFlags & UNIT_FLAG_OOC_NOT_ATTACKABLE && !(cThis->GetTemporaryFactionFlags() & TEMPFACTION_TOGGLE_OOC_NOT_ATTACK))
|
if (cThis->GetCreatureInfo()->UnitFlags & UNIT_FLAG_OOC_NOT_ATTACKABLE && !(cThis->GetTemporaryFactionFlags() & TEMPFACTION_TOGGLE_OOC_NOT_ATTACK))
|
||||||
{ SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); }
|
{ SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); }
|
||||||
|
|
||||||
if (cThis->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED))
|
|
||||||
{ RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED); }
|
|
||||||
|
|
||||||
clearUnitState(UNIT_STAT_ATTACK_PLAYER);
|
clearUnitState(UNIT_STAT_ATTACK_PLAYER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -566,8 +566,6 @@ void Map::Update(const uint32& t_diff)
|
|||||||
|
|
||||||
for (std::vector<Creature*>::iterator it = _removeList.begin(); it != _removeList.end(); ++it)
|
for (std::vector<Creature*>::iterator it = _removeList.begin(); it != _removeList.end(); ++it)
|
||||||
{
|
{
|
||||||
if ((*it)->IsTappedBy(plr))
|
|
||||||
{ (*it)->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED); }
|
|
||||||
(*it)->RemoveAurasByCaster(plr->GetObjectGuid());
|
(*it)->RemoveAurasByCaster(plr->GetObjectGuid());
|
||||||
(*it)->_removeAttacker(plr);
|
(*it)->_removeAttacker(plr);
|
||||||
(*it)->GetHostileRefManager().deleteReference(plr);
|
(*it)->GetHostileRefManager().deleteReference(plr);
|
||||||
@ -577,7 +575,6 @@ void Map::Update(const uint32& t_diff)
|
|||||||
VisitNearbyCellsOf(*it, grid_object_update, world_object_update);
|
VisitNearbyCellsOf(*it, grid_object_update, world_object_update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// non-player active objects
|
// non-player active objects
|
||||||
|
Loading…
x
Reference in New Issue
Block a user