From da70db415beb9e6239bcb857ed48500a0be4af07 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 11 Feb 2023 04:08:28 +0100 Subject: [PATCH] =?UTF-8?q?fix(Core/Config):=20Added=20new=20config=20to?= =?UTF-8?q?=20make=20pet's=20health=20be=20modified=20b=E2=80=A6=20(#14051?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/apps/worldserver/worldserver.conf.dist | 8 ++++++++ src/server/game/Entities/Pet/Pet.cpp | 5 +++++ src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 2 ++ 4 files changed, 16 insertions(+) diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 576f80eba..dc296e4ab 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -3820,6 +3820,14 @@ QuestPOI.Enabled = 1 ChangeFaction.MaxMoney = 0 +# +# Pet.RankMod.Health +# Description: Allows pet health to be modified by rank health rates (set in config) +# Default: 1 - Enabled +# 0 - Disabled + +Pet.RankMod.Health = 1 + # ################################################################################################### diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 55537b8a6..7c9b35048 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -1108,6 +1108,11 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) float factorHealth = owner->GetTypeId() == TYPEID_PLAYER ? std::min(1.0f, cinfo->ModHealth) : cinfo->ModHealth; float factorMana = owner->GetTypeId() == TYPEID_PLAYER ? std::min(1.0f, cinfo->ModMana) : cinfo->ModMana; + if (sWorld->getBoolConfig(CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH)) + { + factorHealth *= _GetHealthMod(cinfo->rank); + } + SetCreateHealth(std::max(1, stats->BaseHealth[cinfo->expansion]*factorHealth)); SetModifierValue(UNIT_MOD_HEALTH, BASE_VALUE, GetCreateHealth()); SetCreateMana(stats->BaseMana * factorMana); diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 47d6e34ab..38d6a4c0b 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -179,6 +179,7 @@ enum WorldBoolConfigs CONFIG_OBJECT_SPARKLES, CONFIG_LOW_LEVEL_REGEN_BOOST, CONFIG_OBJECT_QUEST_MARKERS, + CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 8110e1028..fba75e240 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1282,6 +1282,8 @@ void World::LoadConfigSettings(bool reload) _int_configs[CONFIG_CHANGE_FACTION_MAX_MONEY] = sConfigMgr->GetOption("ChangeFaction.MaxMoney", 0); + _bool_configs[CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH] = sConfigMgr->GetOption("Pet.RankMod.Health", true); + ///- Read the "Data" directory from the config file std::string dataPath = sConfigMgr->GetOption("DataDir", "./"); if (dataPath.empty() || (dataPath.at(dataPath.length() - 1) != '/' && dataPath.at(dataPath.length() - 1) != '\\'))