Port to WoW client 12.0.7 (build 68453)
Adapt CypherCore from 11.2.5.63796 to 12.0.7.68453 using TrinityCore as byte-exact reference. - Fase 1: build gate 68453 (build_info + build_auth_key SQL, keys from TC) - Fase 2: Opcodes.cs remapped by name to 12.0.7 values - Fase 3: 32 DB2 structs + HotfixDatabase.cs SELECTs realigned; fixed ReputationManager/SpellInfo refs - Fase 4: UpdateFields ported (GameObject/Conversation/AreaTrigger/Player/ Unit/ActivePlayer + nested VisibleItem/QuestLog/BitVectors/CraftingOrderItem/ SkillInfo) - Critical protocol fixes: CreateObject header +3 bits (Room/Decor/MeshObject); EntityFragment enum renumbered to 12.0.7 (was 11.2.5 values, breaking every object packet) - New-entity foundation: TypeId/TypeMask/HighGuid.MeshObject, fragment tags - MeshObject entity scaffold (Midnight features are wire-format only) Builds clean (dotnet build -c Release, 0 errors). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -143,6 +143,7 @@ namespace Game.Entities
|
||||
case HighGuid.Corpse:
|
||||
case HighGuid.LootObject:
|
||||
case HighGuid.SceneObject:
|
||||
case HighGuid.MeshObject:
|
||||
case HighGuid.Scenario:
|
||||
case HighGuid.AIGroup:
|
||||
case HighGuid.DynamicDoor:
|
||||
@@ -345,6 +346,8 @@ namespace Game.Entities
|
||||
return TypeId.AreaTrigger;
|
||||
case HighGuid.SceneObject:
|
||||
return TypeId.SceneObject;
|
||||
case HighGuid.MeshObject:
|
||||
return TypeId.MeshObject;
|
||||
case HighGuid.Conversation:
|
||||
return TypeId.Conversation;
|
||||
default:
|
||||
@@ -377,6 +380,7 @@ namespace Game.Entities
|
||||
case HighGuid.Corpse:
|
||||
case HighGuid.LootObject:
|
||||
case HighGuid.SceneObject:
|
||||
case HighGuid.MeshObject:
|
||||
case HighGuid.Scenario:
|
||||
case HighGuid.AIGroup:
|
||||
case HighGuid.DynamicDoor:
|
||||
@@ -605,6 +609,7 @@ namespace Game.Entities
|
||||
SET_GUID_INFO(HighGuid.Corpse, FormatWorldObject, ParseWorldObject);
|
||||
SET_GUID_INFO(HighGuid.LootObject, FormatWorldObject, ParseWorldObject);
|
||||
SET_GUID_INFO(HighGuid.SceneObject, FormatWorldObject, ParseWorldObject);
|
||||
SET_GUID_INFO(HighGuid.MeshObject, FormatWorldObject, ParseWorldObject);
|
||||
SET_GUID_INFO(HighGuid.Scenario, FormatWorldObject, ParseWorldObject);
|
||||
SET_GUID_INFO(HighGuid.AIGroup, FormatWorldObject, ParseWorldObject);
|
||||
SET_GUID_INFO(HighGuid.DynamicDoor, FormatWorldObject, ParseWorldObject);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,33 +8,52 @@ namespace Game.Entities
|
||||
{
|
||||
public enum EntityFragment
|
||||
{
|
||||
CGObject = 0, // UPDATEABLE, INDIRECT,
|
||||
Tag_Item = 1, // TAG,
|
||||
Tag_Container = 2, // TAG,
|
||||
Tag_AzeriteEmpoweredItem = 3, // TAG,
|
||||
Tag_AzeriteItem = 4, // TAG,
|
||||
Tag_Unit = 5, // TAG,
|
||||
Tag_Player = 6, // TAG,
|
||||
Tag_GameObject = 7, // TAG,
|
||||
Tag_DynamicObject = 8, // TAG,
|
||||
Tag_Corpse = 9, // TAG,
|
||||
Tag_AreaTrigger = 10, // TAG,
|
||||
Tag_SceneObject = 11, // TAG,
|
||||
Tag_Conversation = 12, // TAG,
|
||||
Tag_AIGroup = 13, // TAG,
|
||||
Tag_Scenario = 14, // TAG,
|
||||
Tag_LootObject = 15, // TAG,
|
||||
Tag_ActivePlayer = 16, // TAG,
|
||||
Tag_ActiveClient_S = 17, // TAG,
|
||||
Tag_ActiveObject_C = 18, // TAG,
|
||||
Tag_VisibleObject_C = 19, // TAG,
|
||||
Tag_UnitVehicle = 20, // TAG,
|
||||
FEntityPosition = 112,
|
||||
FEntityLocalMatrix = 113,
|
||||
FEntityWorldMatrix = 114,
|
||||
CActor = 115, // INDIRECT,
|
||||
FVendor_C = 117, // UPDATEABLE, INDIRECT,
|
||||
FMirroredObject_C = 119,
|
||||
// 12.0.7 (build 68453): fragment IDs renumbered vs 11.2.5; these are written into every object create/update packet.
|
||||
FEntityPosition = 1,
|
||||
CGObject = 2, // UPDATEABLE, INDIRECT,
|
||||
FTransportLink = 5,
|
||||
FPlayerOwnershipLink = 13,
|
||||
CActor = 15, // INDIRECT,
|
||||
FVendor_C = 17, // UPDATEABLE,
|
||||
FMirroredObject_C = 18,
|
||||
FMeshObjectData_C = 19, // UPDATEABLE,
|
||||
FHousingDecor_C = 20, // UPDATEABLE,
|
||||
FHousingRoom_C = 21, // UPDATEABLE,
|
||||
FHousingRoomComponentMesh_C = 22, // UPDATEABLE,
|
||||
FHousingPlayerHouse_C = 23, // UPDATEABLE,
|
||||
FJamHousingCornerstone_C = 27, // UPDATEABLE,
|
||||
FHousingDecorActor_C = 28,
|
||||
FNeighborhoodMirrorData_C = 30, // UPDATEABLE,
|
||||
FMirroredPositionData_C = 31, // UPDATEABLE,
|
||||
PlayerHouseInfoComponent_C = 32, // UPDATEABLE, INDIRECT,
|
||||
FHousingStorage_C = 33, // UPDATEABLE,
|
||||
FHousingFixture_C = 34, // UPDATEABLE,
|
||||
PlayerInitiativeComponent_C = 37, // UPDATEABLE, INDIRECT,
|
||||
Tag_Item = 200, // TAG,
|
||||
Tag_Container = 201, // TAG,
|
||||
Tag_AzeriteEmpoweredItem = 202, // TAG,
|
||||
Tag_AzeriteItem = 203, // TAG,
|
||||
Tag_Unit = 204, // TAG,
|
||||
Tag_Player = 205, // TAG,
|
||||
Tag_GameObject = 206, // TAG,
|
||||
Tag_DynamicObject = 207, // TAG,
|
||||
Tag_Corpse = 208, // TAG,
|
||||
Tag_AreaTrigger = 209, // TAG,
|
||||
Tag_SceneObject = 210, // TAG,
|
||||
Tag_Conversation = 211, // TAG,
|
||||
Tag_AIGroup = 212, // TAG,
|
||||
Tag_Scenario = 213, // TAG,
|
||||
Tag_LootObject = 214, // TAG,
|
||||
Tag_ActivePlayer = 215, // TAG,
|
||||
Tag_ActiveClient_S = 216, // TAG,
|
||||
Tag_ActiveObject_C = 217, // TAG,
|
||||
Tag_VisibleObject_C = 218, // TAG,
|
||||
Tag_UnitVehicle = 219, // TAG,
|
||||
Tag_HousingRoom = 220, // TAG,
|
||||
Tag_MeshObject = 221, // TAG,
|
||||
Tag_HouseExteriorPiece = 224, // TAG,
|
||||
Tag_HouseExteriorRoot = 225, // TAG,
|
||||
Tag_HousingDecorProxyGameObject = 226, // TAG,
|
||||
End = 255,
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace Game.Entities
|
||||
m_movementInfo = new MovementInfo();
|
||||
m_updateFlag.Clear();
|
||||
|
||||
m_entityFragments.Add((int)EntityFragment.CGObject, false);
|
||||
m_entityFragments.Add(EntityFragment.CGObject, false);
|
||||
|
||||
m_objectData = new ObjectFieldData();
|
||||
|
||||
@@ -313,6 +313,9 @@ namespace Game.Entities
|
||||
data.WriteBit(flags.SceneObject);
|
||||
data.WriteBit(flags.ActivePlayer);
|
||||
data.WriteBit(flags.Conversation);
|
||||
data.WriteBit(flags.Room); // 12.0.7: new create-header bit
|
||||
data.WriteBit(flags.Decor); // 12.0.7: new create-header bit
|
||||
data.WriteBit(flags.MeshObject); // 12.0.7: new create-header bit
|
||||
data.FlushBits();
|
||||
|
||||
if (flags.MovementUpdate)
|
||||
@@ -4047,6 +4050,9 @@ namespace Game.Entities
|
||||
public bool SceneObject;
|
||||
public bool ActivePlayer;
|
||||
public bool Conversation;
|
||||
public bool Room; // 12.0.7: new
|
||||
public bool Decor; // 12.0.7: new
|
||||
public bool MeshObject; // 12.0.7: new
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
@@ -4067,6 +4073,9 @@ namespace Game.Entities
|
||||
SceneObject = false;
|
||||
ActivePlayer = false;
|
||||
Conversation = false;
|
||||
Room = false;
|
||||
Decor = false;
|
||||
MeshObject = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user