aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h7
-rw-r--r--src/server/game/DataStores/DB2Metadata.h6
-rw-r--r--src/server/game/DataStores/DB2Structure.h3
-rw-r--r--src/server/game/Entities/Object/Object.cpp25
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp8
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h36
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,