Skip to content

Commit a35ee8d

Browse files
author
Github Actions
committed
Merge 3.3.5 to 3.3.5-lfgsolo
2 parents b8ab937 + 7ea4b1d commit a35ee8d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1909
-1240
lines changed

sql/updates/world/3.3.5/2026_03_09_00_world.sql

Lines changed: 280 additions & 0 deletions
Large diffs are not rendered by default.

src/common/Cryptography/Authentication/WorldPacketCrypt.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,16 @@ WorldPacketCrypt::WorldPacketCrypt() : _initialized(false)
2525

2626
void WorldPacketCrypt::Init(SessionKey const& K)
2727
{
28-
uint8 ServerEncryptionKey[] = { 0xCC, 0x98, 0xAE, 0x04, 0xE8, 0x97, 0xEA, 0xCA, 0x12, 0xDD, 0xC0, 0x93, 0x42, 0x91, 0x53, 0x57 };
29-
_serverEncrypt.Init(Trinity::Crypto::HMAC_SHA1::GetDigestOf(ServerEncryptionKey, K));
30-
uint8 ServerDecryptionKey[] = { 0xC2, 0xB3, 0x72, 0x3C, 0xC6, 0xAE, 0xD9, 0xB5, 0x34, 0x3C, 0x53, 0xEE, 0x2F, 0x43, 0x67, 0xCE };
31-
_clientDecrypt.Init(Trinity::Crypto::HMAC_SHA1::GetDigestOf(ServerDecryptionKey, K));
28+
static constexpr std::array<uint8, 16> ServerEncryptionKey = { 0xCC, 0x98, 0xAE, 0x04, 0xE8, 0x97, 0xEA, 0xCA, 0x12, 0xDD, 0xC0, 0x93, 0x42, 0x91, 0x53, 0x57 };
29+
static constexpr std::array<uint8, 16> ServerDecryptionKey = { 0xC2, 0xB3, 0x72, 0x3C, 0xC6, 0xAE, 0xD9, 0xB5, 0x34, 0x3C, 0x53, 0xEE, 0x2F, 0x43, 0x67, 0xCE };
30+
31+
Init(K, ServerEncryptionKey, ServerDecryptionKey);
32+
}
33+
34+
void WorldPacketCrypt::Init(SessionKey const& K, std::span<uint8 const, 16> serverKey, std::span<uint8 const, 16> clientKey)
35+
{
36+
_serverEncrypt.Init(Trinity::Crypto::HMAC_SHA1::GetDigestOf(serverKey, K));
37+
_clientDecrypt.Init(Trinity::Crypto::HMAC_SHA1::GetDigestOf(clientKey, K));
3238

3339
// Drop first 1024 bytes, as WoW uses ARC4-drop1024.
3440
std::array<uint8, 1024> syncBuf;

src/common/Cryptography/Authentication/WorldPacketCrypt.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@
2020

2121
#include "ARC4.h"
2222
#include "AuthDefines.h"
23+
#include <span>
2324

2425
class TC_COMMON_API WorldPacketCrypt
2526
{
2627
public:
2728
WorldPacketCrypt();
2829

2930
void Init(SessionKey const& K);
31+
void Init(SessionKey const& K, std::span<uint8 const, 16> serverKey, std::span<uint8 const, 16> clientKey);
3032
void DecryptRecv(uint8* data, size_t len);
3133
void EncryptSend(uint8* data, size_t len);
3234

src/server/database/Database/Implementation/CharacterDatabase.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
5151
"cb.guid, cd.genitive FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? "
5252
"LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid LEFT JOIN guild_member AS gm ON c.guid = gm.guid "
5353
"LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name IS NULL ORDER BY c.guid", CONNECTION_ASYNC);
54-
PrepareStatement(CHAR_SEL_FREE_NAME, "SELECT name, at_login FROM characters WHERE guid = ? AND account = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)", CONNECTION_ASYNC);
54+
PrepareStatement(CHAR_SEL_FREE_NAME, "SELECT name, at_login FROM characters WHERE guid = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)", CONNECTION_ASYNC);
5555
PrepareStatement(CHAR_SEL_CHAR_ZONE, "SELECT zone FROM characters WHERE guid = ?", CONNECTION_SYNCH);
5656
PrepareStatement(CHAR_SEL_CHARACTER_NAME_DATA, "SELECT race, class, gender, level, name FROM characters WHERE guid = ?", CONNECTION_SYNCH);
5757
PrepareStatement(CHAR_SEL_CHAR_POSITION_XYZ, "SELECT map, position_x, position_y, position_z FROM characters WHERE guid = ?", CONNECTION_SYNCH);
@@ -161,7 +161,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
161161
PrepareStatement(CHAR_SEL_MATCH_MAKER_RATING, "SELECT matchMakerRating FROM character_arena_stats WHERE guid = ? AND slot = ?", CONNECTION_SYNCH);
162162
PrepareStatement(CHAR_SEL_CHARACTER_COUNT, "SELECT account, COUNT(guid) FROM characters WHERE account = ? GROUP BY account", CONNECTION_ASYNC);
163163
PrepareStatement(CHAR_UPD_NAME_BY_GUID, "UPDATE characters SET name = ? WHERE guid = ?", CONNECTION_ASYNC);
164-
PrepareStatement(CHAR_DEL_DECLINED_NAME, "DELETE FROM character_declinedname WHERE guid = ?", CONNECTION_ASYNC);
165164

166165
// Guild handling
167166
// 0: uint32, 1: string, 2: uint32, 3: string, 4: string, 5: uint64, 6-10: uint32, 11: uint64
@@ -388,7 +387,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
388387
PrepareStatement(CHAR_DEL_GLOBAL_INSTANCE_RESETTIME, "DELETE FROM instance_reset WHERE mapid = ? AND difficulty = ?", CONNECTION_SYNCH);
389388
PrepareStatement(CHAR_UPD_GLOBAL_INSTANCE_RESETTIME, "UPDATE instance_reset SET resettime = ? WHERE mapid = ? AND difficulty = ?", CONNECTION_BOTH);
390389
PrepareStatement(CHAR_UPD_CHAR_ONLINE, "UPDATE characters SET online = 1 WHERE guid = ?", CONNECTION_ASYNC);
391-
PrepareStatement(CHAR_UPD_CHAR_NAME_AT_LOGIN, "UPDATE characters set name = ?, at_login = ? WHERE guid = ?", CONNECTION_ASYNC);
390+
PrepareStatement(CHAR_UPD_CHAR_NAME_AT_LOGIN, "UPDATE characters SET name = ?, at_login = ? WHERE guid = ?", CONNECTION_ASYNC);
392391
PrepareStatement(CHAR_UPD_WORLDSTATE, "UPDATE worldstates SET value = ? WHERE entry = ?", CONNECTION_ASYNC);
393392
PrepareStatement(CHAR_INS_WORLDSTATE, "INSERT INTO worldstates (entry, value) VALUES (?, ?)", CONNECTION_ASYNC);
394393
PrepareStatement(CHAR_DEL_CHAR_INSTANCE_BY_INSTANCE_GUID, "DELETE FROM character_instance WHERE guid = ? AND instance = ?", CONNECTION_ASYNC);
@@ -416,7 +415,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
416415
PrepareStatement(CHAR_SEL_PINFO_XP, "SELECT a.xp, b.guid FROM characters a LEFT JOIN guild_member b ON a.guid = b.guid WHERE a.guid = ?", CONNECTION_SYNCH);
417416
PrepareStatement(CHAR_SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?", CONNECTION_SYNCH);
418417
PrepareStatement(CHAR_SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name, online FROM characters WHERE account = ?", CONNECTION_SYNCH);
419-
PrepareStatement(CHAR_SEL_CHARACTER_AT_LOGIN, "SELECT at_login FROM characters WHERE guid = ?", CONNECTION_SYNCH);
420418
PrepareStatement(CHAR_SEL_CHAR_CUSTOMIZE_INFO, "SELECT name, race, class, gender, at_login FROM characters WHERE guid = ?", CONNECTION_ASYNC);
421419
PrepareStatement(CHAR_SEL_CHAR_RACE_OR_FACTION_CHANGE_INFOS, "SELECT c.at_login, c.knownTitles, gm.guid, c.map FROM characters c LEFT JOIN group_member gm ON c.guid = gm.memberGuid WHERE c.guid = ?", CONNECTION_ASYNC);
422420
PrepareStatement(CHAR_SEL_INSTANCE, "SELECT data, completedEncounters FROM instance WHERE map = ? AND id = ?", CONNECTION_SYNCH);

src/server/database/Database/Implementation/CharacterDatabase.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ enum CharacterDatabaseStatements : uint32
145145
CHAR_SEL_MATCH_MAKER_RATING,
146146
CHAR_SEL_CHARACTER_COUNT,
147147
CHAR_UPD_NAME_BY_GUID,
148-
CHAR_DEL_DECLINED_NAME,
149148

150149
CHAR_INS_GUILD,
151150
CHAR_DEL_GUILD,
@@ -345,7 +344,6 @@ enum CharacterDatabaseStatements : uint32
345344
CHAR_SEL_PINFO_BANS,
346345
CHAR_SEL_CHAR_HOMEBIND,
347346
CHAR_SEL_CHAR_GUID_NAME_BY_ACC,
348-
CHAR_SEL_CHARACTER_AT_LOGIN,
349347
CHAR_SEL_CHAR_CUSTOMIZE_INFO,
350348
CHAR_SEL_CHAR_RACE_OR_FACTION_CHANGE_INFOS,
351349
CHAR_SEL_INSTANCE,

src/server/game/Battlefield/Battlefield.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -452,19 +452,19 @@ void Battlefield::SendInitWorldStatesTo(Player* player)
452452
{
453453
WorldPackets::WorldState::InitWorldStates packet;
454454
packet.MapID = m_MapId;
455-
packet.ZoneID = m_ZoneId;
456-
packet.AreaID = player->GetAreaId();
455+
packet.AreaID = m_ZoneId;
456+
packet.SubareaID = player->GetAreaId();
457457
FillInitialWorldStates(packet);
458458

459459
player->SendDirectMessage(packet.Write());
460460
}
461461

462-
void Battlefield::SendUpdateWorldState(uint32 field, uint32 value)
462+
void Battlefield::SendUpdateWorldState(uint32 variable, uint32 value)
463463
{
464-
for (uint8 i = 0; i < PVP_TEAMS_COUNT; ++i)
465-
for (auto itr = m_players[i].begin(); itr != m_players[i].end(); ++itr)
466-
if (Player* player = ObjectAccessor::FindPlayer(*itr))
467-
player->SendUpdateWorldState(field, value);
464+
WorldPackets::WorldState::UpdateWorldState worldstate;
465+
worldstate.VariableID = variable;
466+
worldstate.Value = value;
467+
BroadcastPacketToZone(worldstate.Write());
468468
}
469469

470470
void Battlefield::RegisterZone(uint32 zoneId)

src/server/game/Battlefield/Battlefield.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ class TC_GAME_API Battlefield : public ZoneScript
231231
void SendInitWorldStatesTo(Player* player);
232232

233233
/// Update data of a worldstate to all players present in zone
234-
void SendUpdateWorldState(uint32 field, uint32 value);
234+
void SendUpdateWorldState(uint32 variable, uint32 value);
235235

236236
/**
237237
* \brief Called every time for update bf data and time

src/server/game/Battlegrounds/Battleground.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,14 +574,14 @@ Position const* Battleground::GetTeamStartPosition(TeamId teamId) const
574574
return &StartPosition[teamId];
575575
}
576576

577-
void Battleground::SendPacketToAll(WorldPacket const* packet)
577+
void Battleground::SendPacketToAll(WorldPacket const* packet) const
578578
{
579579
for (BattlegroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
580580
if (Player* player = _GetPlayer(itr, "SendPacketToAll"))
581581
player->SendDirectMessage(packet);
582582
}
583583

584-
void Battleground::SendPacketToTeam(uint32 TeamID, WorldPacket const* packet, Player* sender, bool self)
584+
void Battleground::SendPacketToTeam(uint32 TeamID, WorldPacket const* packet, Player* sender, bool self) const
585585
{
586586
for (BattlegroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
587587
{

src/server/game/Battlegrounds/Battleground.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,8 +377,8 @@ class TC_GAME_API Battleground
377377
// Packet Transfer
378378
// method that should fill worldpacket with actual world states (not yet implemented for all battlegrounds!)
379379
virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) { }
380-
void SendPacketToTeam(uint32 TeamID, WorldPacket const* packet, Player* sender = nullptr, bool self = true);
381-
void SendPacketToAll(WorldPacket const* packet);
380+
void SendPacketToTeam(uint32 TeamID, WorldPacket const* packet, Player* sender = nullptr, bool self = true) const;
381+
void SendPacketToAll(WorldPacket const* packet) const;
382382

383383
void SendChatMessage(Creature* source, uint8 textId, WorldObject* target = nullptr);
384384
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const* target = nullptr);

src/server/game/Conditions/ConditionMgr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1727,7 +1727,7 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond) const
17271727
if (!((1 << spellEffectInfo.EffectIndex) & cond->SourceGroup))
17281728
continue;
17291729

1730-
if (spellEffectInfo.ChainTarget > 0)
1730+
if (spellEffectInfo.ChainTargets > 0)
17311731
continue;
17321732

17331733
switch (spellEffectInfo.TargetA.GetSelectionCategory())

0 commit comments

Comments
 (0)