mirror of
https://github.com/OpenMW/openmw.git
synced 2025-11-10 17:56:40 +00:00
Merge branch 'patient0' into 'master'
Allow non-player actors to catch diseases Closes #8765 See merge request OpenMW/openmw!4968
This commit is contained in:
commit
1fadb167c9
1 changed files with 12 additions and 9 deletions
|
|
@ -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<ESM::GameSetting>()
|
||||
.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<ESM::GameSetting>()
|
||||
.find("sMagicContractDisease")
|
||||
->mValue.getString();
|
||||
msg = Misc::StringUtils::format(msg, spell->mName);
|
||||
MWBase::Environment::get().getWindowManager()->messageBox(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue