From 75d65f245a6c13aa02442157e9a1b4ecb1c371b0 Mon Sep 17 00:00:00 2001 From: H0zen Date: Sun, 15 May 2016 23:55:24 +0300 Subject: [PATCH] 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 --- src/game/Object/Unit.cpp | 6 +++--- src/game/WorldHandlers/Map.cpp | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/game/Object/Unit.cpp b/src/game/Object/Unit.cpp index fd911ecb..1ad68abf 100644 --- a/src/game/Object/Unit.cpp +++ b/src/game/Object/Unit.cpp @@ -4219,6 +4219,9 @@ void Unit::RemoveAllAurasOnEvade() RemoveSpellAuraHolder(iter->second, AURA_REMOVE_BY_DEFAULT); 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) @@ -6619,9 +6622,6 @@ void Unit::ClearInCombat() 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); } - if (cThis->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED)) - { RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED); } - clearUnitState(UNIT_STAT_ATTACK_PLAYER); } } diff --git a/src/game/WorldHandlers/Map.cpp b/src/game/WorldHandlers/Map.cpp index db624ddf..d2a7ef2a 100644 --- a/src/game/WorldHandlers/Map.cpp +++ b/src/game/WorldHandlers/Map.cpp @@ -566,8 +566,6 @@ void Map::Update(const uint32& t_diff) for (std::vector::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)->_removeAttacker(plr); (*it)->GetHostileRefManager().deleteReference(plr); @@ -577,7 +575,6 @@ void Map::Update(const uint32& t_diff) VisitNearbyCellsOf(*it, grid_object_update, world_object_update); } } - } // non-player active objects