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:
hondacrx
2021-11-15 23:24:39 -05:00
parent bc84e62688
commit 527f117701
+1 -43
View File
@@ -137,7 +137,7 @@ namespace Game.Entities
if (!target)
return;
UpdateType updateType = UpdateType.CreateObject;
UpdateType updateType = _isNewObject ? UpdateType.CreateObject2 : UpdateType.CreateObject;
TypeId tempObjectType = ObjectTypeId;
CreateObjectBits flags = m_updateFlag;
@@ -148,54 +148,12 @@ namespace Game.Entities
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())
flags.MovementTransport = true;
if (GetAIAnimKitId() != 0 || GetMovementAnimKitId() != 0 || GetMeleeAnimKitId() != 0)
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();
if (unit)
if (unit.GetVictim())