mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
Merge branch 'master' into Playerbot
This commit is contained in:
3
data/sql/updates/db_world/2023_08_08_00.sql
Normal file
3
data/sql/updates/db_world/2023_08_08_00.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2023_08_07_00 -> 2023_08_08_00
|
||||
--
|
||||
UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`|4|33554432 WHERE `entry` = 18168;
|
||||
5
data/sql/updates/db_world/2023_08_09_00.sql
Normal file
5
data/sql/updates/db_world/2023_08_09_00.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- DB update 2023_08_08_00 -> 2023_08_09_00
|
||||
--
|
||||
UPDATE `quest_template_addon` SET `RequiredMaxRepFaction` = 0, `RequiredMaxRepValue` = 0 WHERE `ID` IN (10106, 10110);
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 10143 WHERE (`ID` = 13408);
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 10124 WHERE (`ID` = 13409);
|
||||
3
data/sql/updates/db_world/2023_08_09_01.sql
Normal file
3
data/sql/updates/db_world/2023_08_09_01.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2023_08_09_00 -> 2023_08_09_01
|
||||
--
|
||||
UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`|8388608 WHERE `entry` = 19261;
|
||||
14
data/sql/updates/db_world/2023_08_09_02.sql
Normal file
14
data/sql/updates/db_world/2023_08_09_02.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
-- DB update 2023_08_09_01 -> 2023_08_09_02
|
||||
--
|
||||
-- Add acore_strings for arena queue announcer with less detail about the teams
|
||||
DELETE FROM `acore_string` WHERE `entry` IN (773, 774, 775, 776, 777, 778);
|
||||
INSERT INTO `acore_string` (`entry`, `content_default`, `locale_frFR`, `locale_deDE`, `locale_zhCN`) VALUES
|
||||
(773, '|cffff0000[Arena Queue Announcer]:|r %s -- Joined : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Rejoint : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r %s -- beigetreten : %ux%u|r', '|cffff0000[竞技场列队公告]:|r %s -- 加入 : %ux%u|r'),
|
||||
(774, '|cffff0000[Arena Queue Announcer]:|r %s -- Exited : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Quitté : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r %s -- verlassen : %ux%u|r', '|cffff0000[竞技场列队公告]:|r %s -- 退出 : %ux%u|r'),
|
||||
(775, '|cffff0000[Arena Queue Announcer]:|r Joined : %ux%u : %u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Rejoint : %ux%u : %u|r', '|cffff0000[BG Ansager für Warteschlange]:|r beigetreten : %ux%u : %u|r', '|cffff0000[竞技场列队公告]:|r 加入 : %ux%u : %u|r'),
|
||||
(776, '|cffff0000[Arena Queue Announcer]:|r Exited : %ux%u : %u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Quitté : %ux%u : %u|r', '|cffff0000[BG Ansager für Warteschlange]:|r verlassen : %ux%u : %u|r', '|cffff0000[竞技场列队公告]:|r 退出 : %ux%u : %u|r'),
|
||||
(777, '|cffff0000[Arena Queue Announcer]:|r Joined : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Rejoint : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r beigetreten : %ux%u|r', '|cffff0000[竞技场列队公告]:|r 加入 : %ux%u|r'),
|
||||
(778, '|cffff0000[Arena Queue Announcer]:|r Exited : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Quitté : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r verlassen : %ux%u|r', '|cffff0000[竞技场列队公告]:|r 退出 : %ux%u|r');
|
||||
|
||||
UPDATE `acore_string` SET `locale_frFR` = '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Rejoint : %ux%u : %u|r' WHERE `entry` = 718;
|
||||
UPDATE `acore_string` SET `locale_frFR` = '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Quitté : %ux%u : %u|r' WHERE `entry` = 719;
|
||||
@@ -948,6 +948,14 @@ MaxArenaPoints = 10000
|
||||
|
||||
StartArenaPoints = 0
|
||||
|
||||
#
|
||||
# Arena.LegacyArenaPoints
|
||||
# Description: Use arena point calculation from TBC for season 1 - 5 when rating is less or equal to 1500
|
||||
# Default: 1 - (Enabled)
|
||||
# 0 - (Disabled)
|
||||
|
||||
Arena.LegacyArenaPoints = 0
|
||||
|
||||
#
|
||||
# RecruitAFriend.MaxLevel
|
||||
# Description: Highest level up to which a character can benefit from the Recruit-A-Friend
|
||||
@@ -3051,14 +3059,25 @@ Arena.GamesRequired = 10
|
||||
Arena.QueueAnnouncer.Enable = 0
|
||||
|
||||
#
|
||||
# Battleground.QueueAnnouncer.PlayerOnly
|
||||
# Description: Battleground queue announcement type.
|
||||
# Arena.QueueAnnouncer.PlayerOnly
|
||||
# Description: Arena queue announcement type.
|
||||
# Default: 0 - (System message, Anyone can see it)
|
||||
# 1 - (Private, Only queued players can see it)
|
||||
#
|
||||
|
||||
Arena.QueueAnnouncer.PlayerOnly = 0
|
||||
|
||||
#
|
||||
# Arena.QueueAnnouncer.Detail
|
||||
# Description: The amount of detail to announce on teams queued for arenas.
|
||||
# Default: 3 - (Announce the team's name and rating)
|
||||
# 2 - (Announce only the team's name)
|
||||
# 1 - (Announce only the team's rating)
|
||||
# 0 - (Do not announce any information about the teams)
|
||||
#
|
||||
|
||||
Arena.QueueAnnouncer.Detail = 3
|
||||
|
||||
#
|
||||
# Arena.ArenaSeason.ID
|
||||
# Description: Current arena season id shown in clients.
|
||||
|
||||
@@ -658,7 +658,7 @@ uint32 ArenaTeam::GetPoints(uint32 memberRating)
|
||||
|
||||
if (rating <= 1500)
|
||||
{
|
||||
if (sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID) < 6)
|
||||
if (sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID) < 6 && !sWorld->getIntConfig(CONFIG_LEGACY_ARENA_POINTS_CALC))
|
||||
points = (float)rating * 0.22f + 14.0f;
|
||||
else
|
||||
points = 344;
|
||||
|
||||
@@ -1143,7 +1143,22 @@ void BattlegroundQueue::SendJoinMessageArenaQueue(Player* leader, GroupQueueInfo
|
||||
uint32 ArenaTeamRating = ginfo->ArenaTeamRating;
|
||||
std::string TeamName = team->GetName();
|
||||
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating);
|
||||
uint32 announcementDetail = sWorld->getIntConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL);
|
||||
switch (announcementDetail)
|
||||
{
|
||||
case 3:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating);
|
||||
break;
|
||||
case 2:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType);
|
||||
break;
|
||||
case 1:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType, ArenaTeamRating);
|
||||
break;
|
||||
default:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1168,7 +1183,22 @@ void BattlegroundQueue::SendExitMessageArenaQueue(GroupQueueInfo* ginfo)
|
||||
|
||||
if (ArenaType && ginfo->Players.empty())
|
||||
{
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating);
|
||||
uint32 announcementDetail = sWorld->getIntConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL);
|
||||
switch (announcementDetail)
|
||||
{
|
||||
case 3:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating);
|
||||
break;
|
||||
case 2:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType);
|
||||
break;
|
||||
case 1:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType, ArenaTeamRating);
|
||||
break;
|
||||
default:
|
||||
sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2480,34 +2480,34 @@ Player* Pet::GetOwner() const
|
||||
|
||||
float Pet::GetNativeObjectScale() const
|
||||
{
|
||||
CreatureFamilyEntry const* creatureFamily = sCreatureFamilyStore.LookupEntry(GetCreatureTemplate()->family);
|
||||
if (creatureFamily && creatureFamily->minScale > 0.0f && getPetType() == HUNTER_PET)
|
||||
{
|
||||
float scale;
|
||||
if (GetLevel() >= creatureFamily->maxScaleLevel)
|
||||
scale = creatureFamily->maxScale;
|
||||
else if (GetLevel() <= creatureFamily->minScaleLevel)
|
||||
scale = creatureFamily->minScale;
|
||||
else
|
||||
scale = creatureFamily->minScale + float(GetLevel() - creatureFamily->minScaleLevel) / creatureFamily->maxScaleLevel * (creatureFamily->maxScale - creatureFamily->minScale);
|
||||
uint8 ctFamily = GetCreatureTemplate()->family;
|
||||
|
||||
if (CreatureDisplayInfoEntry const* displayInfo = sCreatureDisplayInfoStore.LookupEntry(GetNativeDisplayId()))
|
||||
{
|
||||
if (displayInfo->scale > 1.f && GetCreatureTemplate()->IsExotic())
|
||||
{
|
||||
// Exotic pets have a scale of 1
|
||||
scale = 1.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale *= displayInfo->scale;
|
||||
}
|
||||
}
|
||||
// hackfix: Edge case where DBC scale values for DEVILSAUR pets make them too small.
|
||||
// Therefore we take data from spirit beast instead.
|
||||
if (ctFamily && ctFamily == CREATURE_FAMILY_DEVILSAUR)
|
||||
ctFamily = CREATURE_FAMILY_SPIRIT_BEAST;
|
||||
|
||||
CreatureFamilyEntry const* creatureFamily = sCreatureFamilyStore.LookupEntry(ctFamily);
|
||||
if (creatureFamily && creatureFamily->minScale > 0.0f && getPetType() & HUNTER_PET)
|
||||
{
|
||||
float minScaleLevel = creatureFamily->minScaleLevel;
|
||||
uint8 level = getLevel();
|
||||
|
||||
float minLevelScaleMod = level >= minScaleLevel ? (level / minScaleLevel) : 0.0f;
|
||||
float maxScaleMod = creatureFamily->maxScaleLevel - minScaleLevel;
|
||||
|
||||
if (minLevelScaleMod > maxScaleMod)
|
||||
minLevelScaleMod = maxScaleMod;
|
||||
|
||||
float scaleMod = creatureFamily->maxScaleLevel != minScaleLevel ? minLevelScaleMod / maxScaleMod : 0.f;
|
||||
|
||||
float scale = (creatureFamily->maxScale - creatureFamily->minScale) * scaleMod + creatureFamily->minScale;
|
||||
|
||||
return scale;
|
||||
}
|
||||
// Fallback value if the conditions are not met
|
||||
return 1.0f;
|
||||
|
||||
// take value for non-hunter pets from DB
|
||||
return Guardian::GetNativeObjectScale();
|
||||
}
|
||||
|
||||
std::string Pet::GenerateActionBarData() const
|
||||
|
||||
@@ -4766,6 +4766,14 @@ void Unit::RemoveAura(AuraApplication* aurApp, AuraRemoveMode mode)
|
||||
{
|
||||
if (aurApp == iter->second)
|
||||
{
|
||||
// Prevent Arena Preparation aura from being removed by player actions
|
||||
// It's an invisibility spell so any interaction/spell cast etc. removes it.
|
||||
// Should only be removed by the arena script, once the match starts.
|
||||
if (aurApp->GetBase()->HasEffectType(SPELL_AURA_ARENA_PREPARATION))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RemoveAura(iter, mode);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -666,8 +666,8 @@ enum AcoreStrings
|
||||
LANG_YOUR_BG_LEVEL_REQ_ERROR = 715,
|
||||
// = 716, see LANG_PINFO_MAP_OFFLINE
|
||||
LANG_BG_STARTED_ANNOUNCE_WORLD = 717,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN = 718,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT = 719,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME_RATING = 718,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME_RATING = 719,
|
||||
|
||||
LANG_BG_GROUP_TOO_LARGE = 720, // "Your group is too large for this battleground. Please regroup to join."
|
||||
LANG_ARENA_GROUP_TOO_LARGE = 721, // "Your group is too large for this arena. Please regroup to join."
|
||||
@@ -702,7 +702,13 @@ enum AcoreStrings
|
||||
LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING_SECS = 751, // "Not enough players. This game will close in %u seconds."
|
||||
// = 752, see LANG_PINFO_ACC_IP
|
||||
|
||||
// Room for BG/ARENA = 773-784, 788-799 not used
|
||||
// Room for BG/ARENA = 779-784, 788-799 not used
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME = 773,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME = 774,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_RATING = 775,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_RATING = 776,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN = 777,
|
||||
LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT = 778,
|
||||
LANG_ARENA_TESTING = 785,
|
||||
LANG_AUTO_ANN = 786,
|
||||
LANG_ANNOUNCE_COLOR = 787,
|
||||
|
||||
@@ -326,8 +326,10 @@ enum WorldIntConfigs
|
||||
CONFIG_ARENA_GAMES_REQUIRED,
|
||||
CONFIG_ARENA_SEASON_ID,
|
||||
CONFIG_ARENA_START_RATING,
|
||||
CONFIG_LEGACY_ARENA_POINTS_CALC,
|
||||
CONFIG_ARENA_START_PERSONAL_RATING,
|
||||
CONFIG_ARENA_START_MATCHMAKER_RATING,
|
||||
CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL,
|
||||
CONFIG_HONOR_AFTER_DUEL,
|
||||
CONFIG_PVP_TOKEN_MAP_TYPE,
|
||||
CONFIG_PVP_TOKEN_ID,
|
||||
|
||||
@@ -1180,6 +1180,7 @@ void World::LoadConfigSettings(bool reload)
|
||||
_int_configs[CONFIG_ARENA_GAMES_REQUIRED] = sConfigMgr->GetOption<uint32>("Arena.GamesRequired", 10);
|
||||
_int_configs[CONFIG_ARENA_SEASON_ID] = sConfigMgr->GetOption<uint32>("Arena.ArenaSeason.ID", 1);
|
||||
_int_configs[CONFIG_ARENA_START_RATING] = sConfigMgr->GetOption<uint32>("Arena.ArenaStartRating", 0);
|
||||
_int_configs[CONFIG_LEGACY_ARENA_POINTS_CALC] = sConfigMgr->GetOption<uint32>("Arena.LegacyArenaPoints", 0);
|
||||
_int_configs[CONFIG_ARENA_START_PERSONAL_RATING] = sConfigMgr->GetOption<uint32>("Arena.ArenaStartPersonalRating", 1000);
|
||||
_int_configs[CONFIG_ARENA_START_MATCHMAKER_RATING] = sConfigMgr->GetOption<uint32>("Arena.ArenaStartMatchmakerRating", 1500);
|
||||
_bool_configs[CONFIG_ARENA_SEASON_IN_PROGRESS] = sConfigMgr->GetOption<bool>("Arena.ArenaSeason.InProgress", true);
|
||||
@@ -1189,6 +1190,7 @@ void World::LoadConfigSettings(bool reload)
|
||||
_float_configs[CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER] = sConfigMgr->GetOption<float>("Arena.ArenaMatchmakerRatingModifier", 24.0f);
|
||||
_bool_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE] = sConfigMgr->GetOption<bool>("Arena.QueueAnnouncer.Enable", false);
|
||||
_bool_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_PLAYERONLY] = sConfigMgr->GetOption<bool>("Arena.QueueAnnouncer.PlayerOnly", false);
|
||||
_int_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL] = sConfigMgr->GetOption<uint32>("Arena.QueueAnnouncer.Detail", 3);
|
||||
|
||||
_bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetOption<bool>("OffhandCheckAtSpellUnlearn", true);
|
||||
_int_configs[CONFIG_CREATURE_STOP_FOR_PLAYER] = sConfigMgr->GetOption<uint32>("Creature.MovingStopTimeForPlayer", 3 * MINUTE * IN_MILLISECONDS);
|
||||
|
||||
Reference in New Issue
Block a user