Combat/Threat rewrite - prep & refactor
Port From (https://github.com/TrinityCore/TrinityCore/commit/8be23fcbbdf26e8169defd761e61765f301bebe0)
This commit is contained in:
@@ -475,7 +475,7 @@ namespace Game.Entities
|
||||
}
|
||||
|
||||
// periodic check to see if the creature has passed an evade boundary
|
||||
if (IsAIEnabled && !IsInEvadeMode() && IsInCombat())
|
||||
if (IsAIEnabled && !IsInEvadeMode() && IsEngaged())
|
||||
{
|
||||
if (diff >= m_boundaryCheckTime)
|
||||
{
|
||||
@@ -487,7 +487,7 @@ namespace Game.Entities
|
||||
}
|
||||
|
||||
// if periodic combat pulse is enabled and we are both in combat and in a dungeon, do this now
|
||||
if (m_combatPulseDelay > 0 && IsInCombat() && GetMap().IsDungeon())
|
||||
if (m_combatPulseDelay > 0 && IsEngaged() && GetMap().IsDungeon())
|
||||
{
|
||||
if (diff > m_combatPulseTime)
|
||||
m_combatPulseTime = 0;
|
||||
@@ -503,12 +503,7 @@ namespace Game.Entities
|
||||
continue;
|
||||
|
||||
if (player.IsAlive() && IsHostileTo(player))
|
||||
{
|
||||
if (CanHaveThreatList())
|
||||
AddThreat(player, 0.0f);
|
||||
SetInCombatWith(player);
|
||||
player.SetInCombatWith(this);
|
||||
}
|
||||
EngageWithTarget(player);
|
||||
}
|
||||
m_combatPulseTime = m_combatPulseDelay * Time.InMilliseconds;
|
||||
}
|
||||
@@ -1484,7 +1479,7 @@ namespace Game.Entities
|
||||
if (!_IsTargetAcceptable(who))
|
||||
return false;
|
||||
|
||||
if (who.IsInCombat() && IsWithinDist(who, SharedConst.AttackDistance))
|
||||
if (who.IsEngaged() && IsWithinDist(who, SharedConst.AttackDistance))
|
||||
{
|
||||
Unit victim = who.GetAttackerForHelper();
|
||||
if (victim != null)
|
||||
@@ -2022,7 +2017,7 @@ namespace Game.Entities
|
||||
return false;
|
||||
|
||||
// skip fighting creature
|
||||
if (IsInCombat())
|
||||
if (IsEngaged())
|
||||
return false;
|
||||
|
||||
// only free creature
|
||||
@@ -2067,7 +2062,7 @@ namespace Game.Entities
|
||||
Unit targetVictim = target.GetAttackerForHelper();
|
||||
|
||||
// if I'm already fighting target, or I'm hostile towards the target, the target is acceptable
|
||||
if (IsInCombatWith(target) || IsHostileTo(target))
|
||||
if (IsEngagedBy(target) || IsHostileTo(target))
|
||||
return true;
|
||||
|
||||
// if the target's victim is friendly, and the target is neutral, the target is acceptable
|
||||
@@ -2256,7 +2251,6 @@ namespace Game.Entities
|
||||
}
|
||||
|
||||
var PlList = map.GetPlayers();
|
||||
|
||||
if (PlList.Empty())
|
||||
return;
|
||||
|
||||
@@ -2266,12 +2260,7 @@ namespace Game.Entities
|
||||
continue;
|
||||
|
||||
if (player.IsAlive())
|
||||
{
|
||||
SetInCombatWith(player);
|
||||
player.SetInCombatWith(this);
|
||||
AddThreat(player, 0.0f);
|
||||
}
|
||||
|
||||
EngageWithTarget(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3270,9 +3259,7 @@ namespace Game.Entities
|
||||
if (assistant != null && assistant.CanAssistTo(m_owner, victim))
|
||||
{
|
||||
assistant.SetNoCallAssistance(true);
|
||||
assistant.CombatStart(victim);
|
||||
if (assistant.IsAIEnabled)
|
||||
assistant.GetAI().AttackStart(victim);
|
||||
assistant.EngageWithTarget(victim);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ namespace Game.Entities
|
||||
member.SetFormation(null);
|
||||
}
|
||||
|
||||
public void MemberAttackStart(Creature member, Unit target)
|
||||
public void MemberEngagingTarget(Creature member, Unit target)
|
||||
{
|
||||
GroupAIFlags groupAI = (GroupAIFlags)FormationMgr.CreatureGroupMap[member.GetSpawnId()].groupAI;
|
||||
if (groupAI == 0)
|
||||
@@ -186,9 +186,6 @@ namespace Game.Entities
|
||||
|
||||
foreach (var pair in m_members)
|
||||
{
|
||||
if (m_leader) // avoid crash if leader was killed and reset.
|
||||
Log.outDebug(LogFilter.Unit, "GROUP ATTACK: group instance id {0} calls member instid {1}", m_leader.GetInstanceId(), member.GetInstanceId());
|
||||
|
||||
Creature other = pair.Key;
|
||||
|
||||
// Skip self
|
||||
@@ -198,11 +195,8 @@ namespace Game.Entities
|
||||
if (!other.IsAlive())
|
||||
continue;
|
||||
|
||||
if (other.GetVictim())
|
||||
continue;
|
||||
|
||||
if (((other != m_leader && groupAI.HasAnyFlag(GroupAIFlags.MembersAssistLeader)) || (other == m_leader && groupAI.HasAnyFlag(GroupAIFlags.LeaderAssistsMember))) && other.IsValidAttackTarget(target))
|
||||
other.GetAI().AttackStart(target);
|
||||
other.EngageWithTarget(target);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user