From 061c7813f6362b8ed16d6c79c016e6d5be18fdef Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 14 Aug 2014 01:20:12 +0200 Subject: [PATCH] AiFollow: return from execute() if target is not player (Fixes #1637) --- apps/openmw/mwmechanics/aifollow.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/openmw/mwmechanics/aifollow.cpp b/apps/openmw/mwmechanics/aifollow.cpp index d8b16b366c..fb24946a59 100644 --- a/apps/openmw/mwmechanics/aifollow.cpp +++ b/apps/openmw/mwmechanics/aifollow.cpp @@ -39,6 +39,11 @@ bool MWMechanics::AiFollow::execute (const MWWorld::Ptr& actor,float duration) if (target.isEmpty()) return true; //Target doesn't exist + // Only the player can be actively followed. AiFollow packages with targets other than the player + // are only used for defining combat alliances, since NPCs will defend whoever they are following or being followed by. + if (target != MWBase::Environment::get().getWorld()->getPlayerPtr()) + return false; + actor.getClass().getCreatureStats(actor).setDrawState(DrawState_Nothing); ESM::Position pos = actor.getRefData().getPosition(); //position of the actor