Core/Objects: properly use UPDATETYPE_CREATE_OBJECT2 when creating brand new objects in all cases.
Port From (https://github.com/TrinityCore/TrinityCore/commit/234a680d3a04142d0f99dfc316b6442d8a51bad1)
This commit is contained in:
@@ -137,7 +137,7 @@ namespace Game.Entities
|
|||||||
if (!target)
|
if (!target)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
UpdateType updateType = UpdateType.CreateObject;
|
UpdateType updateType = _isNewObject ? UpdateType.CreateObject2 : UpdateType.CreateObject;
|
||||||
TypeId tempObjectType = ObjectTypeId;
|
TypeId tempObjectType = ObjectTypeId;
|
||||||
CreateObjectBits flags = m_updateFlag;
|
CreateObjectBits flags = m_updateFlag;
|
||||||
|
|
||||||
@@ -148,54 +148,12 @@ namespace Game.Entities
|
|||||||
tempObjectType = TypeId.ActivePlayer;
|
tempObjectType = TypeId.ActivePlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (GetGUID().GetHigh())
|
|
||||||
{
|
|
||||||
case HighGuid.Player:
|
|
||||||
case HighGuid.Pet:
|
|
||||||
case HighGuid.Corpse:
|
|
||||||
case HighGuid.DynamicObject:
|
|
||||||
case HighGuid.AreaTrigger:
|
|
||||||
case HighGuid.SceneObject:
|
|
||||||
case HighGuid.Conversation:
|
|
||||||
updateType = UpdateType.CreateObject2;
|
|
||||||
break;
|
|
||||||
case HighGuid.Creature:
|
|
||||||
case HighGuid.Vehicle:
|
|
||||||
TempSummon summon = ToUnit().ToTempSummon();
|
|
||||||
if (summon)
|
|
||||||
if (summon.GetSummonerGUID().IsPlayer())
|
|
||||||
updateType = UpdateType.CreateObject2;
|
|
||||||
break;
|
|
||||||
case HighGuid.GameObject:
|
|
||||||
if (ToGameObject().GetOwnerGUID().IsPlayer())
|
|
||||||
updateType = UpdateType.CreateObject2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!flags.MovementUpdate && !m_movementInfo.transport.guid.IsEmpty())
|
if (!flags.MovementUpdate && !m_movementInfo.transport.guid.IsEmpty())
|
||||||
flags.MovementTransport = true;
|
flags.MovementTransport = true;
|
||||||
|
|
||||||
if (GetAIAnimKitId() != 0 || GetMovementAnimKitId() != 0 || GetMeleeAnimKitId() != 0)
|
if (GetAIAnimKitId() != 0 || GetMovementAnimKitId() != 0 || GetMeleeAnimKitId() != 0)
|
||||||
flags.AnimKit = true;
|
flags.AnimKit = true;
|
||||||
|
|
||||||
if (flags.Stationary)
|
|
||||||
{
|
|
||||||
// UPDATETYPE_CREATE_OBJECT2 for some gameobject types...
|
|
||||||
if (IsTypeMask(TypeMask.GameObject))
|
|
||||||
{
|
|
||||||
switch (ToGameObject().GetGoType())
|
|
||||||
{
|
|
||||||
case GameObjectTypes.Trap:
|
|
||||||
case GameObjectTypes.DuelArbiter:
|
|
||||||
case GameObjectTypes.FlagStand:
|
|
||||||
case GameObjectTypes.FlagDrop:
|
|
||||||
updateType = UpdateType.CreateObject2;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Unit unit = ToUnit();
|
Unit unit = ToUnit();
|
||||||
if (unit)
|
if (unit)
|
||||||
if (unit.GetVictim())
|
if (unit.GetVictim())
|
||||||
|
|||||||
Reference in New Issue
Block a user