From ce5ecd492cfb9a7bd35a7e1dce122d6d63702442 Mon Sep 17 00:00:00 2001 From: Luan Santos Date: Mon, 1 Jan 2024 15:18:54 -0800 Subject: [PATCH] missing file changes --- src/creatures/combat/condition.cpp | 5 +++-- src/creatures/creature.cpp | 2 +- src/creatures/creature.hpp | 2 +- src/creatures/players/player.cpp | 2 +- src/creatures/players/player.hpp | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/creatures/combat/condition.cpp b/src/creatures/combat/condition.cpp index 8b8ddff7ca4..c1693aae2bf 100644 --- a/src/creatures/combat/condition.cpp +++ b/src/creatures/combat/condition.cpp @@ -1644,7 +1644,9 @@ bool ConditionDamage::getNextDamage(int32_t &damage) { } bool ConditionDamage::doDamage(std::shared_ptr creature, int32_t healthChange) { - if (creature->isSuppress(getType())) { + auto attacker = g_game().getPlayerByGUID(owner) ? g_game().getPlayerByGUID(owner)->getCreature() : g_game().getCreatureByID(owner); + bool isPlayer = attacker && attacker->getPlayer(); + if (creature->isSuppress(getType(), isPlayer)) { return true; } @@ -1653,7 +1655,6 @@ bool ConditionDamage::doDamage(std::shared_ptr creature, int32_t healt damage.primary.value = healthChange; damage.primary.type = Combat::ConditionToDamageType(conditionType); - std::shared_ptr attacker = g_game().getCreatureByID(owner); if (field && creature->getPlayer() && attacker && attacker->getPlayer()) { damage.primary.value = static_cast(std::round(damage.primary.value / 2.)); } diff --git a/src/creatures/creature.cpp b/src/creatures/creature.cpp index 95c11b16888..eaaf4ca64ea 100644 --- a/src/creatures/creature.cpp +++ b/src/creatures/creature.cpp @@ -1492,7 +1492,7 @@ void Creature::executeConditions(uint32_t interval) { bool Creature::hasCondition(ConditionType_t type, uint32_t subId /* = 0*/) const { metrics::method_latency measure(__METHOD_NAME__); - if (isSuppress(type)) { + if (isSuppress(type, false)) { return false; } diff --git a/src/creatures/creature.hpp b/src/creatures/creature.hpp index 0c1872416d2..a21403edcef 100644 --- a/src/creatures/creature.hpp +++ b/src/creatures/creature.hpp @@ -406,7 +406,7 @@ class Creature : virtual public Thing, public SharedObject { virtual bool isImmune(ConditionType_t type) const { return false; } - virtual bool isSuppress(ConditionType_t type) const { + virtual bool isSuppress(ConditionType_t type, bool attackerPlayer) const { return false; }; diff --git a/src/creatures/players/player.cpp b/src/creatures/players/player.cpp index b3fa5b674db..65c86f9d7d6 100644 --- a/src/creatures/players/player.cpp +++ b/src/creatures/players/player.cpp @@ -455,7 +455,7 @@ float Player::getDefenseFactor() const { uint32_t Player::getClientIcons() { uint32_t icons = 0; for (const auto &condition : conditions) { - if (!isSuppress(condition->getType())) { + if (!isSuppress(condition->getType(), false)) { icons |= condition->getIcons(); } } diff --git a/src/creatures/players/player.hpp b/src/creatures/players/player.hpp index 1b12ebf571d..36aafef1cd3 100644 --- a/src/creatures/players/player.hpp +++ b/src/creatures/players/player.hpp @@ -2920,7 +2920,7 @@ class Player final : public Creature, public Cylinder, public Bankable { return skillLoss ? static_cast(experience * getLostPercent()) : 0; } - bool isSuppress(ConditionType_t conditionType) const override; + bool isSuppress(ConditionType_t conditionType, bool attackerPlayer) const override; void addConditionSuppression(const std::array &addConditions); uint16_t getLookCorpse() const override;