Core/Creatures: Implemented serverside checks for UNIT_FLAG2_INTERACT_WHILE_HOSTILE and UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT
* Also stop sending npc flags for hostile creatures Port From (https://github.com/TrinityCore/TrinityCore/commit/c2e36dea6c6af6139bf60454e9299447ec7d9897)
This commit is contained in:
@@ -35,6 +35,9 @@ namespace Game.Entities
|
||||
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.EnteringCombat);
|
||||
ProcSkillsAndAuras(this, null, new ProcFlagsInit(ProcFlags.EnterCombat), new ProcFlagsInit(ProcFlags.None), ProcFlagsSpellType.MaskAll, ProcFlagsSpellPhase.None, ProcFlagsHit.None, null, null, null);
|
||||
|
||||
if (!IsInteractionAllowedInCombat())
|
||||
UpdateNearbyPlayersInteractions();
|
||||
}
|
||||
|
||||
public virtual void AtExitCombat()
|
||||
@@ -43,6 +46,9 @@ namespace Game.Entities
|
||||
pair.Value.GetBase().CallScriptEnterLeaveCombatHandlers(pair.Value, false);
|
||||
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.LeavingCombat);
|
||||
|
||||
if (!IsInteractionAllowedInCombat())
|
||||
UpdateNearbyPlayersInteractions();
|
||||
}
|
||||
|
||||
public virtual void AtEngage(Unit target) { }
|
||||
@@ -1654,5 +1660,46 @@ namespace Game.Entities
|
||||
/// enables / disables combat interaction of this unit
|
||||
/// </summary>
|
||||
public void SetIsCombatDisallowed(bool apply) { _isCombatDisallowed = apply; }
|
||||
|
||||
public bool IsInteractionAllowedWhileHostile()
|
||||
{
|
||||
return HasUnitFlag2(UnitFlags2.InteractWhileHostile);
|
||||
}
|
||||
|
||||
public virtual void SetInteractionAllowedWhileHostile(bool interactionAllowed)
|
||||
{
|
||||
if (interactionAllowed)
|
||||
SetUnitFlag2(UnitFlags2.InteractWhileHostile);
|
||||
else
|
||||
RemoveUnitFlag2(UnitFlags2.InteractWhileHostile);
|
||||
|
||||
UpdateNearbyPlayersInteractions();
|
||||
}
|
||||
|
||||
public bool IsInteractionAllowedInCombat()
|
||||
{
|
||||
return HasUnitFlag3(UnitFlags3.AllowInteractionWhileInCombat);
|
||||
}
|
||||
|
||||
public virtual void SetInteractionAllowedInCombat(bool interactionAllowed)
|
||||
{
|
||||
if (interactionAllowed)
|
||||
SetUnitFlag3(UnitFlags3.AllowInteractionWhileInCombat);
|
||||
else
|
||||
RemoveUnitFlag3(UnitFlags3.AllowInteractionWhileInCombat);
|
||||
|
||||
if (IsInCombat())
|
||||
UpdateNearbyPlayersInteractions();
|
||||
}
|
||||
|
||||
public virtual void UpdateNearbyPlayersInteractions()
|
||||
{
|
||||
for (int i = 0; i < m_unitData.NpcFlags.GetSize(); ++i)
|
||||
if (m_unitData.NpcFlags[i] != 0)
|
||||
{
|
||||
m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.NpcFlags, i);
|
||||
ForceUpdateFieldChange();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user