From 674aac094d80e7fc0249289eebae23c2cd203df2 Mon Sep 17 00:00:00 2001 From: Felipe Paluco Date: Fri, 17 Jan 2025 12:19:57 -0300 Subject: [PATCH] fix: apply animus mastery exp multiplier only when bestiary unlocked --- src/creatures/players/player.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/creatures/players/player.cpp b/src/creatures/players/player.cpp index 0a7a24e73be..df965af2a1f 100644 --- a/src/creatures/players/player.cpp +++ b/src/creatures/players/player.cpp @@ -3120,8 +3120,13 @@ void Player::addExperience(const std::shared_ptr &target, uint64_t exp float animusMasteryMultiplier = 0; if (handleAnimusMastery) { - animusMasteryMultiplier = animusMastery().getExperienceMultiplier(); - exp *= animusMasteryMultiplier; + auto mType = g_monsters().getMonsterType(monster->getName()); + uint32_t killCounter = this->getBestiaryKillCount(mType->info.raceid); + uint8_t currentLevel = g_iobestiary().getKillStatus(mType, killCounter); + if (currentLevel > 3) { + animusMasteryMultiplier = animusMastery().getExperienceMultiplier(); + exp *= animusMasteryMultiplier; + } } experience += exp; @@ -3135,7 +3140,7 @@ void Player::addExperience(const std::shared_ptr &target, uint64_t exp } } - if (handleAnimusMastery) { + if (handleAnimusMastery && animusMasteryMultiplier > 0) { expString = fmt::format("{} (animus mastery bonus {:.1f}%)", expString, (animusMasteryMultiplier - 1) * 100); }