Skip to content

Commit 5abf91d

Browse files
Merge AzerothCore 3.3.5 to ElunaAzerothcore [skip ci]
2 parents 407c2c0 + ac12f5d commit 5abf91d

7 files changed

Lines changed: 297 additions & 20 deletions

File tree

apps/docker/Dockerfile

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ARG UBUNTU_VERSION=22.04 # lts
1+
ARG UBUNTU_VERSION=24.04 # lts
22

33
# This target lays out the general directory skeleton for AzerothCore,
44
# This target isn't intended to be directly used
@@ -67,7 +67,7 @@ RUN apt-get update \
6767
build-essential ccache libtool cmake-data make cmake clang \
6868
git lsb-base curl unzip default-mysql-client openssl \
6969
default-libmysqlclient-dev libboost-all-dev libssl-dev libmysql++-dev \
70-
libreadline-dev zlib1g-dev libbz2-dev libncurses5-dev \
70+
libreadline-dev zlib1g-dev libbz2-dev libncurses5-dev liblzma-dev \
7171
&& rm -rf /var/lib/apt/lists/*
7272

7373
COPY CMakeLists.txt /azerothcore/CMakeLists.txt
@@ -117,22 +117,26 @@ ARG DOCKER_USER=acore
117117
ENV ACORE_COMPONENT=undefined
118118

119119
# Install base dependencies for azerothcore
120-
RUN apt-get update && \
121-
apt-get install -y --no-install-recommends \
122-
libmysqlclient21 libreadline8 \
123-
gettext-base default-mysql-client && \
124-
rm -rf /var/lib/apt/lists/*
120+
RUN apt-get update \
121+
&& apt-get install -y --no-install-recommends \
122+
libmysqlclient21 libreadline8 libicu74 libncurses5-dev \
123+
gettext-base default-mysql-client \
124+
adduser \
125+
&& rm -rf /var/lib/apt/lists/*
125126

126127
COPY --from=build /azerothcore/env/dist/etc/ /azerothcore/env/ref/etc
127128

128129
VOLUME /azerothcore/env/dist/etc
129130

130131
ENV PATH="/azerothcore/env/dist/bin:$PATH"
131132

132-
RUN groupadd --gid "$GROUP_ID" "$DOCKER_USER" && \
133-
useradd -d /azerothcore --uid "$USER_ID" --gid "$GROUP_ID" "$DOCKER_USER" && \
134-
passwd -d "$DOCKER_USER" && \
135-
chown -R "$DOCKER_USER:$DOCKER_USER" /azerothcore
133+
# To use GID/UID 1000 in ubuntu > 23.04 the existing user must be deleted
134+
# See https://bugs.launchpad.net/cloud-images/+bug/2005129
135+
RUN userdel --remove ubuntu \
136+
&& addgroup --gid "$GROUP_ID" "$DOCKER_USER" \
137+
&& adduser --disabled-password --gecos '' --uid "$USER_ID" --gid "$GROUP_ID" "$DOCKER_USER" \
138+
&& passwd -d "$DOCKER_USER" \
139+
&& chown -R "$DOCKER_USER:$DOCKER_USER" /azerothcore
136140

137141
COPY --chown=$USER_ID:$GROUP_ID \
138142
--chmod=755 \

data/sql/updates/db_world/2026_05_16_00.sql

Lines changed: 239 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-- DB update 2026_05_16_00 -> 2026_05_16_01
2+
--
3+
DELETE FROM `creature_text` WHERE (`CreatureID` = 24322) AND (`GroupID` IN (0));
4+
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
5+
(24322, 0, 0, 'Silence!', 14, 0, 100, 1, 0, 0, 32240, 0, 'Ancient Citizen of Nifflevar yell');
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-- DB update 2026_05_16_01 -> 2026_05_16_02
2+
-- Update Night Elf shapeshift forms
3+
DELETE FROM `player_shapeshift_model` WHERE (`RaceID` = 4 AND `CustomizationID` IN (3, 5) AND `ShapeshiftID` IN (5, 8)) OR (`RaceID` = 4 AND `CustomizationID` = 5 AND `ShapeshiftID` = 1) OR (`RaceID` = 4 AND `CustomizationID` = 7 AND `ShapeshiftID` IN (5, 8)) OR (`RaceID` = 4 AND `CustomizationID` = 6 AND `ShapeshiftID` = 1);
4+
INSERT INTO `player_shapeshift_model` (`ShapeshiftID`, `RaceID`, `CustomizationID`, `GenderID`, `ModelID`) VALUES
5+
-- light blue hair, bear
6+
(5, 4, 3, 2, 29415),
7+
(8, 4, 3, 2, 29415),
8+
-- blue hair, bear
9+
(5, 4, 5, 2, 29415),
10+
(8, 4, 5, 2, 29415),
11+
-- blue hair, cat
12+
(1, 4, 5, 2, 29406),
13+
-- purple hair, red bear
14+
(5, 4, 7, 2, 29417),
15+
(8, 4, 7, 2, 29417),
16+
-- darkblue hair, black cat
17+
(1, 4, 6, 2, 892);
18+
19+
-- remove customization id 8
20+
DELETE FROM `player_shapeshift_model` WHERE `ShapeshiftID`=1 AND `RaceID`=4 AND `CustomizationID`=8 AND `GenderID`=2 AND `ModelID` = 29405;

src/server/game/Battlefield/Battlefield.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,16 @@ void Battlefield::HandlePlayerLeaveZone(Player* player, uint32 /*zone*/)
129129
for (BfCapturePoint* cp : CapturePoints)
130130
cp->HandlePlayerLeave(player);
131131

132-
InvitedPlayers[player->GetTeamId()].erase(player->GetGUID());
133-
PlayersInQueue[player->GetTeamId()].erase(player->GetGUID());
134-
PlayersWillBeKick[player->GetTeamId()].erase(player->GetGUID());
135-
Players[player->GetTeamId()].erase(player->GetGUID());
132+
for (uint8 i = 0; i < PVP_TEAMS_COUNT; ++i)
133+
{
134+
InvitedPlayers[i].erase(player->GetGUID());
135+
PlayersInQueue[i].erase(player->GetGUID());
136+
PlayersWillBeKick[i].erase(player->GetGUID());
137+
Players[i].erase(player->GetGUID());
138+
}
136139
SendRemoveWorldStates(player);
137140
RemovePlayerFromResurrectQueue(player->GetGUID());
138141
OnPlayerLeaveZone(player);
139-
// Scripts must restore player->GetTeamId() here (e.g. ClearFakePlayer).
140-
// All Battlefield data-structure cleanup above has already completed using
141-
// the assigned team, so it is safe to restore the real team now.
142-
sScriptMgr->OnBattlefieldPlayerLeaveZone(this, player);
143142
}
144143

145144
bool Battlefield::Update(uint32 diff)
@@ -379,7 +378,10 @@ void Battlefield::DoPlaySoundToAll(uint32 soundId)
379378

380379
bool Battlefield::HasPlayer(Player* player) const
381380
{
382-
return Players[player->GetTeamId()].find(player->GetGUID()) != Players[player->GetTeamId()].end();
381+
for (uint8 i = 0; i < PVP_TEAMS_COUNT; ++i)
382+
if (Players[i].count(player->GetGUID()))
383+
return true;
384+
return false;
383385
}
384386

385387
// Called in WorldSession::HandleBfQueueInviteResponse

src/server/game/Battlefield/BattlefieldMgr.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "BattlefieldMgr.h"
1919
#include "Player.h"
20+
#include "ScriptMgr.h"
2021
#include "Zones/BattlefieldWG.h"
2122

2223
BattlefieldMgr::BattlefieldMgr() : _updateTimer(0)
@@ -86,6 +87,7 @@ void BattlefieldMgr::HandlePlayerLeaveZone(Player* player, uint32 zoneId)
8687
// teleport: remove once in removefromworld, once in updatezone
8788
if (!itr->second->HasPlayer(player))
8889
return;
90+
sScriptMgr->OnBattlefieldPlayerLeaveZone(itr->second, player);
8991
itr->second->HandlePlayerLeaveZone(player, zoneId);
9092
LOG_DEBUG("bg.battlefield", "Player {} left outdoorpvp id {}", player->GetGUID().ToString(), itr->second->GetTypeId());
9193
}

src/server/game/Entities/Player/PlayerStorage.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5422,6 +5422,11 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons
54225422

54235423
uint32 extraflags = fields[36].Get<uint16>();
54245424

5425+
// Mirror before the gate below so saved bits survive when the gate
5426+
// skips effect application; otherwise the next SaveToDB writes 0
5427+
// over them.
5428+
m_ExtraFlags = extraflags;
5429+
54255430
_LoadPetStable(fields[37].Get<uint8>(), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS));
54265431

54275432
m_atLoginFlags = fields[38].Get<uint16>();

0 commit comments

Comments
 (0)