1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-12-09 02:04:30 +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,6 +71,8 @@ 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);
if (actor == getPlayer())
{
std::string msg = MWBase::Environment::get() std::string msg = MWBase::Environment::get()
.getESMStore() .getESMStore()
->get<ESM::GameSetting>() ->get<ESM::GameSetting>()
@ -81,6 +83,7 @@ namespace MWMechanics
} }
} }
} }
}
} }
#endif #endif