diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/DataStores/DB2LoadInfo.h | 7 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Metadata.h | 6 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 3 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 25 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.h | 2 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 36 |
7 files changed, 59 insertions, 28 deletions
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 7eae335f032..56129ea8ae0 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -3169,14 +3169,15 @@ struct ItemXBonusTreeLoadInfo struct JournalEncounterLoadInfo { - static constexpr DB2FieldMeta Fields[12] = + static constexpr DB2FieldMeta Fields[13] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, { false, FT_FLOAT, "MapX" }, { false, FT_FLOAT, "MapY" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "JournalInstanceID" }, + { false, FT_SHORT, "DungeonEncounterID" }, { false, FT_INT, "OrderIndex" }, { false, FT_SHORT, "FirstSectionID" }, { false, FT_SHORT, "UiMapID" }, @@ -3185,7 +3186,7 @@ struct JournalEncounterLoadInfo { true, FT_BYTE, "DifficultyMask" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 12, &JournalEncounterMeta::Instance, HOTFIX_SEL_JOURNAL_ENCOUNTER }; + static constexpr DB2LoadInfo Instance{ Fields, 13, &JournalEncounterMeta::Instance, HOTFIX_SEL_JOURNAL_ENCOUNTER }; }; struct JournalEncounterSectionLoadInfo diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index be259b097df..22c8ccb90ec 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -5935,11 +5935,13 @@ struct ItemXBonusTreeMeta struct JournalEncounterMeta { - static constexpr DB2MetaField Fields[10] = + static constexpr DB2MetaField Fields[12] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, { FT_FLOAT, 2, true }, + { FT_INT, 1, false }, + { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, @@ -5949,7 +5951,7 @@ struct JournalEncounterMeta { FT_BYTE, 1, true }, }; - static constexpr DB2Meta Instance{ 1240336, -1, 10, 10, 0x6C77939B, Fields, -1 }; + static constexpr DB2Meta Instance{ 1240336, 3, 12, 12, 0x37948505, Fields, -1 }; }; struct JournalEncounterCreatureMeta diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index e2a9a72a49b..5038355d5b6 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -2378,11 +2378,12 @@ struct ItemXBonusTreeEntry struct JournalEncounterEntry { - uint32 ID; LocalizedString Name; LocalizedString Description; DBCPosition2D Map; + uint32 ID; uint16 JournalInstanceID; + uint16 DungeonEncounterID; uint32 OrderIndex; uint16 FirstSectionID; uint16 UiMapID; diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 2906899aaaa..6794ad6a21e 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -466,6 +466,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe bool hasMorphCurveID = createProperties && createProperties->MorphCurveId != 0; bool hasFacingCurveID = createProperties && createProperties->FacingCurveId != 0; bool hasMoveCurveID = createProperties && createProperties->MoveCurveId != 0; + bool hasAnimation = createProperties && createProperties->AnimId; + bool hasUnk3 = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::Unk3); + bool hasAnimKitID = createProperties && createProperties->AnimKitId; + bool hasAnimProgress = false; bool hasAreaTriggerSphere = shape.IsSphere(); bool hasAreaTriggerBox = shape.IsBox(); bool hasAreaTriggerPolygon = shape.IsPolygon(); @@ -475,6 +479,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe bool hasAreaTriggerSpline = areaTrigger->HasSplines(); bool hasOrbit = areaTrigger->HasOrbit(); bool hasMovementScript = false; + bool hasPositionalSoundKitID = false; data->WriteBit(hasAbsoluteOrientation); data->WriteBit(hasDynamicShape); @@ -488,6 +493,11 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe data->WriteBit(hasMorphCurveID); data->WriteBit(hasFacingCurveID); data->WriteBit(hasMoveCurveID); + data->WriteBit(hasPositionalSoundKitID); + data->WriteBit(hasAnimation); + data->WriteBit(hasAnimKitID); + data->WriteBit(hasUnk3); + data->WriteBit(hasAnimProgress); data->WriteBit(hasAreaTriggerSphere); data->WriteBit(hasAreaTriggerBox); data->WriteBit(hasAreaTriggerPolygon); @@ -498,6 +508,9 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe data->WriteBit(hasOrbit); data->WriteBit(hasMovementScript); + if (hasUnk3) + data->WriteBit(false); + data->FlushBits(); if (hasAreaTriggerSpline) @@ -523,6 +536,18 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe if (hasMoveCurveID) *data << uint32(createProperties->MoveCurveId); + if (hasPositionalSoundKitID) + *data << uint32(0); + + if (hasAnimation) + *data << int32(createProperties->AnimId); + + if (hasAnimKitID) + *data << int32(createProperties->AnimKitId); + + if (hasAnimProgress) + *data << uint32(0); + if (hasAreaTriggerSphere) { *data << float(shape.SphereDatas.Radius); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 195a6019d1b..412e5d416ea 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -3219,7 +3219,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data << uint32(GlyphSlots[i]); data << uint32(Glyphs[i]); } - data << uint8(GlyphsEnabled); + data << uint16(GlyphsEnabled); data << uint8(LfgRoles); data << uint32(CategoryCooldownMods.size()); data << uint32(WeeklySpellUses.size()); @@ -4114,7 +4114,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[122]) { - data << uint8(GlyphsEnabled); + data << uint16(GlyphsEnabled); } if (changesMask[123]) { @@ -4738,7 +4738,9 @@ void CorpseData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi void CorpseData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Corpse const* owner, Player const* receiver) const { - data.WriteBits(changesMask.GetBlock(0), 32); + data.WriteBits(changesMask.GetBlocksMask(0), 1); + if (changesMask.GetBlock(0)) + data.WriteBits(changesMask.GetBlock(0), 32); if (changesMask[0]) { diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index d9543196a31..fa28a3d8119 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -761,7 +761,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 104, 119> FrozenPerksVendorItem; UpdateField<int32, 104, 120> TransportServerTime; UpdateField<uint32, 104, 121> ActiveCombatTraitConfigID; - UpdateField<uint8, 104, 122> GlyphsEnabled; + UpdateField<uint16, 104, 122> GlyphsEnabled; UpdateField<uint8, 104, 123> LfgRoles; OptionalUpdateField<UF::StableInfo, 104, 124> PetStable; UpdateField<uint8, 104, 125> NumStableSlots; diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 6baac45b938..dd714acbc30 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -946,7 +946,7 @@ enum OpcodeServer : uint16 SMSG_ABORT_NEW_WORLD = 0x259A, SMSG_ACCOUNT_CRITERIA_UPDATE = 0x286B, SMSG_ACCOUNT_DATA_TIMES = 0x270E, - SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28AB, + SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28AC, SMSG_ACCOUNT_MOUNT_REMOVED = 0x25B1, SMSG_ACCOUNT_MOUNT_UPDATE = 0x25B0, SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2886, @@ -1282,8 +1282,8 @@ enum OpcodeServer : uint16 SMSG_GUILD_COMMAND_RESULT = 0x29BA, SMSG_GUILD_CRITERIA_DELETED = 0x29C7, SMSG_GUILD_CRITERIA_UPDATE = 0x29C4, - SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x29F8, - SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x29F7, + SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x29F9, + SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x29F8, SMSG_GUILD_EVENT_DISBANDED = 0x29EE, SMSG_GUILD_EVENT_LOG_QUERY_RESULTS = 0x29E3, SMSG_GUILD_EVENT_MOTD = 0x29EF, @@ -1291,12 +1291,12 @@ enum OpcodeServer : uint16 SMSG_GUILD_EVENT_PLAYER_JOINED = 0x29EB, SMSG_GUILD_EVENT_PLAYER_LEFT = 0x29EC, SMSG_GUILD_EVENT_PRESENCE_CHANGE = 0x29F0, - SMSG_GUILD_EVENT_RANKS_UPDATED = 0x29F1, - SMSG_GUILD_EVENT_RANK_CHANGED = 0x29F2, - SMSG_GUILD_EVENT_TAB_ADDED = 0x29F3, - SMSG_GUILD_EVENT_TAB_DELETED = 0x29F4, - SMSG_GUILD_EVENT_TAB_MODIFIED = 0x29F5, - SMSG_GUILD_EVENT_TAB_TEXT_CHANGED = 0x29F6, + SMSG_GUILD_EVENT_RANKS_UPDATED = 0x29F2, + SMSG_GUILD_EVENT_RANK_CHANGED = 0x29F3, + SMSG_GUILD_EVENT_TAB_ADDED = 0x29F4, + SMSG_GUILD_EVENT_TAB_DELETED = 0x29F5, + SMSG_GUILD_EVENT_TAB_MODIFIED = 0x29F6, + SMSG_GUILD_EVENT_TAB_TEXT_CHANGED = 0x29F7, SMSG_GUILD_FLAGGED_FOR_RENAME = 0x29DD, SMSG_GUILD_INVITE = 0x29CB, SMSG_GUILD_INVITE_DECLINED = 0x29E9, @@ -1413,10 +1413,10 @@ enum OpcodeServer : uint16 SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x276A, SMSG_LOAD_CUF_PROFILES = 0x25BE, SMSG_LOAD_EQUIPMENT_SET = 0x2712, - SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x2890, - SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2891, - SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x2892, - SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x2893, + SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x2891, + SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2892, + SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x2893, + SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x2894, SMSG_LOGIN_SET_TIME_SPEED = 0x2711, SMSG_LOGIN_VERIFY_WORLD = 0x2599, SMSG_LOGOUT_CANCEL_ACK = 0x2689, @@ -1539,7 +1539,7 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD, SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8, SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DE, - SMSG_NEW_DATA_BUILD = 0x28AF, + SMSG_NEW_DATA_BUILD = 0x28B0, SMSG_NEW_TAXI_PATH = 0x2823, SMSG_NEW_WORLD = 0x2596, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C42, @@ -1564,7 +1564,7 @@ enum OpcodeServer : uint16 SMSG_PAUSE_MIRROR_TIMER = 0x2714, SMSG_PENDING_RAID_LOCK = 0x26FC, SMSG_PETITION_ALREADY_SIGNED = 0x25A1, - SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA, + SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FB, SMSG_PETITION_SHOW_LIST = 0x26C3, SMSG_PETITION_SHOW_SIGNATURES = 0x26C4, SMSG_PETITION_SIGN_RESULTS = 0x2750, @@ -1593,7 +1593,7 @@ enum OpcodeServer : uint16 SMSG_PLAYER_CONDITION_RESULT = 0x300A, SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x3021, SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x3009, - SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F9, + SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29FA, SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x3020, SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x301E, SMSG_PLAYER_SKINNED = 0x3006, @@ -1759,7 +1759,7 @@ enum OpcodeServer : uint16 SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95, SMSG_SHOW_TAXI_NODES = 0x26D1, SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2778, - SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2895, + SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2896, SMSG_SOCKET_GEMS_FAILURE = 0x272C, SMSG_SOCKET_GEMS_SUCCESS = 0x272B, SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25DF, @@ -1853,7 +1853,7 @@ enum OpcodeServer : uint16 SMSG_UPDATE_OBJECT = 0x27CF, SMSG_UPDATE_PET_TALENT_DATA = 0x25D9, SMSG_UPDATE_PRIMARY_SPEC = 0x25DA, - SMSG_UPDATE_REALM_HIDDEN_INFO = 0x28B0, + SMSG_UPDATE_REALM_HIDDEN_INFO = 0x28B1, SMSG_UPDATE_TALENT_DATA = 0x25D8, SMSG_UPDATE_WORLD_STATE = 0x274C, SMSG_USERLIST_ADD = 0x2BB9, |
