Core/Unit: UNIT_FLAG renames
Port From (https://github.com/TrinityCore/TrinityCore/commit/f1ac141f25500a0f6ffd3c32b1185de2d9f9c940)
This commit is contained in:
@@ -1693,7 +1693,7 @@ namespace Game.Entities
|
||||
return false;
|
||||
|
||||
// This set of checks is should be done only for creatures
|
||||
if ((IsImmuneToNPC() && !who.HasUnitFlag(UnitFlags.PvpAttackable)) || (IsImmuneToPC() && who.HasUnitFlag(UnitFlags.PvpAttackable)))
|
||||
if ((IsImmuneToNPC() && !who.HasUnitFlag(UnitFlags.PlayerControlled)) || (IsImmuneToPC() && who.HasUnitFlag(UnitFlags.PlayerControlled)))
|
||||
return false;
|
||||
|
||||
// Do not attack non-combat pets
|
||||
|
||||
@@ -2085,9 +2085,9 @@ namespace Game.Entities
|
||||
|
||||
Unit unit = ToUnit();
|
||||
Unit targetUnit = target.ToUnit();
|
||||
if (unit && unit.HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (unit && unit.HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
{
|
||||
if (targetUnit && targetUnit.HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (targetUnit && targetUnit.HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
{
|
||||
if (selfPlayerOwner && targetPlayerOwner)
|
||||
{
|
||||
@@ -2341,24 +2341,24 @@ namespace Game.Entities
|
||||
// ignore immunity flags when assisting
|
||||
if (bySpell == null || (isPositiveSpell && !bySpell.HasAttribute(SpellAttr6.AssistIgnoreImmuneFlag)))
|
||||
{
|
||||
if (unit != null && !unit.HasUnitFlag(UnitFlags.PvpAttackable) && unitTarget != null && unitTarget.IsImmuneToNPC())
|
||||
if (unit != null && !unit.HasUnitFlag(UnitFlags.PlayerControlled) && unitTarget != null && unitTarget.IsImmuneToNPC())
|
||||
return false;
|
||||
|
||||
if (unitTarget != null && !unitTarget.HasUnitFlag(UnitFlags.PvpAttackable) && unit && unit.IsImmuneToNPC())
|
||||
if (unitTarget != null && !unitTarget.HasUnitFlag(UnitFlags.PlayerControlled) && unit && unit.IsImmuneToNPC())
|
||||
return false;
|
||||
|
||||
if (bySpell == null || !bySpell.HasAttribute(SpellAttr8.AttackIgnoreImmuneToPCFlag))
|
||||
{
|
||||
if (unit != null && unit.HasUnitFlag(UnitFlags.PvpAttackable) && unitTarget && unitTarget.IsImmuneToPC())
|
||||
if (unit != null && unit.HasUnitFlag(UnitFlags.PlayerControlled) && unitTarget && unitTarget.IsImmuneToPC())
|
||||
return false;
|
||||
|
||||
if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.PvpAttackable) && unit && unit.IsImmuneToPC())
|
||||
if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.PlayerControlled) && unit && unit.IsImmuneToPC())
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// CvC case - can attack each other only when one of them is hostile
|
||||
if (unit && !unit.HasUnitFlag(UnitFlags.PvpAttackable) && unitTarget != null && !unitTarget.HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (unit && !unit.HasUnitFlag(UnitFlags.PlayerControlled) && unitTarget != null && !unitTarget.HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
return IsHostileTo(target) || target.IsHostileTo(this);
|
||||
|
||||
// PvP, PvC, CvP case
|
||||
@@ -2366,8 +2366,8 @@ namespace Game.Entities
|
||||
if (IsFriendlyTo(target) || target.IsFriendlyTo(this))
|
||||
return false;
|
||||
|
||||
Player playerAffectingAttacker = unit != null && unit.HasUnitFlag(UnitFlags.PvpAttackable) ? GetAffectingPlayer() : null;
|
||||
Player playerAffectingTarget = unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.PvpAttackable) ? target.GetAffectingPlayer() : null;
|
||||
Player playerAffectingAttacker = unit != null && unit.HasUnitFlag(UnitFlags.PlayerControlled) ? GetAffectingPlayer() : null;
|
||||
Player playerAffectingTarget = unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.PlayerControlled) ? target.GetAffectingPlayer() : null;
|
||||
|
||||
// Not all neutral creatures can be attacked (even some unfriendly faction does not react aggresive to you, like Sporaggar)
|
||||
if ((playerAffectingAttacker && !playerAffectingTarget) || (!playerAffectingAttacker && playerAffectingTarget))
|
||||
@@ -2408,7 +2408,7 @@ namespace Game.Entities
|
||||
|
||||
// PvP case - can't attack when attacker or target are in sanctuary
|
||||
// however, 13850 client doesn't allow to attack when one of the unit's has sanctuary flag and is pvp
|
||||
if (unitTarget && unitTarget.HasUnitFlag(UnitFlags.PvpAttackable) && unit && unit.HasUnitFlag(UnitFlags.PvpAttackable) && (unitTarget.IsInSanctuary() || unit.IsInSanctuary()))
|
||||
if (unitTarget && unitTarget.HasUnitFlag(UnitFlags.PlayerControlled) && unit && unit.HasUnitFlag(UnitFlags.PlayerControlled) && (unitTarget.IsInSanctuary() || unit.IsInSanctuary()))
|
||||
return false;
|
||||
|
||||
// additional checks - only PvP case
|
||||
@@ -2477,7 +2477,7 @@ namespace Game.Entities
|
||||
|
||||
if (isNegativeSpell || bySpell == null || !bySpell.HasAttribute(SpellAttr6.AssistIgnoreImmuneFlag))
|
||||
{
|
||||
if (unit != null && unit.HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (unit != null && unit.HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
{
|
||||
if (bySpell == null || !bySpell.HasAttribute(SpellAttr8.AttackIgnoreImmuneToPCFlag))
|
||||
if (unitTarget != null && unitTarget.IsImmuneToPC())
|
||||
@@ -2495,10 +2495,10 @@ namespace Game.Entities
|
||||
return false;
|
||||
|
||||
// PvP case
|
||||
if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
{
|
||||
Player targetPlayerOwner = target.GetAffectingPlayer();
|
||||
if (unit != null && unit.HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (unit != null && unit.HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
{
|
||||
Player selfPlayerOwner = GetAffectingPlayer();
|
||||
if (selfPlayerOwner != null && targetPlayerOwner != null)
|
||||
@@ -2519,7 +2519,7 @@ namespace Game.Entities
|
||||
}
|
||||
// PvC case - player can assist creature only if has specific type flags
|
||||
// !target.HasFlag(UNIT_FIELD_FLAGS, UnitFlags.PvpAttackable) &&
|
||||
else if (unit != null && unit.HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
else if (unit != null && unit.HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
{
|
||||
if (bySpell == null || !bySpell.HasAttribute(SpellAttr6.AssistIgnoreImmuneFlag))
|
||||
{
|
||||
|
||||
@@ -209,14 +209,14 @@ namespace Game.Entities
|
||||
petlevel = owner.GetLevel();
|
||||
|
||||
SetClass(Class.Mage);
|
||||
SetUnitFlags(UnitFlags.PvpAttackable); // this enables popup window (pet dismiss, cancel)
|
||||
SetUnitFlags(UnitFlags.PlayerControlled); // this enables popup window (pet dismiss, cancel)
|
||||
break;
|
||||
case PetType.Hunter:
|
||||
SetClass(Class.Warrior);
|
||||
SetGender(Gender.None);
|
||||
SetSheath(SheathState.Melee);
|
||||
SetPetFlags(result.Read<bool>(9) ? UnitPetFlags.CanBeAbandoned : UnitPetFlags.CanBeRenamed | UnitPetFlags.CanBeAbandoned);
|
||||
SetUnitFlags(UnitFlags.PvpAttackable); // this enables popup window (pet abandon, cancel)
|
||||
SetUnitFlags(UnitFlags.PlayerControlled); // this enables popup window (pet abandon, cancel)
|
||||
break;
|
||||
default:
|
||||
if (!IsPetGhoul())
|
||||
|
||||
@@ -217,7 +217,7 @@ namespace Game.Entities
|
||||
if ((RealmType)WorldConfig.GetIntValue(WorldCfg.GameType) == RealmType.PVP || (RealmType)WorldConfig.GetIntValue(WorldCfg.GameType) == RealmType.RPPVP)
|
||||
{
|
||||
AddPvpFlag(UnitPVPStateFlags.PvP);
|
||||
AddUnitFlag(UnitFlags.PvpAttackable);
|
||||
AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
}
|
||||
|
||||
AddUnitFlag2(UnitFlags2.RegeneratePower);
|
||||
@@ -5814,7 +5814,7 @@ namespace Game.Entities
|
||||
UnitFlags.Stunned | UnitFlags.InCombat | UnitFlags.Disarmed |
|
||||
UnitFlags.Confused | UnitFlags.Fleeing | UnitFlags.NotSelectable |
|
||||
UnitFlags.Skinnable | UnitFlags.Mount | UnitFlags.TaxiFlight);
|
||||
AddUnitFlag(UnitFlags.PvpAttackable); // must be set
|
||||
AddUnitFlag(UnitFlags.PlayerControlled); // must be set
|
||||
|
||||
AddUnitFlag2(UnitFlags2.RegeneratePower);// must be set
|
||||
|
||||
|
||||
@@ -517,7 +517,7 @@ namespace Game.Entities
|
||||
if (attType != WeaponAttackType.BaseAttack && attType != WeaponAttackType.OffAttack)
|
||||
return;
|
||||
|
||||
if (IsTypeId(TypeId.Unit) && !HasUnitFlag(UnitFlags.PlayerControlled) && !HasUnitFlag2(UnitFlags2.DisableTurn))
|
||||
if (IsTypeId(TypeId.Unit) && !HasUnitFlag(UnitFlags.Possessed) && !HasUnitFlag2(UnitFlags2.DisableTurn))
|
||||
SetFacingToObject(victim, false); // update client side facing to face the target (prevents visual glitches when casting untargeted spells)
|
||||
|
||||
// melee attack spell casted at main hand attack only - no normal melee dmg dealt
|
||||
@@ -600,7 +600,7 @@ namespace Game.Entities
|
||||
if (attType != WeaponAttackType.BaseAttack && attType != WeaponAttackType.OffAttack)
|
||||
return; // ignore ranged case
|
||||
|
||||
if (IsTypeId(TypeId.Unit) && !HasUnitFlag(UnitFlags.PlayerControlled) && !HasUnitFlag2(UnitFlags2.DisableTurn))
|
||||
if (IsTypeId(TypeId.Unit) && !HasUnitFlag(UnitFlags.Possessed) && !HasUnitFlag2(UnitFlags2.DisableTurn))
|
||||
SetFacingToObject(victim, false); // update client side facing to face the target (prevents visual glitches when casting untargeted spells)
|
||||
|
||||
CalcDamageInfo damageInfo = new();
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace Game.Entities
|
||||
// Mirror client behavior, if this method returns false then client will not use swimming animation and for players will apply gravity as if there was no water
|
||||
if (HasUnitFlag(UnitFlags.CannotSwim))
|
||||
return false;
|
||||
if (HasUnitFlag(UnitFlags.PvpAttackable)) // is player
|
||||
if (HasUnitFlag(UnitFlags.PlayerControlled)) // is player
|
||||
return true;
|
||||
if (HasUnitFlag2((UnitFlags2)0x1000000))
|
||||
return false;
|
||||
|
||||
@@ -147,7 +147,7 @@ namespace Game.Entities
|
||||
if (IsTypeId(TypeId.Player))
|
||||
{
|
||||
minion.m_ControlledByPlayer = true;
|
||||
minion.AddUnitFlag(UnitFlags.PvpAttackable);
|
||||
minion.AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
}
|
||||
|
||||
// Can only have one pet. If a new one is summoned, dismiss the old one.
|
||||
@@ -406,12 +406,12 @@ namespace Game.Entities
|
||||
switch (type)
|
||||
{
|
||||
case CharmType.Vehicle:
|
||||
AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
AddUnitFlag(UnitFlags.Possessed);
|
||||
playerCharmer.SetClientControl(this, true);
|
||||
playerCharmer.VehicleSpellInitialize();
|
||||
break;
|
||||
case CharmType.Possess:
|
||||
AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
AddUnitFlag(UnitFlags.Possessed);
|
||||
charmer.AddUnitFlag(UnitFlags.RemoveClientControl);
|
||||
playerCharmer.SetClientControl(this, true);
|
||||
playerCharmer.PossessSpellInitialize();
|
||||
@@ -507,14 +507,14 @@ namespace Game.Entities
|
||||
case CharmType.Vehicle:
|
||||
playerCharmer.SetClientControl(this, false);
|
||||
playerCharmer.SetClientControl(charmer, true);
|
||||
RemoveUnitFlag(UnitFlags.PlayerControlled);
|
||||
RemoveUnitFlag(UnitFlags.Possessed);
|
||||
break;
|
||||
case CharmType.Possess:
|
||||
ClearUnitState(UnitState.Possessed);
|
||||
playerCharmer.SetClientControl(this, false);
|
||||
playerCharmer.SetClientControl(charmer, true);
|
||||
charmer.RemoveUnitFlag(UnitFlags.RemoveClientControl);
|
||||
RemoveUnitFlag(UnitFlags.PlayerControlled);
|
||||
RemoveUnitFlag(UnitFlags.Possessed);
|
||||
break;
|
||||
case CharmType.Charm:
|
||||
if (IsTypeId(TypeId.Unit) && charmer.GetClass() == Class.Warlock)
|
||||
@@ -594,7 +594,7 @@ namespace Game.Entities
|
||||
|
||||
charm.m_ControlledByPlayer = true;
|
||||
// @todo maybe we can use this flag to check if controlled by player
|
||||
charm.AddUnitFlag(UnitFlags.PvpAttackable);
|
||||
charm.AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
}
|
||||
else
|
||||
charm.m_ControlledByPlayer = false;
|
||||
@@ -635,19 +635,19 @@ namespace Game.Entities
|
||||
if (charm.IsTypeId(TypeId.Player))
|
||||
{
|
||||
charm.m_ControlledByPlayer = true;
|
||||
charm.AddUnitFlag(UnitFlags.PvpAttackable);
|
||||
charm.AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
charm.ToPlayer().UpdatePvPState();
|
||||
}
|
||||
else if (player)
|
||||
{
|
||||
charm.m_ControlledByPlayer = true;
|
||||
charm.AddUnitFlag(UnitFlags.PvpAttackable);
|
||||
charm.AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
charm.SetPvpFlags(player.GetPvpFlags());
|
||||
}
|
||||
else
|
||||
{
|
||||
charm.m_ControlledByPlayer = false;
|
||||
charm.RemoveUnitFlag(UnitFlags.PvpAttackable);
|
||||
charm.RemoveUnitFlag(UnitFlags.PlayerControlled);
|
||||
charm.SetPvpFlags(UnitPVPStateFlags.None);
|
||||
}
|
||||
|
||||
@@ -791,7 +791,7 @@ namespace Game.Entities
|
||||
pet.SetCreatedBySpell(spell_id);
|
||||
|
||||
if (IsTypeId(TypeId.Player))
|
||||
pet.AddUnitFlag(UnitFlags.PvpAttackable);
|
||||
pet.AddUnitFlag(UnitFlags.PlayerControlled);
|
||||
|
||||
if (!pet.InitStatsForLevel(level))
|
||||
{
|
||||
|
||||
@@ -2843,11 +2843,11 @@ namespace Game.Entities
|
||||
{
|
||||
List<CombatReference> toEnd = new();
|
||||
foreach (var pair in m_combatManager.GetPvECombatRefs())
|
||||
if (pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
toEnd.Add(pair.Value);
|
||||
|
||||
foreach (var pair in m_combatManager.GetPvPCombatRefs())
|
||||
if (pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
toEnd.Add(pair.Value);
|
||||
|
||||
foreach (CombatReference refe in toEnd)
|
||||
@@ -2877,11 +2877,11 @@ namespace Game.Entities
|
||||
{
|
||||
List<CombatReference> toEnd = new();
|
||||
foreach (var pair in m_combatManager.GetPvECombatRefs())
|
||||
if (!pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (!pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
toEnd.Add(pair.Value);
|
||||
|
||||
foreach (var pair in m_combatManager.GetPvPCombatRefs())
|
||||
if (!pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PvpAttackable))
|
||||
if (!pair.Value.GetOther(this).HasUnitFlag(UnitFlags.PlayerControlled))
|
||||
toEnd.Add(pair.Value);
|
||||
|
||||
foreach (CombatReference refe in toEnd)
|
||||
|
||||
Reference in New Issue
Block a user