1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-12-08 19:04:34 +00:00

Allow non-player actors to catch diseases

This commit is contained in:
Evil Eye 2025-10-27 19:49:51 +01:00
parent e3b293c4b7
commit 1ae5adba78

View file

@ -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) /// 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. /// @param carrier The disease carrier.
inline void diseaseContact(const MWWorld::Ptr& actor, const MWWorld::Ptr& 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; return;
float fDiseaseXferChance = MWBase::Environment::get() float fDiseaseXferChance = MWBase::Environment::get()
@ -71,13 +71,16 @@ namespace MWMechanics
creatureStats.getActiveSpells().addSpell(spell, actor, false); creatureStats.getActiveSpells().addSpell(spell, actor, false);
MWBase::Environment::get().getWorld()->applyLoopingParticles(actor); MWBase::Environment::get().getWorld()->applyLoopingParticles(actor);
std::string msg = MWBase::Environment::get() if (actor == getPlayer())
.getESMStore() {
->get<ESM::GameSetting>() std::string msg = MWBase::Environment::get()
.find("sMagicContractDisease") .getESMStore()
->mValue.getString(); ->get<ESM::GameSetting>()
msg = Misc::StringUtils::format(msg, spell->mName); .find("sMagicContractDisease")
MWBase::Environment::get().getWindowManager()->messageBox(msg); ->mValue.getString();
msg = Misc::StringUtils::format(msg, spell->mName);
MWBase::Environment::get().getWindowManager()->messageBox(msg);
}
} }
} }
} }