Core/Combat: Fixed combat after remove charm
Port From (https://github.com/TrinityCore/TrinityCore/commit/4ed918fcb38d7fd3752899a0eafd7ad62b7217af)
This commit is contained in:
@@ -235,6 +235,27 @@ namespace Game.Combat
|
||||
_pveRefs.First().Value.EndCombat();
|
||||
}
|
||||
|
||||
public void RevalidateCombat()
|
||||
{
|
||||
foreach(var (guid, refe) in _pveRefs.ToList())
|
||||
{
|
||||
if (!CanBeginCombat(_owner, refe.GetOther(_owner)))
|
||||
{
|
||||
_pveRefs.Remove(guid); // erase manually here to avoid iterator invalidation
|
||||
refe.EndCombat();
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var (guid, refe) in _pvpRefs.ToList())
|
||||
{
|
||||
if (!CanBeginCombat(_owner, refe.GetOther(_owner)))
|
||||
{
|
||||
_pvpRefs.Remove(guid); // erase manually here to avoid iterator invalidation
|
||||
refe.EndCombat();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EndAllPvPCombat()
|
||||
{
|
||||
while (!_pvpRefs.Empty())
|
||||
|
||||
@@ -481,6 +481,7 @@ namespace Game.Entities
|
||||
Cypher.Assert(type != CharmType.Vehicle || (IsTypeId(TypeId.Unit) && IsVehicle()));
|
||||
|
||||
charmer.SetCharm(this, false);
|
||||
m_combatManager.RevalidateCombat();
|
||||
|
||||
Player playerCharmer = charmer.ToPlayer();
|
||||
if (playerCharmer)
|
||||
|
||||
Reference in New Issue
Block a user