From 1ae5adba78d5212b7a45f9f4475d246e3fa637ff Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Mon, 27 Oct 2025 19:49:51 +0100 Subject: [PATCH] Allow non-player actors to catch diseases --- apps/openmw/mwmechanics/disease.hpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwmechanics/disease.hpp b/apps/openmw/mwmechanics/disease.hpp index 262f813916..4e36e47ca0 100644 --- a/apps/openmw/mwmechanics/disease.hpp +++ b/apps/openmw/mwmechanics/disease.hpp @@ -21,11 +21,11 @@ namespace MWMechanics { /// Call when \a actor has got in contact with \a carrier (e.g. hit by him, or loots him) - /// @param actor The actor that will potentially catch diseases. Currently only the player can catch diseases. + /// @param actor The actor that will potentially catch diseases. Actors cannot catch diseases from the player. /// @param carrier The disease carrier. inline void diseaseContact(const MWWorld::Ptr& actor, const MWWorld::Ptr& carrier) { - if (!carrier.getClass().isActor() || actor != getPlayer()) + if (!carrier.getClass().isActor() || carrier == getPlayer()) return; float fDiseaseXferChance = MWBase::Environment::get() @@ -71,13 +71,16 @@ namespace MWMechanics creatureStats.getActiveSpells().addSpell(spell, actor, false); MWBase::Environment::get().getWorld()->applyLoopingParticles(actor); - std::string msg = MWBase::Environment::get() - .getESMStore() - ->get() - .find("sMagicContractDisease") - ->mValue.getString(); - msg = Misc::StringUtils::format(msg, spell->mName); - MWBase::Environment::get().getWindowManager()->messageBox(msg); + if (actor == getPlayer()) + { + std::string msg = MWBase::Environment::get() + .getESMStore() + ->get() + .find("sMagicContractDisease") + ->mValue.getString(); + msg = Misc::StringUtils::format(msg, spell->mName); + MWBase::Environment::get().getWindowManager()->messageBox(msg); + } } } }