From ca7eb956aa8eea1c874b1371ae44e485c5253e9f Mon Sep 17 00:00:00 2001 From: forgives Date: Sun, 12 Nov 2023 16:33:06 +0800 Subject: [PATCH] feature(Core/Pet): Add pet talent rate config (#17678) * feat: add pet talent rate config * feat(Core/Pet): keep consistent with player talent config * refactor(Core/Pet): delete empty line --- src/server/apps/worldserver/worldserver.conf.dist | 7 +++++++ src/server/game/Entities/Pet/Pet.cpp | 2 +- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 6 ++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index d8d5746df..95aae29dd 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -2045,6 +2045,13 @@ Rate.Damage.Fall = 1 Rate.Talent = 1 +# +# Rate.Talent.Pet +# Description: Pet Talent point rate. +# Default: 1 + +Rate.Talent.Pet = 1 + # # Rate.Health # Rate.Mana diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 297aca795..96afdf50f 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -2240,7 +2240,7 @@ uint8 Pet::GetMaxTalentPointsForLevel(uint8 level) sScriptMgr->OnCalculateMaxTalentPointsForLevel(this, level, points); - return points; + return uint8(points * sWorld->getRate(RATE_TALENT_PET)); } void Pet::ToggleAutocast(SpellInfo const* spellInfo, bool apply) diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 2b2b103cf..9444fb7f8 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -503,6 +503,7 @@ enum Rates RATE_HONOR, RATE_ARENA_POINTS, RATE_TALENT, + RATE_TALENT_PET, RATE_CORPSE_DECAY_LOOTED, RATE_INSTANCE_RESET_TIME, RATE_DURABILITY_LOSS_ON_DEATH, diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 45522266c..9c5a1bc13 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -573,6 +573,12 @@ void World::LoadConfigSettings(bool reload) LOG_ERROR("server.loading", "Rate.Talent ({}) must be > 0. Using 1 instead.", _rate_values[RATE_TALENT]); _rate_values[RATE_TALENT] = 1.0f; } + _rate_values[RATE_TALENT_PET] = sConfigMgr->GetOption("Rate.Talent.Pet", 1.0f); + if (_rate_values[RATE_TALENT_PET] < 0.0f) + { + LOG_ERROR("server.loading", "Rate.Talent.Pet ({}) must be > 0. Using 1 instead.", _rate_values[RATE_TALENT_PET]); + _rate_values[RATE_TALENT_PET] = 1.0f; + } _rate_values[RATE_MOVESPEED] = sConfigMgr->GetOption("Rate.MoveSpeed", 1.0f); if (_rate_values[RATE_MOVESPEED] < 0) {